fastmcp 4.19.0 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -285,6 +285,17 @@ var DEFAULT_AUTHORIZATION_CODE_TTL = 300;
285
285
  var DEFAULT_TRANSACTION_TTL = 600;
286
286
  var DEFAULT_UPSTREAM_REQUEST_TIMEOUT_MS = 1e4;
287
287
 
288
+ // src/cancelResponseBody.ts
289
+ var cancelResponseBody = async (response) => {
290
+ if (!response.body) {
291
+ return;
292
+ }
293
+ try {
294
+ await response.body.cancel();
295
+ } catch (e) {
296
+ }
297
+ };
298
+
288
299
  // src/auth/utils/cimd.ts
289
300
  var CIMD_FETCH_TIMEOUT_MS = 5e3;
290
301
  var CIMD_CLIENT_TTL_MS = 15 * 60 * 1e3;
@@ -293,7 +304,7 @@ async function resolveCimdClient(clientId, requestedRedirectUri, validateRedirec
293
304
  let url;
294
305
  try {
295
306
  url = new URL(clientId);
296
- } catch (e) {
307
+ } catch (e2) {
297
308
  return null;
298
309
  }
299
310
  if (url.protocol !== "https:" || url.search) {
@@ -308,10 +319,11 @@ async function resolveCimdClient(clientId, requestedRedirectUri, validateRedirec
308
319
  redirect: "error",
309
320
  signal: AbortSignal.timeout(CIMD_FETCH_TIMEOUT_MS)
310
321
  });
311
- } catch (e2) {
322
+ } catch (e3) {
312
323
  return null;
313
324
  }
314
325
  if (!response.ok) {
326
+ await cancelResponseBody(response);
315
327
  return null;
316
328
  }
317
329
  const text = await readBoundedText(response);
@@ -321,7 +333,7 @@ async function resolveCimdClient(clientId, requestedRedirectUri, validateRedirec
321
333
  let parsed;
322
334
  try {
323
335
  parsed = JSON.parse(text);
324
- } catch (e3) {
336
+ } catch (e4) {
325
337
  return null;
326
338
  }
327
339
  if (typeof parsed !== "object" || parsed === null) {
@@ -425,6 +437,7 @@ function optionalString(value) {
425
437
  async function readBoundedText(response) {
426
438
  const contentLength = response.headers.get("content-length");
427
439
  if (contentLength && Number(contentLength) > CIMD_MAX_RESPONSE_BYTES) {
440
+ await cancelResponseBody(response);
428
441
  return null;
429
442
  }
430
443
  const reader = _optionalChain([response, 'access', _ => _.body, 'optionalAccess', _2 => _2.getReader, 'call', _3 => _3()]);
@@ -446,7 +459,7 @@ async function readBoundedText(response) {
446
459
  }
447
460
  chunks.push(value);
448
461
  }
449
- } catch (e4) {
462
+ } catch (e5) {
450
463
  return null;
451
464
  }
452
465
  return Buffer.concat(chunks).toString("utf-8");
@@ -589,7 +602,7 @@ var ClaimsExtractor = (_class = class {
589
602
  const stringified = JSON.stringify(value);
590
603
  const maxSize = _nullishCoalesce(this.config.maxClaimValueSize, () => ( 2e3));
591
604
  return stringified.length <= maxSize;
592
- } catch (e5) {
605
+ } catch (e6) {
593
606
  return false;
594
607
  }
595
608
  }
@@ -870,7 +883,7 @@ var ConsentManager = class {
870
883
  return null;
871
884
  }
872
885
  return data;
873
- } catch (e6) {
886
+ } catch (e7) {
874
887
  return null;
875
888
  }
876
889
  }
@@ -1846,7 +1859,7 @@ var OAuthProxy = (_class4 = class {
1846
1859
  const error = await tokenResponse.json();
1847
1860
  errorCode = error.error || "server_error";
1848
1861
  errorDescription = error.error_description;
1849
- } catch (e7) {
1862
+ } catch (e8) {
1850
1863
  errorDescription = `Upstream returned HTTP ${tokenResponse.status} ${tokenResponse.statusText}`;
1851
1864
  }
1852
1865
  throw new OAuthProxyError(errorCode, errorDescription);
@@ -2010,7 +2023,7 @@ var OAuthProxy = (_class4 = class {
2010
2023
  const error = await tokenResponse.json();
2011
2024
  errorCode = error.error || "invalid_grant";
2012
2025
  errorDescription = error.error_description;
2013
- } catch (e8) {
2026
+ } catch (e9) {
2014
2027
  errorDescription = `Upstream returned HTTP ${tokenResponse.status} ${tokenResponse.statusText}`;
2015
2028
  }
2016
2029
  throw new OAuthProxyError(errorCode, errorDescription);
@@ -2360,7 +2373,7 @@ var OAuthProxy = (_class4 = class {
2360
2373
  const error = await tokenResponse.json();
2361
2374
  errorCode = error.error || "invalid_grant";
2362
2375
  errorDescription = error.error_description || "Upstream refresh failed";
2363
- } catch (e9) {
2376
+ } catch (e10) {
2364
2377
  errorDescription = `Upstream returned HTTP ${tokenResponse.status} ${tokenResponse.statusText}`;
2365
2378
  }
2366
2379
  throw new OAuthProxyError(errorCode, errorDescription);
@@ -2471,7 +2484,7 @@ var OAuthProxy = (_class4 = class {
2471
2484
  let parsed;
2472
2485
  try {
2473
2486
  parsed = new URL(uri);
2474
- } catch (e10) {
2487
+ } catch (e11) {
2475
2488
  return false;
2476
2489
  }
2477
2490
  if (parsed.username !== "" || parsed.password !== "") {
@@ -2772,7 +2785,7 @@ var DiskStore = (_class5 = class {
2772
2785
  console.warn(`Failed to read/parse file ${file}, deleting:`, error);
2773
2786
  try {
2774
2787
  await _promises.rm.call(void 0, _path.join.call(void 0, this.directory, file));
2775
- } catch (e11) {
2788
+ } catch (e12) {
2776
2789
  }
2777
2790
  }
2778
2791
  }
@@ -2852,7 +2865,7 @@ var DiskStore = (_class5 = class {
2852
2865
  await this.ensureDirectory();
2853
2866
  const files = await _promises.readdir.call(void 0, this.directory);
2854
2867
  return files.filter((f) => f.endsWith(this.fileExtension)).length;
2855
- } catch (e12) {
2868
+ } catch (e13) {
2856
2869
  return 0;
2857
2870
  }
2858
2871
  }
@@ -3075,5 +3088,6 @@ Original error: ${error.message}`
3075
3088
 
3076
3089
 
3077
3090
 
3078
- exports.getAuthSession = getAuthSession; exports.requireAll = requireAll; exports.requireAny = requireAny; exports.requireAuth = requireAuth; exports.requireRole = requireRole; exports.requireScopes = requireScopes; exports.DEFAULT_ACCESS_TOKEN_TTL = DEFAULT_ACCESS_TOKEN_TTL; exports.DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH = DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH; exports.DEFAULT_REFRESH_TOKEN_TTL = DEFAULT_REFRESH_TOKEN_TTL; exports.DEFAULT_AUTHORIZATION_CODE_TTL = DEFAULT_AUTHORIZATION_CODE_TTL; exports.DEFAULT_TRANSACTION_TTL = DEFAULT_TRANSACTION_TTL; exports.ConsentManager = ConsentManager; exports.JWTIssuer = JWTIssuer; exports.PKCEUtils = PKCEUtils; exports.EncryptedTokenStorage = EncryptedTokenStorage; exports.MemoryTokenStorage = MemoryTokenStorage; exports.OAuthProxy = OAuthProxy; exports.OAuthProxyError = OAuthProxyError; exports.AuthProvider = AuthProvider; exports.AzureProvider = AzureProvider; exports.GitHubProvider = GitHubProvider; exports.GoogleProvider = GoogleProvider; exports.OAuthProvider = OAuthProvider; exports.DiskStore = DiskStore; exports.JWKSVerifier = JWKSVerifier;
3079
- //# sourceMappingURL=chunk-E3HXGE2O.cjs.map
3091
+
3092
+ exports.cancelResponseBody = cancelResponseBody; exports.getAuthSession = getAuthSession; exports.requireAll = requireAll; exports.requireAny = requireAny; exports.requireAuth = requireAuth; exports.requireRole = requireRole; exports.requireScopes = requireScopes; exports.DEFAULT_ACCESS_TOKEN_TTL = DEFAULT_ACCESS_TOKEN_TTL; exports.DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH = DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH; exports.DEFAULT_REFRESH_TOKEN_TTL = DEFAULT_REFRESH_TOKEN_TTL; exports.DEFAULT_AUTHORIZATION_CODE_TTL = DEFAULT_AUTHORIZATION_CODE_TTL; exports.DEFAULT_TRANSACTION_TTL = DEFAULT_TRANSACTION_TTL; exports.ConsentManager = ConsentManager; exports.JWTIssuer = JWTIssuer; exports.PKCEUtils = PKCEUtils; exports.EncryptedTokenStorage = EncryptedTokenStorage; exports.MemoryTokenStorage = MemoryTokenStorage; exports.OAuthProxy = OAuthProxy; exports.OAuthProxyError = OAuthProxyError; exports.AuthProvider = AuthProvider; exports.AzureProvider = AzureProvider; exports.GitHubProvider = GitHubProvider; exports.GoogleProvider = GoogleProvider; exports.OAuthProvider = OAuthProvider; exports.DiskStore = DiskStore; exports.JWKSVerifier = JWKSVerifier;
3093
+ //# sourceMappingURL=chunk-YO76IUZ6.cjs.map