Upload folder using huggingface_hub
Browse files- .gitattributes +3 -35
- .github/workflows/claude.yml +72 -0
- .gitignore +24 -0
- LICENSE +21 -0
- README.md +5 -0
- mcp-client-python/.env.example +1 -0
- mcp-client-python/.python-version +1 -0
- mcp-client-python/README.md +3 -0
- mcp-client-python/client.py +139 -0
- mcp-client-python/pyproject.toml +42 -0
- mcp-client-python/uv.lock +0 -0
- mcp-client-typescript/.env.example +1 -0
- mcp-client-typescript/.gitignore +3 -0
- mcp-client-typescript/README.md +3 -0
- mcp-client-typescript/index.ts +196 -0
- mcp-client-typescript/package-lock.json +1505 -0
- mcp-client-typescript/package.json +25 -0
- mcp-client-typescript/tsconfig.json +15 -0
- weather-server-python/.python-version +1 -0
- weather-server-python/README.md +3 -0
- weather-server-python/pyproject.toml +48 -0
- weather-server-python/uv.lock +0 -0
- weather-server-python/weather.py +101 -0
- weather-server-rust/Cargo.lock +2115 -0
- weather-server-rust/Cargo.toml +14 -0
- weather-server-rust/README.md +3 -0
- weather-server-rust/src/main.rs +206 -0
- weather-server-typescript/README.md +3 -0
- weather-server-typescript/package-lock.json +1075 -0
- weather-server-typescript/package.json +26 -0
- weather-server-typescript/src/index.ts +234 -0
- weather-server-typescript/tsconfig.json +15 -0
.gitattributes
CHANGED
|
@@ -1,35 +1,3 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
-
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
-
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
-
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
-
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
-
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
-
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
-
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
-
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
-
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
-
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
-
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 1 |
+
Cargo.lock linguist-generated=true
|
| 2 |
+
package-lock.json linguist-generated=true
|
| 3 |
+
uv.lock linguist-generated=true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.github/workflows/claude.yml
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Claude Code
|
| 2 |
+
|
| 3 |
+
on:
|
| 4 |
+
issue_comment:
|
| 5 |
+
types: [created]
|
| 6 |
+
pull_request_review_comment:
|
| 7 |
+
types: [created]
|
| 8 |
+
issues:
|
| 9 |
+
types: [opened, assigned]
|
| 10 |
+
pull_request_review:
|
| 11 |
+
types: [submitted]
|
| 12 |
+
|
| 13 |
+
jobs:
|
| 14 |
+
claude:
|
| 15 |
+
if: |
|
| 16 |
+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
| 17 |
+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
| 18 |
+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
| 19 |
+
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
| 20 |
+
runs-on: ubuntu-latest
|
| 21 |
+
permissions:
|
| 22 |
+
contents: read
|
| 23 |
+
pull-requests: read
|
| 24 |
+
issues: read
|
| 25 |
+
id-token: write
|
| 26 |
+
actions: read # Required for Claude to read CI results on PRs
|
| 27 |
+
steps:
|
| 28 |
+
- name: Check repository permissions
|
| 29 |
+
run: |
|
| 30 |
+
# Check if user has at least triage rights on the repository
|
| 31 |
+
PERMISSION=$(gh api "repos/${{ github.repository }}/collaborators/${{ github.actor }}/permission" -q '.permission' 2>/dev/null)
|
| 32 |
+
|
| 33 |
+
case "$PERMISSION" in
|
| 34 |
+
admin|maintain|push|triage)
|
| 35 |
+
echo "✓ User has $PERMISSION rights on the repository"
|
| 36 |
+
exit 0
|
| 37 |
+
;;
|
| 38 |
+
pull)
|
| 39 |
+
echo "✗ User only has pull (read-only) rights"
|
| 40 |
+
exit 1
|
| 41 |
+
;;
|
| 42 |
+
*)
|
| 43 |
+
echo "✗ User does not have sufficient permissions"
|
| 44 |
+
exit 1
|
| 45 |
+
;;
|
| 46 |
+
esac
|
| 47 |
+
env:
|
| 48 |
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
| 49 |
+
|
| 50 |
+
- name: Checkout repository
|
| 51 |
+
uses: actions/checkout@v4
|
| 52 |
+
with:
|
| 53 |
+
fetch-depth: 1
|
| 54 |
+
|
| 55 |
+
- name: Run Claude Code
|
| 56 |
+
id: claude
|
| 57 |
+
uses: anthropics/claude-code-action@v1
|
| 58 |
+
with:
|
| 59 |
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
| 60 |
+
|
| 61 |
+
# This is an optional setting that allows Claude to read CI results on PRs
|
| 62 |
+
additional_permissions: |
|
| 63 |
+
actions: read
|
| 64 |
+
|
| 65 |
+
# Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
|
| 66 |
+
# prompt: 'Update the pull request description to include a summary of changes.'
|
| 67 |
+
|
| 68 |
+
# Optional: Add claude_args to customize behavior and configuration
|
| 69 |
+
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
|
| 70 |
+
# or https://docs.claude.com/en/docs/claude-code/cli-reference for available options
|
| 71 |
+
# claude_args: '--allowed-tools Bash(gh pr:*)'
|
| 72 |
+
|
.gitignore
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
build/
|
| 2 |
+
|
| 3 |
+
# Node-generated files
|
| 4 |
+
node_modules/
|
| 5 |
+
|
| 6 |
+
# Python-generated files
|
| 7 |
+
__pycache__/
|
| 8 |
+
*.py[oc]
|
| 9 |
+
dist/
|
| 10 |
+
wheels/
|
| 11 |
+
*.egg-info
|
| 12 |
+
|
| 13 |
+
# Virtual environments
|
| 14 |
+
.venv
|
| 15 |
+
|
| 16 |
+
# Environment variables file
|
| 17 |
+
.env
|
| 18 |
+
|
| 19 |
+
# Rust-generated files
|
| 20 |
+
debug
|
| 21 |
+
target
|
| 22 |
+
|
| 23 |
+
# JetBrains IDEs
|
| 24 |
+
.idea
|
LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2025 Model Context Protocol
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Quickstart Resources
|
| 2 |
+
|
| 3 |
+
A repository of servers and clients from the following Model Context Protocol tutorials:
|
| 4 |
+
- [Quickstart](https://modelcontextprotocol.io/quickstart) – a simple MCP weather server
|
| 5 |
+
- [Building MCP clients](https://modelcontextprotocol.io/tutorials/building-a-client) – an LLM-powered chatbot MCP client
|
mcp-client-python/.env.example
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
ANTHROPIC_API_KEY=
|
mcp-client-python/.python-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
3.10
|
mcp-client-python/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# An LLM-Powered Chatbot MCP Client written in Python
|
| 2 |
+
|
| 3 |
+
See the [Building MCP clients](https://modelcontextprotocol.io/tutorials/building-a-client) tutorial for more information.
|
mcp-client-python/client.py
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import asyncio
|
| 2 |
+
from contextlib import AsyncExitStack
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
|
| 5 |
+
from anthropic import Anthropic
|
| 6 |
+
from dotenv import load_dotenv
|
| 7 |
+
from mcp import ClientSession, StdioServerParameters
|
| 8 |
+
from mcp.client.stdio import stdio_client
|
| 9 |
+
|
| 10 |
+
load_dotenv() # load environment variables from .env
|
| 11 |
+
|
| 12 |
+
# Claude model constant
|
| 13 |
+
ANTHROPIC_MODEL = "claude-sonnet-4-5"
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
class MCPClient:
|
| 17 |
+
def __init__(self):
|
| 18 |
+
# Initialize session and client objects
|
| 19 |
+
self.session: ClientSession | None = None
|
| 20 |
+
self.exit_stack = AsyncExitStack()
|
| 21 |
+
self.anthropic = Anthropic()
|
| 22 |
+
|
| 23 |
+
async def connect_to_server(self, server_script_path: str):
|
| 24 |
+
"""Connect to an MCP server
|
| 25 |
+
|
| 26 |
+
Args:
|
| 27 |
+
server_script_path: Path to the server script (.py or .js)
|
| 28 |
+
"""
|
| 29 |
+
is_python = server_script_path.endswith(".py")
|
| 30 |
+
is_js = server_script_path.endswith(".js")
|
| 31 |
+
if not (is_python or is_js):
|
| 32 |
+
raise ValueError("Server script must be a .py or .js file")
|
| 33 |
+
|
| 34 |
+
if is_python:
|
| 35 |
+
path = Path(server_script_path).resolve()
|
| 36 |
+
server_params = StdioServerParameters(
|
| 37 |
+
command="uv",
|
| 38 |
+
args=["--directory", str(path.parent), "run", path.name],
|
| 39 |
+
env=None,
|
| 40 |
+
)
|
| 41 |
+
else:
|
| 42 |
+
server_params = StdioServerParameters(command="node", args=[server_script_path], env=None)
|
| 43 |
+
|
| 44 |
+
stdio_transport = await self.exit_stack.enter_async_context(stdio_client(server_params))
|
| 45 |
+
self.stdio, self.write = stdio_transport
|
| 46 |
+
self.session = await self.exit_stack.enter_async_context(ClientSession(self.stdio, self.write))
|
| 47 |
+
|
| 48 |
+
await self.session.initialize()
|
| 49 |
+
|
| 50 |
+
# List available tools
|
| 51 |
+
response = await self.session.list_tools()
|
| 52 |
+
tools = response.tools
|
| 53 |
+
print("\nConnected to server with tools:", [tool.name for tool in tools])
|
| 54 |
+
|
| 55 |
+
async def process_query(self, query: str) -> str:
|
| 56 |
+
"""Process a query using Claude and available tools"""
|
| 57 |
+
messages = [{"role": "user", "content": query}]
|
| 58 |
+
|
| 59 |
+
response = await self.session.list_tools()
|
| 60 |
+
available_tools = [
|
| 61 |
+
{"name": tool.name, "description": tool.description, "input_schema": tool.inputSchema}
|
| 62 |
+
for tool in response.tools
|
| 63 |
+
]
|
| 64 |
+
|
| 65 |
+
# Initial Claude API call
|
| 66 |
+
response = self.anthropic.messages.create(
|
| 67 |
+
model=ANTHROPIC_MODEL, max_tokens=1000, messages=messages, tools=available_tools
|
| 68 |
+
)
|
| 69 |
+
|
| 70 |
+
# Process response and handle tool calls
|
| 71 |
+
final_text = []
|
| 72 |
+
|
| 73 |
+
for content in response.content:
|
| 74 |
+
if content.type == "text":
|
| 75 |
+
final_text.append(content.text)
|
| 76 |
+
elif content.type == "tool_use":
|
| 77 |
+
tool_name = content.name
|
| 78 |
+
tool_args = content.input
|
| 79 |
+
|
| 80 |
+
# Execute tool call
|
| 81 |
+
result = await self.session.call_tool(tool_name, tool_args)
|
| 82 |
+
final_text.append(f"[Calling tool {tool_name} with args {tool_args}]")
|
| 83 |
+
|
| 84 |
+
# Continue conversation with tool results
|
| 85 |
+
if hasattr(content, "text") and content.text:
|
| 86 |
+
messages.append({"role": "assistant", "content": content.text})
|
| 87 |
+
messages.append({"role": "user", "content": result.content})
|
| 88 |
+
|
| 89 |
+
# Get next response from Claude
|
| 90 |
+
response = self.anthropic.messages.create(
|
| 91 |
+
model=ANTHROPIC_MODEL,
|
| 92 |
+
max_tokens=1000,
|
| 93 |
+
messages=messages,
|
| 94 |
+
)
|
| 95 |
+
|
| 96 |
+
final_text.append(response.content[0].text)
|
| 97 |
+
|
| 98 |
+
return "\n".join(final_text)
|
| 99 |
+
|
| 100 |
+
async def chat_loop(self):
|
| 101 |
+
"""Run an interactive chat loop"""
|
| 102 |
+
print("\nMCP Client Started!")
|
| 103 |
+
print("Type your queries or 'quit' to exit.")
|
| 104 |
+
|
| 105 |
+
while True:
|
| 106 |
+
try:
|
| 107 |
+
query = input("\nQuery: ").strip()
|
| 108 |
+
|
| 109 |
+
if query.lower() == "quit":
|
| 110 |
+
break
|
| 111 |
+
|
| 112 |
+
response = await self.process_query(query)
|
| 113 |
+
print("\n" + response)
|
| 114 |
+
|
| 115 |
+
except Exception as e:
|
| 116 |
+
print(f"\nError: {str(e)}")
|
| 117 |
+
|
| 118 |
+
async def cleanup(self):
|
| 119 |
+
"""Clean up resources"""
|
| 120 |
+
await self.exit_stack.aclose()
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
async def main():
|
| 124 |
+
if len(sys.argv) < 2:
|
| 125 |
+
print("Usage: python client.py <path_to_server_script>")
|
| 126 |
+
sys.exit(1)
|
| 127 |
+
|
| 128 |
+
client = MCPClient()
|
| 129 |
+
try:
|
| 130 |
+
await client.connect_to_server(sys.argv[1])
|
| 131 |
+
await client.chat_loop()
|
| 132 |
+
finally:
|
| 133 |
+
await client.cleanup()
|
| 134 |
+
|
| 135 |
+
|
| 136 |
+
if __name__ == "__main__":
|
| 137 |
+
import sys
|
| 138 |
+
|
| 139 |
+
asyncio.run(main())
|
mcp-client-python/pyproject.toml
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[project]
|
| 2 |
+
name = "mcp-client"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
description = "A simple MCP client"
|
| 5 |
+
readme = "README.md"
|
| 6 |
+
requires-python = ">=3.10"
|
| 7 |
+
dependencies = [
|
| 8 |
+
"anthropic>=0.72.0",
|
| 9 |
+
"mcp>=1.21.0",
|
| 10 |
+
"python-dotenv>=1.2.1",
|
| 11 |
+
]
|
| 12 |
+
|
| 13 |
+
[dependency-groups]
|
| 14 |
+
dev = [
|
| 15 |
+
"ruff>=0.14.9",
|
| 16 |
+
]
|
| 17 |
+
|
| 18 |
+
[tool.ruff]
|
| 19 |
+
line-length = 120
|
| 20 |
+
target-version = "py310"
|
| 21 |
+
extend-exclude = ["README.md"]
|
| 22 |
+
|
| 23 |
+
[tool.ruff.lint]
|
| 24 |
+
select = [
|
| 25 |
+
"C4", # flake8-comprehensions
|
| 26 |
+
"C90", # mccabe
|
| 27 |
+
"E", # pycodestyle
|
| 28 |
+
"F", # pyflakes
|
| 29 |
+
"I", # isort
|
| 30 |
+
"PERF", # Perflint
|
| 31 |
+
"PL", # Pylint
|
| 32 |
+
"UP", # pyupgrade
|
| 33 |
+
]
|
| 34 |
+
ignore = ["PERF203", "PLC0415", "PLR0402"]
|
| 35 |
+
mccabe.max-complexity = 24 # Default is 10
|
| 36 |
+
|
| 37 |
+
[tool.ruff.lint.pylint]
|
| 38 |
+
allow-magic-value-types = ["bytes", "float", "int", "str"]
|
| 39 |
+
max-args = 23 # Default is 5
|
| 40 |
+
max-branches = 23 # Default is 12
|
| 41 |
+
max-returns = 13 # Default is 6
|
| 42 |
+
max-statements = 102 # Default is 50
|
mcp-client-python/uv.lock
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
mcp-client-typescript/.env.example
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
ANTHROPIC_API_KEY=
|
mcp-client-typescript/.gitignore
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/build
|
| 2 |
+
/node_modules
|
| 3 |
+
.env
|
mcp-client-typescript/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# An LLM-Powered Chatbot MCP Client written in TypeScript
|
| 2 |
+
|
| 3 |
+
See the [Building MCP clients](https://modelcontextprotocol.io/tutorials/building-a-client) tutorial for more information.
|
mcp-client-typescript/index.ts
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Anthropic } from "@anthropic-ai/sdk";
|
| 2 |
+
import {
|
| 3 |
+
MessageParam,
|
| 4 |
+
Tool,
|
| 5 |
+
} from "@anthropic-ai/sdk/resources/messages/messages.mjs";
|
| 6 |
+
|
| 7 |
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
| 8 |
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
| 9 |
+
import readline from "readline/promises";
|
| 10 |
+
|
| 11 |
+
import dotenv from "dotenv";
|
| 12 |
+
|
| 13 |
+
dotenv.config(); // load environment variables from .env
|
| 14 |
+
|
| 15 |
+
const ANTHROPIC_MODEL = "claude-sonnet-4-5";
|
| 16 |
+
const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY;
|
| 17 |
+
if (!ANTHROPIC_API_KEY) {
|
| 18 |
+
throw new Error("ANTHROPIC_API_KEY is not set");
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
class MCPClient {
|
| 22 |
+
private mcp: Client;
|
| 23 |
+
private anthropic: Anthropic;
|
| 24 |
+
private transport: StdioClientTransport | null = null;
|
| 25 |
+
private tools: Tool[] = [];
|
| 26 |
+
|
| 27 |
+
constructor() {
|
| 28 |
+
// Initialize Anthropic client and MCP client
|
| 29 |
+
this.anthropic = new Anthropic({
|
| 30 |
+
apiKey: ANTHROPIC_API_KEY,
|
| 31 |
+
});
|
| 32 |
+
this.mcp = new Client({ name: "mcp-client-cli", version: "1.0.0" });
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
async connectToServer(serverScriptPath: string) {
|
| 36 |
+
/**
|
| 37 |
+
* Connect to an MCP server
|
| 38 |
+
*
|
| 39 |
+
* @param serverScriptPath - Path to the server script (.py or .js)
|
| 40 |
+
*/
|
| 41 |
+
try {
|
| 42 |
+
// Determine script type and appropriate command
|
| 43 |
+
const isJs = serverScriptPath.endsWith(".js");
|
| 44 |
+
const isPy = serverScriptPath.endsWith(".py");
|
| 45 |
+
if (!isJs && !isPy) {
|
| 46 |
+
throw new Error("Server script must be a .js or .py file");
|
| 47 |
+
}
|
| 48 |
+
const command = isPy
|
| 49 |
+
? process.platform === "win32"
|
| 50 |
+
? "python"
|
| 51 |
+
: "python3"
|
| 52 |
+
: process.execPath;
|
| 53 |
+
|
| 54 |
+
// Initialize transport and connect to server
|
| 55 |
+
this.transport = new StdioClientTransport({
|
| 56 |
+
command,
|
| 57 |
+
args: [serverScriptPath],
|
| 58 |
+
});
|
| 59 |
+
await this.mcp.connect(this.transport);
|
| 60 |
+
|
| 61 |
+
// List available tools
|
| 62 |
+
const toolsResult = await this.mcp.listTools();
|
| 63 |
+
this.tools = toolsResult.tools.map((tool) => {
|
| 64 |
+
return {
|
| 65 |
+
name: tool.name,
|
| 66 |
+
description: tool.description,
|
| 67 |
+
input_schema: tool.inputSchema,
|
| 68 |
+
};
|
| 69 |
+
});
|
| 70 |
+
console.log(
|
| 71 |
+
"Connected to server with tools:",
|
| 72 |
+
this.tools.map(({ name }) => name),
|
| 73 |
+
);
|
| 74 |
+
} catch (e) {
|
| 75 |
+
console.log("Failed to connect to MCP server: ", e);
|
| 76 |
+
throw e;
|
| 77 |
+
}
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
async processQuery(query: string) {
|
| 81 |
+
/**
|
| 82 |
+
* Process a query using Claude and available tools
|
| 83 |
+
*
|
| 84 |
+
* @param query - The user's input query
|
| 85 |
+
* @returns Processed response as a string
|
| 86 |
+
*/
|
| 87 |
+
const messages: MessageParam[] = [
|
| 88 |
+
{
|
| 89 |
+
role: "user",
|
| 90 |
+
content: query,
|
| 91 |
+
},
|
| 92 |
+
];
|
| 93 |
+
|
| 94 |
+
// Initial Claude API call
|
| 95 |
+
const response = await this.anthropic.messages.create({
|
| 96 |
+
model: ANTHROPIC_MODEL,
|
| 97 |
+
max_tokens: 1000,
|
| 98 |
+
messages,
|
| 99 |
+
tools: this.tools,
|
| 100 |
+
});
|
| 101 |
+
|
| 102 |
+
// Process response and handle tool calls
|
| 103 |
+
const finalText = [];
|
| 104 |
+
|
| 105 |
+
for (const content of response.content) {
|
| 106 |
+
if (content.type === "text") {
|
| 107 |
+
finalText.push(content.text);
|
| 108 |
+
} else if (content.type === "tool_use") {
|
| 109 |
+
// Execute tool call
|
| 110 |
+
const toolName = content.name;
|
| 111 |
+
const toolArgs = content.input as { [x: string]: unknown } | undefined;
|
| 112 |
+
|
| 113 |
+
const result = await this.mcp.callTool({
|
| 114 |
+
name: toolName,
|
| 115 |
+
arguments: toolArgs,
|
| 116 |
+
});
|
| 117 |
+
finalText.push(
|
| 118 |
+
`[Calling tool ${toolName} with args ${JSON.stringify(toolArgs)}]`,
|
| 119 |
+
);
|
| 120 |
+
|
| 121 |
+
// Continue conversation with tool results
|
| 122 |
+
messages.push({
|
| 123 |
+
role: "user",
|
| 124 |
+
content: result.content as string,
|
| 125 |
+
});
|
| 126 |
+
|
| 127 |
+
// Get next response from Claude
|
| 128 |
+
const response = await this.anthropic.messages.create({
|
| 129 |
+
model: ANTHROPIC_MODEL,
|
| 130 |
+
max_tokens: 1000,
|
| 131 |
+
messages,
|
| 132 |
+
});
|
| 133 |
+
|
| 134 |
+
finalText.push(
|
| 135 |
+
response.content[0].type === "text" ? response.content[0].text : "",
|
| 136 |
+
);
|
| 137 |
+
}
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
return finalText.join("\n");
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
async chatLoop() {
|
| 144 |
+
/**
|
| 145 |
+
* Run an interactive chat loop
|
| 146 |
+
*/
|
| 147 |
+
const rl = readline.createInterface({
|
| 148 |
+
input: process.stdin,
|
| 149 |
+
output: process.stdout,
|
| 150 |
+
});
|
| 151 |
+
|
| 152 |
+
try {
|
| 153 |
+
console.log("\nMCP Client Started!");
|
| 154 |
+
console.log("Type your queries or 'quit' to exit.");
|
| 155 |
+
|
| 156 |
+
while (true) {
|
| 157 |
+
const message = await rl.question("\nQuery: ");
|
| 158 |
+
if (message.toLowerCase() === "quit") {
|
| 159 |
+
break;
|
| 160 |
+
}
|
| 161 |
+
const response = await this.processQuery(message);
|
| 162 |
+
console.log("\n" + response);
|
| 163 |
+
}
|
| 164 |
+
} finally {
|
| 165 |
+
rl.close();
|
| 166 |
+
}
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
async cleanup() {
|
| 170 |
+
/**
|
| 171 |
+
* Clean up resources
|
| 172 |
+
*/
|
| 173 |
+
await this.mcp.close();
|
| 174 |
+
}
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
async function main() {
|
| 178 |
+
if (process.argv.length < 3) {
|
| 179 |
+
console.log("Usage: node build/index.js <path_to_server_script>");
|
| 180 |
+
return;
|
| 181 |
+
}
|
| 182 |
+
const mcpClient = new MCPClient();
|
| 183 |
+
try {
|
| 184 |
+
await mcpClient.connectToServer(process.argv[2]);
|
| 185 |
+
await mcpClient.chatLoop();
|
| 186 |
+
} catch (e) {
|
| 187 |
+
console.error("Error:", e);
|
| 188 |
+
await mcpClient.cleanup();
|
| 189 |
+
process.exit(1);
|
| 190 |
+
} finally {
|
| 191 |
+
await mcpClient.cleanup();
|
| 192 |
+
process.exit(0);
|
| 193 |
+
}
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
main();
|
mcp-client-typescript/package-lock.json
ADDED
|
@@ -0,0 +1,1505 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "mcp-client-typescript",
|
| 3 |
+
"version": "1.0.0",
|
| 4 |
+
"lockfileVersion": 3,
|
| 5 |
+
"requires": true,
|
| 6 |
+
"packages": {
|
| 7 |
+
"": {
|
| 8 |
+
"name": "mcp-client-typescript",
|
| 9 |
+
"version": "1.0.0",
|
| 10 |
+
"license": "ISC",
|
| 11 |
+
"dependencies": {
|
| 12 |
+
"@anthropic-ai/sdk": "^0.36.3",
|
| 13 |
+
"@modelcontextprotocol/sdk": "^1.25.2",
|
| 14 |
+
"dotenv": "^16.4.7"
|
| 15 |
+
},
|
| 16 |
+
"devDependencies": {
|
| 17 |
+
"@types/node": "^22.13.4",
|
| 18 |
+
"typescript": "^5.7.3"
|
| 19 |
+
},
|
| 20 |
+
"engines": {
|
| 21 |
+
"node": ">=16.0.0"
|
| 22 |
+
}
|
| 23 |
+
},
|
| 24 |
+
"node_modules/@anthropic-ai/sdk": {
|
| 25 |
+
"version": "0.36.3",
|
| 26 |
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.36.3.tgz",
|
| 27 |
+
"integrity": "sha512-+c0mMLxL/17yFZ4P5+U6bTWiCSFZUKJddrv01ud2aFBWnTPLdRncYV76D3q1tqfnL7aCnhRtykFnoCFzvr4U3Q==",
|
| 28 |
+
"license": "MIT",
|
| 29 |
+
"dependencies": {
|
| 30 |
+
"@types/node": "^18.11.18",
|
| 31 |
+
"@types/node-fetch": "^2.6.4",
|
| 32 |
+
"abort-controller": "^3.0.0",
|
| 33 |
+
"agentkeepalive": "^4.2.1",
|
| 34 |
+
"form-data-encoder": "1.7.2",
|
| 35 |
+
"formdata-node": "^4.3.2",
|
| 36 |
+
"node-fetch": "^2.6.7"
|
| 37 |
+
}
|
| 38 |
+
},
|
| 39 |
+
"node_modules/@anthropic-ai/sdk/node_modules/@types/node": {
|
| 40 |
+
"version": "18.19.76",
|
| 41 |
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.76.tgz",
|
| 42 |
+
"integrity": "sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==",
|
| 43 |
+
"license": "MIT",
|
| 44 |
+
"dependencies": {
|
| 45 |
+
"undici-types": "~5.26.4"
|
| 46 |
+
}
|
| 47 |
+
},
|
| 48 |
+
"node_modules/@anthropic-ai/sdk/node_modules/undici-types": {
|
| 49 |
+
"version": "5.26.5",
|
| 50 |
+
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
| 51 |
+
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
|
| 52 |
+
"license": "MIT"
|
| 53 |
+
},
|
| 54 |
+
"node_modules/@hono/node-server": {
|
| 55 |
+
"version": "1.19.7",
|
| 56 |
+
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.7.tgz",
|
| 57 |
+
"integrity": "sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==",
|
| 58 |
+
"license": "MIT",
|
| 59 |
+
"engines": {
|
| 60 |
+
"node": ">=18.14.1"
|
| 61 |
+
},
|
| 62 |
+
"peerDependencies": {
|
| 63 |
+
"hono": "^4"
|
| 64 |
+
}
|
| 65 |
+
},
|
| 66 |
+
"node_modules/@modelcontextprotocol/sdk": {
|
| 67 |
+
"version": "1.25.2",
|
| 68 |
+
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.2.tgz",
|
| 69 |
+
"integrity": "sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==",
|
| 70 |
+
"license": "MIT",
|
| 71 |
+
"dependencies": {
|
| 72 |
+
"@hono/node-server": "^1.19.7",
|
| 73 |
+
"ajv": "^8.17.1",
|
| 74 |
+
"ajv-formats": "^3.0.1",
|
| 75 |
+
"content-type": "^1.0.5",
|
| 76 |
+
"cors": "^2.8.5",
|
| 77 |
+
"cross-spawn": "^7.0.5",
|
| 78 |
+
"eventsource": "^3.0.2",
|
| 79 |
+
"eventsource-parser": "^3.0.0",
|
| 80 |
+
"express": "^5.0.1",
|
| 81 |
+
"express-rate-limit": "^7.5.0",
|
| 82 |
+
"jose": "^6.1.1",
|
| 83 |
+
"json-schema-typed": "^8.0.2",
|
| 84 |
+
"pkce-challenge": "^5.0.0",
|
| 85 |
+
"raw-body": "^3.0.0",
|
| 86 |
+
"zod": "^3.25 || ^4.0",
|
| 87 |
+
"zod-to-json-schema": "^3.25.0"
|
| 88 |
+
},
|
| 89 |
+
"engines": {
|
| 90 |
+
"node": ">=18"
|
| 91 |
+
},
|
| 92 |
+
"peerDependencies": {
|
| 93 |
+
"@cfworker/json-schema": "^4.1.1",
|
| 94 |
+
"zod": "^3.25 || ^4.0"
|
| 95 |
+
},
|
| 96 |
+
"peerDependenciesMeta": {
|
| 97 |
+
"@cfworker/json-schema": {
|
| 98 |
+
"optional": true
|
| 99 |
+
},
|
| 100 |
+
"zod": {
|
| 101 |
+
"optional": false
|
| 102 |
+
}
|
| 103 |
+
}
|
| 104 |
+
},
|
| 105 |
+
"node_modules/@types/node": {
|
| 106 |
+
"version": "22.13.4",
|
| 107 |
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz",
|
| 108 |
+
"integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==",
|
| 109 |
+
"license": "MIT",
|
| 110 |
+
"dependencies": {
|
| 111 |
+
"undici-types": "~6.20.0"
|
| 112 |
+
}
|
| 113 |
+
},
|
| 114 |
+
"node_modules/@types/node-fetch": {
|
| 115 |
+
"version": "2.6.12",
|
| 116 |
+
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz",
|
| 117 |
+
"integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==",
|
| 118 |
+
"license": "MIT",
|
| 119 |
+
"dependencies": {
|
| 120 |
+
"@types/node": "*",
|
| 121 |
+
"form-data": "^4.0.0"
|
| 122 |
+
}
|
| 123 |
+
},
|
| 124 |
+
"node_modules/abort-controller": {
|
| 125 |
+
"version": "3.0.0",
|
| 126 |
+
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
|
| 127 |
+
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
|
| 128 |
+
"license": "MIT",
|
| 129 |
+
"dependencies": {
|
| 130 |
+
"event-target-shim": "^5.0.0"
|
| 131 |
+
},
|
| 132 |
+
"engines": {
|
| 133 |
+
"node": ">=6.5"
|
| 134 |
+
}
|
| 135 |
+
},
|
| 136 |
+
"node_modules/accepts": {
|
| 137 |
+
"version": "2.0.0",
|
| 138 |
+
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
|
| 139 |
+
"integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
|
| 140 |
+
"license": "MIT",
|
| 141 |
+
"dependencies": {
|
| 142 |
+
"mime-types": "^3.0.0",
|
| 143 |
+
"negotiator": "^1.0.0"
|
| 144 |
+
},
|
| 145 |
+
"engines": {
|
| 146 |
+
"node": ">= 0.6"
|
| 147 |
+
}
|
| 148 |
+
},
|
| 149 |
+
"node_modules/accepts/node_modules/mime-db": {
|
| 150 |
+
"version": "1.54.0",
|
| 151 |
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
|
| 152 |
+
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
| 153 |
+
"license": "MIT",
|
| 154 |
+
"engines": {
|
| 155 |
+
"node": ">= 0.6"
|
| 156 |
+
}
|
| 157 |
+
},
|
| 158 |
+
"node_modules/accepts/node_modules/mime-types": {
|
| 159 |
+
"version": "3.0.2",
|
| 160 |
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
|
| 161 |
+
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
| 162 |
+
"license": "MIT",
|
| 163 |
+
"dependencies": {
|
| 164 |
+
"mime-db": "^1.54.0"
|
| 165 |
+
},
|
| 166 |
+
"engines": {
|
| 167 |
+
"node": ">=18"
|
| 168 |
+
},
|
| 169 |
+
"funding": {
|
| 170 |
+
"type": "opencollective",
|
| 171 |
+
"url": "https://opencollective.com/express"
|
| 172 |
+
}
|
| 173 |
+
},
|
| 174 |
+
"node_modules/agentkeepalive": {
|
| 175 |
+
"version": "4.6.0",
|
| 176 |
+
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz",
|
| 177 |
+
"integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==",
|
| 178 |
+
"license": "MIT",
|
| 179 |
+
"dependencies": {
|
| 180 |
+
"humanize-ms": "^1.2.1"
|
| 181 |
+
},
|
| 182 |
+
"engines": {
|
| 183 |
+
"node": ">= 8.0.0"
|
| 184 |
+
}
|
| 185 |
+
},
|
| 186 |
+
"node_modules/ajv": {
|
| 187 |
+
"version": "8.17.1",
|
| 188 |
+
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
|
| 189 |
+
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
| 190 |
+
"license": "MIT",
|
| 191 |
+
"dependencies": {
|
| 192 |
+
"fast-deep-equal": "^3.1.3",
|
| 193 |
+
"fast-uri": "^3.0.1",
|
| 194 |
+
"json-schema-traverse": "^1.0.0",
|
| 195 |
+
"require-from-string": "^2.0.2"
|
| 196 |
+
},
|
| 197 |
+
"funding": {
|
| 198 |
+
"type": "github",
|
| 199 |
+
"url": "https://github.com/sponsors/epoberezkin"
|
| 200 |
+
}
|
| 201 |
+
},
|
| 202 |
+
"node_modules/ajv-formats": {
|
| 203 |
+
"version": "3.0.1",
|
| 204 |
+
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
|
| 205 |
+
"integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
|
| 206 |
+
"license": "MIT",
|
| 207 |
+
"dependencies": {
|
| 208 |
+
"ajv": "^8.0.0"
|
| 209 |
+
},
|
| 210 |
+
"peerDependencies": {
|
| 211 |
+
"ajv": "^8.0.0"
|
| 212 |
+
},
|
| 213 |
+
"peerDependenciesMeta": {
|
| 214 |
+
"ajv": {
|
| 215 |
+
"optional": true
|
| 216 |
+
}
|
| 217 |
+
}
|
| 218 |
+
},
|
| 219 |
+
"node_modules/asynckit": {
|
| 220 |
+
"version": "0.4.0",
|
| 221 |
+
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
| 222 |
+
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
| 223 |
+
"license": "MIT"
|
| 224 |
+
},
|
| 225 |
+
"node_modules/body-parser": {
|
| 226 |
+
"version": "2.2.1",
|
| 227 |
+
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
|
| 228 |
+
"integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
|
| 229 |
+
"license": "MIT",
|
| 230 |
+
"dependencies": {
|
| 231 |
+
"bytes": "^3.1.2",
|
| 232 |
+
"content-type": "^1.0.5",
|
| 233 |
+
"debug": "^4.4.3",
|
| 234 |
+
"http-errors": "^2.0.0",
|
| 235 |
+
"iconv-lite": "^0.7.0",
|
| 236 |
+
"on-finished": "^2.4.1",
|
| 237 |
+
"qs": "^6.14.0",
|
| 238 |
+
"raw-body": "^3.0.1",
|
| 239 |
+
"type-is": "^2.0.1"
|
| 240 |
+
},
|
| 241 |
+
"engines": {
|
| 242 |
+
"node": ">=18"
|
| 243 |
+
},
|
| 244 |
+
"funding": {
|
| 245 |
+
"type": "opencollective",
|
| 246 |
+
"url": "https://opencollective.com/express"
|
| 247 |
+
}
|
| 248 |
+
},
|
| 249 |
+
"node_modules/bytes": {
|
| 250 |
+
"version": "3.1.2",
|
| 251 |
+
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
|
| 252 |
+
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
|
| 253 |
+
"license": "MIT",
|
| 254 |
+
"engines": {
|
| 255 |
+
"node": ">= 0.8"
|
| 256 |
+
}
|
| 257 |
+
},
|
| 258 |
+
"node_modules/call-bind-apply-helpers": {
|
| 259 |
+
"version": "1.0.2",
|
| 260 |
+
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
| 261 |
+
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
| 262 |
+
"license": "MIT",
|
| 263 |
+
"dependencies": {
|
| 264 |
+
"es-errors": "^1.3.0",
|
| 265 |
+
"function-bind": "^1.1.2"
|
| 266 |
+
},
|
| 267 |
+
"engines": {
|
| 268 |
+
"node": ">= 0.4"
|
| 269 |
+
}
|
| 270 |
+
},
|
| 271 |
+
"node_modules/call-bound": {
|
| 272 |
+
"version": "1.0.4",
|
| 273 |
+
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
|
| 274 |
+
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
|
| 275 |
+
"license": "MIT",
|
| 276 |
+
"dependencies": {
|
| 277 |
+
"call-bind-apply-helpers": "^1.0.2",
|
| 278 |
+
"get-intrinsic": "^1.3.0"
|
| 279 |
+
},
|
| 280 |
+
"engines": {
|
| 281 |
+
"node": ">= 0.4"
|
| 282 |
+
},
|
| 283 |
+
"funding": {
|
| 284 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 285 |
+
}
|
| 286 |
+
},
|
| 287 |
+
"node_modules/combined-stream": {
|
| 288 |
+
"version": "1.0.8",
|
| 289 |
+
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
| 290 |
+
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
| 291 |
+
"license": "MIT",
|
| 292 |
+
"dependencies": {
|
| 293 |
+
"delayed-stream": "~1.0.0"
|
| 294 |
+
},
|
| 295 |
+
"engines": {
|
| 296 |
+
"node": ">= 0.8"
|
| 297 |
+
}
|
| 298 |
+
},
|
| 299 |
+
"node_modules/content-disposition": {
|
| 300 |
+
"version": "1.0.1",
|
| 301 |
+
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
|
| 302 |
+
"integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
|
| 303 |
+
"license": "MIT",
|
| 304 |
+
"engines": {
|
| 305 |
+
"node": ">=18"
|
| 306 |
+
},
|
| 307 |
+
"funding": {
|
| 308 |
+
"type": "opencollective",
|
| 309 |
+
"url": "https://opencollective.com/express"
|
| 310 |
+
}
|
| 311 |
+
},
|
| 312 |
+
"node_modules/content-type": {
|
| 313 |
+
"version": "1.0.5",
|
| 314 |
+
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
|
| 315 |
+
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
|
| 316 |
+
"license": "MIT",
|
| 317 |
+
"engines": {
|
| 318 |
+
"node": ">= 0.6"
|
| 319 |
+
}
|
| 320 |
+
},
|
| 321 |
+
"node_modules/cookie": {
|
| 322 |
+
"version": "0.7.2",
|
| 323 |
+
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
|
| 324 |
+
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
|
| 325 |
+
"license": "MIT",
|
| 326 |
+
"engines": {
|
| 327 |
+
"node": ">= 0.6"
|
| 328 |
+
}
|
| 329 |
+
},
|
| 330 |
+
"node_modules/cookie-signature": {
|
| 331 |
+
"version": "1.2.2",
|
| 332 |
+
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
|
| 333 |
+
"integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
|
| 334 |
+
"license": "MIT",
|
| 335 |
+
"engines": {
|
| 336 |
+
"node": ">=6.6.0"
|
| 337 |
+
}
|
| 338 |
+
},
|
| 339 |
+
"node_modules/cors": {
|
| 340 |
+
"version": "2.8.5",
|
| 341 |
+
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
| 342 |
+
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
| 343 |
+
"license": "MIT",
|
| 344 |
+
"dependencies": {
|
| 345 |
+
"object-assign": "^4",
|
| 346 |
+
"vary": "^1"
|
| 347 |
+
},
|
| 348 |
+
"engines": {
|
| 349 |
+
"node": ">= 0.10"
|
| 350 |
+
}
|
| 351 |
+
},
|
| 352 |
+
"node_modules/cross-spawn": {
|
| 353 |
+
"version": "7.0.6",
|
| 354 |
+
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
| 355 |
+
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
| 356 |
+
"license": "MIT",
|
| 357 |
+
"dependencies": {
|
| 358 |
+
"path-key": "^3.1.0",
|
| 359 |
+
"shebang-command": "^2.0.0",
|
| 360 |
+
"which": "^2.0.1"
|
| 361 |
+
},
|
| 362 |
+
"engines": {
|
| 363 |
+
"node": ">= 8"
|
| 364 |
+
}
|
| 365 |
+
},
|
| 366 |
+
"node_modules/debug": {
|
| 367 |
+
"version": "4.4.3",
|
| 368 |
+
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
| 369 |
+
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
| 370 |
+
"license": "MIT",
|
| 371 |
+
"dependencies": {
|
| 372 |
+
"ms": "^2.1.3"
|
| 373 |
+
},
|
| 374 |
+
"engines": {
|
| 375 |
+
"node": ">=6.0"
|
| 376 |
+
},
|
| 377 |
+
"peerDependenciesMeta": {
|
| 378 |
+
"supports-color": {
|
| 379 |
+
"optional": true
|
| 380 |
+
}
|
| 381 |
+
}
|
| 382 |
+
},
|
| 383 |
+
"node_modules/delayed-stream": {
|
| 384 |
+
"version": "1.0.0",
|
| 385 |
+
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
| 386 |
+
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
| 387 |
+
"license": "MIT",
|
| 388 |
+
"engines": {
|
| 389 |
+
"node": ">=0.4.0"
|
| 390 |
+
}
|
| 391 |
+
},
|
| 392 |
+
"node_modules/depd": {
|
| 393 |
+
"version": "2.0.0",
|
| 394 |
+
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
| 395 |
+
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
| 396 |
+
"license": "MIT",
|
| 397 |
+
"engines": {
|
| 398 |
+
"node": ">= 0.8"
|
| 399 |
+
}
|
| 400 |
+
},
|
| 401 |
+
"node_modules/dotenv": {
|
| 402 |
+
"version": "16.4.7",
|
| 403 |
+
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
|
| 404 |
+
"integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
|
| 405 |
+
"license": "BSD-2-Clause",
|
| 406 |
+
"engines": {
|
| 407 |
+
"node": ">=12"
|
| 408 |
+
},
|
| 409 |
+
"funding": {
|
| 410 |
+
"url": "https://dotenvx.com"
|
| 411 |
+
}
|
| 412 |
+
},
|
| 413 |
+
"node_modules/dunder-proto": {
|
| 414 |
+
"version": "1.0.1",
|
| 415 |
+
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
| 416 |
+
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
| 417 |
+
"license": "MIT",
|
| 418 |
+
"dependencies": {
|
| 419 |
+
"call-bind-apply-helpers": "^1.0.1",
|
| 420 |
+
"es-errors": "^1.3.0",
|
| 421 |
+
"gopd": "^1.2.0"
|
| 422 |
+
},
|
| 423 |
+
"engines": {
|
| 424 |
+
"node": ">= 0.4"
|
| 425 |
+
}
|
| 426 |
+
},
|
| 427 |
+
"node_modules/ee-first": {
|
| 428 |
+
"version": "1.1.1",
|
| 429 |
+
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
| 430 |
+
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
|
| 431 |
+
"license": "MIT"
|
| 432 |
+
},
|
| 433 |
+
"node_modules/encodeurl": {
|
| 434 |
+
"version": "2.0.0",
|
| 435 |
+
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
|
| 436 |
+
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
|
| 437 |
+
"license": "MIT",
|
| 438 |
+
"engines": {
|
| 439 |
+
"node": ">= 0.8"
|
| 440 |
+
}
|
| 441 |
+
},
|
| 442 |
+
"node_modules/es-define-property": {
|
| 443 |
+
"version": "1.0.1",
|
| 444 |
+
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
| 445 |
+
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
| 446 |
+
"license": "MIT",
|
| 447 |
+
"engines": {
|
| 448 |
+
"node": ">= 0.4"
|
| 449 |
+
}
|
| 450 |
+
},
|
| 451 |
+
"node_modules/es-errors": {
|
| 452 |
+
"version": "1.3.0",
|
| 453 |
+
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
| 454 |
+
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
| 455 |
+
"license": "MIT",
|
| 456 |
+
"engines": {
|
| 457 |
+
"node": ">= 0.4"
|
| 458 |
+
}
|
| 459 |
+
},
|
| 460 |
+
"node_modules/es-object-atoms": {
|
| 461 |
+
"version": "1.1.1",
|
| 462 |
+
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
| 463 |
+
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
| 464 |
+
"license": "MIT",
|
| 465 |
+
"dependencies": {
|
| 466 |
+
"es-errors": "^1.3.0"
|
| 467 |
+
},
|
| 468 |
+
"engines": {
|
| 469 |
+
"node": ">= 0.4"
|
| 470 |
+
}
|
| 471 |
+
},
|
| 472 |
+
"node_modules/es-set-tostringtag": {
|
| 473 |
+
"version": "2.1.0",
|
| 474 |
+
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
|
| 475 |
+
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
|
| 476 |
+
"license": "MIT",
|
| 477 |
+
"dependencies": {
|
| 478 |
+
"es-errors": "^1.3.0",
|
| 479 |
+
"get-intrinsic": "^1.2.6",
|
| 480 |
+
"has-tostringtag": "^1.0.2",
|
| 481 |
+
"hasown": "^2.0.2"
|
| 482 |
+
},
|
| 483 |
+
"engines": {
|
| 484 |
+
"node": ">= 0.4"
|
| 485 |
+
}
|
| 486 |
+
},
|
| 487 |
+
"node_modules/escape-html": {
|
| 488 |
+
"version": "1.0.3",
|
| 489 |
+
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
| 490 |
+
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
|
| 491 |
+
"license": "MIT"
|
| 492 |
+
},
|
| 493 |
+
"node_modules/etag": {
|
| 494 |
+
"version": "1.8.1",
|
| 495 |
+
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
| 496 |
+
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
| 497 |
+
"license": "MIT",
|
| 498 |
+
"engines": {
|
| 499 |
+
"node": ">= 0.6"
|
| 500 |
+
}
|
| 501 |
+
},
|
| 502 |
+
"node_modules/event-target-shim": {
|
| 503 |
+
"version": "5.0.1",
|
| 504 |
+
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
|
| 505 |
+
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
|
| 506 |
+
"license": "MIT",
|
| 507 |
+
"engines": {
|
| 508 |
+
"node": ">=6"
|
| 509 |
+
}
|
| 510 |
+
},
|
| 511 |
+
"node_modules/eventsource": {
|
| 512 |
+
"version": "3.0.5",
|
| 513 |
+
"resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.5.tgz",
|
| 514 |
+
"integrity": "sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==",
|
| 515 |
+
"license": "MIT",
|
| 516 |
+
"dependencies": {
|
| 517 |
+
"eventsource-parser": "^3.0.0"
|
| 518 |
+
},
|
| 519 |
+
"engines": {
|
| 520 |
+
"node": ">=18.0.0"
|
| 521 |
+
}
|
| 522 |
+
},
|
| 523 |
+
"node_modules/eventsource-parser": {
|
| 524 |
+
"version": "3.0.0",
|
| 525 |
+
"resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz",
|
| 526 |
+
"integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==",
|
| 527 |
+
"license": "MIT",
|
| 528 |
+
"engines": {
|
| 529 |
+
"node": ">=18.0.0"
|
| 530 |
+
}
|
| 531 |
+
},
|
| 532 |
+
"node_modules/express": {
|
| 533 |
+
"version": "5.2.1",
|
| 534 |
+
"resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
|
| 535 |
+
"integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
|
| 536 |
+
"license": "MIT",
|
| 537 |
+
"dependencies": {
|
| 538 |
+
"accepts": "^2.0.0",
|
| 539 |
+
"body-parser": "^2.2.1",
|
| 540 |
+
"content-disposition": "^1.0.0",
|
| 541 |
+
"content-type": "^1.0.5",
|
| 542 |
+
"cookie": "^0.7.1",
|
| 543 |
+
"cookie-signature": "^1.2.1",
|
| 544 |
+
"debug": "^4.4.0",
|
| 545 |
+
"depd": "^2.0.0",
|
| 546 |
+
"encodeurl": "^2.0.0",
|
| 547 |
+
"escape-html": "^1.0.3",
|
| 548 |
+
"etag": "^1.8.1",
|
| 549 |
+
"finalhandler": "^2.1.0",
|
| 550 |
+
"fresh": "^2.0.0",
|
| 551 |
+
"http-errors": "^2.0.0",
|
| 552 |
+
"merge-descriptors": "^2.0.0",
|
| 553 |
+
"mime-types": "^3.0.0",
|
| 554 |
+
"on-finished": "^2.4.1",
|
| 555 |
+
"once": "^1.4.0",
|
| 556 |
+
"parseurl": "^1.3.3",
|
| 557 |
+
"proxy-addr": "^2.0.7",
|
| 558 |
+
"qs": "^6.14.0",
|
| 559 |
+
"range-parser": "^1.2.1",
|
| 560 |
+
"router": "^2.2.0",
|
| 561 |
+
"send": "^1.1.0",
|
| 562 |
+
"serve-static": "^2.2.0",
|
| 563 |
+
"statuses": "^2.0.1",
|
| 564 |
+
"type-is": "^2.0.1",
|
| 565 |
+
"vary": "^1.1.2"
|
| 566 |
+
},
|
| 567 |
+
"engines": {
|
| 568 |
+
"node": ">= 18"
|
| 569 |
+
},
|
| 570 |
+
"funding": {
|
| 571 |
+
"type": "opencollective",
|
| 572 |
+
"url": "https://opencollective.com/express"
|
| 573 |
+
}
|
| 574 |
+
},
|
| 575 |
+
"node_modules/express-rate-limit": {
|
| 576 |
+
"version": "7.5.1",
|
| 577 |
+
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz",
|
| 578 |
+
"integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==",
|
| 579 |
+
"license": "MIT",
|
| 580 |
+
"engines": {
|
| 581 |
+
"node": ">= 16"
|
| 582 |
+
},
|
| 583 |
+
"funding": {
|
| 584 |
+
"url": "https://github.com/sponsors/express-rate-limit"
|
| 585 |
+
},
|
| 586 |
+
"peerDependencies": {
|
| 587 |
+
"express": ">= 4.11"
|
| 588 |
+
}
|
| 589 |
+
},
|
| 590 |
+
"node_modules/express/node_modules/mime-db": {
|
| 591 |
+
"version": "1.54.0",
|
| 592 |
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
|
| 593 |
+
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
| 594 |
+
"license": "MIT",
|
| 595 |
+
"engines": {
|
| 596 |
+
"node": ">= 0.6"
|
| 597 |
+
}
|
| 598 |
+
},
|
| 599 |
+
"node_modules/express/node_modules/mime-types": {
|
| 600 |
+
"version": "3.0.2",
|
| 601 |
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
|
| 602 |
+
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
| 603 |
+
"license": "MIT",
|
| 604 |
+
"dependencies": {
|
| 605 |
+
"mime-db": "^1.54.0"
|
| 606 |
+
},
|
| 607 |
+
"engines": {
|
| 608 |
+
"node": ">=18"
|
| 609 |
+
},
|
| 610 |
+
"funding": {
|
| 611 |
+
"type": "opencollective",
|
| 612 |
+
"url": "https://opencollective.com/express"
|
| 613 |
+
}
|
| 614 |
+
},
|
| 615 |
+
"node_modules/fast-deep-equal": {
|
| 616 |
+
"version": "3.1.3",
|
| 617 |
+
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
| 618 |
+
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
| 619 |
+
"license": "MIT"
|
| 620 |
+
},
|
| 621 |
+
"node_modules/fast-uri": {
|
| 622 |
+
"version": "3.1.0",
|
| 623 |
+
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
|
| 624 |
+
"integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
|
| 625 |
+
"funding": [
|
| 626 |
+
{
|
| 627 |
+
"type": "github",
|
| 628 |
+
"url": "https://github.com/sponsors/fastify"
|
| 629 |
+
},
|
| 630 |
+
{
|
| 631 |
+
"type": "opencollective",
|
| 632 |
+
"url": "https://opencollective.com/fastify"
|
| 633 |
+
}
|
| 634 |
+
],
|
| 635 |
+
"license": "BSD-3-Clause"
|
| 636 |
+
},
|
| 637 |
+
"node_modules/finalhandler": {
|
| 638 |
+
"version": "2.1.1",
|
| 639 |
+
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
|
| 640 |
+
"integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
|
| 641 |
+
"license": "MIT",
|
| 642 |
+
"dependencies": {
|
| 643 |
+
"debug": "^4.4.0",
|
| 644 |
+
"encodeurl": "^2.0.0",
|
| 645 |
+
"escape-html": "^1.0.3",
|
| 646 |
+
"on-finished": "^2.4.1",
|
| 647 |
+
"parseurl": "^1.3.3",
|
| 648 |
+
"statuses": "^2.0.1"
|
| 649 |
+
},
|
| 650 |
+
"engines": {
|
| 651 |
+
"node": ">= 18.0.0"
|
| 652 |
+
},
|
| 653 |
+
"funding": {
|
| 654 |
+
"type": "opencollective",
|
| 655 |
+
"url": "https://opencollective.com/express"
|
| 656 |
+
}
|
| 657 |
+
},
|
| 658 |
+
"node_modules/form-data": {
|
| 659 |
+
"version": "4.0.4",
|
| 660 |
+
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
| 661 |
+
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
| 662 |
+
"license": "MIT",
|
| 663 |
+
"dependencies": {
|
| 664 |
+
"asynckit": "^0.4.0",
|
| 665 |
+
"combined-stream": "^1.0.8",
|
| 666 |
+
"es-set-tostringtag": "^2.1.0",
|
| 667 |
+
"hasown": "^2.0.2",
|
| 668 |
+
"mime-types": "^2.1.12"
|
| 669 |
+
},
|
| 670 |
+
"engines": {
|
| 671 |
+
"node": ">= 6"
|
| 672 |
+
}
|
| 673 |
+
},
|
| 674 |
+
"node_modules/form-data-encoder": {
|
| 675 |
+
"version": "1.7.2",
|
| 676 |
+
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz",
|
| 677 |
+
"integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==",
|
| 678 |
+
"license": "MIT"
|
| 679 |
+
},
|
| 680 |
+
"node_modules/formdata-node": {
|
| 681 |
+
"version": "4.4.1",
|
| 682 |
+
"resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
|
| 683 |
+
"integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
|
| 684 |
+
"license": "MIT",
|
| 685 |
+
"dependencies": {
|
| 686 |
+
"node-domexception": "1.0.0",
|
| 687 |
+
"web-streams-polyfill": "4.0.0-beta.3"
|
| 688 |
+
},
|
| 689 |
+
"engines": {
|
| 690 |
+
"node": ">= 12.20"
|
| 691 |
+
}
|
| 692 |
+
},
|
| 693 |
+
"node_modules/forwarded": {
|
| 694 |
+
"version": "0.2.0",
|
| 695 |
+
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
| 696 |
+
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
|
| 697 |
+
"license": "MIT",
|
| 698 |
+
"engines": {
|
| 699 |
+
"node": ">= 0.6"
|
| 700 |
+
}
|
| 701 |
+
},
|
| 702 |
+
"node_modules/fresh": {
|
| 703 |
+
"version": "2.0.0",
|
| 704 |
+
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
|
| 705 |
+
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
|
| 706 |
+
"license": "MIT",
|
| 707 |
+
"engines": {
|
| 708 |
+
"node": ">= 0.8"
|
| 709 |
+
}
|
| 710 |
+
},
|
| 711 |
+
"node_modules/function-bind": {
|
| 712 |
+
"version": "1.1.2",
|
| 713 |
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
| 714 |
+
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
| 715 |
+
"license": "MIT",
|
| 716 |
+
"funding": {
|
| 717 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 718 |
+
}
|
| 719 |
+
},
|
| 720 |
+
"node_modules/get-intrinsic": {
|
| 721 |
+
"version": "1.3.0",
|
| 722 |
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
| 723 |
+
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
| 724 |
+
"license": "MIT",
|
| 725 |
+
"dependencies": {
|
| 726 |
+
"call-bind-apply-helpers": "^1.0.2",
|
| 727 |
+
"es-define-property": "^1.0.1",
|
| 728 |
+
"es-errors": "^1.3.0",
|
| 729 |
+
"es-object-atoms": "^1.1.1",
|
| 730 |
+
"function-bind": "^1.1.2",
|
| 731 |
+
"get-proto": "^1.0.1",
|
| 732 |
+
"gopd": "^1.2.0",
|
| 733 |
+
"has-symbols": "^1.1.0",
|
| 734 |
+
"hasown": "^2.0.2",
|
| 735 |
+
"math-intrinsics": "^1.1.0"
|
| 736 |
+
},
|
| 737 |
+
"engines": {
|
| 738 |
+
"node": ">= 0.4"
|
| 739 |
+
},
|
| 740 |
+
"funding": {
|
| 741 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 742 |
+
}
|
| 743 |
+
},
|
| 744 |
+
"node_modules/get-proto": {
|
| 745 |
+
"version": "1.0.1",
|
| 746 |
+
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
| 747 |
+
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
| 748 |
+
"license": "MIT",
|
| 749 |
+
"dependencies": {
|
| 750 |
+
"dunder-proto": "^1.0.1",
|
| 751 |
+
"es-object-atoms": "^1.0.0"
|
| 752 |
+
},
|
| 753 |
+
"engines": {
|
| 754 |
+
"node": ">= 0.4"
|
| 755 |
+
}
|
| 756 |
+
},
|
| 757 |
+
"node_modules/gopd": {
|
| 758 |
+
"version": "1.2.0",
|
| 759 |
+
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
| 760 |
+
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
| 761 |
+
"license": "MIT",
|
| 762 |
+
"engines": {
|
| 763 |
+
"node": ">= 0.4"
|
| 764 |
+
},
|
| 765 |
+
"funding": {
|
| 766 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 767 |
+
}
|
| 768 |
+
},
|
| 769 |
+
"node_modules/has-symbols": {
|
| 770 |
+
"version": "1.1.0",
|
| 771 |
+
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
| 772 |
+
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
| 773 |
+
"license": "MIT",
|
| 774 |
+
"engines": {
|
| 775 |
+
"node": ">= 0.4"
|
| 776 |
+
},
|
| 777 |
+
"funding": {
|
| 778 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 779 |
+
}
|
| 780 |
+
},
|
| 781 |
+
"node_modules/has-tostringtag": {
|
| 782 |
+
"version": "1.0.2",
|
| 783 |
+
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
|
| 784 |
+
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
| 785 |
+
"license": "MIT",
|
| 786 |
+
"dependencies": {
|
| 787 |
+
"has-symbols": "^1.0.3"
|
| 788 |
+
},
|
| 789 |
+
"engines": {
|
| 790 |
+
"node": ">= 0.4"
|
| 791 |
+
},
|
| 792 |
+
"funding": {
|
| 793 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 794 |
+
}
|
| 795 |
+
},
|
| 796 |
+
"node_modules/hasown": {
|
| 797 |
+
"version": "2.0.2",
|
| 798 |
+
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
| 799 |
+
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
| 800 |
+
"license": "MIT",
|
| 801 |
+
"dependencies": {
|
| 802 |
+
"function-bind": "^1.1.2"
|
| 803 |
+
},
|
| 804 |
+
"engines": {
|
| 805 |
+
"node": ">= 0.4"
|
| 806 |
+
}
|
| 807 |
+
},
|
| 808 |
+
"node_modules/hono": {
|
| 809 |
+
"version": "4.11.4",
|
| 810 |
+
"resolved": "https://registry.npmjs.org/hono/-/hono-4.11.4.tgz",
|
| 811 |
+
"integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==",
|
| 812 |
+
"license": "MIT",
|
| 813 |
+
"peer": true,
|
| 814 |
+
"engines": {
|
| 815 |
+
"node": ">=16.9.0"
|
| 816 |
+
}
|
| 817 |
+
},
|
| 818 |
+
"node_modules/http-errors": {
|
| 819 |
+
"version": "2.0.1",
|
| 820 |
+
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
|
| 821 |
+
"integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
|
| 822 |
+
"license": "MIT",
|
| 823 |
+
"dependencies": {
|
| 824 |
+
"depd": "~2.0.0",
|
| 825 |
+
"inherits": "~2.0.4",
|
| 826 |
+
"setprototypeof": "~1.2.0",
|
| 827 |
+
"statuses": "~2.0.2",
|
| 828 |
+
"toidentifier": "~1.0.1"
|
| 829 |
+
},
|
| 830 |
+
"engines": {
|
| 831 |
+
"node": ">= 0.8"
|
| 832 |
+
},
|
| 833 |
+
"funding": {
|
| 834 |
+
"type": "opencollective",
|
| 835 |
+
"url": "https://opencollective.com/express"
|
| 836 |
+
}
|
| 837 |
+
},
|
| 838 |
+
"node_modules/humanize-ms": {
|
| 839 |
+
"version": "1.2.1",
|
| 840 |
+
"resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
|
| 841 |
+
"integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
|
| 842 |
+
"license": "MIT",
|
| 843 |
+
"dependencies": {
|
| 844 |
+
"ms": "^2.0.0"
|
| 845 |
+
}
|
| 846 |
+
},
|
| 847 |
+
"node_modules/iconv-lite": {
|
| 848 |
+
"version": "0.7.1",
|
| 849 |
+
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz",
|
| 850 |
+
"integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==",
|
| 851 |
+
"license": "MIT",
|
| 852 |
+
"dependencies": {
|
| 853 |
+
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
| 854 |
+
},
|
| 855 |
+
"engines": {
|
| 856 |
+
"node": ">=0.10.0"
|
| 857 |
+
},
|
| 858 |
+
"funding": {
|
| 859 |
+
"type": "opencollective",
|
| 860 |
+
"url": "https://opencollective.com/express"
|
| 861 |
+
}
|
| 862 |
+
},
|
| 863 |
+
"node_modules/inherits": {
|
| 864 |
+
"version": "2.0.4",
|
| 865 |
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
| 866 |
+
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
| 867 |
+
"license": "ISC"
|
| 868 |
+
},
|
| 869 |
+
"node_modules/ipaddr.js": {
|
| 870 |
+
"version": "1.9.1",
|
| 871 |
+
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
| 872 |
+
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
|
| 873 |
+
"license": "MIT",
|
| 874 |
+
"engines": {
|
| 875 |
+
"node": ">= 0.10"
|
| 876 |
+
}
|
| 877 |
+
},
|
| 878 |
+
"node_modules/is-promise": {
|
| 879 |
+
"version": "4.0.0",
|
| 880 |
+
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
|
| 881 |
+
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
|
| 882 |
+
"license": "MIT"
|
| 883 |
+
},
|
| 884 |
+
"node_modules/isexe": {
|
| 885 |
+
"version": "2.0.0",
|
| 886 |
+
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
| 887 |
+
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
| 888 |
+
"license": "ISC"
|
| 889 |
+
},
|
| 890 |
+
"node_modules/jose": {
|
| 891 |
+
"version": "6.1.3",
|
| 892 |
+
"resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz",
|
| 893 |
+
"integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==",
|
| 894 |
+
"license": "MIT",
|
| 895 |
+
"funding": {
|
| 896 |
+
"url": "https://github.com/sponsors/panva"
|
| 897 |
+
}
|
| 898 |
+
},
|
| 899 |
+
"node_modules/json-schema-traverse": {
|
| 900 |
+
"version": "1.0.0",
|
| 901 |
+
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
| 902 |
+
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
| 903 |
+
"license": "MIT"
|
| 904 |
+
},
|
| 905 |
+
"node_modules/json-schema-typed": {
|
| 906 |
+
"version": "8.0.2",
|
| 907 |
+
"resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz",
|
| 908 |
+
"integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
|
| 909 |
+
"license": "BSD-2-Clause"
|
| 910 |
+
},
|
| 911 |
+
"node_modules/math-intrinsics": {
|
| 912 |
+
"version": "1.1.0",
|
| 913 |
+
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
| 914 |
+
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
| 915 |
+
"license": "MIT",
|
| 916 |
+
"engines": {
|
| 917 |
+
"node": ">= 0.4"
|
| 918 |
+
}
|
| 919 |
+
},
|
| 920 |
+
"node_modules/media-typer": {
|
| 921 |
+
"version": "1.1.0",
|
| 922 |
+
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
|
| 923 |
+
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
|
| 924 |
+
"license": "MIT",
|
| 925 |
+
"engines": {
|
| 926 |
+
"node": ">= 0.8"
|
| 927 |
+
}
|
| 928 |
+
},
|
| 929 |
+
"node_modules/merge-descriptors": {
|
| 930 |
+
"version": "2.0.0",
|
| 931 |
+
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
|
| 932 |
+
"integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
|
| 933 |
+
"license": "MIT",
|
| 934 |
+
"engines": {
|
| 935 |
+
"node": ">=18"
|
| 936 |
+
},
|
| 937 |
+
"funding": {
|
| 938 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
| 939 |
+
}
|
| 940 |
+
},
|
| 941 |
+
"node_modules/mime-db": {
|
| 942 |
+
"version": "1.52.0",
|
| 943 |
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
| 944 |
+
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
| 945 |
+
"license": "MIT",
|
| 946 |
+
"engines": {
|
| 947 |
+
"node": ">= 0.6"
|
| 948 |
+
}
|
| 949 |
+
},
|
| 950 |
+
"node_modules/mime-types": {
|
| 951 |
+
"version": "2.1.35",
|
| 952 |
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
| 953 |
+
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
| 954 |
+
"license": "MIT",
|
| 955 |
+
"dependencies": {
|
| 956 |
+
"mime-db": "1.52.0"
|
| 957 |
+
},
|
| 958 |
+
"engines": {
|
| 959 |
+
"node": ">= 0.6"
|
| 960 |
+
}
|
| 961 |
+
},
|
| 962 |
+
"node_modules/ms": {
|
| 963 |
+
"version": "2.1.3",
|
| 964 |
+
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
| 965 |
+
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
| 966 |
+
"license": "MIT"
|
| 967 |
+
},
|
| 968 |
+
"node_modules/negotiator": {
|
| 969 |
+
"version": "1.0.0",
|
| 970 |
+
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
|
| 971 |
+
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
|
| 972 |
+
"license": "MIT",
|
| 973 |
+
"engines": {
|
| 974 |
+
"node": ">= 0.6"
|
| 975 |
+
}
|
| 976 |
+
},
|
| 977 |
+
"node_modules/node-domexception": {
|
| 978 |
+
"version": "1.0.0",
|
| 979 |
+
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
|
| 980 |
+
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
|
| 981 |
+
"funding": [
|
| 982 |
+
{
|
| 983 |
+
"type": "github",
|
| 984 |
+
"url": "https://github.com/sponsors/jimmywarting"
|
| 985 |
+
},
|
| 986 |
+
{
|
| 987 |
+
"type": "github",
|
| 988 |
+
"url": "https://paypal.me/jimmywarting"
|
| 989 |
+
}
|
| 990 |
+
],
|
| 991 |
+
"license": "MIT",
|
| 992 |
+
"engines": {
|
| 993 |
+
"node": ">=10.5.0"
|
| 994 |
+
}
|
| 995 |
+
},
|
| 996 |
+
"node_modules/node-fetch": {
|
| 997 |
+
"version": "2.7.0",
|
| 998 |
+
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
|
| 999 |
+
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
|
| 1000 |
+
"license": "MIT",
|
| 1001 |
+
"dependencies": {
|
| 1002 |
+
"whatwg-url": "^5.0.0"
|
| 1003 |
+
},
|
| 1004 |
+
"engines": {
|
| 1005 |
+
"node": "4.x || >=6.0.0"
|
| 1006 |
+
},
|
| 1007 |
+
"peerDependencies": {
|
| 1008 |
+
"encoding": "^0.1.0"
|
| 1009 |
+
},
|
| 1010 |
+
"peerDependenciesMeta": {
|
| 1011 |
+
"encoding": {
|
| 1012 |
+
"optional": true
|
| 1013 |
+
}
|
| 1014 |
+
}
|
| 1015 |
+
},
|
| 1016 |
+
"node_modules/object-assign": {
|
| 1017 |
+
"version": "4.1.1",
|
| 1018 |
+
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
| 1019 |
+
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
| 1020 |
+
"license": "MIT",
|
| 1021 |
+
"engines": {
|
| 1022 |
+
"node": ">=0.10.0"
|
| 1023 |
+
}
|
| 1024 |
+
},
|
| 1025 |
+
"node_modules/object-inspect": {
|
| 1026 |
+
"version": "1.13.4",
|
| 1027 |
+
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
|
| 1028 |
+
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
|
| 1029 |
+
"license": "MIT",
|
| 1030 |
+
"engines": {
|
| 1031 |
+
"node": ">= 0.4"
|
| 1032 |
+
},
|
| 1033 |
+
"funding": {
|
| 1034 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 1035 |
+
}
|
| 1036 |
+
},
|
| 1037 |
+
"node_modules/on-finished": {
|
| 1038 |
+
"version": "2.4.1",
|
| 1039 |
+
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
| 1040 |
+
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
| 1041 |
+
"license": "MIT",
|
| 1042 |
+
"dependencies": {
|
| 1043 |
+
"ee-first": "1.1.1"
|
| 1044 |
+
},
|
| 1045 |
+
"engines": {
|
| 1046 |
+
"node": ">= 0.8"
|
| 1047 |
+
}
|
| 1048 |
+
},
|
| 1049 |
+
"node_modules/once": {
|
| 1050 |
+
"version": "1.4.0",
|
| 1051 |
+
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
| 1052 |
+
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
| 1053 |
+
"license": "ISC",
|
| 1054 |
+
"dependencies": {
|
| 1055 |
+
"wrappy": "1"
|
| 1056 |
+
}
|
| 1057 |
+
},
|
| 1058 |
+
"node_modules/parseurl": {
|
| 1059 |
+
"version": "1.3.3",
|
| 1060 |
+
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
| 1061 |
+
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
|
| 1062 |
+
"license": "MIT",
|
| 1063 |
+
"engines": {
|
| 1064 |
+
"node": ">= 0.8"
|
| 1065 |
+
}
|
| 1066 |
+
},
|
| 1067 |
+
"node_modules/path-key": {
|
| 1068 |
+
"version": "3.1.1",
|
| 1069 |
+
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
| 1070 |
+
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
| 1071 |
+
"license": "MIT",
|
| 1072 |
+
"engines": {
|
| 1073 |
+
"node": ">=8"
|
| 1074 |
+
}
|
| 1075 |
+
},
|
| 1076 |
+
"node_modules/path-to-regexp": {
|
| 1077 |
+
"version": "8.3.0",
|
| 1078 |
+
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
|
| 1079 |
+
"integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
|
| 1080 |
+
"license": "MIT",
|
| 1081 |
+
"funding": {
|
| 1082 |
+
"type": "opencollective",
|
| 1083 |
+
"url": "https://opencollective.com/express"
|
| 1084 |
+
}
|
| 1085 |
+
},
|
| 1086 |
+
"node_modules/pkce-challenge": {
|
| 1087 |
+
"version": "5.0.1",
|
| 1088 |
+
"resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz",
|
| 1089 |
+
"integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==",
|
| 1090 |
+
"license": "MIT",
|
| 1091 |
+
"engines": {
|
| 1092 |
+
"node": ">=16.20.0"
|
| 1093 |
+
}
|
| 1094 |
+
},
|
| 1095 |
+
"node_modules/proxy-addr": {
|
| 1096 |
+
"version": "2.0.7",
|
| 1097 |
+
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
| 1098 |
+
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
| 1099 |
+
"license": "MIT",
|
| 1100 |
+
"dependencies": {
|
| 1101 |
+
"forwarded": "0.2.0",
|
| 1102 |
+
"ipaddr.js": "1.9.1"
|
| 1103 |
+
},
|
| 1104 |
+
"engines": {
|
| 1105 |
+
"node": ">= 0.10"
|
| 1106 |
+
}
|
| 1107 |
+
},
|
| 1108 |
+
"node_modules/qs": {
|
| 1109 |
+
"version": "6.14.1",
|
| 1110 |
+
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
|
| 1111 |
+
"integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
|
| 1112 |
+
"license": "BSD-3-Clause",
|
| 1113 |
+
"dependencies": {
|
| 1114 |
+
"side-channel": "^1.1.0"
|
| 1115 |
+
},
|
| 1116 |
+
"engines": {
|
| 1117 |
+
"node": ">=0.6"
|
| 1118 |
+
},
|
| 1119 |
+
"funding": {
|
| 1120 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 1121 |
+
}
|
| 1122 |
+
},
|
| 1123 |
+
"node_modules/range-parser": {
|
| 1124 |
+
"version": "1.2.1",
|
| 1125 |
+
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
| 1126 |
+
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
| 1127 |
+
"license": "MIT",
|
| 1128 |
+
"engines": {
|
| 1129 |
+
"node": ">= 0.6"
|
| 1130 |
+
}
|
| 1131 |
+
},
|
| 1132 |
+
"node_modules/raw-body": {
|
| 1133 |
+
"version": "3.0.2",
|
| 1134 |
+
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
|
| 1135 |
+
"integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
|
| 1136 |
+
"license": "MIT",
|
| 1137 |
+
"dependencies": {
|
| 1138 |
+
"bytes": "~3.1.2",
|
| 1139 |
+
"http-errors": "~2.0.1",
|
| 1140 |
+
"iconv-lite": "~0.7.0",
|
| 1141 |
+
"unpipe": "~1.0.0"
|
| 1142 |
+
},
|
| 1143 |
+
"engines": {
|
| 1144 |
+
"node": ">= 0.10"
|
| 1145 |
+
}
|
| 1146 |
+
},
|
| 1147 |
+
"node_modules/require-from-string": {
|
| 1148 |
+
"version": "2.0.2",
|
| 1149 |
+
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
| 1150 |
+
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
| 1151 |
+
"license": "MIT",
|
| 1152 |
+
"engines": {
|
| 1153 |
+
"node": ">=0.10.0"
|
| 1154 |
+
}
|
| 1155 |
+
},
|
| 1156 |
+
"node_modules/router": {
|
| 1157 |
+
"version": "2.2.0",
|
| 1158 |
+
"resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
|
| 1159 |
+
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
|
| 1160 |
+
"license": "MIT",
|
| 1161 |
+
"dependencies": {
|
| 1162 |
+
"debug": "^4.4.0",
|
| 1163 |
+
"depd": "^2.0.0",
|
| 1164 |
+
"is-promise": "^4.0.0",
|
| 1165 |
+
"parseurl": "^1.3.3",
|
| 1166 |
+
"path-to-regexp": "^8.0.0"
|
| 1167 |
+
},
|
| 1168 |
+
"engines": {
|
| 1169 |
+
"node": ">= 18"
|
| 1170 |
+
}
|
| 1171 |
+
},
|
| 1172 |
+
"node_modules/safer-buffer": {
|
| 1173 |
+
"version": "2.1.2",
|
| 1174 |
+
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
| 1175 |
+
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
| 1176 |
+
"license": "MIT"
|
| 1177 |
+
},
|
| 1178 |
+
"node_modules/send": {
|
| 1179 |
+
"version": "1.2.0",
|
| 1180 |
+
"resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
|
| 1181 |
+
"integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
|
| 1182 |
+
"license": "MIT",
|
| 1183 |
+
"dependencies": {
|
| 1184 |
+
"debug": "^4.3.5",
|
| 1185 |
+
"encodeurl": "^2.0.0",
|
| 1186 |
+
"escape-html": "^1.0.3",
|
| 1187 |
+
"etag": "^1.8.1",
|
| 1188 |
+
"fresh": "^2.0.0",
|
| 1189 |
+
"http-errors": "^2.0.0",
|
| 1190 |
+
"mime-types": "^3.0.1",
|
| 1191 |
+
"ms": "^2.1.3",
|
| 1192 |
+
"on-finished": "^2.4.1",
|
| 1193 |
+
"range-parser": "^1.2.1",
|
| 1194 |
+
"statuses": "^2.0.1"
|
| 1195 |
+
},
|
| 1196 |
+
"engines": {
|
| 1197 |
+
"node": ">= 18"
|
| 1198 |
+
}
|
| 1199 |
+
},
|
| 1200 |
+
"node_modules/send/node_modules/mime-db": {
|
| 1201 |
+
"version": "1.54.0",
|
| 1202 |
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
|
| 1203 |
+
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
| 1204 |
+
"license": "MIT",
|
| 1205 |
+
"engines": {
|
| 1206 |
+
"node": ">= 0.6"
|
| 1207 |
+
}
|
| 1208 |
+
},
|
| 1209 |
+
"node_modules/send/node_modules/mime-types": {
|
| 1210 |
+
"version": "3.0.2",
|
| 1211 |
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
|
| 1212 |
+
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
| 1213 |
+
"license": "MIT",
|
| 1214 |
+
"dependencies": {
|
| 1215 |
+
"mime-db": "^1.54.0"
|
| 1216 |
+
},
|
| 1217 |
+
"engines": {
|
| 1218 |
+
"node": ">=18"
|
| 1219 |
+
},
|
| 1220 |
+
"funding": {
|
| 1221 |
+
"type": "opencollective",
|
| 1222 |
+
"url": "https://opencollective.com/express"
|
| 1223 |
+
}
|
| 1224 |
+
},
|
| 1225 |
+
"node_modules/serve-static": {
|
| 1226 |
+
"version": "2.2.0",
|
| 1227 |
+
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
|
| 1228 |
+
"integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
|
| 1229 |
+
"license": "MIT",
|
| 1230 |
+
"dependencies": {
|
| 1231 |
+
"encodeurl": "^2.0.0",
|
| 1232 |
+
"escape-html": "^1.0.3",
|
| 1233 |
+
"parseurl": "^1.3.3",
|
| 1234 |
+
"send": "^1.2.0"
|
| 1235 |
+
},
|
| 1236 |
+
"engines": {
|
| 1237 |
+
"node": ">= 18"
|
| 1238 |
+
}
|
| 1239 |
+
},
|
| 1240 |
+
"node_modules/setprototypeof": {
|
| 1241 |
+
"version": "1.2.0",
|
| 1242 |
+
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
| 1243 |
+
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
|
| 1244 |
+
"license": "ISC"
|
| 1245 |
+
},
|
| 1246 |
+
"node_modules/shebang-command": {
|
| 1247 |
+
"version": "2.0.0",
|
| 1248 |
+
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
| 1249 |
+
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
| 1250 |
+
"license": "MIT",
|
| 1251 |
+
"dependencies": {
|
| 1252 |
+
"shebang-regex": "^3.0.0"
|
| 1253 |
+
},
|
| 1254 |
+
"engines": {
|
| 1255 |
+
"node": ">=8"
|
| 1256 |
+
}
|
| 1257 |
+
},
|
| 1258 |
+
"node_modules/shebang-regex": {
|
| 1259 |
+
"version": "3.0.0",
|
| 1260 |
+
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
| 1261 |
+
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
| 1262 |
+
"license": "MIT",
|
| 1263 |
+
"engines": {
|
| 1264 |
+
"node": ">=8"
|
| 1265 |
+
}
|
| 1266 |
+
},
|
| 1267 |
+
"node_modules/side-channel": {
|
| 1268 |
+
"version": "1.1.0",
|
| 1269 |
+
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
|
| 1270 |
+
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
|
| 1271 |
+
"license": "MIT",
|
| 1272 |
+
"dependencies": {
|
| 1273 |
+
"es-errors": "^1.3.0",
|
| 1274 |
+
"object-inspect": "^1.13.3",
|
| 1275 |
+
"side-channel-list": "^1.0.0",
|
| 1276 |
+
"side-channel-map": "^1.0.1",
|
| 1277 |
+
"side-channel-weakmap": "^1.0.2"
|
| 1278 |
+
},
|
| 1279 |
+
"engines": {
|
| 1280 |
+
"node": ">= 0.4"
|
| 1281 |
+
},
|
| 1282 |
+
"funding": {
|
| 1283 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 1284 |
+
}
|
| 1285 |
+
},
|
| 1286 |
+
"node_modules/side-channel-list": {
|
| 1287 |
+
"version": "1.0.0",
|
| 1288 |
+
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
|
| 1289 |
+
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
|
| 1290 |
+
"license": "MIT",
|
| 1291 |
+
"dependencies": {
|
| 1292 |
+
"es-errors": "^1.3.0",
|
| 1293 |
+
"object-inspect": "^1.13.3"
|
| 1294 |
+
},
|
| 1295 |
+
"engines": {
|
| 1296 |
+
"node": ">= 0.4"
|
| 1297 |
+
},
|
| 1298 |
+
"funding": {
|
| 1299 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 1300 |
+
}
|
| 1301 |
+
},
|
| 1302 |
+
"node_modules/side-channel-map": {
|
| 1303 |
+
"version": "1.0.1",
|
| 1304 |
+
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
|
| 1305 |
+
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
|
| 1306 |
+
"license": "MIT",
|
| 1307 |
+
"dependencies": {
|
| 1308 |
+
"call-bound": "^1.0.2",
|
| 1309 |
+
"es-errors": "^1.3.0",
|
| 1310 |
+
"get-intrinsic": "^1.2.5",
|
| 1311 |
+
"object-inspect": "^1.13.3"
|
| 1312 |
+
},
|
| 1313 |
+
"engines": {
|
| 1314 |
+
"node": ">= 0.4"
|
| 1315 |
+
},
|
| 1316 |
+
"funding": {
|
| 1317 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 1318 |
+
}
|
| 1319 |
+
},
|
| 1320 |
+
"node_modules/side-channel-weakmap": {
|
| 1321 |
+
"version": "1.0.2",
|
| 1322 |
+
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
|
| 1323 |
+
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
|
| 1324 |
+
"license": "MIT",
|
| 1325 |
+
"dependencies": {
|
| 1326 |
+
"call-bound": "^1.0.2",
|
| 1327 |
+
"es-errors": "^1.3.0",
|
| 1328 |
+
"get-intrinsic": "^1.2.5",
|
| 1329 |
+
"object-inspect": "^1.13.3",
|
| 1330 |
+
"side-channel-map": "^1.0.1"
|
| 1331 |
+
},
|
| 1332 |
+
"engines": {
|
| 1333 |
+
"node": ">= 0.4"
|
| 1334 |
+
},
|
| 1335 |
+
"funding": {
|
| 1336 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 1337 |
+
}
|
| 1338 |
+
},
|
| 1339 |
+
"node_modules/statuses": {
|
| 1340 |
+
"version": "2.0.2",
|
| 1341 |
+
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
|
| 1342 |
+
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
|
| 1343 |
+
"license": "MIT",
|
| 1344 |
+
"engines": {
|
| 1345 |
+
"node": ">= 0.8"
|
| 1346 |
+
}
|
| 1347 |
+
},
|
| 1348 |
+
"node_modules/toidentifier": {
|
| 1349 |
+
"version": "1.0.1",
|
| 1350 |
+
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
|
| 1351 |
+
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
|
| 1352 |
+
"license": "MIT",
|
| 1353 |
+
"engines": {
|
| 1354 |
+
"node": ">=0.6"
|
| 1355 |
+
}
|
| 1356 |
+
},
|
| 1357 |
+
"node_modules/tr46": {
|
| 1358 |
+
"version": "0.0.3",
|
| 1359 |
+
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
| 1360 |
+
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
|
| 1361 |
+
"license": "MIT"
|
| 1362 |
+
},
|
| 1363 |
+
"node_modules/type-is": {
|
| 1364 |
+
"version": "2.0.1",
|
| 1365 |
+
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
|
| 1366 |
+
"integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
|
| 1367 |
+
"license": "MIT",
|
| 1368 |
+
"dependencies": {
|
| 1369 |
+
"content-type": "^1.0.5",
|
| 1370 |
+
"media-typer": "^1.1.0",
|
| 1371 |
+
"mime-types": "^3.0.0"
|
| 1372 |
+
},
|
| 1373 |
+
"engines": {
|
| 1374 |
+
"node": ">= 0.6"
|
| 1375 |
+
}
|
| 1376 |
+
},
|
| 1377 |
+
"node_modules/type-is/node_modules/mime-db": {
|
| 1378 |
+
"version": "1.54.0",
|
| 1379 |
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
|
| 1380 |
+
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
| 1381 |
+
"license": "MIT",
|
| 1382 |
+
"engines": {
|
| 1383 |
+
"node": ">= 0.6"
|
| 1384 |
+
}
|
| 1385 |
+
},
|
| 1386 |
+
"node_modules/type-is/node_modules/mime-types": {
|
| 1387 |
+
"version": "3.0.2",
|
| 1388 |
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
|
| 1389 |
+
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
| 1390 |
+
"license": "MIT",
|
| 1391 |
+
"dependencies": {
|
| 1392 |
+
"mime-db": "^1.54.0"
|
| 1393 |
+
},
|
| 1394 |
+
"engines": {
|
| 1395 |
+
"node": ">=18"
|
| 1396 |
+
},
|
| 1397 |
+
"funding": {
|
| 1398 |
+
"type": "opencollective",
|
| 1399 |
+
"url": "https://opencollective.com/express"
|
| 1400 |
+
}
|
| 1401 |
+
},
|
| 1402 |
+
"node_modules/typescript": {
|
| 1403 |
+
"version": "5.7.3",
|
| 1404 |
+
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
|
| 1405 |
+
"integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
|
| 1406 |
+
"dev": true,
|
| 1407 |
+
"license": "Apache-2.0",
|
| 1408 |
+
"bin": {
|
| 1409 |
+
"tsc": "bin/tsc",
|
| 1410 |
+
"tsserver": "bin/tsserver"
|
| 1411 |
+
},
|
| 1412 |
+
"engines": {
|
| 1413 |
+
"node": ">=14.17"
|
| 1414 |
+
}
|
| 1415 |
+
},
|
| 1416 |
+
"node_modules/undici-types": {
|
| 1417 |
+
"version": "6.20.0",
|
| 1418 |
+
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
|
| 1419 |
+
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
|
| 1420 |
+
"license": "MIT"
|
| 1421 |
+
},
|
| 1422 |
+
"node_modules/unpipe": {
|
| 1423 |
+
"version": "1.0.0",
|
| 1424 |
+
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
| 1425 |
+
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
|
| 1426 |
+
"license": "MIT",
|
| 1427 |
+
"engines": {
|
| 1428 |
+
"node": ">= 0.8"
|
| 1429 |
+
}
|
| 1430 |
+
},
|
| 1431 |
+
"node_modules/vary": {
|
| 1432 |
+
"version": "1.1.2",
|
| 1433 |
+
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
| 1434 |
+
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
|
| 1435 |
+
"license": "MIT",
|
| 1436 |
+
"engines": {
|
| 1437 |
+
"node": ">= 0.8"
|
| 1438 |
+
}
|
| 1439 |
+
},
|
| 1440 |
+
"node_modules/web-streams-polyfill": {
|
| 1441 |
+
"version": "4.0.0-beta.3",
|
| 1442 |
+
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
|
| 1443 |
+
"integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==",
|
| 1444 |
+
"license": "MIT",
|
| 1445 |
+
"engines": {
|
| 1446 |
+
"node": ">= 14"
|
| 1447 |
+
}
|
| 1448 |
+
},
|
| 1449 |
+
"node_modules/webidl-conversions": {
|
| 1450 |
+
"version": "3.0.1",
|
| 1451 |
+
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
| 1452 |
+
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
|
| 1453 |
+
"license": "BSD-2-Clause"
|
| 1454 |
+
},
|
| 1455 |
+
"node_modules/whatwg-url": {
|
| 1456 |
+
"version": "5.0.0",
|
| 1457 |
+
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
| 1458 |
+
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
| 1459 |
+
"license": "MIT",
|
| 1460 |
+
"dependencies": {
|
| 1461 |
+
"tr46": "~0.0.3",
|
| 1462 |
+
"webidl-conversions": "^3.0.0"
|
| 1463 |
+
}
|
| 1464 |
+
},
|
| 1465 |
+
"node_modules/which": {
|
| 1466 |
+
"version": "2.0.2",
|
| 1467 |
+
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
| 1468 |
+
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
| 1469 |
+
"license": "ISC",
|
| 1470 |
+
"dependencies": {
|
| 1471 |
+
"isexe": "^2.0.0"
|
| 1472 |
+
},
|
| 1473 |
+
"bin": {
|
| 1474 |
+
"node-which": "bin/node-which"
|
| 1475 |
+
},
|
| 1476 |
+
"engines": {
|
| 1477 |
+
"node": ">= 8"
|
| 1478 |
+
}
|
| 1479 |
+
},
|
| 1480 |
+
"node_modules/wrappy": {
|
| 1481 |
+
"version": "1.0.2",
|
| 1482 |
+
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
| 1483 |
+
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
| 1484 |
+
"license": "ISC"
|
| 1485 |
+
},
|
| 1486 |
+
"node_modules/zod": {
|
| 1487 |
+
"version": "4.1.13",
|
| 1488 |
+
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz",
|
| 1489 |
+
"integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==",
|
| 1490 |
+
"license": "MIT",
|
| 1491 |
+
"funding": {
|
| 1492 |
+
"url": "https://github.com/sponsors/colinhacks"
|
| 1493 |
+
}
|
| 1494 |
+
},
|
| 1495 |
+
"node_modules/zod-to-json-schema": {
|
| 1496 |
+
"version": "3.25.0",
|
| 1497 |
+
"resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz",
|
| 1498 |
+
"integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==",
|
| 1499 |
+
"license": "ISC",
|
| 1500 |
+
"peerDependencies": {
|
| 1501 |
+
"zod": "^3.25 || ^4"
|
| 1502 |
+
}
|
| 1503 |
+
}
|
| 1504 |
+
}
|
| 1505 |
+
}
|
mcp-client-typescript/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "mcp-client-typescript",
|
| 3 |
+
"version": "1.0.0",
|
| 4 |
+
"main": "index.js",
|
| 5 |
+
"scripts": {
|
| 6 |
+
"test": "echo \"Error: no test specified\" && exit 1",
|
| 7 |
+
"build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\""
|
| 8 |
+
},
|
| 9 |
+
"keywords": [],
|
| 10 |
+
"author": "",
|
| 11 |
+
"license": "ISC",
|
| 12 |
+
"type": "module",
|
| 13 |
+
"dependencies": {
|
| 14 |
+
"@anthropic-ai/sdk": "^0.36.3",
|
| 15 |
+
"@modelcontextprotocol/sdk": "^1.25.2",
|
| 16 |
+
"dotenv": "^16.4.7"
|
| 17 |
+
},
|
| 18 |
+
"devDependencies": {
|
| 19 |
+
"@types/node": "^22.13.4",
|
| 20 |
+
"typescript": "^5.7.3"
|
| 21 |
+
},
|
| 22 |
+
"engines": {
|
| 23 |
+
"node": ">=16.0.0"
|
| 24 |
+
}
|
| 25 |
+
}
|
mcp-client-typescript/tsconfig.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"compilerOptions": {
|
| 3 |
+
"target": "ES2022",
|
| 4 |
+
"module": "Node16",
|
| 5 |
+
"moduleResolution": "Node16",
|
| 6 |
+
"outDir": "./build",
|
| 7 |
+
"rootDir": "./",
|
| 8 |
+
"strict": true,
|
| 9 |
+
"esModuleInterop": true,
|
| 10 |
+
"skipLibCheck": true,
|
| 11 |
+
"forceConsistentCasingInFileNames": true
|
| 12 |
+
},
|
| 13 |
+
"include": ["index.ts"],
|
| 14 |
+
"exclude": ["node_modules"]
|
| 15 |
+
}
|
weather-server-python/.python-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
3.10
|
weather-server-python/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# A Simple MCP Weather Server written in Python
|
| 2 |
+
|
| 3 |
+
See the [Quickstart](https://modelcontextprotocol.io/quickstart) tutorial for more information.
|
weather-server-python/pyproject.toml
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[project]
|
| 2 |
+
name = "weather"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
description = "A simple MCP weather server"
|
| 5 |
+
readme = "README.md"
|
| 6 |
+
requires-python = ">=3.10"
|
| 7 |
+
dependencies = [
|
| 8 |
+
"httpx>=0.28.1",
|
| 9 |
+
"mcp[cli]>=1.21.0",
|
| 10 |
+
]
|
| 11 |
+
|
| 12 |
+
[build-system]
|
| 13 |
+
requires = [ "hatchling",]
|
| 14 |
+
build-backend = "hatchling.build"
|
| 15 |
+
|
| 16 |
+
[dependency-groups]
|
| 17 |
+
dev = [
|
| 18 |
+
"ruff>=0.14.8",
|
| 19 |
+
]
|
| 20 |
+
|
| 21 |
+
[project.scripts]
|
| 22 |
+
weather = "weather:main"
|
| 23 |
+
|
| 24 |
+
[tool.ruff]
|
| 25 |
+
line-length = 120
|
| 26 |
+
target-version = "py310"
|
| 27 |
+
extend-exclude = ["README.md"]
|
| 28 |
+
|
| 29 |
+
[tool.ruff.lint]
|
| 30 |
+
select = [
|
| 31 |
+
"C4", # flake8-comprehensions
|
| 32 |
+
"C90", # mccabe
|
| 33 |
+
"E", # pycodestyle
|
| 34 |
+
"F", # pyflakes
|
| 35 |
+
"I", # isort
|
| 36 |
+
"PERF", # Perflint
|
| 37 |
+
"PL", # Pylint
|
| 38 |
+
"UP", # pyupgrade
|
| 39 |
+
]
|
| 40 |
+
ignore = ["PERF203", "PLC0415", "PLR0402"]
|
| 41 |
+
mccabe.max-complexity = 24 # Default is 10
|
| 42 |
+
|
| 43 |
+
[tool.ruff.lint.pylint]
|
| 44 |
+
allow-magic-value-types = ["bytes", "float", "int", "str"]
|
| 45 |
+
max-args = 23 # Default is 5
|
| 46 |
+
max-branches = 23 # Default is 12
|
| 47 |
+
max-returns = 13 # Default is 6
|
| 48 |
+
max-statements = 102 # Default is 50
|
weather-server-python/uv.lock
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
weather-server-python/weather.py
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import Any
|
| 2 |
+
|
| 3 |
+
import httpx
|
| 4 |
+
from mcp.server.fastmcp import FastMCP
|
| 5 |
+
|
| 6 |
+
# Initialize FastMCP server
|
| 7 |
+
mcp = FastMCP("weather")
|
| 8 |
+
|
| 9 |
+
# Constants
|
| 10 |
+
NWS_API_BASE = "https://api.weather.gov"
|
| 11 |
+
USER_AGENT = "weather-app/1.0"
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
async def make_nws_request(url: str) -> dict[str, Any] | None:
|
| 15 |
+
"""Make a request to the NWS API with proper error handling."""
|
| 16 |
+
headers = {"User-Agent": USER_AGENT, "Accept": "application/geo+json"}
|
| 17 |
+
async with httpx.AsyncClient() as client:
|
| 18 |
+
try:
|
| 19 |
+
response = await client.get(url, headers=headers, timeout=30.0)
|
| 20 |
+
response.raise_for_status()
|
| 21 |
+
return response.json()
|
| 22 |
+
except Exception:
|
| 23 |
+
return None
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def format_alert(feature: dict) -> str:
|
| 27 |
+
"""Format an alert feature into a readable string."""
|
| 28 |
+
props = feature["properties"]
|
| 29 |
+
return f"""
|
| 30 |
+
Event: {props.get("event", "Unknown")}
|
| 31 |
+
Area: {props.get("areaDesc", "Unknown")}
|
| 32 |
+
Severity: {props.get("severity", "Unknown")}
|
| 33 |
+
Description: {props.get("description", "No description available")}
|
| 34 |
+
Instructions: {props.get("instruction", "No specific instructions provided")}
|
| 35 |
+
"""
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
@mcp.tool()
|
| 39 |
+
async def get_alerts(state: str) -> str:
|
| 40 |
+
"""Get weather alerts for a US state.
|
| 41 |
+
|
| 42 |
+
Args:
|
| 43 |
+
state: Two-letter US state code (e.g. CA, NY)
|
| 44 |
+
"""
|
| 45 |
+
url = f"{NWS_API_BASE}/alerts/active/area/{state}"
|
| 46 |
+
data = await make_nws_request(url)
|
| 47 |
+
|
| 48 |
+
if not data or "features" not in data:
|
| 49 |
+
return "Unable to fetch alerts or no alerts found."
|
| 50 |
+
|
| 51 |
+
if not data["features"]:
|
| 52 |
+
return "No active alerts for this state."
|
| 53 |
+
|
| 54 |
+
alerts = [format_alert(feature) for feature in data["features"]]
|
| 55 |
+
return "\n---\n".join(alerts)
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
@mcp.tool()
|
| 59 |
+
async def get_forecast(latitude: float, longitude: float) -> str:
|
| 60 |
+
"""Get weather forecast for a location.
|
| 61 |
+
|
| 62 |
+
Args:
|
| 63 |
+
latitude: Latitude of the location
|
| 64 |
+
longitude: Longitude of the location
|
| 65 |
+
"""
|
| 66 |
+
# First get the forecast grid endpoint
|
| 67 |
+
points_url = f"{NWS_API_BASE}/points/{latitude},{longitude}"
|
| 68 |
+
points_data = await make_nws_request(points_url)
|
| 69 |
+
|
| 70 |
+
if not points_data:
|
| 71 |
+
return "Unable to fetch forecast data for this location."
|
| 72 |
+
|
| 73 |
+
# Get the forecast URL from the points response
|
| 74 |
+
forecast_url = points_data["properties"]["forecast"]
|
| 75 |
+
forecast_data = await make_nws_request(forecast_url)
|
| 76 |
+
|
| 77 |
+
if not forecast_data:
|
| 78 |
+
return "Unable to fetch detailed forecast."
|
| 79 |
+
|
| 80 |
+
# Format the periods into a readable forecast
|
| 81 |
+
periods = forecast_data["properties"]["periods"]
|
| 82 |
+
forecasts = []
|
| 83 |
+
for period in periods[:5]: # Only show next 5 periods
|
| 84 |
+
forecast = f"""
|
| 85 |
+
{period["name"]}:
|
| 86 |
+
Temperature: {period["temperature"]}°{period["temperatureUnit"]}
|
| 87 |
+
Wind: {period["windSpeed"]} {period["windDirection"]}
|
| 88 |
+
Forecast: {period["detailedForecast"]}
|
| 89 |
+
"""
|
| 90 |
+
forecasts.append(forecast)
|
| 91 |
+
|
| 92 |
+
return "\n---\n".join(forecasts)
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
def main():
|
| 96 |
+
# Initialize and run the server
|
| 97 |
+
mcp.run(transport="stdio")
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
if __name__ == "__main__":
|
| 101 |
+
main()
|
weather-server-rust/Cargo.lock
ADDED
|
@@ -0,0 +1,2115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is automatically @generated by Cargo.
|
| 2 |
+
# It is not intended for manual editing.
|
| 3 |
+
version = 4
|
| 4 |
+
|
| 5 |
+
[[package]]
|
| 6 |
+
name = "addr2line"
|
| 7 |
+
version = "0.24.2"
|
| 8 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 9 |
+
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
|
| 10 |
+
dependencies = [
|
| 11 |
+
"gimli",
|
| 12 |
+
]
|
| 13 |
+
|
| 14 |
+
[[package]]
|
| 15 |
+
name = "adler2"
|
| 16 |
+
version = "2.0.1"
|
| 17 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 18 |
+
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
| 19 |
+
|
| 20 |
+
[[package]]
|
| 21 |
+
name = "aho-corasick"
|
| 22 |
+
version = "1.1.3"
|
| 23 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 24 |
+
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
| 25 |
+
dependencies = [
|
| 26 |
+
"memchr",
|
| 27 |
+
]
|
| 28 |
+
|
| 29 |
+
[[package]]
|
| 30 |
+
name = "android-tzdata"
|
| 31 |
+
version = "0.1.1"
|
| 32 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 33 |
+
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
| 34 |
+
|
| 35 |
+
[[package]]
|
| 36 |
+
name = "android_system_properties"
|
| 37 |
+
version = "0.1.5"
|
| 38 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 39 |
+
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
| 40 |
+
dependencies = [
|
| 41 |
+
"libc",
|
| 42 |
+
]
|
| 43 |
+
|
| 44 |
+
[[package]]
|
| 45 |
+
name = "anyhow"
|
| 46 |
+
version = "1.0.98"
|
| 47 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 48 |
+
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
|
| 49 |
+
|
| 50 |
+
[[package]]
|
| 51 |
+
name = "atomic-waker"
|
| 52 |
+
version = "1.1.2"
|
| 53 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 54 |
+
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
|
| 55 |
+
|
| 56 |
+
[[package]]
|
| 57 |
+
name = "autocfg"
|
| 58 |
+
version = "1.5.0"
|
| 59 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 60 |
+
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
|
| 61 |
+
|
| 62 |
+
[[package]]
|
| 63 |
+
name = "backtrace"
|
| 64 |
+
version = "0.3.75"
|
| 65 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 66 |
+
checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
|
| 67 |
+
dependencies = [
|
| 68 |
+
"addr2line",
|
| 69 |
+
"cfg-if",
|
| 70 |
+
"libc",
|
| 71 |
+
"miniz_oxide",
|
| 72 |
+
"object",
|
| 73 |
+
"rustc-demangle",
|
| 74 |
+
"windows-targets 0.52.6",
|
| 75 |
+
]
|
| 76 |
+
|
| 77 |
+
[[package]]
|
| 78 |
+
name = "base64"
|
| 79 |
+
version = "0.22.1"
|
| 80 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 81 |
+
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
| 82 |
+
|
| 83 |
+
[[package]]
|
| 84 |
+
name = "bitflags"
|
| 85 |
+
version = "2.9.1"
|
| 86 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 87 |
+
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
|
| 88 |
+
|
| 89 |
+
[[package]]
|
| 90 |
+
name = "bumpalo"
|
| 91 |
+
version = "3.19.0"
|
| 92 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 93 |
+
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
|
| 94 |
+
|
| 95 |
+
[[package]]
|
| 96 |
+
name = "bytes"
|
| 97 |
+
version = "1.10.1"
|
| 98 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 99 |
+
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
|
| 100 |
+
|
| 101 |
+
[[package]]
|
| 102 |
+
name = "cc"
|
| 103 |
+
version = "1.2.30"
|
| 104 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 105 |
+
checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
|
| 106 |
+
dependencies = [
|
| 107 |
+
"shlex",
|
| 108 |
+
]
|
| 109 |
+
|
| 110 |
+
[[package]]
|
| 111 |
+
name = "cfg-if"
|
| 112 |
+
version = "1.0.1"
|
| 113 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 114 |
+
checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
|
| 115 |
+
|
| 116 |
+
[[package]]
|
| 117 |
+
name = "chrono"
|
| 118 |
+
version = "0.4.41"
|
| 119 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 120 |
+
checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
|
| 121 |
+
dependencies = [
|
| 122 |
+
"android-tzdata",
|
| 123 |
+
"iana-time-zone",
|
| 124 |
+
"js-sys",
|
| 125 |
+
"num-traits",
|
| 126 |
+
"serde",
|
| 127 |
+
"wasm-bindgen",
|
| 128 |
+
"windows-link",
|
| 129 |
+
]
|
| 130 |
+
|
| 131 |
+
[[package]]
|
| 132 |
+
name = "core-foundation"
|
| 133 |
+
version = "0.9.4"
|
| 134 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 135 |
+
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
|
| 136 |
+
dependencies = [
|
| 137 |
+
"core-foundation-sys",
|
| 138 |
+
"libc",
|
| 139 |
+
]
|
| 140 |
+
|
| 141 |
+
[[package]]
|
| 142 |
+
name = "core-foundation-sys"
|
| 143 |
+
version = "0.8.7"
|
| 144 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 145 |
+
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
| 146 |
+
|
| 147 |
+
[[package]]
|
| 148 |
+
name = "darling"
|
| 149 |
+
version = "0.21.0"
|
| 150 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 151 |
+
checksum = "a79c4acb1fd5fa3d9304be4c76e031c54d2e92d172a393e24b19a14fe8532fe9"
|
| 152 |
+
dependencies = [
|
| 153 |
+
"darling_core",
|
| 154 |
+
"darling_macro",
|
| 155 |
+
]
|
| 156 |
+
|
| 157 |
+
[[package]]
|
| 158 |
+
name = "darling_core"
|
| 159 |
+
version = "0.21.0"
|
| 160 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 161 |
+
checksum = "74875de90daf30eb59609910b84d4d368103aaec4c924824c6799b28f77d6a1d"
|
| 162 |
+
dependencies = [
|
| 163 |
+
"fnv",
|
| 164 |
+
"ident_case",
|
| 165 |
+
"proc-macro2",
|
| 166 |
+
"quote",
|
| 167 |
+
"strsim",
|
| 168 |
+
"syn",
|
| 169 |
+
]
|
| 170 |
+
|
| 171 |
+
[[package]]
|
| 172 |
+
name = "darling_macro"
|
| 173 |
+
version = "0.21.0"
|
| 174 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 175 |
+
checksum = "e79f8e61677d5df9167cd85265f8e5f64b215cdea3fb55eebc3e622e44c7a146"
|
| 176 |
+
dependencies = [
|
| 177 |
+
"darling_core",
|
| 178 |
+
"quote",
|
| 179 |
+
"syn",
|
| 180 |
+
]
|
| 181 |
+
|
| 182 |
+
[[package]]
|
| 183 |
+
name = "displaydoc"
|
| 184 |
+
version = "0.2.5"
|
| 185 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 186 |
+
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
|
| 187 |
+
dependencies = [
|
| 188 |
+
"proc-macro2",
|
| 189 |
+
"quote",
|
| 190 |
+
"syn",
|
| 191 |
+
]
|
| 192 |
+
|
| 193 |
+
[[package]]
|
| 194 |
+
name = "dyn-clone"
|
| 195 |
+
version = "1.0.19"
|
| 196 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 197 |
+
checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
|
| 198 |
+
|
| 199 |
+
[[package]]
|
| 200 |
+
name = "encoding_rs"
|
| 201 |
+
version = "0.8.35"
|
| 202 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 203 |
+
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
|
| 204 |
+
dependencies = [
|
| 205 |
+
"cfg-if",
|
| 206 |
+
]
|
| 207 |
+
|
| 208 |
+
[[package]]
|
| 209 |
+
name = "equivalent"
|
| 210 |
+
version = "1.0.2"
|
| 211 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 212 |
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
| 213 |
+
|
| 214 |
+
[[package]]
|
| 215 |
+
name = "errno"
|
| 216 |
+
version = "0.3.13"
|
| 217 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 218 |
+
checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
|
| 219 |
+
dependencies = [
|
| 220 |
+
"libc",
|
| 221 |
+
"windows-sys 0.60.2",
|
| 222 |
+
]
|
| 223 |
+
|
| 224 |
+
[[package]]
|
| 225 |
+
name = "fastrand"
|
| 226 |
+
version = "2.3.0"
|
| 227 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 228 |
+
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
|
| 229 |
+
|
| 230 |
+
[[package]]
|
| 231 |
+
name = "fnv"
|
| 232 |
+
version = "1.0.7"
|
| 233 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 234 |
+
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
| 235 |
+
|
| 236 |
+
[[package]]
|
| 237 |
+
name = "foreign-types"
|
| 238 |
+
version = "0.3.2"
|
| 239 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 240 |
+
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
| 241 |
+
dependencies = [
|
| 242 |
+
"foreign-types-shared",
|
| 243 |
+
]
|
| 244 |
+
|
| 245 |
+
[[package]]
|
| 246 |
+
name = "foreign-types-shared"
|
| 247 |
+
version = "0.1.1"
|
| 248 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 249 |
+
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
| 250 |
+
|
| 251 |
+
[[package]]
|
| 252 |
+
name = "form_urlencoded"
|
| 253 |
+
version = "1.2.1"
|
| 254 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 255 |
+
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
|
| 256 |
+
dependencies = [
|
| 257 |
+
"percent-encoding",
|
| 258 |
+
]
|
| 259 |
+
|
| 260 |
+
[[package]]
|
| 261 |
+
name = "futures"
|
| 262 |
+
version = "0.3.31"
|
| 263 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 264 |
+
checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
|
| 265 |
+
dependencies = [
|
| 266 |
+
"futures-channel",
|
| 267 |
+
"futures-core",
|
| 268 |
+
"futures-executor",
|
| 269 |
+
"futures-io",
|
| 270 |
+
"futures-sink",
|
| 271 |
+
"futures-task",
|
| 272 |
+
"futures-util",
|
| 273 |
+
]
|
| 274 |
+
|
| 275 |
+
[[package]]
|
| 276 |
+
name = "futures-channel"
|
| 277 |
+
version = "0.3.31"
|
| 278 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 279 |
+
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
|
| 280 |
+
dependencies = [
|
| 281 |
+
"futures-core",
|
| 282 |
+
"futures-sink",
|
| 283 |
+
]
|
| 284 |
+
|
| 285 |
+
[[package]]
|
| 286 |
+
name = "futures-core"
|
| 287 |
+
version = "0.3.31"
|
| 288 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 289 |
+
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
|
| 290 |
+
|
| 291 |
+
[[package]]
|
| 292 |
+
name = "futures-executor"
|
| 293 |
+
version = "0.3.31"
|
| 294 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 295 |
+
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
|
| 296 |
+
dependencies = [
|
| 297 |
+
"futures-core",
|
| 298 |
+
"futures-task",
|
| 299 |
+
"futures-util",
|
| 300 |
+
]
|
| 301 |
+
|
| 302 |
+
[[package]]
|
| 303 |
+
name = "futures-io"
|
| 304 |
+
version = "0.3.31"
|
| 305 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 306 |
+
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
|
| 307 |
+
|
| 308 |
+
[[package]]
|
| 309 |
+
name = "futures-macro"
|
| 310 |
+
version = "0.3.31"
|
| 311 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 312 |
+
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
|
| 313 |
+
dependencies = [
|
| 314 |
+
"proc-macro2",
|
| 315 |
+
"quote",
|
| 316 |
+
"syn",
|
| 317 |
+
]
|
| 318 |
+
|
| 319 |
+
[[package]]
|
| 320 |
+
name = "futures-sink"
|
| 321 |
+
version = "0.3.31"
|
| 322 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 323 |
+
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
|
| 324 |
+
|
| 325 |
+
[[package]]
|
| 326 |
+
name = "futures-task"
|
| 327 |
+
version = "0.3.31"
|
| 328 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 329 |
+
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
|
| 330 |
+
|
| 331 |
+
[[package]]
|
| 332 |
+
name = "futures-util"
|
| 333 |
+
version = "0.3.31"
|
| 334 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 335 |
+
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
|
| 336 |
+
dependencies = [
|
| 337 |
+
"futures-channel",
|
| 338 |
+
"futures-core",
|
| 339 |
+
"futures-io",
|
| 340 |
+
"futures-macro",
|
| 341 |
+
"futures-sink",
|
| 342 |
+
"futures-task",
|
| 343 |
+
"memchr",
|
| 344 |
+
"pin-project-lite",
|
| 345 |
+
"pin-utils",
|
| 346 |
+
"slab",
|
| 347 |
+
]
|
| 348 |
+
|
| 349 |
+
[[package]]
|
| 350 |
+
name = "getrandom"
|
| 351 |
+
version = "0.2.16"
|
| 352 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 353 |
+
checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
|
| 354 |
+
dependencies = [
|
| 355 |
+
"cfg-if",
|
| 356 |
+
"libc",
|
| 357 |
+
"wasi 0.11.1+wasi-snapshot-preview1",
|
| 358 |
+
]
|
| 359 |
+
|
| 360 |
+
[[package]]
|
| 361 |
+
name = "getrandom"
|
| 362 |
+
version = "0.3.3"
|
| 363 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 364 |
+
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
|
| 365 |
+
dependencies = [
|
| 366 |
+
"cfg-if",
|
| 367 |
+
"libc",
|
| 368 |
+
"r-efi",
|
| 369 |
+
"wasi 0.14.2+wasi-0.2.4",
|
| 370 |
+
]
|
| 371 |
+
|
| 372 |
+
[[package]]
|
| 373 |
+
name = "gimli"
|
| 374 |
+
version = "0.31.1"
|
| 375 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 376 |
+
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
|
| 377 |
+
|
| 378 |
+
[[package]]
|
| 379 |
+
name = "h2"
|
| 380 |
+
version = "0.4.11"
|
| 381 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 382 |
+
checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785"
|
| 383 |
+
dependencies = [
|
| 384 |
+
"atomic-waker",
|
| 385 |
+
"bytes",
|
| 386 |
+
"fnv",
|
| 387 |
+
"futures-core",
|
| 388 |
+
"futures-sink",
|
| 389 |
+
"http",
|
| 390 |
+
"indexmap",
|
| 391 |
+
"slab",
|
| 392 |
+
"tokio",
|
| 393 |
+
"tokio-util",
|
| 394 |
+
"tracing",
|
| 395 |
+
]
|
| 396 |
+
|
| 397 |
+
[[package]]
|
| 398 |
+
name = "hashbrown"
|
| 399 |
+
version = "0.15.4"
|
| 400 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 401 |
+
checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
|
| 402 |
+
|
| 403 |
+
[[package]]
|
| 404 |
+
name = "http"
|
| 405 |
+
version = "1.3.1"
|
| 406 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 407 |
+
checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
|
| 408 |
+
dependencies = [
|
| 409 |
+
"bytes",
|
| 410 |
+
"fnv",
|
| 411 |
+
"itoa",
|
| 412 |
+
]
|
| 413 |
+
|
| 414 |
+
[[package]]
|
| 415 |
+
name = "http-body"
|
| 416 |
+
version = "1.0.1"
|
| 417 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 418 |
+
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
|
| 419 |
+
dependencies = [
|
| 420 |
+
"bytes",
|
| 421 |
+
"http",
|
| 422 |
+
]
|
| 423 |
+
|
| 424 |
+
[[package]]
|
| 425 |
+
name = "http-body-util"
|
| 426 |
+
version = "0.1.3"
|
| 427 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 428 |
+
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
|
| 429 |
+
dependencies = [
|
| 430 |
+
"bytes",
|
| 431 |
+
"futures-core",
|
| 432 |
+
"http",
|
| 433 |
+
"http-body",
|
| 434 |
+
"pin-project-lite",
|
| 435 |
+
]
|
| 436 |
+
|
| 437 |
+
[[package]]
|
| 438 |
+
name = "httparse"
|
| 439 |
+
version = "1.10.1"
|
| 440 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 441 |
+
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
|
| 442 |
+
|
| 443 |
+
[[package]]
|
| 444 |
+
name = "hyper"
|
| 445 |
+
version = "1.6.0"
|
| 446 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 447 |
+
checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
|
| 448 |
+
dependencies = [
|
| 449 |
+
"bytes",
|
| 450 |
+
"futures-channel",
|
| 451 |
+
"futures-util",
|
| 452 |
+
"h2",
|
| 453 |
+
"http",
|
| 454 |
+
"http-body",
|
| 455 |
+
"httparse",
|
| 456 |
+
"itoa",
|
| 457 |
+
"pin-project-lite",
|
| 458 |
+
"smallvec",
|
| 459 |
+
"tokio",
|
| 460 |
+
"want",
|
| 461 |
+
]
|
| 462 |
+
|
| 463 |
+
[[package]]
|
| 464 |
+
name = "hyper-rustls"
|
| 465 |
+
version = "0.27.7"
|
| 466 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 467 |
+
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
|
| 468 |
+
dependencies = [
|
| 469 |
+
"http",
|
| 470 |
+
"hyper",
|
| 471 |
+
"hyper-util",
|
| 472 |
+
"rustls",
|
| 473 |
+
"rustls-pki-types",
|
| 474 |
+
"tokio",
|
| 475 |
+
"tokio-rustls",
|
| 476 |
+
"tower-service",
|
| 477 |
+
]
|
| 478 |
+
|
| 479 |
+
[[package]]
|
| 480 |
+
name = "hyper-tls"
|
| 481 |
+
version = "0.6.0"
|
| 482 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 483 |
+
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
|
| 484 |
+
dependencies = [
|
| 485 |
+
"bytes",
|
| 486 |
+
"http-body-util",
|
| 487 |
+
"hyper",
|
| 488 |
+
"hyper-util",
|
| 489 |
+
"native-tls",
|
| 490 |
+
"tokio",
|
| 491 |
+
"tokio-native-tls",
|
| 492 |
+
"tower-service",
|
| 493 |
+
]
|
| 494 |
+
|
| 495 |
+
[[package]]
|
| 496 |
+
name = "hyper-util"
|
| 497 |
+
version = "0.1.16"
|
| 498 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 499 |
+
checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e"
|
| 500 |
+
dependencies = [
|
| 501 |
+
"base64",
|
| 502 |
+
"bytes",
|
| 503 |
+
"futures-channel",
|
| 504 |
+
"futures-core",
|
| 505 |
+
"futures-util",
|
| 506 |
+
"http",
|
| 507 |
+
"http-body",
|
| 508 |
+
"hyper",
|
| 509 |
+
"ipnet",
|
| 510 |
+
"libc",
|
| 511 |
+
"percent-encoding",
|
| 512 |
+
"pin-project-lite",
|
| 513 |
+
"socket2",
|
| 514 |
+
"system-configuration",
|
| 515 |
+
"tokio",
|
| 516 |
+
"tower-service",
|
| 517 |
+
"tracing",
|
| 518 |
+
"windows-registry",
|
| 519 |
+
]
|
| 520 |
+
|
| 521 |
+
[[package]]
|
| 522 |
+
name = "iana-time-zone"
|
| 523 |
+
version = "0.1.63"
|
| 524 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 525 |
+
checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
|
| 526 |
+
dependencies = [
|
| 527 |
+
"android_system_properties",
|
| 528 |
+
"core-foundation-sys",
|
| 529 |
+
"iana-time-zone-haiku",
|
| 530 |
+
"js-sys",
|
| 531 |
+
"log",
|
| 532 |
+
"wasm-bindgen",
|
| 533 |
+
"windows-core",
|
| 534 |
+
]
|
| 535 |
+
|
| 536 |
+
[[package]]
|
| 537 |
+
name = "iana-time-zone-haiku"
|
| 538 |
+
version = "0.1.2"
|
| 539 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 540 |
+
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
| 541 |
+
dependencies = [
|
| 542 |
+
"cc",
|
| 543 |
+
]
|
| 544 |
+
|
| 545 |
+
[[package]]
|
| 546 |
+
name = "icu_collections"
|
| 547 |
+
version = "2.0.0"
|
| 548 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 549 |
+
checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
|
| 550 |
+
dependencies = [
|
| 551 |
+
"displaydoc",
|
| 552 |
+
"potential_utf",
|
| 553 |
+
"yoke",
|
| 554 |
+
"zerofrom",
|
| 555 |
+
"zerovec",
|
| 556 |
+
]
|
| 557 |
+
|
| 558 |
+
[[package]]
|
| 559 |
+
name = "icu_locale_core"
|
| 560 |
+
version = "2.0.0"
|
| 561 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 562 |
+
checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
|
| 563 |
+
dependencies = [
|
| 564 |
+
"displaydoc",
|
| 565 |
+
"litemap",
|
| 566 |
+
"tinystr",
|
| 567 |
+
"writeable",
|
| 568 |
+
"zerovec",
|
| 569 |
+
]
|
| 570 |
+
|
| 571 |
+
[[package]]
|
| 572 |
+
name = "icu_normalizer"
|
| 573 |
+
version = "2.0.0"
|
| 574 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 575 |
+
checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
|
| 576 |
+
dependencies = [
|
| 577 |
+
"displaydoc",
|
| 578 |
+
"icu_collections",
|
| 579 |
+
"icu_normalizer_data",
|
| 580 |
+
"icu_properties",
|
| 581 |
+
"icu_provider",
|
| 582 |
+
"smallvec",
|
| 583 |
+
"zerovec",
|
| 584 |
+
]
|
| 585 |
+
|
| 586 |
+
[[package]]
|
| 587 |
+
name = "icu_normalizer_data"
|
| 588 |
+
version = "2.0.0"
|
| 589 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 590 |
+
checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
|
| 591 |
+
|
| 592 |
+
[[package]]
|
| 593 |
+
name = "icu_properties"
|
| 594 |
+
version = "2.0.1"
|
| 595 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 596 |
+
checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
|
| 597 |
+
dependencies = [
|
| 598 |
+
"displaydoc",
|
| 599 |
+
"icu_collections",
|
| 600 |
+
"icu_locale_core",
|
| 601 |
+
"icu_properties_data",
|
| 602 |
+
"icu_provider",
|
| 603 |
+
"potential_utf",
|
| 604 |
+
"zerotrie",
|
| 605 |
+
"zerovec",
|
| 606 |
+
]
|
| 607 |
+
|
| 608 |
+
[[package]]
|
| 609 |
+
name = "icu_properties_data"
|
| 610 |
+
version = "2.0.1"
|
| 611 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 612 |
+
checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
|
| 613 |
+
|
| 614 |
+
[[package]]
|
| 615 |
+
name = "icu_provider"
|
| 616 |
+
version = "2.0.0"
|
| 617 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 618 |
+
checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
|
| 619 |
+
dependencies = [
|
| 620 |
+
"displaydoc",
|
| 621 |
+
"icu_locale_core",
|
| 622 |
+
"stable_deref_trait",
|
| 623 |
+
"tinystr",
|
| 624 |
+
"writeable",
|
| 625 |
+
"yoke",
|
| 626 |
+
"zerofrom",
|
| 627 |
+
"zerotrie",
|
| 628 |
+
"zerovec",
|
| 629 |
+
]
|
| 630 |
+
|
| 631 |
+
[[package]]
|
| 632 |
+
name = "ident_case"
|
| 633 |
+
version = "1.0.1"
|
| 634 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 635 |
+
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
| 636 |
+
|
| 637 |
+
[[package]]
|
| 638 |
+
name = "idna"
|
| 639 |
+
version = "1.0.3"
|
| 640 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 641 |
+
checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
|
| 642 |
+
dependencies = [
|
| 643 |
+
"idna_adapter",
|
| 644 |
+
"smallvec",
|
| 645 |
+
"utf8_iter",
|
| 646 |
+
]
|
| 647 |
+
|
| 648 |
+
[[package]]
|
| 649 |
+
name = "idna_adapter"
|
| 650 |
+
version = "1.2.1"
|
| 651 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 652 |
+
checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
|
| 653 |
+
dependencies = [
|
| 654 |
+
"icu_normalizer",
|
| 655 |
+
"icu_properties",
|
| 656 |
+
]
|
| 657 |
+
|
| 658 |
+
[[package]]
|
| 659 |
+
name = "indexmap"
|
| 660 |
+
version = "2.10.0"
|
| 661 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 662 |
+
checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
|
| 663 |
+
dependencies = [
|
| 664 |
+
"equivalent",
|
| 665 |
+
"hashbrown",
|
| 666 |
+
]
|
| 667 |
+
|
| 668 |
+
[[package]]
|
| 669 |
+
name = "io-uring"
|
| 670 |
+
version = "0.7.9"
|
| 671 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 672 |
+
checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
|
| 673 |
+
dependencies = [
|
| 674 |
+
"bitflags",
|
| 675 |
+
"cfg-if",
|
| 676 |
+
"libc",
|
| 677 |
+
]
|
| 678 |
+
|
| 679 |
+
[[package]]
|
| 680 |
+
name = "ipnet"
|
| 681 |
+
version = "2.11.0"
|
| 682 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 683 |
+
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
|
| 684 |
+
|
| 685 |
+
[[package]]
|
| 686 |
+
name = "iri-string"
|
| 687 |
+
version = "0.7.8"
|
| 688 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 689 |
+
checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"
|
| 690 |
+
dependencies = [
|
| 691 |
+
"memchr",
|
| 692 |
+
"serde",
|
| 693 |
+
]
|
| 694 |
+
|
| 695 |
+
[[package]]
|
| 696 |
+
name = "itoa"
|
| 697 |
+
version = "1.0.15"
|
| 698 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 699 |
+
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
|
| 700 |
+
|
| 701 |
+
[[package]]
|
| 702 |
+
name = "js-sys"
|
| 703 |
+
version = "0.3.77"
|
| 704 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 705 |
+
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
|
| 706 |
+
dependencies = [
|
| 707 |
+
"once_cell",
|
| 708 |
+
"wasm-bindgen",
|
| 709 |
+
]
|
| 710 |
+
|
| 711 |
+
[[package]]
|
| 712 |
+
name = "lazy_static"
|
| 713 |
+
version = "1.5.0"
|
| 714 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 715 |
+
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
| 716 |
+
|
| 717 |
+
[[package]]
|
| 718 |
+
name = "libc"
|
| 719 |
+
version = "0.2.174"
|
| 720 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 721 |
+
checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
|
| 722 |
+
|
| 723 |
+
[[package]]
|
| 724 |
+
name = "linux-raw-sys"
|
| 725 |
+
version = "0.9.4"
|
| 726 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 727 |
+
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
|
| 728 |
+
|
| 729 |
+
[[package]]
|
| 730 |
+
name = "litemap"
|
| 731 |
+
version = "0.8.0"
|
| 732 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 733 |
+
checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
|
| 734 |
+
|
| 735 |
+
[[package]]
|
| 736 |
+
name = "lock_api"
|
| 737 |
+
version = "0.4.13"
|
| 738 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 739 |
+
checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
|
| 740 |
+
dependencies = [
|
| 741 |
+
"autocfg",
|
| 742 |
+
"scopeguard",
|
| 743 |
+
]
|
| 744 |
+
|
| 745 |
+
[[package]]
|
| 746 |
+
name = "log"
|
| 747 |
+
version = "0.4.27"
|
| 748 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 749 |
+
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
|
| 750 |
+
|
| 751 |
+
[[package]]
|
| 752 |
+
name = "matchers"
|
| 753 |
+
version = "0.2.0"
|
| 754 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 755 |
+
checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
|
| 756 |
+
dependencies = [
|
| 757 |
+
"regex-automata",
|
| 758 |
+
]
|
| 759 |
+
|
| 760 |
+
[[package]]
|
| 761 |
+
name = "memchr"
|
| 762 |
+
version = "2.7.5"
|
| 763 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 764 |
+
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
|
| 765 |
+
|
| 766 |
+
[[package]]
|
| 767 |
+
name = "mime"
|
| 768 |
+
version = "0.3.17"
|
| 769 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 770 |
+
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
| 771 |
+
|
| 772 |
+
[[package]]
|
| 773 |
+
name = "miniz_oxide"
|
| 774 |
+
version = "0.8.9"
|
| 775 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 776 |
+
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
|
| 777 |
+
dependencies = [
|
| 778 |
+
"adler2",
|
| 779 |
+
]
|
| 780 |
+
|
| 781 |
+
[[package]]
|
| 782 |
+
name = "mio"
|
| 783 |
+
version = "1.0.4"
|
| 784 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 785 |
+
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
|
| 786 |
+
dependencies = [
|
| 787 |
+
"libc",
|
| 788 |
+
"wasi 0.11.1+wasi-snapshot-preview1",
|
| 789 |
+
"windows-sys 0.59.0",
|
| 790 |
+
]
|
| 791 |
+
|
| 792 |
+
[[package]]
|
| 793 |
+
name = "native-tls"
|
| 794 |
+
version = "0.2.14"
|
| 795 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 796 |
+
checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
|
| 797 |
+
dependencies = [
|
| 798 |
+
"libc",
|
| 799 |
+
"log",
|
| 800 |
+
"openssl",
|
| 801 |
+
"openssl-probe",
|
| 802 |
+
"openssl-sys",
|
| 803 |
+
"schannel",
|
| 804 |
+
"security-framework",
|
| 805 |
+
"security-framework-sys",
|
| 806 |
+
"tempfile",
|
| 807 |
+
]
|
| 808 |
+
|
| 809 |
+
[[package]]
|
| 810 |
+
name = "nu-ansi-term"
|
| 811 |
+
version = "0.50.3"
|
| 812 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 813 |
+
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
|
| 814 |
+
dependencies = [
|
| 815 |
+
"windows-sys 0.60.2",
|
| 816 |
+
]
|
| 817 |
+
|
| 818 |
+
[[package]]
|
| 819 |
+
name = "num-traits"
|
| 820 |
+
version = "0.2.19"
|
| 821 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 822 |
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
| 823 |
+
dependencies = [
|
| 824 |
+
"autocfg",
|
| 825 |
+
]
|
| 826 |
+
|
| 827 |
+
[[package]]
|
| 828 |
+
name = "object"
|
| 829 |
+
version = "0.36.7"
|
| 830 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 831 |
+
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
|
| 832 |
+
dependencies = [
|
| 833 |
+
"memchr",
|
| 834 |
+
]
|
| 835 |
+
|
| 836 |
+
[[package]]
|
| 837 |
+
name = "once_cell"
|
| 838 |
+
version = "1.21.3"
|
| 839 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 840 |
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
| 841 |
+
|
| 842 |
+
[[package]]
|
| 843 |
+
name = "openssl"
|
| 844 |
+
version = "0.10.73"
|
| 845 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 846 |
+
checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8"
|
| 847 |
+
dependencies = [
|
| 848 |
+
"bitflags",
|
| 849 |
+
"cfg-if",
|
| 850 |
+
"foreign-types",
|
| 851 |
+
"libc",
|
| 852 |
+
"once_cell",
|
| 853 |
+
"openssl-macros",
|
| 854 |
+
"openssl-sys",
|
| 855 |
+
]
|
| 856 |
+
|
| 857 |
+
[[package]]
|
| 858 |
+
name = "openssl-macros"
|
| 859 |
+
version = "0.1.1"
|
| 860 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 861 |
+
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
| 862 |
+
dependencies = [
|
| 863 |
+
"proc-macro2",
|
| 864 |
+
"quote",
|
| 865 |
+
"syn",
|
| 866 |
+
]
|
| 867 |
+
|
| 868 |
+
[[package]]
|
| 869 |
+
name = "openssl-probe"
|
| 870 |
+
version = "0.1.6"
|
| 871 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 872 |
+
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
|
| 873 |
+
|
| 874 |
+
[[package]]
|
| 875 |
+
name = "openssl-sys"
|
| 876 |
+
version = "0.9.109"
|
| 877 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 878 |
+
checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571"
|
| 879 |
+
dependencies = [
|
| 880 |
+
"cc",
|
| 881 |
+
"libc",
|
| 882 |
+
"pkg-config",
|
| 883 |
+
"vcpkg",
|
| 884 |
+
]
|
| 885 |
+
|
| 886 |
+
[[package]]
|
| 887 |
+
name = "parking_lot"
|
| 888 |
+
version = "0.12.4"
|
| 889 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 890 |
+
checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
|
| 891 |
+
dependencies = [
|
| 892 |
+
"lock_api",
|
| 893 |
+
"parking_lot_core",
|
| 894 |
+
]
|
| 895 |
+
|
| 896 |
+
[[package]]
|
| 897 |
+
name = "parking_lot_core"
|
| 898 |
+
version = "0.9.11"
|
| 899 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 900 |
+
checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
|
| 901 |
+
dependencies = [
|
| 902 |
+
"cfg-if",
|
| 903 |
+
"libc",
|
| 904 |
+
"redox_syscall",
|
| 905 |
+
"smallvec",
|
| 906 |
+
"windows-targets 0.52.6",
|
| 907 |
+
]
|
| 908 |
+
|
| 909 |
+
[[package]]
|
| 910 |
+
name = "paste"
|
| 911 |
+
version = "1.0.15"
|
| 912 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 913 |
+
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
|
| 914 |
+
|
| 915 |
+
[[package]]
|
| 916 |
+
name = "percent-encoding"
|
| 917 |
+
version = "2.3.1"
|
| 918 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 919 |
+
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
|
| 920 |
+
|
| 921 |
+
[[package]]
|
| 922 |
+
name = "pin-project-lite"
|
| 923 |
+
version = "0.2.16"
|
| 924 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 925 |
+
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
|
| 926 |
+
|
| 927 |
+
[[package]]
|
| 928 |
+
name = "pin-utils"
|
| 929 |
+
version = "0.1.0"
|
| 930 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 931 |
+
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
| 932 |
+
|
| 933 |
+
[[package]]
|
| 934 |
+
name = "pkg-config"
|
| 935 |
+
version = "0.3.32"
|
| 936 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 937 |
+
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
|
| 938 |
+
|
| 939 |
+
[[package]]
|
| 940 |
+
name = "potential_utf"
|
| 941 |
+
version = "0.1.2"
|
| 942 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 943 |
+
checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
|
| 944 |
+
dependencies = [
|
| 945 |
+
"zerovec",
|
| 946 |
+
]
|
| 947 |
+
|
| 948 |
+
[[package]]
|
| 949 |
+
name = "proc-macro2"
|
| 950 |
+
version = "1.0.95"
|
| 951 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 952 |
+
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
|
| 953 |
+
dependencies = [
|
| 954 |
+
"unicode-ident",
|
| 955 |
+
]
|
| 956 |
+
|
| 957 |
+
[[package]]
|
| 958 |
+
name = "quote"
|
| 959 |
+
version = "1.0.40"
|
| 960 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 961 |
+
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
|
| 962 |
+
dependencies = [
|
| 963 |
+
"proc-macro2",
|
| 964 |
+
]
|
| 965 |
+
|
| 966 |
+
[[package]]
|
| 967 |
+
name = "r-efi"
|
| 968 |
+
version = "5.3.0"
|
| 969 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 970 |
+
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
| 971 |
+
|
| 972 |
+
[[package]]
|
| 973 |
+
name = "redox_syscall"
|
| 974 |
+
version = "0.5.15"
|
| 975 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 976 |
+
checksum = "7e8af0dde094006011e6a740d4879319439489813bd0bcdc7d821beaeeff48ec"
|
| 977 |
+
dependencies = [
|
| 978 |
+
"bitflags",
|
| 979 |
+
]
|
| 980 |
+
|
| 981 |
+
[[package]]
|
| 982 |
+
name = "ref-cast"
|
| 983 |
+
version = "1.0.24"
|
| 984 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 985 |
+
checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf"
|
| 986 |
+
dependencies = [
|
| 987 |
+
"ref-cast-impl",
|
| 988 |
+
]
|
| 989 |
+
|
| 990 |
+
[[package]]
|
| 991 |
+
name = "ref-cast-impl"
|
| 992 |
+
version = "1.0.24"
|
| 993 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 994 |
+
checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7"
|
| 995 |
+
dependencies = [
|
| 996 |
+
"proc-macro2",
|
| 997 |
+
"quote",
|
| 998 |
+
"syn",
|
| 999 |
+
]
|
| 1000 |
+
|
| 1001 |
+
[[package]]
|
| 1002 |
+
name = "regex-automata"
|
| 1003 |
+
version = "0.4.9"
|
| 1004 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1005 |
+
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
|
| 1006 |
+
dependencies = [
|
| 1007 |
+
"aho-corasick",
|
| 1008 |
+
"memchr",
|
| 1009 |
+
"regex-syntax",
|
| 1010 |
+
]
|
| 1011 |
+
|
| 1012 |
+
[[package]]
|
| 1013 |
+
name = "regex-syntax"
|
| 1014 |
+
version = "0.8.5"
|
| 1015 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1016 |
+
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
| 1017 |
+
|
| 1018 |
+
[[package]]
|
| 1019 |
+
name = "reqwest"
|
| 1020 |
+
version = "0.12.22"
|
| 1021 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1022 |
+
checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531"
|
| 1023 |
+
dependencies = [
|
| 1024 |
+
"base64",
|
| 1025 |
+
"bytes",
|
| 1026 |
+
"encoding_rs",
|
| 1027 |
+
"futures-core",
|
| 1028 |
+
"h2",
|
| 1029 |
+
"http",
|
| 1030 |
+
"http-body",
|
| 1031 |
+
"http-body-util",
|
| 1032 |
+
"hyper",
|
| 1033 |
+
"hyper-rustls",
|
| 1034 |
+
"hyper-tls",
|
| 1035 |
+
"hyper-util",
|
| 1036 |
+
"js-sys",
|
| 1037 |
+
"log",
|
| 1038 |
+
"mime",
|
| 1039 |
+
"native-tls",
|
| 1040 |
+
"percent-encoding",
|
| 1041 |
+
"pin-project-lite",
|
| 1042 |
+
"rustls-pki-types",
|
| 1043 |
+
"serde",
|
| 1044 |
+
"serde_json",
|
| 1045 |
+
"serde_urlencoded",
|
| 1046 |
+
"sync_wrapper",
|
| 1047 |
+
"tokio",
|
| 1048 |
+
"tokio-native-tls",
|
| 1049 |
+
"tower",
|
| 1050 |
+
"tower-http",
|
| 1051 |
+
"tower-service",
|
| 1052 |
+
"url",
|
| 1053 |
+
"wasm-bindgen",
|
| 1054 |
+
"wasm-bindgen-futures",
|
| 1055 |
+
"web-sys",
|
| 1056 |
+
]
|
| 1057 |
+
|
| 1058 |
+
[[package]]
|
| 1059 |
+
name = "ring"
|
| 1060 |
+
version = "0.17.14"
|
| 1061 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1062 |
+
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
|
| 1063 |
+
dependencies = [
|
| 1064 |
+
"cc",
|
| 1065 |
+
"cfg-if",
|
| 1066 |
+
"getrandom 0.2.16",
|
| 1067 |
+
"libc",
|
| 1068 |
+
"untrusted",
|
| 1069 |
+
"windows-sys 0.52.0",
|
| 1070 |
+
]
|
| 1071 |
+
|
| 1072 |
+
[[package]]
|
| 1073 |
+
name = "rmcp"
|
| 1074 |
+
version = "0.3.0"
|
| 1075 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1076 |
+
checksum = "b008b927a85d514699ff304be84c5084598596e6cad4a6f5bc67207715fafe5f"
|
| 1077 |
+
dependencies = [
|
| 1078 |
+
"base64",
|
| 1079 |
+
"chrono",
|
| 1080 |
+
"futures",
|
| 1081 |
+
"paste",
|
| 1082 |
+
"pin-project-lite",
|
| 1083 |
+
"rmcp-macros",
|
| 1084 |
+
"schemars",
|
| 1085 |
+
"serde",
|
| 1086 |
+
"serde_json",
|
| 1087 |
+
"thiserror",
|
| 1088 |
+
"tokio",
|
| 1089 |
+
"tokio-util",
|
| 1090 |
+
"tracing",
|
| 1091 |
+
]
|
| 1092 |
+
|
| 1093 |
+
[[package]]
|
| 1094 |
+
name = "rmcp-macros"
|
| 1095 |
+
version = "0.3.0"
|
| 1096 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1097 |
+
checksum = "7465280d5f73f2c5c99017a04af407b2262455a149f255ad22f2b0b29087695c"
|
| 1098 |
+
dependencies = [
|
| 1099 |
+
"darling",
|
| 1100 |
+
"proc-macro2",
|
| 1101 |
+
"quote",
|
| 1102 |
+
"serde_json",
|
| 1103 |
+
"syn",
|
| 1104 |
+
]
|
| 1105 |
+
|
| 1106 |
+
[[package]]
|
| 1107 |
+
name = "rustc-demangle"
|
| 1108 |
+
version = "0.1.25"
|
| 1109 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1110 |
+
checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
|
| 1111 |
+
|
| 1112 |
+
[[package]]
|
| 1113 |
+
name = "rustix"
|
| 1114 |
+
version = "1.0.8"
|
| 1115 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1116 |
+
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
|
| 1117 |
+
dependencies = [
|
| 1118 |
+
"bitflags",
|
| 1119 |
+
"errno",
|
| 1120 |
+
"libc",
|
| 1121 |
+
"linux-raw-sys",
|
| 1122 |
+
"windows-sys 0.60.2",
|
| 1123 |
+
]
|
| 1124 |
+
|
| 1125 |
+
[[package]]
|
| 1126 |
+
name = "rustls"
|
| 1127 |
+
version = "0.23.29"
|
| 1128 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1129 |
+
checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1"
|
| 1130 |
+
dependencies = [
|
| 1131 |
+
"once_cell",
|
| 1132 |
+
"rustls-pki-types",
|
| 1133 |
+
"rustls-webpki",
|
| 1134 |
+
"subtle",
|
| 1135 |
+
"zeroize",
|
| 1136 |
+
]
|
| 1137 |
+
|
| 1138 |
+
[[package]]
|
| 1139 |
+
name = "rustls-pki-types"
|
| 1140 |
+
version = "1.12.0"
|
| 1141 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1142 |
+
checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
|
| 1143 |
+
dependencies = [
|
| 1144 |
+
"zeroize",
|
| 1145 |
+
]
|
| 1146 |
+
|
| 1147 |
+
[[package]]
|
| 1148 |
+
name = "rustls-webpki"
|
| 1149 |
+
version = "0.103.4"
|
| 1150 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1151 |
+
checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc"
|
| 1152 |
+
dependencies = [
|
| 1153 |
+
"ring",
|
| 1154 |
+
"rustls-pki-types",
|
| 1155 |
+
"untrusted",
|
| 1156 |
+
]
|
| 1157 |
+
|
| 1158 |
+
[[package]]
|
| 1159 |
+
name = "rustversion"
|
| 1160 |
+
version = "1.0.21"
|
| 1161 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1162 |
+
checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
|
| 1163 |
+
|
| 1164 |
+
[[package]]
|
| 1165 |
+
name = "ryu"
|
| 1166 |
+
version = "1.0.20"
|
| 1167 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1168 |
+
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
|
| 1169 |
+
|
| 1170 |
+
[[package]]
|
| 1171 |
+
name = "schannel"
|
| 1172 |
+
version = "0.1.27"
|
| 1173 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1174 |
+
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
|
| 1175 |
+
dependencies = [
|
| 1176 |
+
"windows-sys 0.59.0",
|
| 1177 |
+
]
|
| 1178 |
+
|
| 1179 |
+
[[package]]
|
| 1180 |
+
name = "schemars"
|
| 1181 |
+
version = "1.0.4"
|
| 1182 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1183 |
+
checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0"
|
| 1184 |
+
dependencies = [
|
| 1185 |
+
"chrono",
|
| 1186 |
+
"dyn-clone",
|
| 1187 |
+
"ref-cast",
|
| 1188 |
+
"schemars_derive",
|
| 1189 |
+
"serde",
|
| 1190 |
+
"serde_json",
|
| 1191 |
+
]
|
| 1192 |
+
|
| 1193 |
+
[[package]]
|
| 1194 |
+
name = "schemars_derive"
|
| 1195 |
+
version = "1.0.4"
|
| 1196 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1197 |
+
checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80"
|
| 1198 |
+
dependencies = [
|
| 1199 |
+
"proc-macro2",
|
| 1200 |
+
"quote",
|
| 1201 |
+
"serde_derive_internals",
|
| 1202 |
+
"syn",
|
| 1203 |
+
]
|
| 1204 |
+
|
| 1205 |
+
[[package]]
|
| 1206 |
+
name = "scopeguard"
|
| 1207 |
+
version = "1.2.0"
|
| 1208 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1209 |
+
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
| 1210 |
+
|
| 1211 |
+
[[package]]
|
| 1212 |
+
name = "security-framework"
|
| 1213 |
+
version = "2.11.1"
|
| 1214 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1215 |
+
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
|
| 1216 |
+
dependencies = [
|
| 1217 |
+
"bitflags",
|
| 1218 |
+
"core-foundation",
|
| 1219 |
+
"core-foundation-sys",
|
| 1220 |
+
"libc",
|
| 1221 |
+
"security-framework-sys",
|
| 1222 |
+
]
|
| 1223 |
+
|
| 1224 |
+
[[package]]
|
| 1225 |
+
name = "security-framework-sys"
|
| 1226 |
+
version = "2.14.0"
|
| 1227 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1228 |
+
checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
|
| 1229 |
+
dependencies = [
|
| 1230 |
+
"core-foundation-sys",
|
| 1231 |
+
"libc",
|
| 1232 |
+
]
|
| 1233 |
+
|
| 1234 |
+
[[package]]
|
| 1235 |
+
name = "serde"
|
| 1236 |
+
version = "1.0.219"
|
| 1237 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1238 |
+
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
|
| 1239 |
+
dependencies = [
|
| 1240 |
+
"serde_derive",
|
| 1241 |
+
]
|
| 1242 |
+
|
| 1243 |
+
[[package]]
|
| 1244 |
+
name = "serde_derive"
|
| 1245 |
+
version = "1.0.219"
|
| 1246 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1247 |
+
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
|
| 1248 |
+
dependencies = [
|
| 1249 |
+
"proc-macro2",
|
| 1250 |
+
"quote",
|
| 1251 |
+
"syn",
|
| 1252 |
+
]
|
| 1253 |
+
|
| 1254 |
+
[[package]]
|
| 1255 |
+
name = "serde_derive_internals"
|
| 1256 |
+
version = "0.29.1"
|
| 1257 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1258 |
+
checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
|
| 1259 |
+
dependencies = [
|
| 1260 |
+
"proc-macro2",
|
| 1261 |
+
"quote",
|
| 1262 |
+
"syn",
|
| 1263 |
+
]
|
| 1264 |
+
|
| 1265 |
+
[[package]]
|
| 1266 |
+
name = "serde_json"
|
| 1267 |
+
version = "1.0.141"
|
| 1268 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1269 |
+
checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
|
| 1270 |
+
dependencies = [
|
| 1271 |
+
"itoa",
|
| 1272 |
+
"memchr",
|
| 1273 |
+
"ryu",
|
| 1274 |
+
"serde",
|
| 1275 |
+
]
|
| 1276 |
+
|
| 1277 |
+
[[package]]
|
| 1278 |
+
name = "serde_urlencoded"
|
| 1279 |
+
version = "0.7.1"
|
| 1280 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1281 |
+
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
|
| 1282 |
+
dependencies = [
|
| 1283 |
+
"form_urlencoded",
|
| 1284 |
+
"itoa",
|
| 1285 |
+
"ryu",
|
| 1286 |
+
"serde",
|
| 1287 |
+
]
|
| 1288 |
+
|
| 1289 |
+
[[package]]
|
| 1290 |
+
name = "sharded-slab"
|
| 1291 |
+
version = "0.1.7"
|
| 1292 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1293 |
+
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
|
| 1294 |
+
dependencies = [
|
| 1295 |
+
"lazy_static",
|
| 1296 |
+
]
|
| 1297 |
+
|
| 1298 |
+
[[package]]
|
| 1299 |
+
name = "shlex"
|
| 1300 |
+
version = "1.3.0"
|
| 1301 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1302 |
+
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
| 1303 |
+
|
| 1304 |
+
[[package]]
|
| 1305 |
+
name = "signal-hook-registry"
|
| 1306 |
+
version = "1.4.5"
|
| 1307 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1308 |
+
checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
|
| 1309 |
+
dependencies = [
|
| 1310 |
+
"libc",
|
| 1311 |
+
]
|
| 1312 |
+
|
| 1313 |
+
[[package]]
|
| 1314 |
+
name = "slab"
|
| 1315 |
+
version = "0.4.11"
|
| 1316 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1317 |
+
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
|
| 1318 |
+
|
| 1319 |
+
[[package]]
|
| 1320 |
+
name = "smallvec"
|
| 1321 |
+
version = "1.15.1"
|
| 1322 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1323 |
+
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
|
| 1324 |
+
|
| 1325 |
+
[[package]]
|
| 1326 |
+
name = "socket2"
|
| 1327 |
+
version = "0.5.10"
|
| 1328 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1329 |
+
checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
|
| 1330 |
+
dependencies = [
|
| 1331 |
+
"libc",
|
| 1332 |
+
"windows-sys 0.52.0",
|
| 1333 |
+
]
|
| 1334 |
+
|
| 1335 |
+
[[package]]
|
| 1336 |
+
name = "stable_deref_trait"
|
| 1337 |
+
version = "1.2.0"
|
| 1338 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1339 |
+
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
|
| 1340 |
+
|
| 1341 |
+
[[package]]
|
| 1342 |
+
name = "strsim"
|
| 1343 |
+
version = "0.11.1"
|
| 1344 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1345 |
+
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
| 1346 |
+
|
| 1347 |
+
[[package]]
|
| 1348 |
+
name = "subtle"
|
| 1349 |
+
version = "2.6.1"
|
| 1350 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1351 |
+
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
| 1352 |
+
|
| 1353 |
+
[[package]]
|
| 1354 |
+
name = "syn"
|
| 1355 |
+
version = "2.0.104"
|
| 1356 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1357 |
+
checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
|
| 1358 |
+
dependencies = [
|
| 1359 |
+
"proc-macro2",
|
| 1360 |
+
"quote",
|
| 1361 |
+
"unicode-ident",
|
| 1362 |
+
]
|
| 1363 |
+
|
| 1364 |
+
[[package]]
|
| 1365 |
+
name = "sync_wrapper"
|
| 1366 |
+
version = "1.0.2"
|
| 1367 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1368 |
+
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
|
| 1369 |
+
dependencies = [
|
| 1370 |
+
"futures-core",
|
| 1371 |
+
]
|
| 1372 |
+
|
| 1373 |
+
[[package]]
|
| 1374 |
+
name = "synstructure"
|
| 1375 |
+
version = "0.13.2"
|
| 1376 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1377 |
+
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
|
| 1378 |
+
dependencies = [
|
| 1379 |
+
"proc-macro2",
|
| 1380 |
+
"quote",
|
| 1381 |
+
"syn",
|
| 1382 |
+
]
|
| 1383 |
+
|
| 1384 |
+
[[package]]
|
| 1385 |
+
name = "system-configuration"
|
| 1386 |
+
version = "0.6.1"
|
| 1387 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1388 |
+
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
|
| 1389 |
+
dependencies = [
|
| 1390 |
+
"bitflags",
|
| 1391 |
+
"core-foundation",
|
| 1392 |
+
"system-configuration-sys",
|
| 1393 |
+
]
|
| 1394 |
+
|
| 1395 |
+
[[package]]
|
| 1396 |
+
name = "system-configuration-sys"
|
| 1397 |
+
version = "0.6.0"
|
| 1398 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1399 |
+
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
|
| 1400 |
+
dependencies = [
|
| 1401 |
+
"core-foundation-sys",
|
| 1402 |
+
"libc",
|
| 1403 |
+
]
|
| 1404 |
+
|
| 1405 |
+
[[package]]
|
| 1406 |
+
name = "tempfile"
|
| 1407 |
+
version = "3.20.0"
|
| 1408 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1409 |
+
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
|
| 1410 |
+
dependencies = [
|
| 1411 |
+
"fastrand",
|
| 1412 |
+
"getrandom 0.3.3",
|
| 1413 |
+
"once_cell",
|
| 1414 |
+
"rustix",
|
| 1415 |
+
"windows-sys 0.59.0",
|
| 1416 |
+
]
|
| 1417 |
+
|
| 1418 |
+
[[package]]
|
| 1419 |
+
name = "thiserror"
|
| 1420 |
+
version = "2.0.12"
|
| 1421 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1422 |
+
checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
|
| 1423 |
+
dependencies = [
|
| 1424 |
+
"thiserror-impl",
|
| 1425 |
+
]
|
| 1426 |
+
|
| 1427 |
+
[[package]]
|
| 1428 |
+
name = "thiserror-impl"
|
| 1429 |
+
version = "2.0.12"
|
| 1430 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1431 |
+
checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
|
| 1432 |
+
dependencies = [
|
| 1433 |
+
"proc-macro2",
|
| 1434 |
+
"quote",
|
| 1435 |
+
"syn",
|
| 1436 |
+
]
|
| 1437 |
+
|
| 1438 |
+
[[package]]
|
| 1439 |
+
name = "thread_local"
|
| 1440 |
+
version = "1.1.9"
|
| 1441 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1442 |
+
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
|
| 1443 |
+
dependencies = [
|
| 1444 |
+
"cfg-if",
|
| 1445 |
+
]
|
| 1446 |
+
|
| 1447 |
+
[[package]]
|
| 1448 |
+
name = "tinystr"
|
| 1449 |
+
version = "0.8.1"
|
| 1450 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1451 |
+
checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
|
| 1452 |
+
dependencies = [
|
| 1453 |
+
"displaydoc",
|
| 1454 |
+
"zerovec",
|
| 1455 |
+
]
|
| 1456 |
+
|
| 1457 |
+
[[package]]
|
| 1458 |
+
name = "tokio"
|
| 1459 |
+
version = "1.46.1"
|
| 1460 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1461 |
+
checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17"
|
| 1462 |
+
dependencies = [
|
| 1463 |
+
"backtrace",
|
| 1464 |
+
"bytes",
|
| 1465 |
+
"io-uring",
|
| 1466 |
+
"libc",
|
| 1467 |
+
"mio",
|
| 1468 |
+
"parking_lot",
|
| 1469 |
+
"pin-project-lite",
|
| 1470 |
+
"signal-hook-registry",
|
| 1471 |
+
"slab",
|
| 1472 |
+
"socket2",
|
| 1473 |
+
"tokio-macros",
|
| 1474 |
+
"windows-sys 0.52.0",
|
| 1475 |
+
]
|
| 1476 |
+
|
| 1477 |
+
[[package]]
|
| 1478 |
+
name = "tokio-macros"
|
| 1479 |
+
version = "2.5.0"
|
| 1480 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1481 |
+
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
|
| 1482 |
+
dependencies = [
|
| 1483 |
+
"proc-macro2",
|
| 1484 |
+
"quote",
|
| 1485 |
+
"syn",
|
| 1486 |
+
]
|
| 1487 |
+
|
| 1488 |
+
[[package]]
|
| 1489 |
+
name = "tokio-native-tls"
|
| 1490 |
+
version = "0.3.1"
|
| 1491 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1492 |
+
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
|
| 1493 |
+
dependencies = [
|
| 1494 |
+
"native-tls",
|
| 1495 |
+
"tokio",
|
| 1496 |
+
]
|
| 1497 |
+
|
| 1498 |
+
[[package]]
|
| 1499 |
+
name = "tokio-rustls"
|
| 1500 |
+
version = "0.26.2"
|
| 1501 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1502 |
+
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
|
| 1503 |
+
dependencies = [
|
| 1504 |
+
"rustls",
|
| 1505 |
+
"tokio",
|
| 1506 |
+
]
|
| 1507 |
+
|
| 1508 |
+
[[package]]
|
| 1509 |
+
name = "tokio-util"
|
| 1510 |
+
version = "0.7.15"
|
| 1511 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1512 |
+
checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df"
|
| 1513 |
+
dependencies = [
|
| 1514 |
+
"bytes",
|
| 1515 |
+
"futures-core",
|
| 1516 |
+
"futures-sink",
|
| 1517 |
+
"pin-project-lite",
|
| 1518 |
+
"tokio",
|
| 1519 |
+
]
|
| 1520 |
+
|
| 1521 |
+
[[package]]
|
| 1522 |
+
name = "tower"
|
| 1523 |
+
version = "0.5.2"
|
| 1524 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1525 |
+
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
|
| 1526 |
+
dependencies = [
|
| 1527 |
+
"futures-core",
|
| 1528 |
+
"futures-util",
|
| 1529 |
+
"pin-project-lite",
|
| 1530 |
+
"sync_wrapper",
|
| 1531 |
+
"tokio",
|
| 1532 |
+
"tower-layer",
|
| 1533 |
+
"tower-service",
|
| 1534 |
+
]
|
| 1535 |
+
|
| 1536 |
+
[[package]]
|
| 1537 |
+
name = "tower-http"
|
| 1538 |
+
version = "0.6.6"
|
| 1539 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1540 |
+
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
|
| 1541 |
+
dependencies = [
|
| 1542 |
+
"bitflags",
|
| 1543 |
+
"bytes",
|
| 1544 |
+
"futures-util",
|
| 1545 |
+
"http",
|
| 1546 |
+
"http-body",
|
| 1547 |
+
"iri-string",
|
| 1548 |
+
"pin-project-lite",
|
| 1549 |
+
"tower",
|
| 1550 |
+
"tower-layer",
|
| 1551 |
+
"tower-service",
|
| 1552 |
+
]
|
| 1553 |
+
|
| 1554 |
+
[[package]]
|
| 1555 |
+
name = "tower-layer"
|
| 1556 |
+
version = "0.3.3"
|
| 1557 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1558 |
+
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
|
| 1559 |
+
|
| 1560 |
+
[[package]]
|
| 1561 |
+
name = "tower-service"
|
| 1562 |
+
version = "0.3.3"
|
| 1563 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1564 |
+
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
|
| 1565 |
+
|
| 1566 |
+
[[package]]
|
| 1567 |
+
name = "tracing"
|
| 1568 |
+
version = "0.1.41"
|
| 1569 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1570 |
+
checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
|
| 1571 |
+
dependencies = [
|
| 1572 |
+
"pin-project-lite",
|
| 1573 |
+
"tracing-attributes",
|
| 1574 |
+
"tracing-core",
|
| 1575 |
+
]
|
| 1576 |
+
|
| 1577 |
+
[[package]]
|
| 1578 |
+
name = "tracing-attributes"
|
| 1579 |
+
version = "0.1.30"
|
| 1580 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1581 |
+
checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
|
| 1582 |
+
dependencies = [
|
| 1583 |
+
"proc-macro2",
|
| 1584 |
+
"quote",
|
| 1585 |
+
"syn",
|
| 1586 |
+
]
|
| 1587 |
+
|
| 1588 |
+
[[package]]
|
| 1589 |
+
name = "tracing-core"
|
| 1590 |
+
version = "0.1.34"
|
| 1591 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1592 |
+
checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
|
| 1593 |
+
dependencies = [
|
| 1594 |
+
"once_cell",
|
| 1595 |
+
"valuable",
|
| 1596 |
+
]
|
| 1597 |
+
|
| 1598 |
+
[[package]]
|
| 1599 |
+
name = "tracing-log"
|
| 1600 |
+
version = "0.2.0"
|
| 1601 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1602 |
+
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
|
| 1603 |
+
dependencies = [
|
| 1604 |
+
"log",
|
| 1605 |
+
"once_cell",
|
| 1606 |
+
"tracing-core",
|
| 1607 |
+
]
|
| 1608 |
+
|
| 1609 |
+
[[package]]
|
| 1610 |
+
name = "tracing-subscriber"
|
| 1611 |
+
version = "0.3.20"
|
| 1612 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1613 |
+
checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5"
|
| 1614 |
+
dependencies = [
|
| 1615 |
+
"matchers",
|
| 1616 |
+
"nu-ansi-term",
|
| 1617 |
+
"once_cell",
|
| 1618 |
+
"regex-automata",
|
| 1619 |
+
"sharded-slab",
|
| 1620 |
+
"smallvec",
|
| 1621 |
+
"thread_local",
|
| 1622 |
+
"tracing",
|
| 1623 |
+
"tracing-core",
|
| 1624 |
+
"tracing-log",
|
| 1625 |
+
]
|
| 1626 |
+
|
| 1627 |
+
[[package]]
|
| 1628 |
+
name = "try-lock"
|
| 1629 |
+
version = "0.2.5"
|
| 1630 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1631 |
+
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
| 1632 |
+
|
| 1633 |
+
[[package]]
|
| 1634 |
+
name = "unicode-ident"
|
| 1635 |
+
version = "1.0.18"
|
| 1636 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1637 |
+
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
|
| 1638 |
+
|
| 1639 |
+
[[package]]
|
| 1640 |
+
name = "untrusted"
|
| 1641 |
+
version = "0.9.0"
|
| 1642 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1643 |
+
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
| 1644 |
+
|
| 1645 |
+
[[package]]
|
| 1646 |
+
name = "url"
|
| 1647 |
+
version = "2.5.4"
|
| 1648 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1649 |
+
checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
|
| 1650 |
+
dependencies = [
|
| 1651 |
+
"form_urlencoded",
|
| 1652 |
+
"idna",
|
| 1653 |
+
"percent-encoding",
|
| 1654 |
+
]
|
| 1655 |
+
|
| 1656 |
+
[[package]]
|
| 1657 |
+
name = "utf8_iter"
|
| 1658 |
+
version = "1.0.4"
|
| 1659 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1660 |
+
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
| 1661 |
+
|
| 1662 |
+
[[package]]
|
| 1663 |
+
name = "valuable"
|
| 1664 |
+
version = "0.1.1"
|
| 1665 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1666 |
+
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
|
| 1667 |
+
|
| 1668 |
+
[[package]]
|
| 1669 |
+
name = "vcpkg"
|
| 1670 |
+
version = "0.2.15"
|
| 1671 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1672 |
+
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
| 1673 |
+
|
| 1674 |
+
[[package]]
|
| 1675 |
+
name = "want"
|
| 1676 |
+
version = "0.3.1"
|
| 1677 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1678 |
+
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
|
| 1679 |
+
dependencies = [
|
| 1680 |
+
"try-lock",
|
| 1681 |
+
]
|
| 1682 |
+
|
| 1683 |
+
[[package]]
|
| 1684 |
+
name = "wasi"
|
| 1685 |
+
version = "0.11.1+wasi-snapshot-preview1"
|
| 1686 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1687 |
+
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
| 1688 |
+
|
| 1689 |
+
[[package]]
|
| 1690 |
+
name = "wasi"
|
| 1691 |
+
version = "0.14.2+wasi-0.2.4"
|
| 1692 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1693 |
+
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
|
| 1694 |
+
dependencies = [
|
| 1695 |
+
"wit-bindgen-rt",
|
| 1696 |
+
]
|
| 1697 |
+
|
| 1698 |
+
[[package]]
|
| 1699 |
+
name = "wasm-bindgen"
|
| 1700 |
+
version = "0.2.100"
|
| 1701 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1702 |
+
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
|
| 1703 |
+
dependencies = [
|
| 1704 |
+
"cfg-if",
|
| 1705 |
+
"once_cell",
|
| 1706 |
+
"rustversion",
|
| 1707 |
+
"wasm-bindgen-macro",
|
| 1708 |
+
]
|
| 1709 |
+
|
| 1710 |
+
[[package]]
|
| 1711 |
+
name = "wasm-bindgen-backend"
|
| 1712 |
+
version = "0.2.100"
|
| 1713 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1714 |
+
checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
|
| 1715 |
+
dependencies = [
|
| 1716 |
+
"bumpalo",
|
| 1717 |
+
"log",
|
| 1718 |
+
"proc-macro2",
|
| 1719 |
+
"quote",
|
| 1720 |
+
"syn",
|
| 1721 |
+
"wasm-bindgen-shared",
|
| 1722 |
+
]
|
| 1723 |
+
|
| 1724 |
+
[[package]]
|
| 1725 |
+
name = "wasm-bindgen-futures"
|
| 1726 |
+
version = "0.4.50"
|
| 1727 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1728 |
+
checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
|
| 1729 |
+
dependencies = [
|
| 1730 |
+
"cfg-if",
|
| 1731 |
+
"js-sys",
|
| 1732 |
+
"once_cell",
|
| 1733 |
+
"wasm-bindgen",
|
| 1734 |
+
"web-sys",
|
| 1735 |
+
]
|
| 1736 |
+
|
| 1737 |
+
[[package]]
|
| 1738 |
+
name = "wasm-bindgen-macro"
|
| 1739 |
+
version = "0.2.100"
|
| 1740 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1741 |
+
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
|
| 1742 |
+
dependencies = [
|
| 1743 |
+
"quote",
|
| 1744 |
+
"wasm-bindgen-macro-support",
|
| 1745 |
+
]
|
| 1746 |
+
|
| 1747 |
+
[[package]]
|
| 1748 |
+
name = "wasm-bindgen-macro-support"
|
| 1749 |
+
version = "0.2.100"
|
| 1750 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1751 |
+
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
|
| 1752 |
+
dependencies = [
|
| 1753 |
+
"proc-macro2",
|
| 1754 |
+
"quote",
|
| 1755 |
+
"syn",
|
| 1756 |
+
"wasm-bindgen-backend",
|
| 1757 |
+
"wasm-bindgen-shared",
|
| 1758 |
+
]
|
| 1759 |
+
|
| 1760 |
+
[[package]]
|
| 1761 |
+
name = "wasm-bindgen-shared"
|
| 1762 |
+
version = "0.2.100"
|
| 1763 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1764 |
+
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
|
| 1765 |
+
dependencies = [
|
| 1766 |
+
"unicode-ident",
|
| 1767 |
+
]
|
| 1768 |
+
|
| 1769 |
+
[[package]]
|
| 1770 |
+
name = "weather"
|
| 1771 |
+
version = "0.1.0"
|
| 1772 |
+
dependencies = [
|
| 1773 |
+
"anyhow",
|
| 1774 |
+
"reqwest",
|
| 1775 |
+
"rmcp",
|
| 1776 |
+
"serde",
|
| 1777 |
+
"serde_json",
|
| 1778 |
+
"tokio",
|
| 1779 |
+
"tracing",
|
| 1780 |
+
"tracing-subscriber",
|
| 1781 |
+
]
|
| 1782 |
+
|
| 1783 |
+
[[package]]
|
| 1784 |
+
name = "web-sys"
|
| 1785 |
+
version = "0.3.77"
|
| 1786 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1787 |
+
checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
|
| 1788 |
+
dependencies = [
|
| 1789 |
+
"js-sys",
|
| 1790 |
+
"wasm-bindgen",
|
| 1791 |
+
]
|
| 1792 |
+
|
| 1793 |
+
[[package]]
|
| 1794 |
+
name = "windows-core"
|
| 1795 |
+
version = "0.61.2"
|
| 1796 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1797 |
+
checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
|
| 1798 |
+
dependencies = [
|
| 1799 |
+
"windows-implement",
|
| 1800 |
+
"windows-interface",
|
| 1801 |
+
"windows-link",
|
| 1802 |
+
"windows-result",
|
| 1803 |
+
"windows-strings",
|
| 1804 |
+
]
|
| 1805 |
+
|
| 1806 |
+
[[package]]
|
| 1807 |
+
name = "windows-implement"
|
| 1808 |
+
version = "0.60.0"
|
| 1809 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1810 |
+
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
|
| 1811 |
+
dependencies = [
|
| 1812 |
+
"proc-macro2",
|
| 1813 |
+
"quote",
|
| 1814 |
+
"syn",
|
| 1815 |
+
]
|
| 1816 |
+
|
| 1817 |
+
[[package]]
|
| 1818 |
+
name = "windows-interface"
|
| 1819 |
+
version = "0.59.1"
|
| 1820 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1821 |
+
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
|
| 1822 |
+
dependencies = [
|
| 1823 |
+
"proc-macro2",
|
| 1824 |
+
"quote",
|
| 1825 |
+
"syn",
|
| 1826 |
+
]
|
| 1827 |
+
|
| 1828 |
+
[[package]]
|
| 1829 |
+
name = "windows-link"
|
| 1830 |
+
version = "0.1.3"
|
| 1831 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1832 |
+
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
|
| 1833 |
+
|
| 1834 |
+
[[package]]
|
| 1835 |
+
name = "windows-registry"
|
| 1836 |
+
version = "0.5.3"
|
| 1837 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1838 |
+
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
|
| 1839 |
+
dependencies = [
|
| 1840 |
+
"windows-link",
|
| 1841 |
+
"windows-result",
|
| 1842 |
+
"windows-strings",
|
| 1843 |
+
]
|
| 1844 |
+
|
| 1845 |
+
[[package]]
|
| 1846 |
+
name = "windows-result"
|
| 1847 |
+
version = "0.3.4"
|
| 1848 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1849 |
+
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
|
| 1850 |
+
dependencies = [
|
| 1851 |
+
"windows-link",
|
| 1852 |
+
]
|
| 1853 |
+
|
| 1854 |
+
[[package]]
|
| 1855 |
+
name = "windows-strings"
|
| 1856 |
+
version = "0.4.2"
|
| 1857 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1858 |
+
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
|
| 1859 |
+
dependencies = [
|
| 1860 |
+
"windows-link",
|
| 1861 |
+
]
|
| 1862 |
+
|
| 1863 |
+
[[package]]
|
| 1864 |
+
name = "windows-sys"
|
| 1865 |
+
version = "0.52.0"
|
| 1866 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1867 |
+
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
| 1868 |
+
dependencies = [
|
| 1869 |
+
"windows-targets 0.52.6",
|
| 1870 |
+
]
|
| 1871 |
+
|
| 1872 |
+
[[package]]
|
| 1873 |
+
name = "windows-sys"
|
| 1874 |
+
version = "0.59.0"
|
| 1875 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1876 |
+
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
| 1877 |
+
dependencies = [
|
| 1878 |
+
"windows-targets 0.52.6",
|
| 1879 |
+
]
|
| 1880 |
+
|
| 1881 |
+
[[package]]
|
| 1882 |
+
name = "windows-sys"
|
| 1883 |
+
version = "0.60.2"
|
| 1884 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1885 |
+
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
|
| 1886 |
+
dependencies = [
|
| 1887 |
+
"windows-targets 0.53.2",
|
| 1888 |
+
]
|
| 1889 |
+
|
| 1890 |
+
[[package]]
|
| 1891 |
+
name = "windows-targets"
|
| 1892 |
+
version = "0.52.6"
|
| 1893 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1894 |
+
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
| 1895 |
+
dependencies = [
|
| 1896 |
+
"windows_aarch64_gnullvm 0.52.6",
|
| 1897 |
+
"windows_aarch64_msvc 0.52.6",
|
| 1898 |
+
"windows_i686_gnu 0.52.6",
|
| 1899 |
+
"windows_i686_gnullvm 0.52.6",
|
| 1900 |
+
"windows_i686_msvc 0.52.6",
|
| 1901 |
+
"windows_x86_64_gnu 0.52.6",
|
| 1902 |
+
"windows_x86_64_gnullvm 0.52.6",
|
| 1903 |
+
"windows_x86_64_msvc 0.52.6",
|
| 1904 |
+
]
|
| 1905 |
+
|
| 1906 |
+
[[package]]
|
| 1907 |
+
name = "windows-targets"
|
| 1908 |
+
version = "0.53.2"
|
| 1909 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1910 |
+
checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
|
| 1911 |
+
dependencies = [
|
| 1912 |
+
"windows_aarch64_gnullvm 0.53.0",
|
| 1913 |
+
"windows_aarch64_msvc 0.53.0",
|
| 1914 |
+
"windows_i686_gnu 0.53.0",
|
| 1915 |
+
"windows_i686_gnullvm 0.53.0",
|
| 1916 |
+
"windows_i686_msvc 0.53.0",
|
| 1917 |
+
"windows_x86_64_gnu 0.53.0",
|
| 1918 |
+
"windows_x86_64_gnullvm 0.53.0",
|
| 1919 |
+
"windows_x86_64_msvc 0.53.0",
|
| 1920 |
+
]
|
| 1921 |
+
|
| 1922 |
+
[[package]]
|
| 1923 |
+
name = "windows_aarch64_gnullvm"
|
| 1924 |
+
version = "0.52.6"
|
| 1925 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1926 |
+
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
| 1927 |
+
|
| 1928 |
+
[[package]]
|
| 1929 |
+
name = "windows_aarch64_gnullvm"
|
| 1930 |
+
version = "0.53.0"
|
| 1931 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1932 |
+
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
|
| 1933 |
+
|
| 1934 |
+
[[package]]
|
| 1935 |
+
name = "windows_aarch64_msvc"
|
| 1936 |
+
version = "0.52.6"
|
| 1937 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1938 |
+
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
| 1939 |
+
|
| 1940 |
+
[[package]]
|
| 1941 |
+
name = "windows_aarch64_msvc"
|
| 1942 |
+
version = "0.53.0"
|
| 1943 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1944 |
+
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
|
| 1945 |
+
|
| 1946 |
+
[[package]]
|
| 1947 |
+
name = "windows_i686_gnu"
|
| 1948 |
+
version = "0.52.6"
|
| 1949 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1950 |
+
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
| 1951 |
+
|
| 1952 |
+
[[package]]
|
| 1953 |
+
name = "windows_i686_gnu"
|
| 1954 |
+
version = "0.53.0"
|
| 1955 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1956 |
+
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
|
| 1957 |
+
|
| 1958 |
+
[[package]]
|
| 1959 |
+
name = "windows_i686_gnullvm"
|
| 1960 |
+
version = "0.52.6"
|
| 1961 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1962 |
+
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
| 1963 |
+
|
| 1964 |
+
[[package]]
|
| 1965 |
+
name = "windows_i686_gnullvm"
|
| 1966 |
+
version = "0.53.0"
|
| 1967 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1968 |
+
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
|
| 1969 |
+
|
| 1970 |
+
[[package]]
|
| 1971 |
+
name = "windows_i686_msvc"
|
| 1972 |
+
version = "0.52.6"
|
| 1973 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1974 |
+
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
| 1975 |
+
|
| 1976 |
+
[[package]]
|
| 1977 |
+
name = "windows_i686_msvc"
|
| 1978 |
+
version = "0.53.0"
|
| 1979 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1980 |
+
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
|
| 1981 |
+
|
| 1982 |
+
[[package]]
|
| 1983 |
+
name = "windows_x86_64_gnu"
|
| 1984 |
+
version = "0.52.6"
|
| 1985 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1986 |
+
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
| 1987 |
+
|
| 1988 |
+
[[package]]
|
| 1989 |
+
name = "windows_x86_64_gnu"
|
| 1990 |
+
version = "0.53.0"
|
| 1991 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1992 |
+
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
|
| 1993 |
+
|
| 1994 |
+
[[package]]
|
| 1995 |
+
name = "windows_x86_64_gnullvm"
|
| 1996 |
+
version = "0.52.6"
|
| 1997 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1998 |
+
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
| 1999 |
+
|
| 2000 |
+
[[package]]
|
| 2001 |
+
name = "windows_x86_64_gnullvm"
|
| 2002 |
+
version = "0.53.0"
|
| 2003 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2004 |
+
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
|
| 2005 |
+
|
| 2006 |
+
[[package]]
|
| 2007 |
+
name = "windows_x86_64_msvc"
|
| 2008 |
+
version = "0.52.6"
|
| 2009 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2010 |
+
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
| 2011 |
+
|
| 2012 |
+
[[package]]
|
| 2013 |
+
name = "windows_x86_64_msvc"
|
| 2014 |
+
version = "0.53.0"
|
| 2015 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2016 |
+
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
|
| 2017 |
+
|
| 2018 |
+
[[package]]
|
| 2019 |
+
name = "wit-bindgen-rt"
|
| 2020 |
+
version = "0.39.0"
|
| 2021 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2022 |
+
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
|
| 2023 |
+
dependencies = [
|
| 2024 |
+
"bitflags",
|
| 2025 |
+
]
|
| 2026 |
+
|
| 2027 |
+
[[package]]
|
| 2028 |
+
name = "writeable"
|
| 2029 |
+
version = "0.6.1"
|
| 2030 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2031 |
+
checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
|
| 2032 |
+
|
| 2033 |
+
[[package]]
|
| 2034 |
+
name = "yoke"
|
| 2035 |
+
version = "0.8.0"
|
| 2036 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2037 |
+
checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
|
| 2038 |
+
dependencies = [
|
| 2039 |
+
"serde",
|
| 2040 |
+
"stable_deref_trait",
|
| 2041 |
+
"yoke-derive",
|
| 2042 |
+
"zerofrom",
|
| 2043 |
+
]
|
| 2044 |
+
|
| 2045 |
+
[[package]]
|
| 2046 |
+
name = "yoke-derive"
|
| 2047 |
+
version = "0.8.0"
|
| 2048 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2049 |
+
checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
|
| 2050 |
+
dependencies = [
|
| 2051 |
+
"proc-macro2",
|
| 2052 |
+
"quote",
|
| 2053 |
+
"syn",
|
| 2054 |
+
"synstructure",
|
| 2055 |
+
]
|
| 2056 |
+
|
| 2057 |
+
[[package]]
|
| 2058 |
+
name = "zerofrom"
|
| 2059 |
+
version = "0.1.6"
|
| 2060 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2061 |
+
checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
|
| 2062 |
+
dependencies = [
|
| 2063 |
+
"zerofrom-derive",
|
| 2064 |
+
]
|
| 2065 |
+
|
| 2066 |
+
[[package]]
|
| 2067 |
+
name = "zerofrom-derive"
|
| 2068 |
+
version = "0.1.6"
|
| 2069 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2070 |
+
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
|
| 2071 |
+
dependencies = [
|
| 2072 |
+
"proc-macro2",
|
| 2073 |
+
"quote",
|
| 2074 |
+
"syn",
|
| 2075 |
+
"synstructure",
|
| 2076 |
+
]
|
| 2077 |
+
|
| 2078 |
+
[[package]]
|
| 2079 |
+
name = "zeroize"
|
| 2080 |
+
version = "1.8.1"
|
| 2081 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2082 |
+
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
|
| 2083 |
+
|
| 2084 |
+
[[package]]
|
| 2085 |
+
name = "zerotrie"
|
| 2086 |
+
version = "0.2.2"
|
| 2087 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2088 |
+
checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
|
| 2089 |
+
dependencies = [
|
| 2090 |
+
"displaydoc",
|
| 2091 |
+
"yoke",
|
| 2092 |
+
"zerofrom",
|
| 2093 |
+
]
|
| 2094 |
+
|
| 2095 |
+
[[package]]
|
| 2096 |
+
name = "zerovec"
|
| 2097 |
+
version = "0.11.2"
|
| 2098 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2099 |
+
checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
|
| 2100 |
+
dependencies = [
|
| 2101 |
+
"yoke",
|
| 2102 |
+
"zerofrom",
|
| 2103 |
+
"zerovec-derive",
|
| 2104 |
+
]
|
| 2105 |
+
|
| 2106 |
+
[[package]]
|
| 2107 |
+
name = "zerovec-derive"
|
| 2108 |
+
version = "0.11.1"
|
| 2109 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2110 |
+
checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
|
| 2111 |
+
dependencies = [
|
| 2112 |
+
"proc-macro2",
|
| 2113 |
+
"quote",
|
| 2114 |
+
"syn",
|
| 2115 |
+
]
|
weather-server-rust/Cargo.toml
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[package]
|
| 2 |
+
name = "weather"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
edition = "2024"
|
| 5 |
+
|
| 6 |
+
[dependencies]
|
| 7 |
+
rmcp = { version = "0.3", features = ["server", "macros", "transport-io"] }
|
| 8 |
+
tokio = { version = "1.46", features = ["full"] }
|
| 9 |
+
reqwest = { version = "0.12", features = ["json"] }
|
| 10 |
+
serde = { version = "1.0", features = ["derive"] }
|
| 11 |
+
serde_json = "1.0"
|
| 12 |
+
anyhow = "1.0"
|
| 13 |
+
tracing = "0.1"
|
| 14 |
+
tracing-subscriber = { version = "0.3", features = ["env-filter", "std", "fmt"] }
|
weather-server-rust/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# A Simple MCP Weather Server written in Rust
|
| 2 |
+
|
| 3 |
+
See the [Quickstart](https://modelcontextprotocol.io/quickstart) tutorial for more information.
|
weather-server-rust/src/main.rs
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
use anyhow::Result;
|
| 2 |
+
use rmcp::{
|
| 3 |
+
ServerHandler, ServiceExt,
|
| 4 |
+
handler::server::{router::tool::ToolRouter, tool::Parameters},
|
| 5 |
+
model::*,
|
| 6 |
+
schemars, tool, tool_handler, tool_router,
|
| 7 |
+
};
|
| 8 |
+
use serde::Deserialize;
|
| 9 |
+
use serde::de::DeserializeOwned;
|
| 10 |
+
|
| 11 |
+
const NWS_API_BASE: &str = "https://api.weather.gov";
|
| 12 |
+
const USER_AGENT: &str = "weather-app/1.0";
|
| 13 |
+
|
| 14 |
+
#[derive(Debug, Deserialize)]
|
| 15 |
+
struct AlertsResponse {
|
| 16 |
+
features: Vec<AlertFeature>,
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
#[derive(Debug, Deserialize)]
|
| 20 |
+
struct AlertFeature {
|
| 21 |
+
properties: AlertProperties,
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
#[derive(Debug, Deserialize)]
|
| 25 |
+
struct AlertProperties {
|
| 26 |
+
event: Option<String>,
|
| 27 |
+
#[serde(rename = "areaDesc")]
|
| 28 |
+
area_desc: Option<String>,
|
| 29 |
+
severity: Option<String>,
|
| 30 |
+
description: Option<String>,
|
| 31 |
+
instruction: Option<String>,
|
| 32 |
+
}
|
| 33 |
+
|
| 34 |
+
#[derive(Debug, Deserialize)]
|
| 35 |
+
struct PointsResponse {
|
| 36 |
+
properties: PointsProperties,
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
#[derive(Debug, Deserialize)]
|
| 40 |
+
struct PointsProperties {
|
| 41 |
+
forecast: String,
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
#[derive(Debug, Deserialize)]
|
| 45 |
+
struct ForecastResponse {
|
| 46 |
+
properties: ForecastProperties,
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
#[derive(Debug, Deserialize)]
|
| 50 |
+
struct ForecastProperties {
|
| 51 |
+
periods: Vec<ForecastPeriod>,
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
#[derive(Debug, Deserialize)]
|
| 55 |
+
struct ForecastPeriod {
|
| 56 |
+
name: String,
|
| 57 |
+
temperature: i32,
|
| 58 |
+
#[serde(rename = "temperatureUnit")]
|
| 59 |
+
temperature_unit: String,
|
| 60 |
+
#[serde(rename = "windSpeed")]
|
| 61 |
+
wind_speed: String,
|
| 62 |
+
#[serde(rename = "windDirection")]
|
| 63 |
+
wind_direction: String,
|
| 64 |
+
#[serde(rename = "detailedForecast")]
|
| 65 |
+
detailed_forecast: String,
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
async fn make_nws_request<T: DeserializeOwned>(url: &str) -> Result<T> {
|
| 69 |
+
let client = reqwest::Client::new();
|
| 70 |
+
let rsp = client
|
| 71 |
+
.get(url)
|
| 72 |
+
.header(reqwest::header::USER_AGENT, USER_AGENT)
|
| 73 |
+
.header(reqwest::header::ACCEPT, "application/geo+json")
|
| 74 |
+
.send()
|
| 75 |
+
.await?
|
| 76 |
+
.error_for_status()?;
|
| 77 |
+
Ok(rsp.json::<T>().await?)
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
fn format_alert(feature: &AlertFeature) -> String {
|
| 81 |
+
let props = &feature.properties;
|
| 82 |
+
format!(
|
| 83 |
+
"Event: {}\nArea: {}\nSeverity: {}\nDescription: {}\nInstructions: {}",
|
| 84 |
+
props.event.as_deref().unwrap_or("Unknown"),
|
| 85 |
+
props.area_desc.as_deref().unwrap_or("Unknown"),
|
| 86 |
+
props.severity.as_deref().unwrap_or("Unknown"),
|
| 87 |
+
props
|
| 88 |
+
.description
|
| 89 |
+
.as_deref()
|
| 90 |
+
.unwrap_or("No description available"),
|
| 91 |
+
props
|
| 92 |
+
.instruction
|
| 93 |
+
.as_deref()
|
| 94 |
+
.unwrap_or("No specific instructions provided")
|
| 95 |
+
)
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
fn format_period(period: &ForecastPeriod) -> String {
|
| 99 |
+
format!(
|
| 100 |
+
"{}:\nTemperature: {}°{}\nWind: {} {}\nForecast: {}",
|
| 101 |
+
period.name,
|
| 102 |
+
period.temperature,
|
| 103 |
+
period.temperature_unit,
|
| 104 |
+
period.wind_speed,
|
| 105 |
+
period.wind_direction,
|
| 106 |
+
period.detailed_forecast
|
| 107 |
+
)
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
#[derive(serde::Deserialize, schemars::JsonSchema)]
|
| 111 |
+
pub struct MCPForecastRequest {
|
| 112 |
+
latitude: f32,
|
| 113 |
+
longitude: f32,
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
#[derive(serde::Deserialize, schemars::JsonSchema)]
|
| 117 |
+
pub struct MCPAlertRequest {
|
| 118 |
+
state: String,
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
pub struct Weather {
|
| 122 |
+
tool_router: ToolRouter<Weather>,
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
#[tool_router]
|
| 126 |
+
impl Weather {
|
| 127 |
+
fn new() -> Self {
|
| 128 |
+
Self {
|
| 129 |
+
tool_router: Self::tool_router(),
|
| 130 |
+
}
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
#[tool(description = "Get weather alerts for a US state.")]
|
| 134 |
+
async fn get_alerts(
|
| 135 |
+
&self,
|
| 136 |
+
Parameters(MCPAlertRequest { state }): Parameters<MCPAlertRequest>,
|
| 137 |
+
) -> String {
|
| 138 |
+
let url = format!(
|
| 139 |
+
"{}/alerts/active/area/{}",
|
| 140 |
+
NWS_API_BASE,
|
| 141 |
+
state.to_uppercase()
|
| 142 |
+
);
|
| 143 |
+
|
| 144 |
+
match make_nws_request::<AlertsResponse>(&url).await {
|
| 145 |
+
Ok(data) => {
|
| 146 |
+
if data.features.is_empty() {
|
| 147 |
+
"No active alerts for this state.".to_string()
|
| 148 |
+
} else {
|
| 149 |
+
data.features
|
| 150 |
+
.iter()
|
| 151 |
+
.map(format_alert)
|
| 152 |
+
.collect::<Vec<_>>()
|
| 153 |
+
.join("\n---\n")
|
| 154 |
+
}
|
| 155 |
+
}
|
| 156 |
+
Err(_) => "Unable to fetch alerts or no alerts found.".to_string(),
|
| 157 |
+
}
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
#[tool(description = "Get weather forecast for a location.")]
|
| 161 |
+
async fn get_forecast(
|
| 162 |
+
&self,
|
| 163 |
+
Parameters(MCPForecastRequest {
|
| 164 |
+
latitude,
|
| 165 |
+
longitude,
|
| 166 |
+
}): Parameters<MCPForecastRequest>,
|
| 167 |
+
) -> String {
|
| 168 |
+
let points_url = format!("{NWS_API_BASE}/points/{latitude},{longitude}");
|
| 169 |
+
let Ok(points_data) = make_nws_request::<PointsResponse>(&points_url).await else {
|
| 170 |
+
return "Unable to fetch forecast data for this location.".to_string();
|
| 171 |
+
};
|
| 172 |
+
|
| 173 |
+
let forecast_url = points_data.properties.forecast;
|
| 174 |
+
|
| 175 |
+
let Ok(forecast_data) = make_nws_request::<ForecastResponse>(&forecast_url).await else {
|
| 176 |
+
return "Unable to fetch forecast data for this location.".to_string();
|
| 177 |
+
};
|
| 178 |
+
|
| 179 |
+
let periods = &forecast_data.properties.periods;
|
| 180 |
+
let forecast_summary: String = periods
|
| 181 |
+
.iter()
|
| 182 |
+
.take(5) // Next 5 periods only
|
| 183 |
+
.map(format_period)
|
| 184 |
+
.collect::<Vec<String>>()
|
| 185 |
+
.join("\n---\n");
|
| 186 |
+
forecast_summary
|
| 187 |
+
}
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
#[tool_handler]
|
| 191 |
+
impl ServerHandler for Weather {
|
| 192 |
+
fn get_info(&self) -> ServerInfo {
|
| 193 |
+
ServerInfo {
|
| 194 |
+
capabilities: ServerCapabilities::builder().enable_tools().build(),
|
| 195 |
+
..Default::default()
|
| 196 |
+
}
|
| 197 |
+
}
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
#[tokio::main]
|
| 201 |
+
async fn main() -> Result<()> {
|
| 202 |
+
let transport = (tokio::io::stdin(), tokio::io::stdout());
|
| 203 |
+
let service = Weather::new().serve(transport).await?;
|
| 204 |
+
service.waiting().await?;
|
| 205 |
+
Ok(())
|
| 206 |
+
}
|
weather-server-typescript/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# A Simple MCP weather Server written in TypeScript
|
| 2 |
+
|
| 3 |
+
See the [Quickstart](https://modelcontextprotocol.io/quickstart) tutorial for more information.
|
weather-server-typescript/package-lock.json
ADDED
|
@@ -0,0 +1,1075 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "mcp-quickstart-ts",
|
| 3 |
+
"version": "1.0.0",
|
| 4 |
+
"lockfileVersion": 3,
|
| 5 |
+
"requires": true,
|
| 6 |
+
"packages": {
|
| 7 |
+
"": {
|
| 8 |
+
"name": "mcp-quickstart-ts",
|
| 9 |
+
"version": "1.0.0",
|
| 10 |
+
"license": "ISC",
|
| 11 |
+
"dependencies": {
|
| 12 |
+
"@modelcontextprotocol/sdk": "^1.24.3"
|
| 13 |
+
},
|
| 14 |
+
"bin": {
|
| 15 |
+
"weather": "build/index.js"
|
| 16 |
+
},
|
| 17 |
+
"devDependencies": {
|
| 18 |
+
"@types/node": "^22.19.2",
|
| 19 |
+
"typescript": "^5.9.3"
|
| 20 |
+
}
|
| 21 |
+
},
|
| 22 |
+
"node_modules/@hono/node-server": {
|
| 23 |
+
"version": "1.19.7",
|
| 24 |
+
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.7.tgz",
|
| 25 |
+
"integrity": "sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==",
|
| 26 |
+
"license": "MIT",
|
| 27 |
+
"engines": {
|
| 28 |
+
"node": ">=18.14.1"
|
| 29 |
+
},
|
| 30 |
+
"peerDependencies": {
|
| 31 |
+
"hono": "^4"
|
| 32 |
+
}
|
| 33 |
+
},
|
| 34 |
+
"node_modules/@modelcontextprotocol/sdk": {
|
| 35 |
+
"version": "1.25.2",
|
| 36 |
+
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.2.tgz",
|
| 37 |
+
"integrity": "sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==",
|
| 38 |
+
"license": "MIT",
|
| 39 |
+
"dependencies": {
|
| 40 |
+
"@hono/node-server": "^1.19.7",
|
| 41 |
+
"ajv": "^8.17.1",
|
| 42 |
+
"ajv-formats": "^3.0.1",
|
| 43 |
+
"content-type": "^1.0.5",
|
| 44 |
+
"cors": "^2.8.5",
|
| 45 |
+
"cross-spawn": "^7.0.5",
|
| 46 |
+
"eventsource": "^3.0.2",
|
| 47 |
+
"eventsource-parser": "^3.0.0",
|
| 48 |
+
"express": "^5.0.1",
|
| 49 |
+
"express-rate-limit": "^7.5.0",
|
| 50 |
+
"jose": "^6.1.1",
|
| 51 |
+
"json-schema-typed": "^8.0.2",
|
| 52 |
+
"pkce-challenge": "^5.0.0",
|
| 53 |
+
"raw-body": "^3.0.0",
|
| 54 |
+
"zod": "^3.25 || ^4.0",
|
| 55 |
+
"zod-to-json-schema": "^3.25.0"
|
| 56 |
+
},
|
| 57 |
+
"engines": {
|
| 58 |
+
"node": ">=18"
|
| 59 |
+
},
|
| 60 |
+
"peerDependencies": {
|
| 61 |
+
"@cfworker/json-schema": "^4.1.1",
|
| 62 |
+
"zod": "^3.25 || ^4.0"
|
| 63 |
+
},
|
| 64 |
+
"peerDependenciesMeta": {
|
| 65 |
+
"@cfworker/json-schema": {
|
| 66 |
+
"optional": true
|
| 67 |
+
},
|
| 68 |
+
"zod": {
|
| 69 |
+
"optional": false
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
},
|
| 73 |
+
"node_modules/@types/node": {
|
| 74 |
+
"version": "22.19.2",
|
| 75 |
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.2.tgz",
|
| 76 |
+
"integrity": "sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==",
|
| 77 |
+
"dev": true,
|
| 78 |
+
"dependencies": {
|
| 79 |
+
"undici-types": "~6.21.0"
|
| 80 |
+
}
|
| 81 |
+
},
|
| 82 |
+
"node_modules/accepts": {
|
| 83 |
+
"version": "2.0.0",
|
| 84 |
+
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
|
| 85 |
+
"integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
|
| 86 |
+
"dependencies": {
|
| 87 |
+
"mime-types": "^3.0.0",
|
| 88 |
+
"negotiator": "^1.0.0"
|
| 89 |
+
},
|
| 90 |
+
"engines": {
|
| 91 |
+
"node": ">= 0.6"
|
| 92 |
+
}
|
| 93 |
+
},
|
| 94 |
+
"node_modules/ajv": {
|
| 95 |
+
"version": "8.17.1",
|
| 96 |
+
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
|
| 97 |
+
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
| 98 |
+
"dependencies": {
|
| 99 |
+
"fast-deep-equal": "^3.1.3",
|
| 100 |
+
"fast-uri": "^3.0.1",
|
| 101 |
+
"json-schema-traverse": "^1.0.0",
|
| 102 |
+
"require-from-string": "^2.0.2"
|
| 103 |
+
},
|
| 104 |
+
"funding": {
|
| 105 |
+
"type": "github",
|
| 106 |
+
"url": "https://github.com/sponsors/epoberezkin"
|
| 107 |
+
}
|
| 108 |
+
},
|
| 109 |
+
"node_modules/ajv-formats": {
|
| 110 |
+
"version": "3.0.1",
|
| 111 |
+
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
|
| 112 |
+
"integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
|
| 113 |
+
"dependencies": {
|
| 114 |
+
"ajv": "^8.0.0"
|
| 115 |
+
},
|
| 116 |
+
"peerDependencies": {
|
| 117 |
+
"ajv": "^8.0.0"
|
| 118 |
+
},
|
| 119 |
+
"peerDependenciesMeta": {
|
| 120 |
+
"ajv": {
|
| 121 |
+
"optional": true
|
| 122 |
+
}
|
| 123 |
+
}
|
| 124 |
+
},
|
| 125 |
+
"node_modules/body-parser": {
|
| 126 |
+
"version": "2.2.1",
|
| 127 |
+
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
|
| 128 |
+
"integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
|
| 129 |
+
"dependencies": {
|
| 130 |
+
"bytes": "^3.1.2",
|
| 131 |
+
"content-type": "^1.0.5",
|
| 132 |
+
"debug": "^4.4.3",
|
| 133 |
+
"http-errors": "^2.0.0",
|
| 134 |
+
"iconv-lite": "^0.7.0",
|
| 135 |
+
"on-finished": "^2.4.1",
|
| 136 |
+
"qs": "^6.14.0",
|
| 137 |
+
"raw-body": "^3.0.1",
|
| 138 |
+
"type-is": "^2.0.1"
|
| 139 |
+
},
|
| 140 |
+
"engines": {
|
| 141 |
+
"node": ">=18"
|
| 142 |
+
},
|
| 143 |
+
"funding": {
|
| 144 |
+
"type": "opencollective",
|
| 145 |
+
"url": "https://opencollective.com/express"
|
| 146 |
+
}
|
| 147 |
+
},
|
| 148 |
+
"node_modules/bytes": {
|
| 149 |
+
"version": "3.1.2",
|
| 150 |
+
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
|
| 151 |
+
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
|
| 152 |
+
"license": "MIT",
|
| 153 |
+
"engines": {
|
| 154 |
+
"node": ">= 0.8"
|
| 155 |
+
}
|
| 156 |
+
},
|
| 157 |
+
"node_modules/call-bind-apply-helpers": {
|
| 158 |
+
"version": "1.0.2",
|
| 159 |
+
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
| 160 |
+
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
| 161 |
+
"dependencies": {
|
| 162 |
+
"es-errors": "^1.3.0",
|
| 163 |
+
"function-bind": "^1.1.2"
|
| 164 |
+
},
|
| 165 |
+
"engines": {
|
| 166 |
+
"node": ">= 0.4"
|
| 167 |
+
}
|
| 168 |
+
},
|
| 169 |
+
"node_modules/call-bound": {
|
| 170 |
+
"version": "1.0.4",
|
| 171 |
+
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
|
| 172 |
+
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
|
| 173 |
+
"dependencies": {
|
| 174 |
+
"call-bind-apply-helpers": "^1.0.2",
|
| 175 |
+
"get-intrinsic": "^1.3.0"
|
| 176 |
+
},
|
| 177 |
+
"engines": {
|
| 178 |
+
"node": ">= 0.4"
|
| 179 |
+
},
|
| 180 |
+
"funding": {
|
| 181 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 182 |
+
}
|
| 183 |
+
},
|
| 184 |
+
"node_modules/content-disposition": {
|
| 185 |
+
"version": "1.0.1",
|
| 186 |
+
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
|
| 187 |
+
"integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
|
| 188 |
+
"engines": {
|
| 189 |
+
"node": ">=18"
|
| 190 |
+
},
|
| 191 |
+
"funding": {
|
| 192 |
+
"type": "opencollective",
|
| 193 |
+
"url": "https://opencollective.com/express"
|
| 194 |
+
}
|
| 195 |
+
},
|
| 196 |
+
"node_modules/content-type": {
|
| 197 |
+
"version": "1.0.5",
|
| 198 |
+
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
|
| 199 |
+
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
|
| 200 |
+
"license": "MIT",
|
| 201 |
+
"engines": {
|
| 202 |
+
"node": ">= 0.6"
|
| 203 |
+
}
|
| 204 |
+
},
|
| 205 |
+
"node_modules/cookie": {
|
| 206 |
+
"version": "0.7.2",
|
| 207 |
+
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
|
| 208 |
+
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
|
| 209 |
+
"engines": {
|
| 210 |
+
"node": ">= 0.6"
|
| 211 |
+
}
|
| 212 |
+
},
|
| 213 |
+
"node_modules/cookie-signature": {
|
| 214 |
+
"version": "1.2.2",
|
| 215 |
+
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
|
| 216 |
+
"integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
|
| 217 |
+
"engines": {
|
| 218 |
+
"node": ">=6.6.0"
|
| 219 |
+
}
|
| 220 |
+
},
|
| 221 |
+
"node_modules/cors": {
|
| 222 |
+
"version": "2.8.5",
|
| 223 |
+
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
| 224 |
+
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
| 225 |
+
"dependencies": {
|
| 226 |
+
"object-assign": "^4",
|
| 227 |
+
"vary": "^1"
|
| 228 |
+
},
|
| 229 |
+
"engines": {
|
| 230 |
+
"node": ">= 0.10"
|
| 231 |
+
}
|
| 232 |
+
},
|
| 233 |
+
"node_modules/cross-spawn": {
|
| 234 |
+
"version": "7.0.6",
|
| 235 |
+
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
| 236 |
+
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
| 237 |
+
"dependencies": {
|
| 238 |
+
"path-key": "^3.1.0",
|
| 239 |
+
"shebang-command": "^2.0.0",
|
| 240 |
+
"which": "^2.0.1"
|
| 241 |
+
},
|
| 242 |
+
"engines": {
|
| 243 |
+
"node": ">= 8"
|
| 244 |
+
}
|
| 245 |
+
},
|
| 246 |
+
"node_modules/debug": {
|
| 247 |
+
"version": "4.4.3",
|
| 248 |
+
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
| 249 |
+
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
| 250 |
+
"dependencies": {
|
| 251 |
+
"ms": "^2.1.3"
|
| 252 |
+
},
|
| 253 |
+
"engines": {
|
| 254 |
+
"node": ">=6.0"
|
| 255 |
+
},
|
| 256 |
+
"peerDependenciesMeta": {
|
| 257 |
+
"supports-color": {
|
| 258 |
+
"optional": true
|
| 259 |
+
}
|
| 260 |
+
}
|
| 261 |
+
},
|
| 262 |
+
"node_modules/depd": {
|
| 263 |
+
"version": "2.0.0",
|
| 264 |
+
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
| 265 |
+
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
| 266 |
+
"license": "MIT",
|
| 267 |
+
"engines": {
|
| 268 |
+
"node": ">= 0.8"
|
| 269 |
+
}
|
| 270 |
+
},
|
| 271 |
+
"node_modules/dunder-proto": {
|
| 272 |
+
"version": "1.0.1",
|
| 273 |
+
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
| 274 |
+
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
| 275 |
+
"dependencies": {
|
| 276 |
+
"call-bind-apply-helpers": "^1.0.1",
|
| 277 |
+
"es-errors": "^1.3.0",
|
| 278 |
+
"gopd": "^1.2.0"
|
| 279 |
+
},
|
| 280 |
+
"engines": {
|
| 281 |
+
"node": ">= 0.4"
|
| 282 |
+
}
|
| 283 |
+
},
|
| 284 |
+
"node_modules/ee-first": {
|
| 285 |
+
"version": "1.1.1",
|
| 286 |
+
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
| 287 |
+
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
|
| 288 |
+
},
|
| 289 |
+
"node_modules/encodeurl": {
|
| 290 |
+
"version": "2.0.0",
|
| 291 |
+
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
|
| 292 |
+
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
|
| 293 |
+
"engines": {
|
| 294 |
+
"node": ">= 0.8"
|
| 295 |
+
}
|
| 296 |
+
},
|
| 297 |
+
"node_modules/es-define-property": {
|
| 298 |
+
"version": "1.0.1",
|
| 299 |
+
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
| 300 |
+
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
| 301 |
+
"engines": {
|
| 302 |
+
"node": ">= 0.4"
|
| 303 |
+
}
|
| 304 |
+
},
|
| 305 |
+
"node_modules/es-errors": {
|
| 306 |
+
"version": "1.3.0",
|
| 307 |
+
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
| 308 |
+
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
| 309 |
+
"engines": {
|
| 310 |
+
"node": ">= 0.4"
|
| 311 |
+
}
|
| 312 |
+
},
|
| 313 |
+
"node_modules/es-object-atoms": {
|
| 314 |
+
"version": "1.1.1",
|
| 315 |
+
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
| 316 |
+
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
| 317 |
+
"dependencies": {
|
| 318 |
+
"es-errors": "^1.3.0"
|
| 319 |
+
},
|
| 320 |
+
"engines": {
|
| 321 |
+
"node": ">= 0.4"
|
| 322 |
+
}
|
| 323 |
+
},
|
| 324 |
+
"node_modules/escape-html": {
|
| 325 |
+
"version": "1.0.3",
|
| 326 |
+
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
| 327 |
+
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
| 328 |
+
},
|
| 329 |
+
"node_modules/etag": {
|
| 330 |
+
"version": "1.8.1",
|
| 331 |
+
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
| 332 |
+
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
| 333 |
+
"engines": {
|
| 334 |
+
"node": ">= 0.6"
|
| 335 |
+
}
|
| 336 |
+
},
|
| 337 |
+
"node_modules/eventsource": {
|
| 338 |
+
"version": "3.0.5",
|
| 339 |
+
"resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.5.tgz",
|
| 340 |
+
"integrity": "sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==",
|
| 341 |
+
"license": "MIT",
|
| 342 |
+
"dependencies": {
|
| 343 |
+
"eventsource-parser": "^3.0.0"
|
| 344 |
+
},
|
| 345 |
+
"engines": {
|
| 346 |
+
"node": ">=18.0.0"
|
| 347 |
+
}
|
| 348 |
+
},
|
| 349 |
+
"node_modules/eventsource-parser": {
|
| 350 |
+
"version": "3.0.0",
|
| 351 |
+
"resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz",
|
| 352 |
+
"integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==",
|
| 353 |
+
"license": "MIT",
|
| 354 |
+
"engines": {
|
| 355 |
+
"node": ">=18.0.0"
|
| 356 |
+
}
|
| 357 |
+
},
|
| 358 |
+
"node_modules/express": {
|
| 359 |
+
"version": "5.2.1",
|
| 360 |
+
"resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
|
| 361 |
+
"integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
|
| 362 |
+
"dependencies": {
|
| 363 |
+
"accepts": "^2.0.0",
|
| 364 |
+
"body-parser": "^2.2.1",
|
| 365 |
+
"content-disposition": "^1.0.0",
|
| 366 |
+
"content-type": "^1.0.5",
|
| 367 |
+
"cookie": "^0.7.1",
|
| 368 |
+
"cookie-signature": "^1.2.1",
|
| 369 |
+
"debug": "^4.4.0",
|
| 370 |
+
"depd": "^2.0.0",
|
| 371 |
+
"encodeurl": "^2.0.0",
|
| 372 |
+
"escape-html": "^1.0.3",
|
| 373 |
+
"etag": "^1.8.1",
|
| 374 |
+
"finalhandler": "^2.1.0",
|
| 375 |
+
"fresh": "^2.0.0",
|
| 376 |
+
"http-errors": "^2.0.0",
|
| 377 |
+
"merge-descriptors": "^2.0.0",
|
| 378 |
+
"mime-types": "^3.0.0",
|
| 379 |
+
"on-finished": "^2.4.1",
|
| 380 |
+
"once": "^1.4.0",
|
| 381 |
+
"parseurl": "^1.3.3",
|
| 382 |
+
"proxy-addr": "^2.0.7",
|
| 383 |
+
"qs": "^6.14.0",
|
| 384 |
+
"range-parser": "^1.2.1",
|
| 385 |
+
"router": "^2.2.0",
|
| 386 |
+
"send": "^1.1.0",
|
| 387 |
+
"serve-static": "^2.2.0",
|
| 388 |
+
"statuses": "^2.0.1",
|
| 389 |
+
"type-is": "^2.0.1",
|
| 390 |
+
"vary": "^1.1.2"
|
| 391 |
+
},
|
| 392 |
+
"engines": {
|
| 393 |
+
"node": ">= 18"
|
| 394 |
+
},
|
| 395 |
+
"funding": {
|
| 396 |
+
"type": "opencollective",
|
| 397 |
+
"url": "https://opencollective.com/express"
|
| 398 |
+
}
|
| 399 |
+
},
|
| 400 |
+
"node_modules/express-rate-limit": {
|
| 401 |
+
"version": "7.5.1",
|
| 402 |
+
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz",
|
| 403 |
+
"integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==",
|
| 404 |
+
"engines": {
|
| 405 |
+
"node": ">= 16"
|
| 406 |
+
},
|
| 407 |
+
"funding": {
|
| 408 |
+
"url": "https://github.com/sponsors/express-rate-limit"
|
| 409 |
+
},
|
| 410 |
+
"peerDependencies": {
|
| 411 |
+
"express": ">= 4.11"
|
| 412 |
+
}
|
| 413 |
+
},
|
| 414 |
+
"node_modules/fast-deep-equal": {
|
| 415 |
+
"version": "3.1.3",
|
| 416 |
+
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
| 417 |
+
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
| 418 |
+
},
|
| 419 |
+
"node_modules/fast-uri": {
|
| 420 |
+
"version": "3.1.0",
|
| 421 |
+
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
|
| 422 |
+
"integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
|
| 423 |
+
"funding": [
|
| 424 |
+
{
|
| 425 |
+
"type": "github",
|
| 426 |
+
"url": "https://github.com/sponsors/fastify"
|
| 427 |
+
},
|
| 428 |
+
{
|
| 429 |
+
"type": "opencollective",
|
| 430 |
+
"url": "https://opencollective.com/fastify"
|
| 431 |
+
}
|
| 432 |
+
]
|
| 433 |
+
},
|
| 434 |
+
"node_modules/finalhandler": {
|
| 435 |
+
"version": "2.1.1",
|
| 436 |
+
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
|
| 437 |
+
"integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
|
| 438 |
+
"dependencies": {
|
| 439 |
+
"debug": "^4.4.0",
|
| 440 |
+
"encodeurl": "^2.0.0",
|
| 441 |
+
"escape-html": "^1.0.3",
|
| 442 |
+
"on-finished": "^2.4.1",
|
| 443 |
+
"parseurl": "^1.3.3",
|
| 444 |
+
"statuses": "^2.0.1"
|
| 445 |
+
},
|
| 446 |
+
"engines": {
|
| 447 |
+
"node": ">= 18.0.0"
|
| 448 |
+
},
|
| 449 |
+
"funding": {
|
| 450 |
+
"type": "opencollective",
|
| 451 |
+
"url": "https://opencollective.com/express"
|
| 452 |
+
}
|
| 453 |
+
},
|
| 454 |
+
"node_modules/forwarded": {
|
| 455 |
+
"version": "0.2.0",
|
| 456 |
+
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
| 457 |
+
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
|
| 458 |
+
"engines": {
|
| 459 |
+
"node": ">= 0.6"
|
| 460 |
+
}
|
| 461 |
+
},
|
| 462 |
+
"node_modules/fresh": {
|
| 463 |
+
"version": "2.0.0",
|
| 464 |
+
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
|
| 465 |
+
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
|
| 466 |
+
"engines": {
|
| 467 |
+
"node": ">= 0.8"
|
| 468 |
+
}
|
| 469 |
+
},
|
| 470 |
+
"node_modules/function-bind": {
|
| 471 |
+
"version": "1.1.2",
|
| 472 |
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
| 473 |
+
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
| 474 |
+
"funding": {
|
| 475 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 476 |
+
}
|
| 477 |
+
},
|
| 478 |
+
"node_modules/get-intrinsic": {
|
| 479 |
+
"version": "1.3.0",
|
| 480 |
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
| 481 |
+
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
| 482 |
+
"dependencies": {
|
| 483 |
+
"call-bind-apply-helpers": "^1.0.2",
|
| 484 |
+
"es-define-property": "^1.0.1",
|
| 485 |
+
"es-errors": "^1.3.0",
|
| 486 |
+
"es-object-atoms": "^1.1.1",
|
| 487 |
+
"function-bind": "^1.1.2",
|
| 488 |
+
"get-proto": "^1.0.1",
|
| 489 |
+
"gopd": "^1.2.0",
|
| 490 |
+
"has-symbols": "^1.1.0",
|
| 491 |
+
"hasown": "^2.0.2",
|
| 492 |
+
"math-intrinsics": "^1.1.0"
|
| 493 |
+
},
|
| 494 |
+
"engines": {
|
| 495 |
+
"node": ">= 0.4"
|
| 496 |
+
},
|
| 497 |
+
"funding": {
|
| 498 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 499 |
+
}
|
| 500 |
+
},
|
| 501 |
+
"node_modules/get-proto": {
|
| 502 |
+
"version": "1.0.1",
|
| 503 |
+
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
| 504 |
+
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
| 505 |
+
"dependencies": {
|
| 506 |
+
"dunder-proto": "^1.0.1",
|
| 507 |
+
"es-object-atoms": "^1.0.0"
|
| 508 |
+
},
|
| 509 |
+
"engines": {
|
| 510 |
+
"node": ">= 0.4"
|
| 511 |
+
}
|
| 512 |
+
},
|
| 513 |
+
"node_modules/gopd": {
|
| 514 |
+
"version": "1.2.0",
|
| 515 |
+
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
| 516 |
+
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
| 517 |
+
"engines": {
|
| 518 |
+
"node": ">= 0.4"
|
| 519 |
+
},
|
| 520 |
+
"funding": {
|
| 521 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 522 |
+
}
|
| 523 |
+
},
|
| 524 |
+
"node_modules/has-symbols": {
|
| 525 |
+
"version": "1.1.0",
|
| 526 |
+
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
| 527 |
+
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
| 528 |
+
"engines": {
|
| 529 |
+
"node": ">= 0.4"
|
| 530 |
+
},
|
| 531 |
+
"funding": {
|
| 532 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 533 |
+
}
|
| 534 |
+
},
|
| 535 |
+
"node_modules/hasown": {
|
| 536 |
+
"version": "2.0.2",
|
| 537 |
+
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
| 538 |
+
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
| 539 |
+
"dependencies": {
|
| 540 |
+
"function-bind": "^1.1.2"
|
| 541 |
+
},
|
| 542 |
+
"engines": {
|
| 543 |
+
"node": ">= 0.4"
|
| 544 |
+
}
|
| 545 |
+
},
|
| 546 |
+
"node_modules/hono": {
|
| 547 |
+
"version": "4.11.4",
|
| 548 |
+
"resolved": "https://registry.npmjs.org/hono/-/hono-4.11.4.tgz",
|
| 549 |
+
"integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==",
|
| 550 |
+
"license": "MIT",
|
| 551 |
+
"peer": true,
|
| 552 |
+
"engines": {
|
| 553 |
+
"node": ">=16.9.0"
|
| 554 |
+
}
|
| 555 |
+
},
|
| 556 |
+
"node_modules/http-errors": {
|
| 557 |
+
"version": "2.0.1",
|
| 558 |
+
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
|
| 559 |
+
"integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
|
| 560 |
+
"dependencies": {
|
| 561 |
+
"depd": "~2.0.0",
|
| 562 |
+
"inherits": "~2.0.4",
|
| 563 |
+
"setprototypeof": "~1.2.0",
|
| 564 |
+
"statuses": "~2.0.2",
|
| 565 |
+
"toidentifier": "~1.0.1"
|
| 566 |
+
},
|
| 567 |
+
"engines": {
|
| 568 |
+
"node": ">= 0.8"
|
| 569 |
+
},
|
| 570 |
+
"funding": {
|
| 571 |
+
"type": "opencollective",
|
| 572 |
+
"url": "https://opencollective.com/express"
|
| 573 |
+
}
|
| 574 |
+
},
|
| 575 |
+
"node_modules/iconv-lite": {
|
| 576 |
+
"version": "0.7.1",
|
| 577 |
+
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz",
|
| 578 |
+
"integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==",
|
| 579 |
+
"dependencies": {
|
| 580 |
+
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
| 581 |
+
},
|
| 582 |
+
"engines": {
|
| 583 |
+
"node": ">=0.10.0"
|
| 584 |
+
},
|
| 585 |
+
"funding": {
|
| 586 |
+
"type": "opencollective",
|
| 587 |
+
"url": "https://opencollective.com/express"
|
| 588 |
+
}
|
| 589 |
+
},
|
| 590 |
+
"node_modules/inherits": {
|
| 591 |
+
"version": "2.0.4",
|
| 592 |
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
| 593 |
+
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
| 594 |
+
"license": "ISC"
|
| 595 |
+
},
|
| 596 |
+
"node_modules/ipaddr.js": {
|
| 597 |
+
"version": "1.9.1",
|
| 598 |
+
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
| 599 |
+
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
|
| 600 |
+
"engines": {
|
| 601 |
+
"node": ">= 0.10"
|
| 602 |
+
}
|
| 603 |
+
},
|
| 604 |
+
"node_modules/is-promise": {
|
| 605 |
+
"version": "4.0.0",
|
| 606 |
+
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
|
| 607 |
+
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
|
| 608 |
+
},
|
| 609 |
+
"node_modules/isexe": {
|
| 610 |
+
"version": "2.0.0",
|
| 611 |
+
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
| 612 |
+
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
|
| 613 |
+
},
|
| 614 |
+
"node_modules/jose": {
|
| 615 |
+
"version": "6.1.3",
|
| 616 |
+
"resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz",
|
| 617 |
+
"integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==",
|
| 618 |
+
"funding": {
|
| 619 |
+
"url": "https://github.com/sponsors/panva"
|
| 620 |
+
}
|
| 621 |
+
},
|
| 622 |
+
"node_modules/json-schema-traverse": {
|
| 623 |
+
"version": "1.0.0",
|
| 624 |
+
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
| 625 |
+
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
|
| 626 |
+
},
|
| 627 |
+
"node_modules/json-schema-typed": {
|
| 628 |
+
"version": "8.0.2",
|
| 629 |
+
"resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz",
|
| 630 |
+
"integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
|
| 631 |
+
"license": "BSD-2-Clause"
|
| 632 |
+
},
|
| 633 |
+
"node_modules/math-intrinsics": {
|
| 634 |
+
"version": "1.1.0",
|
| 635 |
+
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
| 636 |
+
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
| 637 |
+
"engines": {
|
| 638 |
+
"node": ">= 0.4"
|
| 639 |
+
}
|
| 640 |
+
},
|
| 641 |
+
"node_modules/media-typer": {
|
| 642 |
+
"version": "1.1.0",
|
| 643 |
+
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
|
| 644 |
+
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
|
| 645 |
+
"engines": {
|
| 646 |
+
"node": ">= 0.8"
|
| 647 |
+
}
|
| 648 |
+
},
|
| 649 |
+
"node_modules/merge-descriptors": {
|
| 650 |
+
"version": "2.0.0",
|
| 651 |
+
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
|
| 652 |
+
"integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
|
| 653 |
+
"engines": {
|
| 654 |
+
"node": ">=18"
|
| 655 |
+
},
|
| 656 |
+
"funding": {
|
| 657 |
+
"url": "https://github.com/sponsors/sindresorhus"
|
| 658 |
+
}
|
| 659 |
+
},
|
| 660 |
+
"node_modules/mime-db": {
|
| 661 |
+
"version": "1.54.0",
|
| 662 |
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
|
| 663 |
+
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
| 664 |
+
"engines": {
|
| 665 |
+
"node": ">= 0.6"
|
| 666 |
+
}
|
| 667 |
+
},
|
| 668 |
+
"node_modules/mime-types": {
|
| 669 |
+
"version": "3.0.2",
|
| 670 |
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
|
| 671 |
+
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
| 672 |
+
"dependencies": {
|
| 673 |
+
"mime-db": "^1.54.0"
|
| 674 |
+
},
|
| 675 |
+
"engines": {
|
| 676 |
+
"node": ">=18"
|
| 677 |
+
},
|
| 678 |
+
"funding": {
|
| 679 |
+
"type": "opencollective",
|
| 680 |
+
"url": "https://opencollective.com/express"
|
| 681 |
+
}
|
| 682 |
+
},
|
| 683 |
+
"node_modules/ms": {
|
| 684 |
+
"version": "2.1.3",
|
| 685 |
+
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
| 686 |
+
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
| 687 |
+
},
|
| 688 |
+
"node_modules/negotiator": {
|
| 689 |
+
"version": "1.0.0",
|
| 690 |
+
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
|
| 691 |
+
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
|
| 692 |
+
"engines": {
|
| 693 |
+
"node": ">= 0.6"
|
| 694 |
+
}
|
| 695 |
+
},
|
| 696 |
+
"node_modules/object-assign": {
|
| 697 |
+
"version": "4.1.1",
|
| 698 |
+
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
| 699 |
+
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
| 700 |
+
"engines": {
|
| 701 |
+
"node": ">=0.10.0"
|
| 702 |
+
}
|
| 703 |
+
},
|
| 704 |
+
"node_modules/object-inspect": {
|
| 705 |
+
"version": "1.13.4",
|
| 706 |
+
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
|
| 707 |
+
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
|
| 708 |
+
"engines": {
|
| 709 |
+
"node": ">= 0.4"
|
| 710 |
+
},
|
| 711 |
+
"funding": {
|
| 712 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 713 |
+
}
|
| 714 |
+
},
|
| 715 |
+
"node_modules/on-finished": {
|
| 716 |
+
"version": "2.4.1",
|
| 717 |
+
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
|
| 718 |
+
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
| 719 |
+
"dependencies": {
|
| 720 |
+
"ee-first": "1.1.1"
|
| 721 |
+
},
|
| 722 |
+
"engines": {
|
| 723 |
+
"node": ">= 0.8"
|
| 724 |
+
}
|
| 725 |
+
},
|
| 726 |
+
"node_modules/once": {
|
| 727 |
+
"version": "1.4.0",
|
| 728 |
+
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
| 729 |
+
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
| 730 |
+
"dependencies": {
|
| 731 |
+
"wrappy": "1"
|
| 732 |
+
}
|
| 733 |
+
},
|
| 734 |
+
"node_modules/parseurl": {
|
| 735 |
+
"version": "1.3.3",
|
| 736 |
+
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
| 737 |
+
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
|
| 738 |
+
"engines": {
|
| 739 |
+
"node": ">= 0.8"
|
| 740 |
+
}
|
| 741 |
+
},
|
| 742 |
+
"node_modules/path-key": {
|
| 743 |
+
"version": "3.1.1",
|
| 744 |
+
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
| 745 |
+
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
| 746 |
+
"engines": {
|
| 747 |
+
"node": ">=8"
|
| 748 |
+
}
|
| 749 |
+
},
|
| 750 |
+
"node_modules/path-to-regexp": {
|
| 751 |
+
"version": "8.3.0",
|
| 752 |
+
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
|
| 753 |
+
"integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
|
| 754 |
+
"funding": {
|
| 755 |
+
"type": "opencollective",
|
| 756 |
+
"url": "https://opencollective.com/express"
|
| 757 |
+
}
|
| 758 |
+
},
|
| 759 |
+
"node_modules/pkce-challenge": {
|
| 760 |
+
"version": "5.0.1",
|
| 761 |
+
"resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz",
|
| 762 |
+
"integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==",
|
| 763 |
+
"engines": {
|
| 764 |
+
"node": ">=16.20.0"
|
| 765 |
+
}
|
| 766 |
+
},
|
| 767 |
+
"node_modules/proxy-addr": {
|
| 768 |
+
"version": "2.0.7",
|
| 769 |
+
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
| 770 |
+
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
| 771 |
+
"dependencies": {
|
| 772 |
+
"forwarded": "0.2.0",
|
| 773 |
+
"ipaddr.js": "1.9.1"
|
| 774 |
+
},
|
| 775 |
+
"engines": {
|
| 776 |
+
"node": ">= 0.10"
|
| 777 |
+
}
|
| 778 |
+
},
|
| 779 |
+
"node_modules/qs": {
|
| 780 |
+
"version": "6.14.1",
|
| 781 |
+
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
|
| 782 |
+
"integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
|
| 783 |
+
"license": "BSD-3-Clause",
|
| 784 |
+
"dependencies": {
|
| 785 |
+
"side-channel": "^1.1.0"
|
| 786 |
+
},
|
| 787 |
+
"engines": {
|
| 788 |
+
"node": ">=0.6"
|
| 789 |
+
},
|
| 790 |
+
"funding": {
|
| 791 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 792 |
+
}
|
| 793 |
+
},
|
| 794 |
+
"node_modules/range-parser": {
|
| 795 |
+
"version": "1.2.1",
|
| 796 |
+
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
| 797 |
+
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
| 798 |
+
"engines": {
|
| 799 |
+
"node": ">= 0.6"
|
| 800 |
+
}
|
| 801 |
+
},
|
| 802 |
+
"node_modules/raw-body": {
|
| 803 |
+
"version": "3.0.2",
|
| 804 |
+
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
|
| 805 |
+
"integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
|
| 806 |
+
"dependencies": {
|
| 807 |
+
"bytes": "~3.1.2",
|
| 808 |
+
"http-errors": "~2.0.1",
|
| 809 |
+
"iconv-lite": "~0.7.0",
|
| 810 |
+
"unpipe": "~1.0.0"
|
| 811 |
+
},
|
| 812 |
+
"engines": {
|
| 813 |
+
"node": ">= 0.10"
|
| 814 |
+
}
|
| 815 |
+
},
|
| 816 |
+
"node_modules/require-from-string": {
|
| 817 |
+
"version": "2.0.2",
|
| 818 |
+
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
| 819 |
+
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
| 820 |
+
"engines": {
|
| 821 |
+
"node": ">=0.10.0"
|
| 822 |
+
}
|
| 823 |
+
},
|
| 824 |
+
"node_modules/router": {
|
| 825 |
+
"version": "2.2.0",
|
| 826 |
+
"resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
|
| 827 |
+
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
|
| 828 |
+
"dependencies": {
|
| 829 |
+
"debug": "^4.4.0",
|
| 830 |
+
"depd": "^2.0.0",
|
| 831 |
+
"is-promise": "^4.0.0",
|
| 832 |
+
"parseurl": "^1.3.3",
|
| 833 |
+
"path-to-regexp": "^8.0.0"
|
| 834 |
+
},
|
| 835 |
+
"engines": {
|
| 836 |
+
"node": ">= 18"
|
| 837 |
+
}
|
| 838 |
+
},
|
| 839 |
+
"node_modules/safer-buffer": {
|
| 840 |
+
"version": "2.1.2",
|
| 841 |
+
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
| 842 |
+
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
| 843 |
+
"license": "MIT"
|
| 844 |
+
},
|
| 845 |
+
"node_modules/send": {
|
| 846 |
+
"version": "1.2.0",
|
| 847 |
+
"resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
|
| 848 |
+
"integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
|
| 849 |
+
"dependencies": {
|
| 850 |
+
"debug": "^4.3.5",
|
| 851 |
+
"encodeurl": "^2.0.0",
|
| 852 |
+
"escape-html": "^1.0.3",
|
| 853 |
+
"etag": "^1.8.1",
|
| 854 |
+
"fresh": "^2.0.0",
|
| 855 |
+
"http-errors": "^2.0.0",
|
| 856 |
+
"mime-types": "^3.0.1",
|
| 857 |
+
"ms": "^2.1.3",
|
| 858 |
+
"on-finished": "^2.4.1",
|
| 859 |
+
"range-parser": "^1.2.1",
|
| 860 |
+
"statuses": "^2.0.1"
|
| 861 |
+
},
|
| 862 |
+
"engines": {
|
| 863 |
+
"node": ">= 18"
|
| 864 |
+
}
|
| 865 |
+
},
|
| 866 |
+
"node_modules/serve-static": {
|
| 867 |
+
"version": "2.2.0",
|
| 868 |
+
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
|
| 869 |
+
"integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
|
| 870 |
+
"dependencies": {
|
| 871 |
+
"encodeurl": "^2.0.0",
|
| 872 |
+
"escape-html": "^1.0.3",
|
| 873 |
+
"parseurl": "^1.3.3",
|
| 874 |
+
"send": "^1.2.0"
|
| 875 |
+
},
|
| 876 |
+
"engines": {
|
| 877 |
+
"node": ">= 18"
|
| 878 |
+
}
|
| 879 |
+
},
|
| 880 |
+
"node_modules/setprototypeof": {
|
| 881 |
+
"version": "1.2.0",
|
| 882 |
+
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
| 883 |
+
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
|
| 884 |
+
"license": "ISC"
|
| 885 |
+
},
|
| 886 |
+
"node_modules/shebang-command": {
|
| 887 |
+
"version": "2.0.0",
|
| 888 |
+
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
| 889 |
+
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
| 890 |
+
"dependencies": {
|
| 891 |
+
"shebang-regex": "^3.0.0"
|
| 892 |
+
},
|
| 893 |
+
"engines": {
|
| 894 |
+
"node": ">=8"
|
| 895 |
+
}
|
| 896 |
+
},
|
| 897 |
+
"node_modules/shebang-regex": {
|
| 898 |
+
"version": "3.0.0",
|
| 899 |
+
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
| 900 |
+
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
| 901 |
+
"engines": {
|
| 902 |
+
"node": ">=8"
|
| 903 |
+
}
|
| 904 |
+
},
|
| 905 |
+
"node_modules/side-channel": {
|
| 906 |
+
"version": "1.1.0",
|
| 907 |
+
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
|
| 908 |
+
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
|
| 909 |
+
"dependencies": {
|
| 910 |
+
"es-errors": "^1.3.0",
|
| 911 |
+
"object-inspect": "^1.13.3",
|
| 912 |
+
"side-channel-list": "^1.0.0",
|
| 913 |
+
"side-channel-map": "^1.0.1",
|
| 914 |
+
"side-channel-weakmap": "^1.0.2"
|
| 915 |
+
},
|
| 916 |
+
"engines": {
|
| 917 |
+
"node": ">= 0.4"
|
| 918 |
+
},
|
| 919 |
+
"funding": {
|
| 920 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 921 |
+
}
|
| 922 |
+
},
|
| 923 |
+
"node_modules/side-channel-list": {
|
| 924 |
+
"version": "1.0.0",
|
| 925 |
+
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
|
| 926 |
+
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
|
| 927 |
+
"dependencies": {
|
| 928 |
+
"es-errors": "^1.3.0",
|
| 929 |
+
"object-inspect": "^1.13.3"
|
| 930 |
+
},
|
| 931 |
+
"engines": {
|
| 932 |
+
"node": ">= 0.4"
|
| 933 |
+
},
|
| 934 |
+
"funding": {
|
| 935 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 936 |
+
}
|
| 937 |
+
},
|
| 938 |
+
"node_modules/side-channel-map": {
|
| 939 |
+
"version": "1.0.1",
|
| 940 |
+
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
|
| 941 |
+
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
|
| 942 |
+
"dependencies": {
|
| 943 |
+
"call-bound": "^1.0.2",
|
| 944 |
+
"es-errors": "^1.3.0",
|
| 945 |
+
"get-intrinsic": "^1.2.5",
|
| 946 |
+
"object-inspect": "^1.13.3"
|
| 947 |
+
},
|
| 948 |
+
"engines": {
|
| 949 |
+
"node": ">= 0.4"
|
| 950 |
+
},
|
| 951 |
+
"funding": {
|
| 952 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 953 |
+
}
|
| 954 |
+
},
|
| 955 |
+
"node_modules/side-channel-weakmap": {
|
| 956 |
+
"version": "1.0.2",
|
| 957 |
+
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
|
| 958 |
+
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
|
| 959 |
+
"dependencies": {
|
| 960 |
+
"call-bound": "^1.0.2",
|
| 961 |
+
"es-errors": "^1.3.0",
|
| 962 |
+
"get-intrinsic": "^1.2.5",
|
| 963 |
+
"object-inspect": "^1.13.3",
|
| 964 |
+
"side-channel-map": "^1.0.1"
|
| 965 |
+
},
|
| 966 |
+
"engines": {
|
| 967 |
+
"node": ">= 0.4"
|
| 968 |
+
},
|
| 969 |
+
"funding": {
|
| 970 |
+
"url": "https://github.com/sponsors/ljharb"
|
| 971 |
+
}
|
| 972 |
+
},
|
| 973 |
+
"node_modules/statuses": {
|
| 974 |
+
"version": "2.0.2",
|
| 975 |
+
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
|
| 976 |
+
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
|
| 977 |
+
"engines": {
|
| 978 |
+
"node": ">= 0.8"
|
| 979 |
+
}
|
| 980 |
+
},
|
| 981 |
+
"node_modules/toidentifier": {
|
| 982 |
+
"version": "1.0.1",
|
| 983 |
+
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
|
| 984 |
+
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
|
| 985 |
+
"license": "MIT",
|
| 986 |
+
"engines": {
|
| 987 |
+
"node": ">=0.6"
|
| 988 |
+
}
|
| 989 |
+
},
|
| 990 |
+
"node_modules/type-is": {
|
| 991 |
+
"version": "2.0.1",
|
| 992 |
+
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
|
| 993 |
+
"integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
|
| 994 |
+
"dependencies": {
|
| 995 |
+
"content-type": "^1.0.5",
|
| 996 |
+
"media-typer": "^1.1.0",
|
| 997 |
+
"mime-types": "^3.0.0"
|
| 998 |
+
},
|
| 999 |
+
"engines": {
|
| 1000 |
+
"node": ">= 0.6"
|
| 1001 |
+
}
|
| 1002 |
+
},
|
| 1003 |
+
"node_modules/typescript": {
|
| 1004 |
+
"version": "5.9.3",
|
| 1005 |
+
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
|
| 1006 |
+
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
| 1007 |
+
"dev": true,
|
| 1008 |
+
"bin": {
|
| 1009 |
+
"tsc": "bin/tsc",
|
| 1010 |
+
"tsserver": "bin/tsserver"
|
| 1011 |
+
},
|
| 1012 |
+
"engines": {
|
| 1013 |
+
"node": ">=14.17"
|
| 1014 |
+
}
|
| 1015 |
+
},
|
| 1016 |
+
"node_modules/undici-types": {
|
| 1017 |
+
"version": "6.21.0",
|
| 1018 |
+
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
| 1019 |
+
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
| 1020 |
+
"dev": true
|
| 1021 |
+
},
|
| 1022 |
+
"node_modules/unpipe": {
|
| 1023 |
+
"version": "1.0.0",
|
| 1024 |
+
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
| 1025 |
+
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
|
| 1026 |
+
"license": "MIT",
|
| 1027 |
+
"engines": {
|
| 1028 |
+
"node": ">= 0.8"
|
| 1029 |
+
}
|
| 1030 |
+
},
|
| 1031 |
+
"node_modules/vary": {
|
| 1032 |
+
"version": "1.1.2",
|
| 1033 |
+
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
| 1034 |
+
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
|
| 1035 |
+
"engines": {
|
| 1036 |
+
"node": ">= 0.8"
|
| 1037 |
+
}
|
| 1038 |
+
},
|
| 1039 |
+
"node_modules/which": {
|
| 1040 |
+
"version": "2.0.2",
|
| 1041 |
+
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
| 1042 |
+
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
| 1043 |
+
"dependencies": {
|
| 1044 |
+
"isexe": "^2.0.0"
|
| 1045 |
+
},
|
| 1046 |
+
"bin": {
|
| 1047 |
+
"node-which": "bin/node-which"
|
| 1048 |
+
},
|
| 1049 |
+
"engines": {
|
| 1050 |
+
"node": ">= 8"
|
| 1051 |
+
}
|
| 1052 |
+
},
|
| 1053 |
+
"node_modules/wrappy": {
|
| 1054 |
+
"version": "1.0.2",
|
| 1055 |
+
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
| 1056 |
+
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
| 1057 |
+
},
|
| 1058 |
+
"node_modules/zod": {
|
| 1059 |
+
"version": "4.1.13",
|
| 1060 |
+
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz",
|
| 1061 |
+
"integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==",
|
| 1062 |
+
"funding": {
|
| 1063 |
+
"url": "https://github.com/sponsors/colinhacks"
|
| 1064 |
+
}
|
| 1065 |
+
},
|
| 1066 |
+
"node_modules/zod-to-json-schema": {
|
| 1067 |
+
"version": "3.25.0",
|
| 1068 |
+
"resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz",
|
| 1069 |
+
"integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==",
|
| 1070 |
+
"peerDependencies": {
|
| 1071 |
+
"zod": "^3.25 || ^4"
|
| 1072 |
+
}
|
| 1073 |
+
}
|
| 1074 |
+
}
|
| 1075 |
+
}
|
weather-server-typescript/package.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "mcp-quickstart-ts",
|
| 3 |
+
"version": "1.0.0",
|
| 4 |
+
"main": "index.js",
|
| 5 |
+
"type": "module",
|
| 6 |
+
"bin": {
|
| 7 |
+
"weather": "./build/index.js"
|
| 8 |
+
},
|
| 9 |
+
"scripts": {
|
| 10 |
+
"build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\""
|
| 11 |
+
},
|
| 12 |
+
"files": [
|
| 13 |
+
"build"
|
| 14 |
+
],
|
| 15 |
+
"keywords": [],
|
| 16 |
+
"author": "",
|
| 17 |
+
"license": "ISC",
|
| 18 |
+
"description": "",
|
| 19 |
+
"devDependencies": {
|
| 20 |
+
"@types/node": "^22.19.2",
|
| 21 |
+
"typescript": "^5.9.3"
|
| 22 |
+
},
|
| 23 |
+
"dependencies": {
|
| 24 |
+
"@modelcontextprotocol/sdk": "^1.24.3"
|
| 25 |
+
}
|
| 26 |
+
}
|
weather-server-typescript/src/index.ts
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
| 2 |
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
| 3 |
+
import { z } from "zod";
|
| 4 |
+
|
| 5 |
+
const NWS_API_BASE = "https://api.weather.gov";
|
| 6 |
+
const USER_AGENT = "weather-app/1.0";
|
| 7 |
+
|
| 8 |
+
// Helper function for making NWS API requests
|
| 9 |
+
async function makeNWSRequest<T>(url: string): Promise<T | null> {
|
| 10 |
+
const headers = {
|
| 11 |
+
"User-Agent": USER_AGENT,
|
| 12 |
+
Accept: "application/geo+json",
|
| 13 |
+
};
|
| 14 |
+
|
| 15 |
+
try {
|
| 16 |
+
const response = await fetch(url, { headers });
|
| 17 |
+
if (!response.ok) {
|
| 18 |
+
throw new Error(`HTTP error! status: ${response.status}`);
|
| 19 |
+
}
|
| 20 |
+
return (await response.json()) as T;
|
| 21 |
+
} catch (error) {
|
| 22 |
+
console.error("Error making NWS request:", error);
|
| 23 |
+
return null;
|
| 24 |
+
}
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
interface AlertFeature {
|
| 28 |
+
properties: {
|
| 29 |
+
event?: string;
|
| 30 |
+
areaDesc?: string;
|
| 31 |
+
severity?: string;
|
| 32 |
+
status?: string;
|
| 33 |
+
headline?: string;
|
| 34 |
+
};
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
// Format alert data
|
| 38 |
+
function formatAlert(feature: AlertFeature): string {
|
| 39 |
+
const props = feature.properties;
|
| 40 |
+
return [
|
| 41 |
+
`Event: ${props.event || "Unknown"}`,
|
| 42 |
+
`Area: ${props.areaDesc || "Unknown"}`,
|
| 43 |
+
`Severity: ${props.severity || "Unknown"}`,
|
| 44 |
+
`Status: ${props.status || "Unknown"}`,
|
| 45 |
+
`Headline: ${props.headline || "No headline"}`,
|
| 46 |
+
"---",
|
| 47 |
+
].join("\n");
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
interface ForecastPeriod {
|
| 51 |
+
name?: string;
|
| 52 |
+
temperature?: number;
|
| 53 |
+
temperatureUnit?: string;
|
| 54 |
+
windSpeed?: string;
|
| 55 |
+
windDirection?: string;
|
| 56 |
+
shortForecast?: string;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
interface AlertsResponse {
|
| 60 |
+
features: AlertFeature[];
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
interface PointsResponse {
|
| 64 |
+
properties: {
|
| 65 |
+
forecast?: string;
|
| 66 |
+
};
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
interface ForecastResponse {
|
| 70 |
+
properties: {
|
| 71 |
+
periods: ForecastPeriod[];
|
| 72 |
+
};
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
// Create server instance
|
| 76 |
+
const server = new McpServer({
|
| 77 |
+
name: "weather",
|
| 78 |
+
version: "1.0.0",
|
| 79 |
+
});
|
| 80 |
+
|
| 81 |
+
// Register weather tools
|
| 82 |
+
server.registerTool(
|
| 83 |
+
"get-alerts",
|
| 84 |
+
{
|
| 85 |
+
title: "Get Weather Alerts",
|
| 86 |
+
description: "Get weather alerts for a state",
|
| 87 |
+
inputSchema: {
|
| 88 |
+
state: z.string().length(2).describe("Two-letter state code (e.g. CA, NY)"),
|
| 89 |
+
},
|
| 90 |
+
},
|
| 91 |
+
async ({ state }) => {
|
| 92 |
+
const stateCode = state.toUpperCase();
|
| 93 |
+
const alertsUrl = `${NWS_API_BASE}/alerts?area=${stateCode}`;
|
| 94 |
+
const alertsData = await makeNWSRequest<AlertsResponse>(alertsUrl);
|
| 95 |
+
|
| 96 |
+
if (!alertsData) {
|
| 97 |
+
return {
|
| 98 |
+
content: [
|
| 99 |
+
{
|
| 100 |
+
type: "text",
|
| 101 |
+
text: "Failed to retrieve alerts data",
|
| 102 |
+
},
|
| 103 |
+
],
|
| 104 |
+
};
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
const features = alertsData.features || [];
|
| 108 |
+
if (features.length === 0) {
|
| 109 |
+
return {
|
| 110 |
+
content: [
|
| 111 |
+
{
|
| 112 |
+
type: "text",
|
| 113 |
+
text: `No active alerts for ${stateCode}`,
|
| 114 |
+
},
|
| 115 |
+
],
|
| 116 |
+
};
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
const formattedAlerts = features.map(formatAlert);
|
| 120 |
+
const alertsText = `Active alerts for ${stateCode}:\n\n${formattedAlerts.join("\n")}`;
|
| 121 |
+
|
| 122 |
+
return {
|
| 123 |
+
content: [
|
| 124 |
+
{
|
| 125 |
+
type: "text",
|
| 126 |
+
text: alertsText,
|
| 127 |
+
},
|
| 128 |
+
],
|
| 129 |
+
};
|
| 130 |
+
},
|
| 131 |
+
);
|
| 132 |
+
|
| 133 |
+
server.registerTool(
|
| 134 |
+
"get-forecast",
|
| 135 |
+
{
|
| 136 |
+
title: "Get Weather Forecast",
|
| 137 |
+
description: "Get weather forecast for a location",
|
| 138 |
+
inputSchema: {
|
| 139 |
+
latitude: z.number().min(-90).max(90).describe("Latitude of the location"),
|
| 140 |
+
longitude: z
|
| 141 |
+
.number()
|
| 142 |
+
.min(-180)
|
| 143 |
+
.max(180)
|
| 144 |
+
.describe("Longitude of the location"),
|
| 145 |
+
},
|
| 146 |
+
},
|
| 147 |
+
async ({ latitude, longitude }) => {
|
| 148 |
+
// Get grid point data
|
| 149 |
+
const pointsUrl = `${NWS_API_BASE}/points/${latitude.toFixed(4)},${longitude.toFixed(4)}`;
|
| 150 |
+
const pointsData = await makeNWSRequest<PointsResponse>(pointsUrl);
|
| 151 |
+
|
| 152 |
+
if (!pointsData) {
|
| 153 |
+
return {
|
| 154 |
+
content: [
|
| 155 |
+
{
|
| 156 |
+
type: "text",
|
| 157 |
+
text: `Failed to retrieve grid point data for coordinates: ${latitude}, ${longitude}. This location may not be supported by the NWS API (only US locations are supported).`,
|
| 158 |
+
},
|
| 159 |
+
],
|
| 160 |
+
};
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
const forecastUrl = pointsData.properties?.forecast;
|
| 164 |
+
if (!forecastUrl) {
|
| 165 |
+
return {
|
| 166 |
+
content: [
|
| 167 |
+
{
|
| 168 |
+
type: "text",
|
| 169 |
+
text: "Failed to get forecast URL from grid point data",
|
| 170 |
+
},
|
| 171 |
+
],
|
| 172 |
+
};
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
// Get forecast data
|
| 176 |
+
const forecastData = await makeNWSRequest<ForecastResponse>(forecastUrl);
|
| 177 |
+
if (!forecastData) {
|
| 178 |
+
return {
|
| 179 |
+
content: [
|
| 180 |
+
{
|
| 181 |
+
type: "text",
|
| 182 |
+
text: "Failed to retrieve forecast data",
|
| 183 |
+
},
|
| 184 |
+
],
|
| 185 |
+
};
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
const periods = forecastData.properties?.periods || [];
|
| 189 |
+
if (periods.length === 0) {
|
| 190 |
+
return {
|
| 191 |
+
content: [
|
| 192 |
+
{
|
| 193 |
+
type: "text",
|
| 194 |
+
text: "No forecast periods available",
|
| 195 |
+
},
|
| 196 |
+
],
|
| 197 |
+
};
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
// Format forecast periods
|
| 201 |
+
const formattedForecast = periods.map((period: ForecastPeriod) =>
|
| 202 |
+
[
|
| 203 |
+
`${period.name || "Unknown"}:`,
|
| 204 |
+
`Temperature: ${period.temperature || "Unknown"}°${period.temperatureUnit || "F"}`,
|
| 205 |
+
`Wind: ${period.windSpeed || "Unknown"} ${period.windDirection || ""}`,
|
| 206 |
+
`${period.shortForecast || "No forecast available"}`,
|
| 207 |
+
"---",
|
| 208 |
+
].join("\n"),
|
| 209 |
+
);
|
| 210 |
+
|
| 211 |
+
const forecastText = `Forecast for ${latitude}, ${longitude}:\n\n${formattedForecast.join("\n")}`;
|
| 212 |
+
|
| 213 |
+
return {
|
| 214 |
+
content: [
|
| 215 |
+
{
|
| 216 |
+
type: "text",
|
| 217 |
+
text: forecastText,
|
| 218 |
+
},
|
| 219 |
+
],
|
| 220 |
+
};
|
| 221 |
+
},
|
| 222 |
+
);
|
| 223 |
+
|
| 224 |
+
// Start the server
|
| 225 |
+
async function main() {
|
| 226 |
+
const transport = new StdioServerTransport();
|
| 227 |
+
await server.connect(transport);
|
| 228 |
+
console.error("Weather MCP Server running on stdio");
|
| 229 |
+
}
|
| 230 |
+
|
| 231 |
+
main().catch((error) => {
|
| 232 |
+
console.error("Fatal error in main():", error);
|
| 233 |
+
process.exit(1);
|
| 234 |
+
});
|
weather-server-typescript/tsconfig.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"compilerOptions": {
|
| 3 |
+
"target": "ES2022",
|
| 4 |
+
"module": "Node16",
|
| 5 |
+
"moduleResolution": "Node16",
|
| 6 |
+
"outDir": "./build",
|
| 7 |
+
"rootDir": "./src",
|
| 8 |
+
"strict": true,
|
| 9 |
+
"esModuleInterop": true,
|
| 10 |
+
"skipLibCheck": true,
|
| 11 |
+
"forceConsistentCasingInFileNames": true
|
| 12 |
+
},
|
| 13 |
+
"include": ["src/**/*"],
|
| 14 |
+
"exclude": ["node_modules"]
|
| 15 |
+
}
|