├── .env.example ├── .gitignore ├── Dockerfile ├── README.md ├── eslint.config.ts ├── package.json ├── pnpm-lock.yaml ├── src └── index.ts └── tsconfig.json /.env.example: -------------------------------------------------------------------------------- 1 | TENANT_ID=your-tenant-id 2 | CLIENT_ID=your-client-id 3 | CLIENT_SECRET=your-client-secret 4 | SITE_ID=your-site-id 5 | DRIVE_ID=your-drive-id -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # ts gitignore 2 | 3 | # Ignore build output 4 | dist/ 5 | build/ 6 | node_modules/ 7 | 8 | # Ignore local config 9 | config.local.ts 10 | 11 | # Ignore IDE files 12 | .vscode/ 13 | .idea/ 14 | 15 | # Ignore test output 16 | test-output/ 17 | 18 | # Ignore logs 19 | logs/ 20 | 21 | # Ignore coverage 22 | coverage/ 23 | 24 | # Ignore package-lock.json 25 | package-lock.json 26 | 27 | # Ignore .env 28 | .env 29 | 30 | # folders 31 | /output -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Use the official Node.js image as the base image 2 | FROM node:22-slim AS builder 3 | 4 | # Install pnpm globally 5 | RUN corepack enable && corepack prepare pnpm@latest --activate 6 | 7 | # Set the working directory inside the container 8 | WORKDIR /app 9 | 10 | # Copy the source code and configuration files 11 | COPY src /app/src 12 | COPY tsconfig.json /app/tsconfig.json 13 | COPY package.json /app/package.json 14 | COPY pnpm-lock.yaml /app/pnpm-lock.yaml 15 | 16 | # Install dependencies using pnpm 17 | RUN pnpm install 18 | 19 | # Compile TypeScript to JavaScript 20 | RUN pnpm run build 21 | 22 | # Use a lightweight Node.js runtime image for the release stage 23 | FROM node:22-slim AS release 24 | 25 | # Install pnpm globally 26 | RUN corepack enable && corepack prepare pnpm@latest --activate 27 | 28 | # Set the working directory inside the container 29 | WORKDIR /app 30 | 31 | # Copy the compiled code and dependencies from the builder stage 32 | COPY --from=builder /app /app 33 | 34 | # Set the environment to production 35 | ENV NODE_ENV=production 36 | 37 | # Run the application 38 | ENTRYPOINT ["pnpm", "start"] 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sharepoint - WIP, just for R&D ATM 2 | 3 | A Model Context Protocol server that provides access to Organisational Sharepoint. 4 | 5 | ## Implementation 6 | 7 | | Component | Operation | Resource | Dynamic Resource | Tool | 8 | |--------------------|---------------------|----------|------------------|------| 9 | | Users | | ❌ | ❌ | ❌ | 10 | | | Read User | ❌ | ❌ | ❌ | 11 | | | Find User | ❌ | ❌ | ❌ | 12 | | Sites | | ❌ | ❌ | ❌ | 13 | | | List Sites | ✅ | ❌ | ❌ | 14 | | | Get Site Details | ❌ | ❌ | ❌ | 15 | | | Create Subsite | ❌ | ❌ | ❌ | 16 | | | Delete Site | ❌ | ❌ | ❌ | 17 | | Drives | | ❌ | ❌ | ❌ | 18 | | | List Folders | ❌ | ❌ | ❌ | 19 | | | Search Folders | ❌ | ❌ | ✅ | 20 | | | Create Folder | ❌ | ❌ | ❌ | 21 | | | Delete Folder | ❌ | ❌ | ❌ | 22 | | | Upload File | ❌ | ❌ | ❌ | 23 | | | List Items | ❌ | ✅ | ❌ | 24 | | | Download File | ❌ | ❌ | ✅ | 25 | | | Read File | ✅ | ❌ | ❌ | 26 | | | Move File | ❌ | ❌ | ❌ | 27 | | | Copy File | ❌ | ❌ | ❌ | 28 | | Lists | | ❌ | ❌ | ❌ | 29 | | | Create List | ❌ | ❌ | ❌ | 30 | | | Read List | ❌ | ❌ | ❌ | 31 | | | Add to List | ❌ | ❌ | ❌ | 32 | | | Update List | ❌ | ❌ | ❌ | 33 | | | Delete List | ❌ | ❌ | ❌ | 34 | | Calendar | | ❌ | ❌ | ❌ | 35 | | | Create Event | ❌ | ❌ | ❌ | 36 | | | Read Event | ❌ | ❌ | ❌ | 37 | | | Update Event | ❌ | ❌ | ❌ | 38 | | | Delete Event | ❌ | ❌ | ❌ | 39 | 40 | ### Prompts 41 | 42 | - document-summary 43 | - find-relevant-documents 44 | - explore-folder 45 | 46 | ## Enviremental Variables 47 | 48 | - Copy .env.example as .env 49 | - Fill the requires fields 50 | 51 | ## Inspector 52 | 53 | From root 54 | 55 | ```Bash 56 | npx @modelcontextprotocol/inspector -e TENANT_ID=your_tenant_id -e CLIENT_ID=your_client_id -e CLIENT_SECRET=your_client_secret -e SITE_ID=your_site_id -e DRIVE_ID=your_drive_id -- node dist/index.js 57 | ``` 58 | 59 | ## Usage with Claude Desktop 60 | 61 | To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your `claude_desktop_config.json`: 62 | 63 | ### Docker 64 | 65 | * Docker build and tag `docker build -t mcp/sharepoint .` 66 | 67 | ```json 68 | { 69 | "mcpServers": { 70 | "sharepoint": { 71 | "command": "docker", 72 | "args": [ 73 | "run", 74 | "-i", 75 | "--rm", 76 | "--init", 77 | "-e", "DOCKER_CONTAINER=true", 78 | "-e", "TENANT_ID=your-tenant-id", 79 | "-e", "CLIENT_ID=your-client-id", 80 | "-e", "CLIENT_SECRET=your-client-secret", 81 | "-e", "SITE_ID=your-site-id", 82 | "-e", "DRIVE_ID=your-drive-id", 83 | "mcp/sharepoint" 84 | ] 85 | } 86 | } 87 | } 88 | ``` 89 | ### MCP configuration file 90 | 91 | ```bash 92 | pnpm run build 93 | ``` 94 | 95 | ```json 96 | { 97 | "mcpServers": { 98 | "sharepoint": { 99 | "command": "node", 100 | "args": ["run", "start"], 101 | "env": { 102 | "TENANT_ID": "your-tenant-id", 103 | "CLIENT_ID": "your-client-id", 104 | "CLIENT_SECRET": "your-client-secret", 105 | "SITE_ID": "your-site-id", 106 | "DRIVE_ID": "your-drive-id", 107 | } 108 | } 109 | } 110 | } 111 | ``` 112 | 113 | ## License 114 | 115 | This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository. 116 | -------------------------------------------------------------------------------- /eslint.config.ts: -------------------------------------------------------------------------------- 1 | import eslint from '@eslint/js'; 2 | import tseslint from 'typescript-eslint'; 3 | 4 | export default tseslint.config( 5 | eslint.configs.recommended, 6 | tseslint.configs.recommended, 7 | tseslint.configs.strictTypeChecked, 8 | tseslint.configs.stylistic, 9 | { 10 | files: ["src/**/*.ts"], 11 | ignores: ['node_modules', 'dist', 'build'], 12 | } 13 | ); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sharepoint", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "type": "module", 7 | "bin": { 8 | "sharepoint": "./dist/index.js" 9 | }, 10 | "scripts": { 11 | "dev": "tsx watch src/index.ts", 12 | "build": "tsc", 13 | "start": "node dist/index.js" 14 | }, 15 | "keywords": [], 16 | "author": "", 17 | "license": "ISC", 18 | "dependencies": { 19 | "@azure/identity": "^4.8.0", 20 | "@microsoft/microsoft-graph-client": "^3.0.7", 21 | "@modelcontextprotocol/sdk": "^1.9.0", 22 | "dotenv": "^16.4.7", 23 | "microsoft-graph": "^2.8.0", 24 | "zod": "^3.24.2" 25 | }, 26 | "devDependencies": { 27 | "@eslint/js": "^9.23.0", 28 | "@types/node": "^22.13.10", 29 | "eslint": "^9.23.0", 30 | "globals": "^16.0.0", 31 | "jiti": "^2.4.2", 32 | "typescript": "^5.8.2", 33 | "typescript-eslint": "^8.28.0", 34 | "tsx": "^4.19.3" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@azure/identity': 12 | specifier: ^4.8.0 13 | version: 4.8.0 14 | '@microsoft/microsoft-graph-client': 15 | specifier: ^3.0.7 16 | version: 3.0.7(@azure/identity@4.8.0) 17 | '@modelcontextprotocol/sdk': 18 | specifier: ^1.9.0 19 | version: 1.9.0 20 | dotenv: 21 | specifier: ^16.4.7 22 | version: 16.5.0 23 | microsoft-graph: 24 | specifier: ^2.8.0 25 | version: 2.8.0 26 | zod: 27 | specifier: ^3.24.2 28 | version: 3.24.2 29 | devDependencies: 30 | '@eslint/js': 31 | specifier: ^9.23.0 32 | version: 9.24.0 33 | '@types/node': 34 | specifier: ^22.13.10 35 | version: 22.14.1 36 | eslint: 37 | specifier: ^9.23.0 38 | version: 9.24.0(jiti@2.4.2) 39 | globals: 40 | specifier: ^16.0.0 41 | version: 16.0.0 42 | jiti: 43 | specifier: ^2.4.2 44 | version: 2.4.2 45 | tsx: 46 | specifier: ^4.19.3 47 | version: 4.19.3 48 | typescript: 49 | specifier: ^5.8.2 50 | version: 5.8.3 51 | typescript-eslint: 52 | specifier: ^8.28.0 53 | version: 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) 54 | 55 | packages: 56 | 57 | '@azure/abort-controller@2.1.2': 58 | resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} 59 | engines: {node: '>=18.0.0'} 60 | 61 | '@azure/core-auth@1.9.0': 62 | resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} 63 | engines: {node: '>=18.0.0'} 64 | 65 | '@azure/core-client@1.9.3': 66 | resolution: {integrity: sha512-/wGw8fJ4mdpJ1Cum7s1S+VQyXt1ihwKLzfabS1O/RDADnmzVc01dHn44qD0BvGH6KlZNzOMW95tEpKqhkCChPA==} 67 | engines: {node: '>=18.0.0'} 68 | 69 | '@azure/core-rest-pipeline@1.19.1': 70 | resolution: {integrity: sha512-zHeoI3NCs53lLBbWNzQycjnYKsA1CVKlnzSNuSFcUDwBp8HHVObePxrM7HaX+Ha5Ks639H7chNC9HOaIhNS03w==} 71 | engines: {node: '>=18.0.0'} 72 | 73 | '@azure/core-tracing@1.2.0': 74 | resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} 75 | engines: {node: '>=18.0.0'} 76 | 77 | '@azure/core-util@1.11.0': 78 | resolution: {integrity: sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==} 79 | engines: {node: '>=18.0.0'} 80 | 81 | '@azure/identity@4.8.0': 82 | resolution: {integrity: sha512-l9ALUGHtFB/JfsqmA+9iYAp2a+cCwdNO/cyIr2y7nJLJsz1aae6qVP8XxT7Kbudg0IQRSIMXj0+iivFdbD1xPA==} 83 | engines: {node: '>=18.0.0'} 84 | 85 | '@azure/logger@1.1.4': 86 | resolution: {integrity: sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==} 87 | engines: {node: '>=18.0.0'} 88 | 89 | '@azure/msal-browser@4.11.0': 90 | resolution: {integrity: sha512-0p5Ut3wORMP+975AKvaSPIO4UytgsfAvJ7RxaTx+nkP+Hpkmm93AuiMkBWKI2x9tApU/SLgIyPz/ZwLYUIWb5Q==} 91 | engines: {node: '>=0.8.0'} 92 | 93 | '@azure/msal-common@15.5.1': 94 | resolution: {integrity: sha512-oxK0khbc4Bg1bKQnqDr7ikULhVL2OHgSrIq0Vlh4b6+hm4r0lr6zPMQE8ZvmacJuh+ZZGKBM5iIObhF1q1QimQ==} 95 | engines: {node: '>=0.8.0'} 96 | 97 | '@azure/msal-node@3.5.1': 98 | resolution: {integrity: sha512-dkgMYM5B6tI88r/oqf5bYd93WkenQpaWwiszJDk7avVjso8cmuKRTW97dA1RMi6RhihZFLtY1VtWxU9+sW2T5g==} 99 | engines: {node: '>=16'} 100 | 101 | '@babel/runtime@7.27.0': 102 | resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} 103 | engines: {node: '>=6.9.0'} 104 | 105 | '@esbuild/aix-ppc64@0.25.2': 106 | resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} 107 | engines: {node: '>=18'} 108 | cpu: [ppc64] 109 | os: [aix] 110 | 111 | '@esbuild/android-arm64@0.25.2': 112 | resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} 113 | engines: {node: '>=18'} 114 | cpu: [arm64] 115 | os: [android] 116 | 117 | '@esbuild/android-arm@0.25.2': 118 | resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} 119 | engines: {node: '>=18'} 120 | cpu: [arm] 121 | os: [android] 122 | 123 | '@esbuild/android-x64@0.25.2': 124 | resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} 125 | engines: {node: '>=18'} 126 | cpu: [x64] 127 | os: [android] 128 | 129 | '@esbuild/darwin-arm64@0.25.2': 130 | resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} 131 | engines: {node: '>=18'} 132 | cpu: [arm64] 133 | os: [darwin] 134 | 135 | '@esbuild/darwin-x64@0.25.2': 136 | resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} 137 | engines: {node: '>=18'} 138 | cpu: [x64] 139 | os: [darwin] 140 | 141 | '@esbuild/freebsd-arm64@0.25.2': 142 | resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} 143 | engines: {node: '>=18'} 144 | cpu: [arm64] 145 | os: [freebsd] 146 | 147 | '@esbuild/freebsd-x64@0.25.2': 148 | resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} 149 | engines: {node: '>=18'} 150 | cpu: [x64] 151 | os: [freebsd] 152 | 153 | '@esbuild/linux-arm64@0.25.2': 154 | resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} 155 | engines: {node: '>=18'} 156 | cpu: [arm64] 157 | os: [linux] 158 | 159 | '@esbuild/linux-arm@0.25.2': 160 | resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} 161 | engines: {node: '>=18'} 162 | cpu: [arm] 163 | os: [linux] 164 | 165 | '@esbuild/linux-ia32@0.25.2': 166 | resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} 167 | engines: {node: '>=18'} 168 | cpu: [ia32] 169 | os: [linux] 170 | 171 | '@esbuild/linux-loong64@0.25.2': 172 | resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} 173 | engines: {node: '>=18'} 174 | cpu: [loong64] 175 | os: [linux] 176 | 177 | '@esbuild/linux-mips64el@0.25.2': 178 | resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} 179 | engines: {node: '>=18'} 180 | cpu: [mips64el] 181 | os: [linux] 182 | 183 | '@esbuild/linux-ppc64@0.25.2': 184 | resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} 185 | engines: {node: '>=18'} 186 | cpu: [ppc64] 187 | os: [linux] 188 | 189 | '@esbuild/linux-riscv64@0.25.2': 190 | resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} 191 | engines: {node: '>=18'} 192 | cpu: [riscv64] 193 | os: [linux] 194 | 195 | '@esbuild/linux-s390x@0.25.2': 196 | resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} 197 | engines: {node: '>=18'} 198 | cpu: [s390x] 199 | os: [linux] 200 | 201 | '@esbuild/linux-x64@0.25.2': 202 | resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} 203 | engines: {node: '>=18'} 204 | cpu: [x64] 205 | os: [linux] 206 | 207 | '@esbuild/netbsd-arm64@0.25.2': 208 | resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} 209 | engines: {node: '>=18'} 210 | cpu: [arm64] 211 | os: [netbsd] 212 | 213 | '@esbuild/netbsd-x64@0.25.2': 214 | resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} 215 | engines: {node: '>=18'} 216 | cpu: [x64] 217 | os: [netbsd] 218 | 219 | '@esbuild/openbsd-arm64@0.25.2': 220 | resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} 221 | engines: {node: '>=18'} 222 | cpu: [arm64] 223 | os: [openbsd] 224 | 225 | '@esbuild/openbsd-x64@0.25.2': 226 | resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} 227 | engines: {node: '>=18'} 228 | cpu: [x64] 229 | os: [openbsd] 230 | 231 | '@esbuild/sunos-x64@0.25.2': 232 | resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} 233 | engines: {node: '>=18'} 234 | cpu: [x64] 235 | os: [sunos] 236 | 237 | '@esbuild/win32-arm64@0.25.2': 238 | resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} 239 | engines: {node: '>=18'} 240 | cpu: [arm64] 241 | os: [win32] 242 | 243 | '@esbuild/win32-ia32@0.25.2': 244 | resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} 245 | engines: {node: '>=18'} 246 | cpu: [ia32] 247 | os: [win32] 248 | 249 | '@esbuild/win32-x64@0.25.2': 250 | resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} 251 | engines: {node: '>=18'} 252 | cpu: [x64] 253 | os: [win32] 254 | 255 | '@eslint-community/eslint-utils@4.6.0': 256 | resolution: {integrity: sha512-WhCn7Z7TauhBtmzhvKpoQs0Wwb/kBcy4CwpuI0/eEIr2Lx2auxmulAzLr91wVZJaz47iUZdkXOK7WlAfxGKCnA==} 257 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 258 | peerDependencies: 259 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 260 | 261 | '@eslint-community/regexpp@4.12.1': 262 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 263 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 264 | 265 | '@eslint/config-array@0.20.0': 266 | resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} 267 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 268 | 269 | '@eslint/config-helpers@0.2.1': 270 | resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} 271 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 272 | 273 | '@eslint/core@0.12.0': 274 | resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} 275 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 276 | 277 | '@eslint/core@0.13.0': 278 | resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 279 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 280 | 281 | '@eslint/eslintrc@3.3.1': 282 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 283 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 284 | 285 | '@eslint/js@9.24.0': 286 | resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} 287 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 288 | 289 | '@eslint/object-schema@2.1.6': 290 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 291 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 292 | 293 | '@eslint/plugin-kit@0.2.8': 294 | resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} 295 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 296 | 297 | '@humanfs/core@0.19.1': 298 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 299 | engines: {node: '>=18.18.0'} 300 | 301 | '@humanfs/node@0.16.6': 302 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 303 | engines: {node: '>=18.18.0'} 304 | 305 | '@humanwhocodes/module-importer@1.0.1': 306 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 307 | engines: {node: '>=12.22'} 308 | 309 | '@humanwhocodes/retry@0.3.1': 310 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 311 | engines: {node: '>=18.18'} 312 | 313 | '@humanwhocodes/retry@0.4.2': 314 | resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} 315 | engines: {node: '>=18.18'} 316 | 317 | '@microsoft/microsoft-graph-client@3.0.7': 318 | resolution: {integrity: sha512-/AazAV/F+HK4LIywF9C+NYHcJo038zEnWkteilcxC1FM/uK/4NVGDKGrxx7nNq1ybspAroRKT4I1FHfxQzxkUw==} 319 | engines: {node: '>=12.0.0'} 320 | peerDependencies: 321 | '@azure/identity': '*' 322 | '@azure/msal-browser': '*' 323 | buffer: '*' 324 | stream-browserify: '*' 325 | peerDependenciesMeta: 326 | '@azure/identity': 327 | optional: true 328 | '@azure/msal-browser': 329 | optional: true 330 | buffer: 331 | optional: true 332 | stream-browserify: 333 | optional: true 334 | 335 | '@modelcontextprotocol/sdk@1.9.0': 336 | resolution: {integrity: sha512-Jq2EUCQpe0iyO5FGpzVYDNFR6oR53AIrwph9yWl7uSc7IWUMsrmpmSaTGra5hQNunXpM+9oit85p924jWuHzUA==} 337 | engines: {node: '>=18'} 338 | 339 | '@nodelib/fs.scandir@2.1.5': 340 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 341 | engines: {node: '>= 8'} 342 | 343 | '@nodelib/fs.stat@2.0.5': 344 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 345 | engines: {node: '>= 8'} 346 | 347 | '@nodelib/fs.walk@1.2.8': 348 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 349 | engines: {node: '>= 8'} 350 | 351 | '@types/estree@1.0.7': 352 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 353 | 354 | '@types/json-schema@7.0.15': 355 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 356 | 357 | '@types/node@22.14.1': 358 | resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} 359 | 360 | '@typescript-eslint/eslint-plugin@8.30.1': 361 | resolution: {integrity: sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==} 362 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 363 | peerDependencies: 364 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 365 | eslint: ^8.57.0 || ^9.0.0 366 | typescript: '>=4.8.4 <5.9.0' 367 | 368 | '@typescript-eslint/parser@8.30.1': 369 | resolution: {integrity: sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==} 370 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 371 | peerDependencies: 372 | eslint: ^8.57.0 || ^9.0.0 373 | typescript: '>=4.8.4 <5.9.0' 374 | 375 | '@typescript-eslint/scope-manager@8.30.1': 376 | resolution: {integrity: sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==} 377 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 378 | 379 | '@typescript-eslint/type-utils@8.30.1': 380 | resolution: {integrity: sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==} 381 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 382 | peerDependencies: 383 | eslint: ^8.57.0 || ^9.0.0 384 | typescript: '>=4.8.4 <5.9.0' 385 | 386 | '@typescript-eslint/types@8.30.1': 387 | resolution: {integrity: sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==} 388 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 389 | 390 | '@typescript-eslint/typescript-estree@8.30.1': 391 | resolution: {integrity: sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==} 392 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 393 | peerDependencies: 394 | typescript: '>=4.8.4 <5.9.0' 395 | 396 | '@typescript-eslint/utils@8.30.1': 397 | resolution: {integrity: sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==} 398 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 399 | peerDependencies: 400 | eslint: ^8.57.0 || ^9.0.0 401 | typescript: '>=4.8.4 <5.9.0' 402 | 403 | '@typescript-eslint/visitor-keys@8.30.1': 404 | resolution: {integrity: sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==} 405 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 406 | 407 | accepts@2.0.0: 408 | resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} 409 | engines: {node: '>= 0.6'} 410 | 411 | acorn-jsx@5.3.2: 412 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 413 | peerDependencies: 414 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 415 | 416 | acorn@8.14.1: 417 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 418 | engines: {node: '>=0.4.0'} 419 | hasBin: true 420 | 421 | agent-base@7.1.3: 422 | resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} 423 | engines: {node: '>= 14'} 424 | 425 | ajv@6.12.6: 426 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 427 | 428 | ansi-styles@4.3.0: 429 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 430 | engines: {node: '>=8'} 431 | 432 | argparse@2.0.1: 433 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 434 | 435 | balanced-match@1.0.2: 436 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 437 | 438 | body-parser@2.2.0: 439 | resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} 440 | engines: {node: '>=18'} 441 | 442 | brace-expansion@1.1.11: 443 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 444 | 445 | brace-expansion@2.0.1: 446 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 447 | 448 | braces@3.0.3: 449 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 450 | engines: {node: '>=8'} 451 | 452 | buffer-equal-constant-time@1.0.1: 453 | resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} 454 | 455 | bundle-name@4.1.0: 456 | resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} 457 | engines: {node: '>=18'} 458 | 459 | bytes@3.1.2: 460 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 461 | engines: {node: '>= 0.8'} 462 | 463 | call-bind-apply-helpers@1.0.2: 464 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 465 | engines: {node: '>= 0.4'} 466 | 467 | call-bound@1.0.4: 468 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 469 | engines: {node: '>= 0.4'} 470 | 471 | callsites@3.1.0: 472 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 473 | engines: {node: '>=6'} 474 | 475 | chalk@4.1.2: 476 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 477 | engines: {node: '>=10'} 478 | 479 | color-convert@2.0.1: 480 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 481 | engines: {node: '>=7.0.0'} 482 | 483 | color-name@1.1.4: 484 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 485 | 486 | concat-map@0.0.1: 487 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 488 | 489 | content-disposition@1.0.0: 490 | resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} 491 | engines: {node: '>= 0.6'} 492 | 493 | content-type@1.0.5: 494 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 495 | engines: {node: '>= 0.6'} 496 | 497 | cookie-signature@1.2.2: 498 | resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} 499 | engines: {node: '>=6.6.0'} 500 | 501 | cookie@0.7.2: 502 | resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 503 | engines: {node: '>= 0.6'} 504 | 505 | cors@2.8.5: 506 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 507 | engines: {node: '>= 0.10'} 508 | 509 | cross-spawn@7.0.6: 510 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 511 | engines: {node: '>= 8'} 512 | 513 | data-uri-to-buffer@4.0.1: 514 | resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 515 | engines: {node: '>= 12'} 516 | 517 | debug@4.4.0: 518 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 519 | engines: {node: '>=6.0'} 520 | peerDependencies: 521 | supports-color: '*' 522 | peerDependenciesMeta: 523 | supports-color: 524 | optional: true 525 | 526 | deep-is@0.1.4: 527 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 528 | 529 | default-browser-id@5.0.0: 530 | resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} 531 | engines: {node: '>=18'} 532 | 533 | default-browser@5.2.1: 534 | resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} 535 | engines: {node: '>=18'} 536 | 537 | define-lazy-prop@3.0.0: 538 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} 539 | engines: {node: '>=12'} 540 | 541 | depd@2.0.0: 542 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 543 | engines: {node: '>= 0.8'} 544 | 545 | dotenv@16.5.0: 546 | resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} 547 | engines: {node: '>=12'} 548 | 549 | dunder-proto@1.0.1: 550 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 551 | engines: {node: '>= 0.4'} 552 | 553 | ecdsa-sig-formatter@1.0.11: 554 | resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} 555 | 556 | ee-first@1.1.1: 557 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 558 | 559 | encodeurl@2.0.0: 560 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 561 | engines: {node: '>= 0.8'} 562 | 563 | es-define-property@1.0.1: 564 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 565 | engines: {node: '>= 0.4'} 566 | 567 | es-errors@1.3.0: 568 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 569 | engines: {node: '>= 0.4'} 570 | 571 | es-object-atoms@1.1.1: 572 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 573 | engines: {node: '>= 0.4'} 574 | 575 | esbuild@0.25.2: 576 | resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} 577 | engines: {node: '>=18'} 578 | hasBin: true 579 | 580 | escape-html@1.0.3: 581 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 582 | 583 | escape-string-regexp@4.0.0: 584 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 585 | engines: {node: '>=10'} 586 | 587 | eslint-scope@8.3.0: 588 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 589 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 590 | 591 | eslint-visitor-keys@3.4.3: 592 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 593 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 594 | 595 | eslint-visitor-keys@4.2.0: 596 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 597 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 598 | 599 | eslint@9.24.0: 600 | resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} 601 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 602 | hasBin: true 603 | peerDependencies: 604 | jiti: '*' 605 | peerDependenciesMeta: 606 | jiti: 607 | optional: true 608 | 609 | espree@10.3.0: 610 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 611 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 612 | 613 | esquery@1.6.0: 614 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 615 | engines: {node: '>=0.10'} 616 | 617 | esrecurse@4.3.0: 618 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 619 | engines: {node: '>=4.0'} 620 | 621 | estraverse@5.3.0: 622 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 623 | engines: {node: '>=4.0'} 624 | 625 | esutils@2.0.3: 626 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 627 | engines: {node: '>=0.10.0'} 628 | 629 | etag@1.8.1: 630 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 631 | engines: {node: '>= 0.6'} 632 | 633 | events@3.3.0: 634 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 635 | engines: {node: '>=0.8.x'} 636 | 637 | eventsource-parser@3.0.1: 638 | resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} 639 | engines: {node: '>=18.0.0'} 640 | 641 | eventsource@3.0.6: 642 | resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} 643 | engines: {node: '>=18.0.0'} 644 | 645 | express-rate-limit@7.5.0: 646 | resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} 647 | engines: {node: '>= 16'} 648 | peerDependencies: 649 | express: ^4.11 || 5 || ^5.0.0-beta.1 650 | 651 | express@5.1.0: 652 | resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} 653 | engines: {node: '>= 18'} 654 | 655 | fast-deep-equal@3.1.3: 656 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 657 | 658 | fast-glob@3.3.3: 659 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 660 | engines: {node: '>=8.6.0'} 661 | 662 | fast-json-stable-stringify@2.1.0: 663 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 664 | 665 | fast-levenshtein@2.0.6: 666 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 667 | 668 | fastq@1.19.1: 669 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 670 | 671 | fetch-blob@3.2.0: 672 | resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 673 | engines: {node: ^12.20 || >= 14.13} 674 | 675 | file-entry-cache@8.0.0: 676 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 677 | engines: {node: '>=16.0.0'} 678 | 679 | fill-range@7.1.1: 680 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 681 | engines: {node: '>=8'} 682 | 683 | finalhandler@2.1.0: 684 | resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} 685 | engines: {node: '>= 0.8'} 686 | 687 | find-up@5.0.0: 688 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 689 | engines: {node: '>=10'} 690 | 691 | flat-cache@4.0.1: 692 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 693 | engines: {node: '>=16'} 694 | 695 | flatted@3.3.3: 696 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 697 | 698 | formdata-polyfill@4.0.10: 699 | resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 700 | engines: {node: '>=12.20.0'} 701 | 702 | forwarded@0.2.0: 703 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 704 | engines: {node: '>= 0.6'} 705 | 706 | fresh@2.0.0: 707 | resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 708 | engines: {node: '>= 0.8'} 709 | 710 | fsevents@2.3.3: 711 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 712 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 713 | os: [darwin] 714 | 715 | function-bind@1.1.2: 716 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 717 | 718 | get-intrinsic@1.3.0: 719 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 720 | engines: {node: '>= 0.4'} 721 | 722 | get-proto@1.0.1: 723 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 724 | engines: {node: '>= 0.4'} 725 | 726 | get-tsconfig@4.10.0: 727 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} 728 | 729 | glob-parent@5.1.2: 730 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 731 | engines: {node: '>= 6'} 732 | 733 | glob-parent@6.0.2: 734 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 735 | engines: {node: '>=10.13.0'} 736 | 737 | globals@14.0.0: 738 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 739 | engines: {node: '>=18'} 740 | 741 | globals@16.0.0: 742 | resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} 743 | engines: {node: '>=18'} 744 | 745 | gopd@1.2.0: 746 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 747 | engines: {node: '>= 0.4'} 748 | 749 | graphemer@1.4.0: 750 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 751 | 752 | has-flag@4.0.0: 753 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 754 | engines: {node: '>=8'} 755 | 756 | has-symbols@1.1.0: 757 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 758 | engines: {node: '>= 0.4'} 759 | 760 | hasown@2.0.2: 761 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 762 | engines: {node: '>= 0.4'} 763 | 764 | http-errors@2.0.0: 765 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 766 | engines: {node: '>= 0.8'} 767 | 768 | http-proxy-agent@7.0.2: 769 | resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} 770 | engines: {node: '>= 14'} 771 | 772 | https-proxy-agent@7.0.6: 773 | resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} 774 | engines: {node: '>= 14'} 775 | 776 | iconv-lite@0.6.3: 777 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 778 | engines: {node: '>=0.10.0'} 779 | 780 | ignore@5.3.2: 781 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 782 | engines: {node: '>= 4'} 783 | 784 | import-fresh@3.3.1: 785 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 786 | engines: {node: '>=6'} 787 | 788 | imurmurhash@0.1.4: 789 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 790 | engines: {node: '>=0.8.19'} 791 | 792 | inherits@2.0.4: 793 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 794 | 795 | ipaddr.js@1.9.1: 796 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 797 | engines: {node: '>= 0.10'} 798 | 799 | is-docker@3.0.0: 800 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 801 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 802 | hasBin: true 803 | 804 | is-extglob@2.1.1: 805 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 806 | engines: {node: '>=0.10.0'} 807 | 808 | is-glob@4.0.3: 809 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 810 | engines: {node: '>=0.10.0'} 811 | 812 | is-inside-container@1.0.0: 813 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 814 | engines: {node: '>=14.16'} 815 | hasBin: true 816 | 817 | is-number@7.0.0: 818 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 819 | engines: {node: '>=0.12.0'} 820 | 821 | is-promise@4.0.0: 822 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 823 | 824 | is-wsl@3.1.0: 825 | resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 826 | engines: {node: '>=16'} 827 | 828 | isexe@2.0.0: 829 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 830 | 831 | jiti@2.4.2: 832 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} 833 | hasBin: true 834 | 835 | js-yaml@4.1.0: 836 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 837 | hasBin: true 838 | 839 | json-buffer@3.0.1: 840 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 841 | 842 | json-schema-traverse@0.4.1: 843 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 844 | 845 | json-stable-stringify-without-jsonify@1.0.1: 846 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 847 | 848 | jsonwebtoken@9.0.2: 849 | resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} 850 | engines: {node: '>=12', npm: '>=6'} 851 | 852 | jwa@1.4.1: 853 | resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} 854 | 855 | jwa@2.0.0: 856 | resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} 857 | 858 | jws@3.2.2: 859 | resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} 860 | 861 | jws@4.0.0: 862 | resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} 863 | 864 | keyv@4.5.4: 865 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 866 | 867 | levn@0.4.1: 868 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 869 | engines: {node: '>= 0.8.0'} 870 | 871 | locate-path@6.0.0: 872 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 873 | engines: {node: '>=10'} 874 | 875 | lodash.includes@4.3.0: 876 | resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} 877 | 878 | lodash.isboolean@3.0.3: 879 | resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} 880 | 881 | lodash.isinteger@4.0.4: 882 | resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} 883 | 884 | lodash.isnumber@3.0.3: 885 | resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} 886 | 887 | lodash.isplainobject@4.0.6: 888 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 889 | 890 | lodash.isstring@4.0.1: 891 | resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} 892 | 893 | lodash.merge@4.6.2: 894 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 895 | 896 | lodash.once@4.1.1: 897 | resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} 898 | 899 | math-intrinsics@1.1.0: 900 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 901 | engines: {node: '>= 0.4'} 902 | 903 | media-typer@1.1.0: 904 | resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 905 | engines: {node: '>= 0.8'} 906 | 907 | merge-descriptors@2.0.0: 908 | resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} 909 | engines: {node: '>=18'} 910 | 911 | merge2@1.4.1: 912 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 913 | engines: {node: '>= 8'} 914 | 915 | micromatch@4.0.8: 916 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 917 | engines: {node: '>=8.6'} 918 | 919 | microsoft-graph@2.8.0: 920 | resolution: {integrity: sha512-BzfakM9gbAjN5t23oZKhUUv2Q21iakXdQ+kYC74MWCDNNuXj3Nll3NPXIOZdfUJZVSYc0cdFhVoIi9yLV8A+LA==} 921 | 922 | mime-db@1.54.0: 923 | resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} 924 | engines: {node: '>= 0.6'} 925 | 926 | mime-types@3.0.1: 927 | resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} 928 | engines: {node: '>= 0.6'} 929 | 930 | minimatch@3.1.2: 931 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 932 | 933 | minimatch@9.0.5: 934 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 935 | engines: {node: '>=16 || 14 >=14.17'} 936 | 937 | ms@2.1.3: 938 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 939 | 940 | natural-compare@1.4.0: 941 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 942 | 943 | negotiator@1.0.0: 944 | resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} 945 | engines: {node: '>= 0.6'} 946 | 947 | node-domexception@1.0.0: 948 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 949 | engines: {node: '>=10.5.0'} 950 | 951 | node-fetch@3.3.2: 952 | resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 953 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 954 | 955 | object-assign@4.1.1: 956 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 957 | engines: {node: '>=0.10.0'} 958 | 959 | object-inspect@1.13.4: 960 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 961 | engines: {node: '>= 0.4'} 962 | 963 | on-finished@2.4.1: 964 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 965 | engines: {node: '>= 0.8'} 966 | 967 | once@1.4.0: 968 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 969 | 970 | open@10.1.1: 971 | resolution: {integrity: sha512-zy1wx4+P3PfhXSEPJNtZmJXfhkkIaxU1VauWIrDZw1O7uJRDRJtKr9n3Ic4NgbA16KyOxOXO2ng9gYwCdXuSXA==} 972 | engines: {node: '>=18'} 973 | 974 | optionator@0.9.4: 975 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 976 | engines: {node: '>= 0.8.0'} 977 | 978 | p-limit@3.1.0: 979 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 980 | engines: {node: '>=10'} 981 | 982 | p-locate@5.0.0: 983 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 984 | engines: {node: '>=10'} 985 | 986 | parent-module@1.0.1: 987 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 988 | engines: {node: '>=6'} 989 | 990 | parseurl@1.3.3: 991 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 992 | engines: {node: '>= 0.8'} 993 | 994 | path-exists@4.0.0: 995 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 996 | engines: {node: '>=8'} 997 | 998 | path-key@3.1.1: 999 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1000 | engines: {node: '>=8'} 1001 | 1002 | path-to-regexp@8.2.0: 1003 | resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} 1004 | engines: {node: '>=16'} 1005 | 1006 | picomatch@2.3.1: 1007 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1008 | engines: {node: '>=8.6'} 1009 | 1010 | pkce-challenge@5.0.0: 1011 | resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} 1012 | engines: {node: '>=16.20.0'} 1013 | 1014 | prelude-ls@1.2.1: 1015 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1016 | engines: {node: '>= 0.8.0'} 1017 | 1018 | proxy-addr@2.0.7: 1019 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1020 | engines: {node: '>= 0.10'} 1021 | 1022 | punycode@2.3.1: 1023 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1024 | engines: {node: '>=6'} 1025 | 1026 | qs@6.14.0: 1027 | resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} 1028 | engines: {node: '>=0.6'} 1029 | 1030 | queue-microtask@1.2.3: 1031 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1032 | 1033 | range-parser@1.2.1: 1034 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1035 | engines: {node: '>= 0.6'} 1036 | 1037 | raw-body@3.0.0: 1038 | resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} 1039 | engines: {node: '>= 0.8'} 1040 | 1041 | regenerator-runtime@0.14.1: 1042 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1043 | 1044 | resolve-from@4.0.0: 1045 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1046 | engines: {node: '>=4'} 1047 | 1048 | resolve-pkg-maps@1.0.0: 1049 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1050 | 1051 | reusify@1.1.0: 1052 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1053 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1054 | 1055 | router@2.2.0: 1056 | resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} 1057 | engines: {node: '>= 18'} 1058 | 1059 | run-applescript@7.0.0: 1060 | resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} 1061 | engines: {node: '>=18'} 1062 | 1063 | run-parallel@1.2.0: 1064 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1065 | 1066 | safe-buffer@5.2.1: 1067 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1068 | 1069 | safer-buffer@2.1.2: 1070 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1071 | 1072 | semver@7.7.1: 1073 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1074 | engines: {node: '>=10'} 1075 | hasBin: true 1076 | 1077 | send@1.2.0: 1078 | resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} 1079 | engines: {node: '>= 18'} 1080 | 1081 | serve-static@2.2.0: 1082 | resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} 1083 | engines: {node: '>= 18'} 1084 | 1085 | setprototypeof@1.2.0: 1086 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1087 | 1088 | shebang-command@2.0.0: 1089 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1090 | engines: {node: '>=8'} 1091 | 1092 | shebang-regex@3.0.0: 1093 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1094 | engines: {node: '>=8'} 1095 | 1096 | side-channel-list@1.0.0: 1097 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1098 | engines: {node: '>= 0.4'} 1099 | 1100 | side-channel-map@1.0.1: 1101 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1102 | engines: {node: '>= 0.4'} 1103 | 1104 | side-channel-weakmap@1.0.2: 1105 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1106 | engines: {node: '>= 0.4'} 1107 | 1108 | side-channel@1.1.0: 1109 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1110 | engines: {node: '>= 0.4'} 1111 | 1112 | statuses@2.0.1: 1113 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1114 | engines: {node: '>= 0.8'} 1115 | 1116 | stoppable@1.1.0: 1117 | resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 1118 | engines: {node: '>=4', npm: '>=6'} 1119 | 1120 | strip-json-comments@3.1.1: 1121 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1122 | engines: {node: '>=8'} 1123 | 1124 | supports-color@7.2.0: 1125 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1126 | engines: {node: '>=8'} 1127 | 1128 | to-regex-range@5.0.1: 1129 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1130 | engines: {node: '>=8.0'} 1131 | 1132 | toidentifier@1.0.1: 1133 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1134 | engines: {node: '>=0.6'} 1135 | 1136 | ts-api-utils@2.1.0: 1137 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1138 | engines: {node: '>=18.12'} 1139 | peerDependencies: 1140 | typescript: '>=4.8.4' 1141 | 1142 | tslib@2.8.1: 1143 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1144 | 1145 | tsx@4.19.3: 1146 | resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} 1147 | engines: {node: '>=18.0.0'} 1148 | hasBin: true 1149 | 1150 | type-check@0.4.0: 1151 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1152 | engines: {node: '>= 0.8.0'} 1153 | 1154 | type-is@2.0.1: 1155 | resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} 1156 | engines: {node: '>= 0.6'} 1157 | 1158 | typescript-eslint@8.30.1: 1159 | resolution: {integrity: sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==} 1160 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1161 | peerDependencies: 1162 | eslint: ^8.57.0 || ^9.0.0 1163 | typescript: '>=4.8.4 <5.9.0' 1164 | 1165 | typescript@5.8.3: 1166 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1167 | engines: {node: '>=14.17'} 1168 | hasBin: true 1169 | 1170 | undici-types@6.21.0: 1171 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1172 | 1173 | unpipe@1.0.0: 1174 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 1175 | engines: {node: '>= 0.8'} 1176 | 1177 | uri-js@4.4.1: 1178 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1179 | 1180 | uuid@8.3.2: 1181 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 1182 | hasBin: true 1183 | 1184 | vary@1.1.2: 1185 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 1186 | engines: {node: '>= 0.8'} 1187 | 1188 | web-streams-polyfill@3.3.3: 1189 | resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} 1190 | engines: {node: '>= 8'} 1191 | 1192 | which@2.0.2: 1193 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1194 | engines: {node: '>= 8'} 1195 | hasBin: true 1196 | 1197 | word-wrap@1.2.5: 1198 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1199 | engines: {node: '>=0.10.0'} 1200 | 1201 | wrappy@1.0.2: 1202 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1203 | 1204 | yocto-queue@0.1.0: 1205 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1206 | engines: {node: '>=10'} 1207 | 1208 | zod-to-json-schema@3.24.5: 1209 | resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} 1210 | peerDependencies: 1211 | zod: ^3.24.1 1212 | 1213 | zod@3.24.2: 1214 | resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} 1215 | 1216 | snapshots: 1217 | 1218 | '@azure/abort-controller@2.1.2': 1219 | dependencies: 1220 | tslib: 2.8.1 1221 | 1222 | '@azure/core-auth@1.9.0': 1223 | dependencies: 1224 | '@azure/abort-controller': 2.1.2 1225 | '@azure/core-util': 1.11.0 1226 | tslib: 2.8.1 1227 | 1228 | '@azure/core-client@1.9.3': 1229 | dependencies: 1230 | '@azure/abort-controller': 2.1.2 1231 | '@azure/core-auth': 1.9.0 1232 | '@azure/core-rest-pipeline': 1.19.1 1233 | '@azure/core-tracing': 1.2.0 1234 | '@azure/core-util': 1.11.0 1235 | '@azure/logger': 1.1.4 1236 | tslib: 2.8.1 1237 | transitivePeerDependencies: 1238 | - supports-color 1239 | 1240 | '@azure/core-rest-pipeline@1.19.1': 1241 | dependencies: 1242 | '@azure/abort-controller': 2.1.2 1243 | '@azure/core-auth': 1.9.0 1244 | '@azure/core-tracing': 1.2.0 1245 | '@azure/core-util': 1.11.0 1246 | '@azure/logger': 1.1.4 1247 | http-proxy-agent: 7.0.2 1248 | https-proxy-agent: 7.0.6 1249 | tslib: 2.8.1 1250 | transitivePeerDependencies: 1251 | - supports-color 1252 | 1253 | '@azure/core-tracing@1.2.0': 1254 | dependencies: 1255 | tslib: 2.8.1 1256 | 1257 | '@azure/core-util@1.11.0': 1258 | dependencies: 1259 | '@azure/abort-controller': 2.1.2 1260 | tslib: 2.8.1 1261 | 1262 | '@azure/identity@4.8.0': 1263 | dependencies: 1264 | '@azure/abort-controller': 2.1.2 1265 | '@azure/core-auth': 1.9.0 1266 | '@azure/core-client': 1.9.3 1267 | '@azure/core-rest-pipeline': 1.19.1 1268 | '@azure/core-tracing': 1.2.0 1269 | '@azure/core-util': 1.11.0 1270 | '@azure/logger': 1.1.4 1271 | '@azure/msal-browser': 4.11.0 1272 | '@azure/msal-node': 3.5.1 1273 | events: 3.3.0 1274 | jws: 4.0.0 1275 | open: 10.1.1 1276 | stoppable: 1.1.0 1277 | tslib: 2.8.1 1278 | transitivePeerDependencies: 1279 | - supports-color 1280 | 1281 | '@azure/logger@1.1.4': 1282 | dependencies: 1283 | tslib: 2.8.1 1284 | 1285 | '@azure/msal-browser@4.11.0': 1286 | dependencies: 1287 | '@azure/msal-common': 15.5.1 1288 | 1289 | '@azure/msal-common@15.5.1': {} 1290 | 1291 | '@azure/msal-node@3.5.1': 1292 | dependencies: 1293 | '@azure/msal-common': 15.5.1 1294 | jsonwebtoken: 9.0.2 1295 | uuid: 8.3.2 1296 | 1297 | '@babel/runtime@7.27.0': 1298 | dependencies: 1299 | regenerator-runtime: 0.14.1 1300 | 1301 | '@esbuild/aix-ppc64@0.25.2': 1302 | optional: true 1303 | 1304 | '@esbuild/android-arm64@0.25.2': 1305 | optional: true 1306 | 1307 | '@esbuild/android-arm@0.25.2': 1308 | optional: true 1309 | 1310 | '@esbuild/android-x64@0.25.2': 1311 | optional: true 1312 | 1313 | '@esbuild/darwin-arm64@0.25.2': 1314 | optional: true 1315 | 1316 | '@esbuild/darwin-x64@0.25.2': 1317 | optional: true 1318 | 1319 | '@esbuild/freebsd-arm64@0.25.2': 1320 | optional: true 1321 | 1322 | '@esbuild/freebsd-x64@0.25.2': 1323 | optional: true 1324 | 1325 | '@esbuild/linux-arm64@0.25.2': 1326 | optional: true 1327 | 1328 | '@esbuild/linux-arm@0.25.2': 1329 | optional: true 1330 | 1331 | '@esbuild/linux-ia32@0.25.2': 1332 | optional: true 1333 | 1334 | '@esbuild/linux-loong64@0.25.2': 1335 | optional: true 1336 | 1337 | '@esbuild/linux-mips64el@0.25.2': 1338 | optional: true 1339 | 1340 | '@esbuild/linux-ppc64@0.25.2': 1341 | optional: true 1342 | 1343 | '@esbuild/linux-riscv64@0.25.2': 1344 | optional: true 1345 | 1346 | '@esbuild/linux-s390x@0.25.2': 1347 | optional: true 1348 | 1349 | '@esbuild/linux-x64@0.25.2': 1350 | optional: true 1351 | 1352 | '@esbuild/netbsd-arm64@0.25.2': 1353 | optional: true 1354 | 1355 | '@esbuild/netbsd-x64@0.25.2': 1356 | optional: true 1357 | 1358 | '@esbuild/openbsd-arm64@0.25.2': 1359 | optional: true 1360 | 1361 | '@esbuild/openbsd-x64@0.25.2': 1362 | optional: true 1363 | 1364 | '@esbuild/sunos-x64@0.25.2': 1365 | optional: true 1366 | 1367 | '@esbuild/win32-arm64@0.25.2': 1368 | optional: true 1369 | 1370 | '@esbuild/win32-ia32@0.25.2': 1371 | optional: true 1372 | 1373 | '@esbuild/win32-x64@0.25.2': 1374 | optional: true 1375 | 1376 | '@eslint-community/eslint-utils@4.6.0(eslint@9.24.0(jiti@2.4.2))': 1377 | dependencies: 1378 | eslint: 9.24.0(jiti@2.4.2) 1379 | eslint-visitor-keys: 3.4.3 1380 | 1381 | '@eslint-community/regexpp@4.12.1': {} 1382 | 1383 | '@eslint/config-array@0.20.0': 1384 | dependencies: 1385 | '@eslint/object-schema': 2.1.6 1386 | debug: 4.4.0 1387 | minimatch: 3.1.2 1388 | transitivePeerDependencies: 1389 | - supports-color 1390 | 1391 | '@eslint/config-helpers@0.2.1': {} 1392 | 1393 | '@eslint/core@0.12.0': 1394 | dependencies: 1395 | '@types/json-schema': 7.0.15 1396 | 1397 | '@eslint/core@0.13.0': 1398 | dependencies: 1399 | '@types/json-schema': 7.0.15 1400 | 1401 | '@eslint/eslintrc@3.3.1': 1402 | dependencies: 1403 | ajv: 6.12.6 1404 | debug: 4.4.0 1405 | espree: 10.3.0 1406 | globals: 14.0.0 1407 | ignore: 5.3.2 1408 | import-fresh: 3.3.1 1409 | js-yaml: 4.1.0 1410 | minimatch: 3.1.2 1411 | strip-json-comments: 3.1.1 1412 | transitivePeerDependencies: 1413 | - supports-color 1414 | 1415 | '@eslint/js@9.24.0': {} 1416 | 1417 | '@eslint/object-schema@2.1.6': {} 1418 | 1419 | '@eslint/plugin-kit@0.2.8': 1420 | dependencies: 1421 | '@eslint/core': 0.13.0 1422 | levn: 0.4.1 1423 | 1424 | '@humanfs/core@0.19.1': {} 1425 | 1426 | '@humanfs/node@0.16.6': 1427 | dependencies: 1428 | '@humanfs/core': 0.19.1 1429 | '@humanwhocodes/retry': 0.3.1 1430 | 1431 | '@humanwhocodes/module-importer@1.0.1': {} 1432 | 1433 | '@humanwhocodes/retry@0.3.1': {} 1434 | 1435 | '@humanwhocodes/retry@0.4.2': {} 1436 | 1437 | '@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.8.0)': 1438 | dependencies: 1439 | '@babel/runtime': 7.27.0 1440 | tslib: 2.8.1 1441 | optionalDependencies: 1442 | '@azure/identity': 4.8.0 1443 | 1444 | '@modelcontextprotocol/sdk@1.9.0': 1445 | dependencies: 1446 | content-type: 1.0.5 1447 | cors: 2.8.5 1448 | cross-spawn: 7.0.6 1449 | eventsource: 3.0.6 1450 | express: 5.1.0 1451 | express-rate-limit: 7.5.0(express@5.1.0) 1452 | pkce-challenge: 5.0.0 1453 | raw-body: 3.0.0 1454 | zod: 3.24.2 1455 | zod-to-json-schema: 3.24.5(zod@3.24.2) 1456 | transitivePeerDependencies: 1457 | - supports-color 1458 | 1459 | '@nodelib/fs.scandir@2.1.5': 1460 | dependencies: 1461 | '@nodelib/fs.stat': 2.0.5 1462 | run-parallel: 1.2.0 1463 | 1464 | '@nodelib/fs.stat@2.0.5': {} 1465 | 1466 | '@nodelib/fs.walk@1.2.8': 1467 | dependencies: 1468 | '@nodelib/fs.scandir': 2.1.5 1469 | fastq: 1.19.1 1470 | 1471 | '@types/estree@1.0.7': {} 1472 | 1473 | '@types/json-schema@7.0.15': {} 1474 | 1475 | '@types/node@22.14.1': 1476 | dependencies: 1477 | undici-types: 6.21.0 1478 | 1479 | '@typescript-eslint/eslint-plugin@8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': 1480 | dependencies: 1481 | '@eslint-community/regexpp': 4.12.1 1482 | '@typescript-eslint/parser': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) 1483 | '@typescript-eslint/scope-manager': 8.30.1 1484 | '@typescript-eslint/type-utils': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) 1485 | '@typescript-eslint/utils': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) 1486 | '@typescript-eslint/visitor-keys': 8.30.1 1487 | eslint: 9.24.0(jiti@2.4.2) 1488 | graphemer: 1.4.0 1489 | ignore: 5.3.2 1490 | natural-compare: 1.4.0 1491 | ts-api-utils: 2.1.0(typescript@5.8.3) 1492 | typescript: 5.8.3 1493 | transitivePeerDependencies: 1494 | - supports-color 1495 | 1496 | '@typescript-eslint/parser@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': 1497 | dependencies: 1498 | '@typescript-eslint/scope-manager': 8.30.1 1499 | '@typescript-eslint/types': 8.30.1 1500 | '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) 1501 | '@typescript-eslint/visitor-keys': 8.30.1 1502 | debug: 4.4.0 1503 | eslint: 9.24.0(jiti@2.4.2) 1504 | typescript: 5.8.3 1505 | transitivePeerDependencies: 1506 | - supports-color 1507 | 1508 | '@typescript-eslint/scope-manager@8.30.1': 1509 | dependencies: 1510 | '@typescript-eslint/types': 8.30.1 1511 | '@typescript-eslint/visitor-keys': 8.30.1 1512 | 1513 | '@typescript-eslint/type-utils@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': 1514 | dependencies: 1515 | '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) 1516 | '@typescript-eslint/utils': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) 1517 | debug: 4.4.0 1518 | eslint: 9.24.0(jiti@2.4.2) 1519 | ts-api-utils: 2.1.0(typescript@5.8.3) 1520 | typescript: 5.8.3 1521 | transitivePeerDependencies: 1522 | - supports-color 1523 | 1524 | '@typescript-eslint/types@8.30.1': {} 1525 | 1526 | '@typescript-eslint/typescript-estree@8.30.1(typescript@5.8.3)': 1527 | dependencies: 1528 | '@typescript-eslint/types': 8.30.1 1529 | '@typescript-eslint/visitor-keys': 8.30.1 1530 | debug: 4.4.0 1531 | fast-glob: 3.3.3 1532 | is-glob: 4.0.3 1533 | minimatch: 9.0.5 1534 | semver: 7.7.1 1535 | ts-api-utils: 2.1.0(typescript@5.8.3) 1536 | typescript: 5.8.3 1537 | transitivePeerDependencies: 1538 | - supports-color 1539 | 1540 | '@typescript-eslint/utils@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': 1541 | dependencies: 1542 | '@eslint-community/eslint-utils': 4.6.0(eslint@9.24.0(jiti@2.4.2)) 1543 | '@typescript-eslint/scope-manager': 8.30.1 1544 | '@typescript-eslint/types': 8.30.1 1545 | '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) 1546 | eslint: 9.24.0(jiti@2.4.2) 1547 | typescript: 5.8.3 1548 | transitivePeerDependencies: 1549 | - supports-color 1550 | 1551 | '@typescript-eslint/visitor-keys@8.30.1': 1552 | dependencies: 1553 | '@typescript-eslint/types': 8.30.1 1554 | eslint-visitor-keys: 4.2.0 1555 | 1556 | accepts@2.0.0: 1557 | dependencies: 1558 | mime-types: 3.0.1 1559 | negotiator: 1.0.0 1560 | 1561 | acorn-jsx@5.3.2(acorn@8.14.1): 1562 | dependencies: 1563 | acorn: 8.14.1 1564 | 1565 | acorn@8.14.1: {} 1566 | 1567 | agent-base@7.1.3: {} 1568 | 1569 | ajv@6.12.6: 1570 | dependencies: 1571 | fast-deep-equal: 3.1.3 1572 | fast-json-stable-stringify: 2.1.0 1573 | json-schema-traverse: 0.4.1 1574 | uri-js: 4.4.1 1575 | 1576 | ansi-styles@4.3.0: 1577 | dependencies: 1578 | color-convert: 2.0.1 1579 | 1580 | argparse@2.0.1: {} 1581 | 1582 | balanced-match@1.0.2: {} 1583 | 1584 | body-parser@2.2.0: 1585 | dependencies: 1586 | bytes: 3.1.2 1587 | content-type: 1.0.5 1588 | debug: 4.4.0 1589 | http-errors: 2.0.0 1590 | iconv-lite: 0.6.3 1591 | on-finished: 2.4.1 1592 | qs: 6.14.0 1593 | raw-body: 3.0.0 1594 | type-is: 2.0.1 1595 | transitivePeerDependencies: 1596 | - supports-color 1597 | 1598 | brace-expansion@1.1.11: 1599 | dependencies: 1600 | balanced-match: 1.0.2 1601 | concat-map: 0.0.1 1602 | 1603 | brace-expansion@2.0.1: 1604 | dependencies: 1605 | balanced-match: 1.0.2 1606 | 1607 | braces@3.0.3: 1608 | dependencies: 1609 | fill-range: 7.1.1 1610 | 1611 | buffer-equal-constant-time@1.0.1: {} 1612 | 1613 | bundle-name@4.1.0: 1614 | dependencies: 1615 | run-applescript: 7.0.0 1616 | 1617 | bytes@3.1.2: {} 1618 | 1619 | call-bind-apply-helpers@1.0.2: 1620 | dependencies: 1621 | es-errors: 1.3.0 1622 | function-bind: 1.1.2 1623 | 1624 | call-bound@1.0.4: 1625 | dependencies: 1626 | call-bind-apply-helpers: 1.0.2 1627 | get-intrinsic: 1.3.0 1628 | 1629 | callsites@3.1.0: {} 1630 | 1631 | chalk@4.1.2: 1632 | dependencies: 1633 | ansi-styles: 4.3.0 1634 | supports-color: 7.2.0 1635 | 1636 | color-convert@2.0.1: 1637 | dependencies: 1638 | color-name: 1.1.4 1639 | 1640 | color-name@1.1.4: {} 1641 | 1642 | concat-map@0.0.1: {} 1643 | 1644 | content-disposition@1.0.0: 1645 | dependencies: 1646 | safe-buffer: 5.2.1 1647 | 1648 | content-type@1.0.5: {} 1649 | 1650 | cookie-signature@1.2.2: {} 1651 | 1652 | cookie@0.7.2: {} 1653 | 1654 | cors@2.8.5: 1655 | dependencies: 1656 | object-assign: 4.1.1 1657 | vary: 1.1.2 1658 | 1659 | cross-spawn@7.0.6: 1660 | dependencies: 1661 | path-key: 3.1.1 1662 | shebang-command: 2.0.0 1663 | which: 2.0.2 1664 | 1665 | data-uri-to-buffer@4.0.1: {} 1666 | 1667 | debug@4.4.0: 1668 | dependencies: 1669 | ms: 2.1.3 1670 | 1671 | deep-is@0.1.4: {} 1672 | 1673 | default-browser-id@5.0.0: {} 1674 | 1675 | default-browser@5.2.1: 1676 | dependencies: 1677 | bundle-name: 4.1.0 1678 | default-browser-id: 5.0.0 1679 | 1680 | define-lazy-prop@3.0.0: {} 1681 | 1682 | depd@2.0.0: {} 1683 | 1684 | dotenv@16.5.0: {} 1685 | 1686 | dunder-proto@1.0.1: 1687 | dependencies: 1688 | call-bind-apply-helpers: 1.0.2 1689 | es-errors: 1.3.0 1690 | gopd: 1.2.0 1691 | 1692 | ecdsa-sig-formatter@1.0.11: 1693 | dependencies: 1694 | safe-buffer: 5.2.1 1695 | 1696 | ee-first@1.1.1: {} 1697 | 1698 | encodeurl@2.0.0: {} 1699 | 1700 | es-define-property@1.0.1: {} 1701 | 1702 | es-errors@1.3.0: {} 1703 | 1704 | es-object-atoms@1.1.1: 1705 | dependencies: 1706 | es-errors: 1.3.0 1707 | 1708 | esbuild@0.25.2: 1709 | optionalDependencies: 1710 | '@esbuild/aix-ppc64': 0.25.2 1711 | '@esbuild/android-arm': 0.25.2 1712 | '@esbuild/android-arm64': 0.25.2 1713 | '@esbuild/android-x64': 0.25.2 1714 | '@esbuild/darwin-arm64': 0.25.2 1715 | '@esbuild/darwin-x64': 0.25.2 1716 | '@esbuild/freebsd-arm64': 0.25.2 1717 | '@esbuild/freebsd-x64': 0.25.2 1718 | '@esbuild/linux-arm': 0.25.2 1719 | '@esbuild/linux-arm64': 0.25.2 1720 | '@esbuild/linux-ia32': 0.25.2 1721 | '@esbuild/linux-loong64': 0.25.2 1722 | '@esbuild/linux-mips64el': 0.25.2 1723 | '@esbuild/linux-ppc64': 0.25.2 1724 | '@esbuild/linux-riscv64': 0.25.2 1725 | '@esbuild/linux-s390x': 0.25.2 1726 | '@esbuild/linux-x64': 0.25.2 1727 | '@esbuild/netbsd-arm64': 0.25.2 1728 | '@esbuild/netbsd-x64': 0.25.2 1729 | '@esbuild/openbsd-arm64': 0.25.2 1730 | '@esbuild/openbsd-x64': 0.25.2 1731 | '@esbuild/sunos-x64': 0.25.2 1732 | '@esbuild/win32-arm64': 0.25.2 1733 | '@esbuild/win32-ia32': 0.25.2 1734 | '@esbuild/win32-x64': 0.25.2 1735 | 1736 | escape-html@1.0.3: {} 1737 | 1738 | escape-string-regexp@4.0.0: {} 1739 | 1740 | eslint-scope@8.3.0: 1741 | dependencies: 1742 | esrecurse: 4.3.0 1743 | estraverse: 5.3.0 1744 | 1745 | eslint-visitor-keys@3.4.3: {} 1746 | 1747 | eslint-visitor-keys@4.2.0: {} 1748 | 1749 | eslint@9.24.0(jiti@2.4.2): 1750 | dependencies: 1751 | '@eslint-community/eslint-utils': 4.6.0(eslint@9.24.0(jiti@2.4.2)) 1752 | '@eslint-community/regexpp': 4.12.1 1753 | '@eslint/config-array': 0.20.0 1754 | '@eslint/config-helpers': 0.2.1 1755 | '@eslint/core': 0.12.0 1756 | '@eslint/eslintrc': 3.3.1 1757 | '@eslint/js': 9.24.0 1758 | '@eslint/plugin-kit': 0.2.8 1759 | '@humanfs/node': 0.16.6 1760 | '@humanwhocodes/module-importer': 1.0.1 1761 | '@humanwhocodes/retry': 0.4.2 1762 | '@types/estree': 1.0.7 1763 | '@types/json-schema': 7.0.15 1764 | ajv: 6.12.6 1765 | chalk: 4.1.2 1766 | cross-spawn: 7.0.6 1767 | debug: 4.4.0 1768 | escape-string-regexp: 4.0.0 1769 | eslint-scope: 8.3.0 1770 | eslint-visitor-keys: 4.2.0 1771 | espree: 10.3.0 1772 | esquery: 1.6.0 1773 | esutils: 2.0.3 1774 | fast-deep-equal: 3.1.3 1775 | file-entry-cache: 8.0.0 1776 | find-up: 5.0.0 1777 | glob-parent: 6.0.2 1778 | ignore: 5.3.2 1779 | imurmurhash: 0.1.4 1780 | is-glob: 4.0.3 1781 | json-stable-stringify-without-jsonify: 1.0.1 1782 | lodash.merge: 4.6.2 1783 | minimatch: 3.1.2 1784 | natural-compare: 1.4.0 1785 | optionator: 0.9.4 1786 | optionalDependencies: 1787 | jiti: 2.4.2 1788 | transitivePeerDependencies: 1789 | - supports-color 1790 | 1791 | espree@10.3.0: 1792 | dependencies: 1793 | acorn: 8.14.1 1794 | acorn-jsx: 5.3.2(acorn@8.14.1) 1795 | eslint-visitor-keys: 4.2.0 1796 | 1797 | esquery@1.6.0: 1798 | dependencies: 1799 | estraverse: 5.3.0 1800 | 1801 | esrecurse@4.3.0: 1802 | dependencies: 1803 | estraverse: 5.3.0 1804 | 1805 | estraverse@5.3.0: {} 1806 | 1807 | esutils@2.0.3: {} 1808 | 1809 | etag@1.8.1: {} 1810 | 1811 | events@3.3.0: {} 1812 | 1813 | eventsource-parser@3.0.1: {} 1814 | 1815 | eventsource@3.0.6: 1816 | dependencies: 1817 | eventsource-parser: 3.0.1 1818 | 1819 | express-rate-limit@7.5.0(express@5.1.0): 1820 | dependencies: 1821 | express: 5.1.0 1822 | 1823 | express@5.1.0: 1824 | dependencies: 1825 | accepts: 2.0.0 1826 | body-parser: 2.2.0 1827 | content-disposition: 1.0.0 1828 | content-type: 1.0.5 1829 | cookie: 0.7.2 1830 | cookie-signature: 1.2.2 1831 | debug: 4.4.0 1832 | encodeurl: 2.0.0 1833 | escape-html: 1.0.3 1834 | etag: 1.8.1 1835 | finalhandler: 2.1.0 1836 | fresh: 2.0.0 1837 | http-errors: 2.0.0 1838 | merge-descriptors: 2.0.0 1839 | mime-types: 3.0.1 1840 | on-finished: 2.4.1 1841 | once: 1.4.0 1842 | parseurl: 1.3.3 1843 | proxy-addr: 2.0.7 1844 | qs: 6.14.0 1845 | range-parser: 1.2.1 1846 | router: 2.2.0 1847 | send: 1.2.0 1848 | serve-static: 2.2.0 1849 | statuses: 2.0.1 1850 | type-is: 2.0.1 1851 | vary: 1.1.2 1852 | transitivePeerDependencies: 1853 | - supports-color 1854 | 1855 | fast-deep-equal@3.1.3: {} 1856 | 1857 | fast-glob@3.3.3: 1858 | dependencies: 1859 | '@nodelib/fs.stat': 2.0.5 1860 | '@nodelib/fs.walk': 1.2.8 1861 | glob-parent: 5.1.2 1862 | merge2: 1.4.1 1863 | micromatch: 4.0.8 1864 | 1865 | fast-json-stable-stringify@2.1.0: {} 1866 | 1867 | fast-levenshtein@2.0.6: {} 1868 | 1869 | fastq@1.19.1: 1870 | dependencies: 1871 | reusify: 1.1.0 1872 | 1873 | fetch-blob@3.2.0: 1874 | dependencies: 1875 | node-domexception: 1.0.0 1876 | web-streams-polyfill: 3.3.3 1877 | 1878 | file-entry-cache@8.0.0: 1879 | dependencies: 1880 | flat-cache: 4.0.1 1881 | 1882 | fill-range@7.1.1: 1883 | dependencies: 1884 | to-regex-range: 5.0.1 1885 | 1886 | finalhandler@2.1.0: 1887 | dependencies: 1888 | debug: 4.4.0 1889 | encodeurl: 2.0.0 1890 | escape-html: 1.0.3 1891 | on-finished: 2.4.1 1892 | parseurl: 1.3.3 1893 | statuses: 2.0.1 1894 | transitivePeerDependencies: 1895 | - supports-color 1896 | 1897 | find-up@5.0.0: 1898 | dependencies: 1899 | locate-path: 6.0.0 1900 | path-exists: 4.0.0 1901 | 1902 | flat-cache@4.0.1: 1903 | dependencies: 1904 | flatted: 3.3.3 1905 | keyv: 4.5.4 1906 | 1907 | flatted@3.3.3: {} 1908 | 1909 | formdata-polyfill@4.0.10: 1910 | dependencies: 1911 | fetch-blob: 3.2.0 1912 | 1913 | forwarded@0.2.0: {} 1914 | 1915 | fresh@2.0.0: {} 1916 | 1917 | fsevents@2.3.3: 1918 | optional: true 1919 | 1920 | function-bind@1.1.2: {} 1921 | 1922 | get-intrinsic@1.3.0: 1923 | dependencies: 1924 | call-bind-apply-helpers: 1.0.2 1925 | es-define-property: 1.0.1 1926 | es-errors: 1.3.0 1927 | es-object-atoms: 1.1.1 1928 | function-bind: 1.1.2 1929 | get-proto: 1.0.1 1930 | gopd: 1.2.0 1931 | has-symbols: 1.1.0 1932 | hasown: 2.0.2 1933 | math-intrinsics: 1.1.0 1934 | 1935 | get-proto@1.0.1: 1936 | dependencies: 1937 | dunder-proto: 1.0.1 1938 | es-object-atoms: 1.1.1 1939 | 1940 | get-tsconfig@4.10.0: 1941 | dependencies: 1942 | resolve-pkg-maps: 1.0.0 1943 | 1944 | glob-parent@5.1.2: 1945 | dependencies: 1946 | is-glob: 4.0.3 1947 | 1948 | glob-parent@6.0.2: 1949 | dependencies: 1950 | is-glob: 4.0.3 1951 | 1952 | globals@14.0.0: {} 1953 | 1954 | globals@16.0.0: {} 1955 | 1956 | gopd@1.2.0: {} 1957 | 1958 | graphemer@1.4.0: {} 1959 | 1960 | has-flag@4.0.0: {} 1961 | 1962 | has-symbols@1.1.0: {} 1963 | 1964 | hasown@2.0.2: 1965 | dependencies: 1966 | function-bind: 1.1.2 1967 | 1968 | http-errors@2.0.0: 1969 | dependencies: 1970 | depd: 2.0.0 1971 | inherits: 2.0.4 1972 | setprototypeof: 1.2.0 1973 | statuses: 2.0.1 1974 | toidentifier: 1.0.1 1975 | 1976 | http-proxy-agent@7.0.2: 1977 | dependencies: 1978 | agent-base: 7.1.3 1979 | debug: 4.4.0 1980 | transitivePeerDependencies: 1981 | - supports-color 1982 | 1983 | https-proxy-agent@7.0.6: 1984 | dependencies: 1985 | agent-base: 7.1.3 1986 | debug: 4.4.0 1987 | transitivePeerDependencies: 1988 | - supports-color 1989 | 1990 | iconv-lite@0.6.3: 1991 | dependencies: 1992 | safer-buffer: 2.1.2 1993 | 1994 | ignore@5.3.2: {} 1995 | 1996 | import-fresh@3.3.1: 1997 | dependencies: 1998 | parent-module: 1.0.1 1999 | resolve-from: 4.0.0 2000 | 2001 | imurmurhash@0.1.4: {} 2002 | 2003 | inherits@2.0.4: {} 2004 | 2005 | ipaddr.js@1.9.1: {} 2006 | 2007 | is-docker@3.0.0: {} 2008 | 2009 | is-extglob@2.1.1: {} 2010 | 2011 | is-glob@4.0.3: 2012 | dependencies: 2013 | is-extglob: 2.1.1 2014 | 2015 | is-inside-container@1.0.0: 2016 | dependencies: 2017 | is-docker: 3.0.0 2018 | 2019 | is-number@7.0.0: {} 2020 | 2021 | is-promise@4.0.0: {} 2022 | 2023 | is-wsl@3.1.0: 2024 | dependencies: 2025 | is-inside-container: 1.0.0 2026 | 2027 | isexe@2.0.0: {} 2028 | 2029 | jiti@2.4.2: {} 2030 | 2031 | js-yaml@4.1.0: 2032 | dependencies: 2033 | argparse: 2.0.1 2034 | 2035 | json-buffer@3.0.1: {} 2036 | 2037 | json-schema-traverse@0.4.1: {} 2038 | 2039 | json-stable-stringify-without-jsonify@1.0.1: {} 2040 | 2041 | jsonwebtoken@9.0.2: 2042 | dependencies: 2043 | jws: 3.2.2 2044 | lodash.includes: 4.3.0 2045 | lodash.isboolean: 3.0.3 2046 | lodash.isinteger: 4.0.4 2047 | lodash.isnumber: 3.0.3 2048 | lodash.isplainobject: 4.0.6 2049 | lodash.isstring: 4.0.1 2050 | lodash.once: 4.1.1 2051 | ms: 2.1.3 2052 | semver: 7.7.1 2053 | 2054 | jwa@1.4.1: 2055 | dependencies: 2056 | buffer-equal-constant-time: 1.0.1 2057 | ecdsa-sig-formatter: 1.0.11 2058 | safe-buffer: 5.2.1 2059 | 2060 | jwa@2.0.0: 2061 | dependencies: 2062 | buffer-equal-constant-time: 1.0.1 2063 | ecdsa-sig-formatter: 1.0.11 2064 | safe-buffer: 5.2.1 2065 | 2066 | jws@3.2.2: 2067 | dependencies: 2068 | jwa: 1.4.1 2069 | safe-buffer: 5.2.1 2070 | 2071 | jws@4.0.0: 2072 | dependencies: 2073 | jwa: 2.0.0 2074 | safe-buffer: 5.2.1 2075 | 2076 | keyv@4.5.4: 2077 | dependencies: 2078 | json-buffer: 3.0.1 2079 | 2080 | levn@0.4.1: 2081 | dependencies: 2082 | prelude-ls: 1.2.1 2083 | type-check: 0.4.0 2084 | 2085 | locate-path@6.0.0: 2086 | dependencies: 2087 | p-locate: 5.0.0 2088 | 2089 | lodash.includes@4.3.0: {} 2090 | 2091 | lodash.isboolean@3.0.3: {} 2092 | 2093 | lodash.isinteger@4.0.4: {} 2094 | 2095 | lodash.isnumber@3.0.3: {} 2096 | 2097 | lodash.isplainobject@4.0.6: {} 2098 | 2099 | lodash.isstring@4.0.1: {} 2100 | 2101 | lodash.merge@4.6.2: {} 2102 | 2103 | lodash.once@4.1.1: {} 2104 | 2105 | math-intrinsics@1.1.0: {} 2106 | 2107 | media-typer@1.1.0: {} 2108 | 2109 | merge-descriptors@2.0.0: {} 2110 | 2111 | merge2@1.4.1: {} 2112 | 2113 | micromatch@4.0.8: 2114 | dependencies: 2115 | braces: 3.0.3 2116 | picomatch: 2.3.1 2117 | 2118 | microsoft-graph@2.8.0: 2119 | dependencies: 2120 | '@azure/identity': 4.8.0 2121 | https-proxy-agent: 7.0.6 2122 | node-fetch: 3.3.2 2123 | transitivePeerDependencies: 2124 | - supports-color 2125 | 2126 | mime-db@1.54.0: {} 2127 | 2128 | mime-types@3.0.1: 2129 | dependencies: 2130 | mime-db: 1.54.0 2131 | 2132 | minimatch@3.1.2: 2133 | dependencies: 2134 | brace-expansion: 1.1.11 2135 | 2136 | minimatch@9.0.5: 2137 | dependencies: 2138 | brace-expansion: 2.0.1 2139 | 2140 | ms@2.1.3: {} 2141 | 2142 | natural-compare@1.4.0: {} 2143 | 2144 | negotiator@1.0.0: {} 2145 | 2146 | node-domexception@1.0.0: {} 2147 | 2148 | node-fetch@3.3.2: 2149 | dependencies: 2150 | data-uri-to-buffer: 4.0.1 2151 | fetch-blob: 3.2.0 2152 | formdata-polyfill: 4.0.10 2153 | 2154 | object-assign@4.1.1: {} 2155 | 2156 | object-inspect@1.13.4: {} 2157 | 2158 | on-finished@2.4.1: 2159 | dependencies: 2160 | ee-first: 1.1.1 2161 | 2162 | once@1.4.0: 2163 | dependencies: 2164 | wrappy: 1.0.2 2165 | 2166 | open@10.1.1: 2167 | dependencies: 2168 | default-browser: 5.2.1 2169 | define-lazy-prop: 3.0.0 2170 | is-inside-container: 1.0.0 2171 | is-wsl: 3.1.0 2172 | 2173 | optionator@0.9.4: 2174 | dependencies: 2175 | deep-is: 0.1.4 2176 | fast-levenshtein: 2.0.6 2177 | levn: 0.4.1 2178 | prelude-ls: 1.2.1 2179 | type-check: 0.4.0 2180 | word-wrap: 1.2.5 2181 | 2182 | p-limit@3.1.0: 2183 | dependencies: 2184 | yocto-queue: 0.1.0 2185 | 2186 | p-locate@5.0.0: 2187 | dependencies: 2188 | p-limit: 3.1.0 2189 | 2190 | parent-module@1.0.1: 2191 | dependencies: 2192 | callsites: 3.1.0 2193 | 2194 | parseurl@1.3.3: {} 2195 | 2196 | path-exists@4.0.0: {} 2197 | 2198 | path-key@3.1.1: {} 2199 | 2200 | path-to-regexp@8.2.0: {} 2201 | 2202 | picomatch@2.3.1: {} 2203 | 2204 | pkce-challenge@5.0.0: {} 2205 | 2206 | prelude-ls@1.2.1: {} 2207 | 2208 | proxy-addr@2.0.7: 2209 | dependencies: 2210 | forwarded: 0.2.0 2211 | ipaddr.js: 1.9.1 2212 | 2213 | punycode@2.3.1: {} 2214 | 2215 | qs@6.14.0: 2216 | dependencies: 2217 | side-channel: 1.1.0 2218 | 2219 | queue-microtask@1.2.3: {} 2220 | 2221 | range-parser@1.2.1: {} 2222 | 2223 | raw-body@3.0.0: 2224 | dependencies: 2225 | bytes: 3.1.2 2226 | http-errors: 2.0.0 2227 | iconv-lite: 0.6.3 2228 | unpipe: 1.0.0 2229 | 2230 | regenerator-runtime@0.14.1: {} 2231 | 2232 | resolve-from@4.0.0: {} 2233 | 2234 | resolve-pkg-maps@1.0.0: {} 2235 | 2236 | reusify@1.1.0: {} 2237 | 2238 | router@2.2.0: 2239 | dependencies: 2240 | debug: 4.4.0 2241 | depd: 2.0.0 2242 | is-promise: 4.0.0 2243 | parseurl: 1.3.3 2244 | path-to-regexp: 8.2.0 2245 | transitivePeerDependencies: 2246 | - supports-color 2247 | 2248 | run-applescript@7.0.0: {} 2249 | 2250 | run-parallel@1.2.0: 2251 | dependencies: 2252 | queue-microtask: 1.2.3 2253 | 2254 | safe-buffer@5.2.1: {} 2255 | 2256 | safer-buffer@2.1.2: {} 2257 | 2258 | semver@7.7.1: {} 2259 | 2260 | send@1.2.0: 2261 | dependencies: 2262 | debug: 4.4.0 2263 | encodeurl: 2.0.0 2264 | escape-html: 1.0.3 2265 | etag: 1.8.1 2266 | fresh: 2.0.0 2267 | http-errors: 2.0.0 2268 | mime-types: 3.0.1 2269 | ms: 2.1.3 2270 | on-finished: 2.4.1 2271 | range-parser: 1.2.1 2272 | statuses: 2.0.1 2273 | transitivePeerDependencies: 2274 | - supports-color 2275 | 2276 | serve-static@2.2.0: 2277 | dependencies: 2278 | encodeurl: 2.0.0 2279 | escape-html: 1.0.3 2280 | parseurl: 1.3.3 2281 | send: 1.2.0 2282 | transitivePeerDependencies: 2283 | - supports-color 2284 | 2285 | setprototypeof@1.2.0: {} 2286 | 2287 | shebang-command@2.0.0: 2288 | dependencies: 2289 | shebang-regex: 3.0.0 2290 | 2291 | shebang-regex@3.0.0: {} 2292 | 2293 | side-channel-list@1.0.0: 2294 | dependencies: 2295 | es-errors: 1.3.0 2296 | object-inspect: 1.13.4 2297 | 2298 | side-channel-map@1.0.1: 2299 | dependencies: 2300 | call-bound: 1.0.4 2301 | es-errors: 1.3.0 2302 | get-intrinsic: 1.3.0 2303 | object-inspect: 1.13.4 2304 | 2305 | side-channel-weakmap@1.0.2: 2306 | dependencies: 2307 | call-bound: 1.0.4 2308 | es-errors: 1.3.0 2309 | get-intrinsic: 1.3.0 2310 | object-inspect: 1.13.4 2311 | side-channel-map: 1.0.1 2312 | 2313 | side-channel@1.1.0: 2314 | dependencies: 2315 | es-errors: 1.3.0 2316 | object-inspect: 1.13.4 2317 | side-channel-list: 1.0.0 2318 | side-channel-map: 1.0.1 2319 | side-channel-weakmap: 1.0.2 2320 | 2321 | statuses@2.0.1: {} 2322 | 2323 | stoppable@1.1.0: {} 2324 | 2325 | strip-json-comments@3.1.1: {} 2326 | 2327 | supports-color@7.2.0: 2328 | dependencies: 2329 | has-flag: 4.0.0 2330 | 2331 | to-regex-range@5.0.1: 2332 | dependencies: 2333 | is-number: 7.0.0 2334 | 2335 | toidentifier@1.0.1: {} 2336 | 2337 | ts-api-utils@2.1.0(typescript@5.8.3): 2338 | dependencies: 2339 | typescript: 5.8.3 2340 | 2341 | tslib@2.8.1: {} 2342 | 2343 | tsx@4.19.3: 2344 | dependencies: 2345 | esbuild: 0.25.2 2346 | get-tsconfig: 4.10.0 2347 | optionalDependencies: 2348 | fsevents: 2.3.3 2349 | 2350 | type-check@0.4.0: 2351 | dependencies: 2352 | prelude-ls: 1.2.1 2353 | 2354 | type-is@2.0.1: 2355 | dependencies: 2356 | content-type: 1.0.5 2357 | media-typer: 1.1.0 2358 | mime-types: 3.0.1 2359 | 2360 | typescript-eslint@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3): 2361 | dependencies: 2362 | '@typescript-eslint/eslint-plugin': 8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) 2363 | '@typescript-eslint/parser': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) 2364 | '@typescript-eslint/utils': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) 2365 | eslint: 9.24.0(jiti@2.4.2) 2366 | typescript: 5.8.3 2367 | transitivePeerDependencies: 2368 | - supports-color 2369 | 2370 | typescript@5.8.3: {} 2371 | 2372 | undici-types@6.21.0: {} 2373 | 2374 | unpipe@1.0.0: {} 2375 | 2376 | uri-js@4.4.1: 2377 | dependencies: 2378 | punycode: 2.3.1 2379 | 2380 | uuid@8.3.2: {} 2381 | 2382 | vary@1.1.2: {} 2383 | 2384 | web-streams-polyfill@3.3.3: {} 2385 | 2386 | which@2.0.2: 2387 | dependencies: 2388 | isexe: 2.0.0 2389 | 2390 | word-wrap@1.2.5: {} 2391 | 2392 | wrappy@1.0.2: {} 2393 | 2394 | yocto-queue@0.1.0: {} 2395 | 2396 | zod-to-json-schema@3.24.5(zod@3.24.2): 2397 | dependencies: 2398 | zod: 3.24.2 2399 | 2400 | zod@3.24.2: {} 2401 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; 2 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 3 | import { z } from "zod"; 4 | import { register } from "microsoft-graph/services/context"; 5 | import { getEnvironmentVariable } from "microsoft-graph/services/environmentVariable"; 6 | import { TenantId } from "microsoft-graph/models/TenantId"; 7 | import { ClientId } from "microsoft-graph/models/ClientId"; 8 | import { SiteId } from "microsoft-graph/models/SiteId"; 9 | import { ClientSecret } from "microsoft-graph/models/ClientSecret"; 10 | import dotenv from "dotenv"; 11 | 12 | import { createDriveRef } from "microsoft-graph/services/drive"; 13 | import { createSiteRef } from "microsoft-graph/services/site"; 14 | import { DriveId } from "microsoft-graph/models/DriveId"; 15 | import listDriveItems from "microsoft-graph/operations/driveItem/listDriveItems"; 16 | import { createDriveItemRef } from "microsoft-graph/services/driveItem"; 17 | import { DriveItemId } from "microsoft-graph/models/DriveItemId"; 18 | import getDriveItem from "microsoft-graph/operations/driveItem/getDriveItem"; 19 | import listSites from "microsoft-graph/operations/site/listSites"; 20 | dotenv.config(); 21 | 22 | // Initialize the MCP server and SharePoint connector 23 | async function createSharepointMcpServer() { 24 | 25 | const tenantId = getEnvironmentVariable("TENANT_ID") as TenantId; 26 | const clientId = getEnvironmentVariable("CLIENT_ID") as ClientId; 27 | const clientSecret = getEnvironmentVariable("CLIENT_SECRET") as ClientSecret; 28 | 29 | const driveId = getEnvironmentVariable("DRIVE_ID") as DriveId; 30 | const siteId = getEnvironmentVariable("SITE_ID") as SiteId; 31 | // Create the server 32 | const server = new McpServer({ 33 | name: "SharePoint Server", 34 | version: "1.0.0" 35 | }); 36 | 37 | const contextRef = register(tenantId, clientId, clientSecret); 38 | const siteRef = createSiteRef(contextRef, siteId); 39 | const driveRef = createDriveRef(siteRef, driveId); 40 | 41 | // Resource: Folder contents (root or specific folder) 42 | server.resource( 43 | "folder", 44 | new ResourceTemplate("sharepoint://folder/{folderId?}", { list: undefined }), 45 | async (uri) => { 46 | const items = await listDriveItems(driveRef); 47 | return { 48 | contents: [{ 49 | uri: uri.href, 50 | text: JSON.stringify(items, null, 2) 51 | }] 52 | }; 53 | } 54 | ); 55 | 56 | // Resource: Sites 57 | server.resource( 58 | "sites", 59 | "sharepoint://sites", 60 | async (uri) => { 61 | const items = await listSites(contextRef); 62 | return { 63 | contents: [{ 64 | uri: uri.href, 65 | text: JSON.stringify(items, null, 2) 66 | }] 67 | }; 68 | } 69 | ); 70 | 71 | // Resource: Document content 72 | server.resource( 73 | "document", 74 | new ResourceTemplate("sharepoint://document/{documentId}", { list: undefined }), 75 | async (uri, { documentId }) => { 76 | const driveItemRef = createDriveItemRef(driveRef, documentId as DriveItemId); 77 | const result = await getDriveItem(driveItemRef); 78 | return { 79 | contents: [{ 80 | uri: uri.href, 81 | text: result.content 82 | ? (typeof result.content === 'string' 83 | ? result.content 84 | : JSON.stringify(result.content, null, 2)) 85 | : "No content available" // Fallback value 86 | }] 87 | }; 88 | } 89 | ); 90 | 91 | // Tool: Search for documents 92 | server.tool( 93 | "search-documents", 94 | { 95 | query: z.string().describe("Search query to find documents"), 96 | maxResults: z.string().optional().describe("Maximum number of results to return (as a string)") 97 | }, 98 | async ({ query, maxResults = 10 }) => { 99 | try { 100 | const driveRef = createDriveRef(siteRef, driveId); 101 | const driveItems = await listDriveItems(driveRef); 102 | const results = driveItems.filter((item: any) => item.name.includes(query)).slice(0, parseInt(maxResults.toString(), 10)); 103 | return { 104 | content: [{ 105 | type: "text", 106 | text: JSON.stringify(results, null, 2) // Ensure this is a valid string 107 | }] 108 | }; 109 | } catch (error) { 110 | return { 111 | content: [{ 112 | type: "text", 113 | text: `Error searching documents: ${error}` 114 | }], 115 | isError: true 116 | }; 117 | } 118 | } 119 | ); 120 | 121 | // Download document content 122 | server.tool( 123 | "download-document", 124 | { 125 | documentId: z.string().describe("The ID of the document to download") 126 | }, 127 | async ({ documentId }) => { 128 | try { 129 | const driveItemRef = createDriveItemRef(driveRef, documentId as DriveItemId); 130 | const result = await getDriveItem(driveItemRef); 131 | return { 132 | content: [{ 133 | type: "text", 134 | text: result.content 135 | ? (typeof result.content === 'string' 136 | ? result.content 137 | : JSON.stringify(result.content, null, 2)) 138 | : "No content available" // Fallback value 139 | }] 140 | }; 141 | } catch (error) { 142 | return { 143 | content: [{ 144 | type: "text", 145 | text: `Error downloading document: ${error}` 146 | }], 147 | isError: true 148 | }; 149 | } 150 | } 151 | ); 152 | 153 | // Prompt: Search and summarize a document 154 | server.prompt( 155 | "document-summary", 156 | { 157 | documentId: z.string().describe("The ID of the document to summarize") 158 | }, 159 | ({ documentId }) => ({ 160 | messages: [{ 161 | role: "user", 162 | content: { 163 | type: "text", 164 | text: `Please retrieve the document with ID ${documentId} using the sharepoint://document/${documentId} resource, then provide a concise summary of its key points, main topics, and important information.` 165 | } 166 | }] 167 | }) 168 | ); 169 | 170 | // Prompt: Find relevant documents 171 | server.prompt( 172 | "find-relevant-documents", 173 | { 174 | topic: z.string().describe("The topic or subject to find documents about"), 175 | maxResults: z.string().optional().describe("Maximum number of results to return (as a string)") 176 | }, 177 | ({ topic, maxResults = "5" }) => ({ 178 | messages: [{ 179 | role: "user", 180 | content: { 181 | type: "text", 182 | text: `Please use the search-documents tool to find up to ${maxResults} documents related to "${topic}". For each document, provide the title, author, last modified date, and a brief description of what it appears to contain based on the metadata.` 183 | } 184 | }] 185 | }) 186 | ); 187 | 188 | // Prompt: Explore folder contents 189 | server.prompt( 190 | "explore-folder", 191 | { 192 | folderId: z.string().optional().describe("The ID of the folder to explore (leave empty for root folder)") 193 | }, 194 | ({ folderId }) => ({ 195 | messages: [{ 196 | role: "user", 197 | content: { 198 | type: "text", 199 | text: folderId 200 | ? `Please explore the contents of the folder with ID ${folderId} using the sharepoint://folder/${folderId} resource. List all documents and subfolders, organizing them by type and providing key details about each item.` 201 | : `Please explore the contents of the root folder using the sharepoint://folder resource. List all documents and subfolders, organizing them by type and providing key details about each item.` 202 | } 203 | }] 204 | }) 205 | ); 206 | 207 | return server; 208 | } 209 | 210 | // Example usage 211 | async function main() { 212 | 213 | // Create and start the server 214 | const server = await createSharepointMcpServer(); 215 | 216 | // Connect using stdio transport 217 | const transport = new StdioServerTransport(); 218 | await server.connect(transport); 219 | } 220 | 221 | // Run the server 222 | main().catch(error => { 223 | console.error("Error starting server:", error); 224 | process.exit(1); 225 | }); -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2024", 4 | "module": "NodeNext", 5 | "moduleResolution": "NodeNext", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "noImplicitAny": true, 12 | "forceConsistentCasingInFileNames": true 13 | }, 14 | "include": ["src/**/*"], 15 | "exclude": ["node_modules", "dist"] 16 | } --------------------------------------------------------------------------------