@j0hanz/superfetch 2.1.4 → 2.1.6

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.
Files changed (550) hide show
  1. package/dist/cache.d.ts +1 -0
  2. package/dist/cache.d.ts.map +1 -0
  3. package/dist/cache.js +2 -1
  4. package/dist/cache.js.map +1 -0
  5. package/dist/config.d.ts +1 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +1 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/crypto.d.ts +1 -0
  10. package/dist/crypto.d.ts.map +1 -0
  11. package/dist/crypto.js +1 -0
  12. package/dist/crypto.js.map +1 -0
  13. package/dist/errors.d.ts +1 -0
  14. package/dist/errors.d.ts.map +1 -0
  15. package/dist/errors.js +1 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/fetch.d.ts +1 -0
  18. package/dist/fetch.d.ts.map +1 -0
  19. package/dist/fetch.js +2 -1
  20. package/dist/fetch.js.map +1 -0
  21. package/dist/http.d.ts +1 -0
  22. package/dist/http.d.ts.map +1 -0
  23. package/dist/http.js +2 -1
  24. package/dist/http.js.map +1 -0
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/mcp.d.ts +1 -0
  29. package/dist/mcp.d.ts.map +1 -0
  30. package/dist/mcp.js +1 -0
  31. package/dist/mcp.js.map +1 -0
  32. package/dist/observability.d.ts +1 -0
  33. package/dist/observability.d.ts.map +1 -0
  34. package/dist/observability.js +1 -0
  35. package/dist/observability.js.map +1 -0
  36. package/dist/tools.d.ts +1 -0
  37. package/dist/tools.d.ts.map +1 -0
  38. package/dist/tools.js +2 -1
  39. package/dist/tools.js.map +1 -0
  40. package/dist/transform.d.ts +1 -0
  41. package/dist/transform.d.ts.map +1 -0
  42. package/dist/transform.js +2 -5
  43. package/dist/transform.js.map +1 -0
  44. package/dist/{utils.d.ts → type-guards.d.ts} +1 -0
  45. package/dist/type-guards.d.ts.map +1 -0
  46. package/dist/{utils.js → type-guards.js} +1 -0
  47. package/dist/type-guards.js.map +1 -0
  48. package/dist/workers/transform-worker.d.ts +1 -0
  49. package/dist/workers/transform-worker.d.ts.map +1 -0
  50. package/dist/workers/transform-worker.js +2 -1
  51. package/dist/workers/transform-worker.js.map +1 -0
  52. package/package.json +7 -4
  53. package/dist/config/auth-config.d.ts +0 -16
  54. package/dist/config/auth-config.js +0 -53
  55. package/dist/config/constants.d.ts +0 -17
  56. package/dist/config/constants.d.ts.map +0 -1
  57. package/dist/config/constants.js +0 -22
  58. package/dist/config/constants.js.map +0 -1
  59. package/dist/config/env-parsers.d.ts +0 -8
  60. package/dist/config/env-parsers.js +0 -96
  61. package/dist/config/formatting.d.ts +0 -7
  62. package/dist/config/formatting.d.ts.map +0 -1
  63. package/dist/config/formatting.js +0 -9
  64. package/dist/config/formatting.js.map +0 -1
  65. package/dist/config/index.d.ts +0 -61
  66. package/dist/config/index.d.ts.map +0 -1
  67. package/dist/config/index.js +0 -107
  68. package/dist/config/index.js.map +0 -1
  69. package/dist/config/types/content.d.ts +0 -41
  70. package/dist/config/types/content.d.ts.map +0 -1
  71. package/dist/config/types/content.js +0 -1
  72. package/dist/config/types/content.js.map +0 -1
  73. package/dist/config/types/runtime.d.ts +0 -72
  74. package/dist/config/types/runtime.d.ts.map +0 -1
  75. package/dist/config/types/runtime.js +0 -1
  76. package/dist/config/types/runtime.js.map +0 -1
  77. package/dist/config/types/tools.d.ts +0 -28
  78. package/dist/config/types/tools.d.ts.map +0 -1
  79. package/dist/config/types/tools.js +0 -1
  80. package/dist/config/types/tools.js.map +0 -1
  81. package/dist/config/types.d.ts +0 -4
  82. package/dist/config/types.d.ts.map +0 -1
  83. package/dist/config/types.js +0 -2
  84. package/dist/config/types.js.map +0 -1
  85. package/dist/errors/app-error.d.ts +0 -7
  86. package/dist/errors/app-error.d.ts.map +0 -1
  87. package/dist/errors/app-error.js +0 -16
  88. package/dist/errors/app-error.js.map +0 -1
  89. package/dist/errors/index.d.ts +0 -2
  90. package/dist/errors/index.d.ts.map +0 -1
  91. package/dist/errors/index.js +0 -2
  92. package/dist/errors/index.js.map +0 -1
  93. package/dist/http/accept-policy.d.ts +0 -3
  94. package/dist/http/accept-policy.js +0 -45
  95. package/dist/http/async-handler.d.ts +0 -2
  96. package/dist/http/async-handler.js +0 -5
  97. package/dist/http/auth-introspection.d.ts +0 -2
  98. package/dist/http/auth-introspection.js +0 -141
  99. package/dist/http/auth-static.d.ts +0 -2
  100. package/dist/http/auth-static.js +0 -23
  101. package/dist/http/auth.d.ts +0 -3
  102. package/dist/http/auth.d.ts.map +0 -1
  103. package/dist/http/auth.js +0 -269
  104. package/dist/http/auth.js.map +0 -1
  105. package/dist/http/base-middleware.d.ts +0 -7
  106. package/dist/http/base-middleware.js +0 -143
  107. package/dist/http/cors.d.ts +0 -2
  108. package/dist/http/cors.d.ts.map +0 -1
  109. package/dist/http/cors.js +0 -9
  110. package/dist/http/cors.js.map +0 -1
  111. package/dist/http/download-routes.d.ts +0 -2
  112. package/dist/http/download-routes.d.ts.map +0 -1
  113. package/dist/http/download-routes.js +0 -104
  114. package/dist/http/download-routes.js.map +0 -1
  115. package/dist/http/error-handler.d.ts +0 -2
  116. package/dist/http/error-handler.js +0 -55
  117. package/dist/http/host-allowlist.d.ts +0 -3
  118. package/dist/http/host-allowlist.js +0 -117
  119. package/dist/http/jsonrpc-http.d.ts +0 -2
  120. package/dist/http/jsonrpc-http.js +0 -10
  121. package/dist/http/mcp-routes.d.ts +0 -9
  122. package/dist/http/mcp-routes.d.ts.map +0 -1
  123. package/dist/http/mcp-routes.js +0 -204
  124. package/dist/http/mcp-routes.js.map +0 -1
  125. package/dist/http/mcp-session-eviction.d.ts +0 -3
  126. package/dist/http/mcp-session-eviction.js +0 -24
  127. package/dist/http/mcp-session-helpers.d.ts +0 -12
  128. package/dist/http/mcp-session-helpers.d.ts.map +0 -1
  129. package/dist/http/mcp-session-helpers.js +0 -64
  130. package/dist/http/mcp-session-helpers.js.map +0 -1
  131. package/dist/http/mcp-session-init.d.ts +0 -7
  132. package/dist/http/mcp-session-init.js +0 -94
  133. package/dist/http/mcp-session-slots.d.ts +0 -17
  134. package/dist/http/mcp-session-slots.js +0 -55
  135. package/dist/http/mcp-session-transport-init.d.ts +0 -7
  136. package/dist/http/mcp-session-transport-init.js +0 -41
  137. package/dist/http/mcp-session-transport.d.ts +0 -7
  138. package/dist/http/mcp-session-transport.js +0 -57
  139. package/dist/http/mcp-session-types.d.ts +0 -5
  140. package/dist/http/mcp-session-types.js +0 -1
  141. package/dist/http/mcp-session.d.ts +0 -10
  142. package/dist/http/mcp-session.d.ts.map +0 -1
  143. package/dist/http/mcp-session.js +0 -23
  144. package/dist/http/mcp-session.js.map +0 -1
  145. package/dist/http/mcp-sessions.d.ts +0 -41
  146. package/dist/http/mcp-sessions.js +0 -392
  147. package/dist/http/mcp-validation.d.ts +0 -3
  148. package/dist/http/mcp-validation.d.ts.map +0 -1
  149. package/dist/http/mcp-validation.js +0 -14
  150. package/dist/http/mcp-validation.js.map +0 -1
  151. package/dist/http/protocol-policy.d.ts +0 -2
  152. package/dist/http/protocol-policy.js +0 -31
  153. package/dist/http/rate-limit.d.ts +0 -12
  154. package/dist/http/rate-limit.d.ts.map +0 -1
  155. package/dist/http/rate-limit.js +0 -93
  156. package/dist/http/rate-limit.js.map +0 -1
  157. package/dist/http/server-config.d.ts +0 -1
  158. package/dist/http/server-config.js +0 -40
  159. package/dist/http/server-middleware.d.ts +0 -7
  160. package/dist/http/server-middleware.d.ts.map +0 -1
  161. package/dist/http/server-middleware.js +0 -52
  162. package/dist/http/server-middleware.js.map +0 -1
  163. package/dist/http/server-shutdown.d.ts +0 -4
  164. package/dist/http/server-shutdown.js +0 -43
  165. package/dist/http/server-tuning.d.ts +0 -9
  166. package/dist/http/server-tuning.js +0 -45
  167. package/dist/http/server.d.ts +0 -3
  168. package/dist/http/server.d.ts.map +0 -1
  169. package/dist/http/server.js +0 -291
  170. package/dist/http/server.js.map +0 -1
  171. package/dist/http/session-cleanup.d.ts +0 -2
  172. package/dist/http/session-cleanup.d.ts.map +0 -1
  173. package/dist/http/session-cleanup.js +0 -40
  174. package/dist/http/session-cleanup.js.map +0 -1
  175. package/dist/http/sessions.d.ts +0 -14
  176. package/dist/http/sessions.d.ts.map +0 -1
  177. package/dist/http/sessions.js +0 -63
  178. package/dist/http/sessions.js.map +0 -1
  179. package/dist/middleware/error-handler.d.ts +0 -2
  180. package/dist/middleware/error-handler.d.ts.map +0 -1
  181. package/dist/middleware/error-handler.js +0 -56
  182. package/dist/middleware/error-handler.js.map +0 -1
  183. package/dist/middleware/rate-limiter.d.ts +0 -16
  184. package/dist/middleware/rate-limiter.d.ts.map +0 -1
  185. package/dist/middleware/rate-limiter.js +0 -111
  186. package/dist/middleware/rate-limiter.js.map +0 -1
  187. package/dist/parsers/base-html-element-parser.d.ts +0 -43
  188. package/dist/parsers/base-html-element-parser.d.ts.map +0 -1
  189. package/dist/parsers/base-html-element-parser.js +0 -59
  190. package/dist/parsers/base-html-element-parser.js.map +0 -1
  191. package/dist/parsers/heading-element-parser.d.ts +0 -14
  192. package/dist/parsers/heading-element-parser.d.ts.map +0 -1
  193. package/dist/parsers/heading-element-parser.js +0 -26
  194. package/dist/parsers/heading-element-parser.js.map +0 -1
  195. package/dist/parsers/image-element-parser.d.ts +0 -16
  196. package/dist/parsers/image-element-parser.d.ts.map +0 -1
  197. package/dist/parsers/image-element-parser.js +0 -33
  198. package/dist/parsers/image-element-parser.js.map +0 -1
  199. package/dist/parsers/link-element-parser.d.ts +0 -15
  200. package/dist/parsers/link-element-parser.d.ts.map +0 -1
  201. package/dist/parsers/link-element-parser.js +0 -28
  202. package/dist/parsers/link-element-parser.js.map +0 -1
  203. package/dist/parsers/open-graph-parser.d.ts +0 -17
  204. package/dist/parsers/open-graph-parser.d.ts.map +0 -1
  205. package/dist/parsers/open-graph-parser.js +0 -41
  206. package/dist/parsers/open-graph-parser.js.map +0 -1
  207. package/dist/parsers/schema-org-parser.d.ts +0 -17
  208. package/dist/parsers/schema-org-parser.d.ts.map +0 -1
  209. package/dist/parsers/schema-org-parser.js +0 -32
  210. package/dist/parsers/schema-org-parser.js.map +0 -1
  211. package/dist/parsers/standard-meta-parser.d.ts +0 -18
  212. package/dist/parsers/standard-meta-parser.d.ts.map +0 -1
  213. package/dist/parsers/standard-meta-parser.js +0 -32
  214. package/dist/parsers/standard-meta-parser.js.map +0 -1
  215. package/dist/parsers/twitter-card-parser.d.ts +0 -17
  216. package/dist/parsers/twitter-card-parser.d.ts.map +0 -1
  217. package/dist/parsers/twitter-card-parser.js +0 -41
  218. package/dist/parsers/twitter-card-parser.js.map +0 -1
  219. package/dist/prompts/index.d.ts +0 -3
  220. package/dist/prompts/index.d.ts.map +0 -1
  221. package/dist/prompts/index.js +0 -73
  222. package/dist/prompts/index.js.map +0 -1
  223. package/dist/resources/cached-content-params.d.ts +0 -5
  224. package/dist/resources/cached-content-params.js +0 -36
  225. package/dist/resources/cached-content.d.ts +0 -2
  226. package/dist/resources/cached-content.d.ts.map +0 -1
  227. package/dist/resources/cached-content.js +0 -132
  228. package/dist/resources/cached-content.js.map +0 -1
  229. package/dist/resources/index.d.ts +0 -2
  230. package/dist/resources/index.d.ts.map +0 -1
  231. package/dist/resources/index.js +0 -4
  232. package/dist/resources/index.js.map +0 -1
  233. package/dist/server.d.ts +0 -3
  234. package/dist/server.d.ts.map +0 -1
  235. package/dist/server.js +0 -94
  236. package/dist/server.js.map +0 -1
  237. package/dist/services/cache-events.d.ts +0 -8
  238. package/dist/services/cache-events.js +0 -19
  239. package/dist/services/cache-keys.d.ts +0 -7
  240. package/dist/services/cache-keys.js +0 -57
  241. package/dist/services/cache.d.ts +0 -17
  242. package/dist/services/cache.d.ts.map +0 -1
  243. package/dist/services/cache.js +0 -145
  244. package/dist/services/cache.js.map +0 -1
  245. package/dist/services/cache.service.d.ts +0 -52
  246. package/dist/services/cache.service.d.ts.map +0 -1
  247. package/dist/services/cache.service.js +0 -113
  248. package/dist/services/cache.service.js.map +0 -1
  249. package/dist/services/card-extractor.d.ts +0 -6
  250. package/dist/services/card-extractor.d.ts.map +0 -1
  251. package/dist/services/card-extractor.js +0 -199
  252. package/dist/services/card-extractor.js.map +0 -1
  253. package/dist/services/context.d.ts +0 -10
  254. package/dist/services/context.d.ts.map +0 -1
  255. package/dist/services/context.js +0 -14
  256. package/dist/services/context.js.map +0 -1
  257. package/dist/services/extractor.d.ts +0 -5
  258. package/dist/services/extractor.d.ts.map +0 -1
  259. package/dist/services/extractor.js +0 -142
  260. package/dist/services/extractor.js.map +0 -1
  261. package/dist/services/extractor.service.d.ts +0 -18
  262. package/dist/services/extractor.service.d.ts.map +0 -1
  263. package/dist/services/extractor.service.js +0 -75
  264. package/dist/services/extractor.service.js.map +0 -1
  265. package/dist/services/fetcher/agents.d.ts +0 -3
  266. package/dist/services/fetcher/agents.d.ts.map +0 -1
  267. package/dist/services/fetcher/agents.js +0 -100
  268. package/dist/services/fetcher/agents.js.map +0 -1
  269. package/dist/services/fetcher/dns-selection.d.ts +0 -2
  270. package/dist/services/fetcher/dns-selection.js +0 -72
  271. package/dist/services/fetcher/errors.d.ts +0 -4
  272. package/dist/services/fetcher/errors.d.ts.map +0 -1
  273. package/dist/services/fetcher/errors.js +0 -70
  274. package/dist/services/fetcher/errors.js.map +0 -1
  275. package/dist/services/fetcher/headers.d.ts +0 -2
  276. package/dist/services/fetcher/headers.d.ts.map +0 -1
  277. package/dist/services/fetcher/headers.js +0 -6
  278. package/dist/services/fetcher/headers.js.map +0 -1
  279. package/dist/services/fetcher/interceptors.d.ts +0 -10
  280. package/dist/services/fetcher/interceptors.d.ts.map +0 -1
  281. package/dist/services/fetcher/interceptors.js +0 -108
  282. package/dist/services/fetcher/interceptors.js.map +0 -1
  283. package/dist/services/fetcher/redirects.d.ts +0 -4
  284. package/dist/services/fetcher/redirects.d.ts.map +0 -1
  285. package/dist/services/fetcher/redirects.js +0 -78
  286. package/dist/services/fetcher/redirects.js.map +0 -1
  287. package/dist/services/fetcher/response.d.ts +0 -4
  288. package/dist/services/fetcher/response.d.ts.map +0 -1
  289. package/dist/services/fetcher/response.js +0 -104
  290. package/dist/services/fetcher/response.js.map +0 -1
  291. package/dist/services/fetcher/retry-policy.d.ts +0 -1
  292. package/dist/services/fetcher/retry-policy.d.ts.map +0 -1
  293. package/dist/services/fetcher/retry-policy.js +0 -131
  294. package/dist/services/fetcher/retry-policy.js.map +0 -1
  295. package/dist/services/fetcher.d.ts +0 -25
  296. package/dist/services/fetcher.d.ts.map +0 -1
  297. package/dist/services/fetcher.js +0 -607
  298. package/dist/services/fetcher.js.map +0 -1
  299. package/dist/services/fetcher.service.d.ts +0 -18
  300. package/dist/services/fetcher.service.d.ts.map +0 -1
  301. package/dist/services/fetcher.service.js +0 -122
  302. package/dist/services/fetcher.service.js.map +0 -1
  303. package/dist/services/fifo-queue.d.ts +0 -8
  304. package/dist/services/fifo-queue.js +0 -25
  305. package/dist/services/logger.d.ts +0 -5
  306. package/dist/services/logger.d.ts.map +0 -1
  307. package/dist/services/logger.js +0 -52
  308. package/dist/services/logger.js.map +0 -1
  309. package/dist/services/logger.service.d.ts +0 -5
  310. package/dist/services/logger.service.d.ts.map +0 -1
  311. package/dist/services/logger.service.js +0 -57
  312. package/dist/services/logger.service.js.map +0 -1
  313. package/dist/services/metadata-collector.d.ts +0 -2
  314. package/dist/services/metadata-collector.js +0 -80
  315. package/dist/services/parser.d.ts +0 -6
  316. package/dist/services/parser.d.ts.map +0 -1
  317. package/dist/services/parser.js +0 -278
  318. package/dist/services/parser.js.map +0 -1
  319. package/dist/services/parser.service.d.ts +0 -42
  320. package/dist/services/parser.service.d.ts.map +0 -1
  321. package/dist/services/parser.service.js +0 -209
  322. package/dist/services/parser.service.js.map +0 -1
  323. package/dist/services/session-manager.d.ts +0 -18
  324. package/dist/services/session-manager.d.ts.map +0 -1
  325. package/dist/services/session-manager.js +0 -73
  326. package/dist/services/session-manager.js.map +0 -1
  327. package/dist/services/telemetry.d.ts +0 -19
  328. package/dist/services/telemetry.js +0 -43
  329. package/dist/services/transform-worker-pool.d.ts +0 -11
  330. package/dist/services/transform-worker-pool.js +0 -244
  331. package/dist/services/transform-worker-types.d.ts +0 -32
  332. package/dist/services/transform-worker-types.js +0 -14
  333. package/dist/strategies/exponential-backoff-strategy.d.ts +0 -13
  334. package/dist/strategies/exponential-backoff-strategy.d.ts.map +0 -1
  335. package/dist/strategies/exponential-backoff-strategy.js +0 -32
  336. package/dist/strategies/exponential-backoff-strategy.js.map +0 -1
  337. package/dist/tools/handlers/fetch-links/link-extractor.d.ts +0 -4
  338. package/dist/tools/handlers/fetch-links/link-extractor.d.ts.map +0 -1
  339. package/dist/tools/handlers/fetch-links/link-extractor.js +0 -159
  340. package/dist/tools/handlers/fetch-links/link-extractor.js.map +0 -1
  341. package/dist/tools/handlers/fetch-links.tool.d.ts +0 -5
  342. package/dist/tools/handlers/fetch-links.tool.d.ts.map +0 -1
  343. package/dist/tools/handlers/fetch-links.tool.js +0 -98
  344. package/dist/tools/handlers/fetch-links.tool.js.map +0 -1
  345. package/dist/tools/handlers/fetch-markdown.tool.d.ts +0 -11
  346. package/dist/tools/handlers/fetch-markdown.tool.d.ts.map +0 -1
  347. package/dist/tools/handlers/fetch-markdown.tool.js +0 -97
  348. package/dist/tools/handlers/fetch-markdown.tool.js.map +0 -1
  349. package/dist/tools/handlers/fetch-single.shared.d.ts +0 -31
  350. package/dist/tools/handlers/fetch-single.shared.d.ts.map +0 -1
  351. package/dist/tools/handlers/fetch-single.shared.js +0 -223
  352. package/dist/tools/handlers/fetch-single.shared.js.map +0 -1
  353. package/dist/tools/handlers/fetch-url.tool.d.ts +0 -10
  354. package/dist/tools/handlers/fetch-url.tool.d.ts.map +0 -1
  355. package/dist/tools/handlers/fetch-url.tool.js +0 -119
  356. package/dist/tools/handlers/fetch-url.tool.js.map +0 -1
  357. package/dist/tools/handlers/fetch-urls/processor.d.ts +0 -13
  358. package/dist/tools/handlers/fetch-urls/processor.d.ts.map +0 -1
  359. package/dist/tools/handlers/fetch-urls/processor.js +0 -153
  360. package/dist/tools/handlers/fetch-urls/processor.js.map +0 -1
  361. package/dist/tools/handlers/fetch-urls/response.d.ts +0 -3
  362. package/dist/tools/handlers/fetch-urls/response.d.ts.map +0 -1
  363. package/dist/tools/handlers/fetch-urls/response.js +0 -79
  364. package/dist/tools/handlers/fetch-urls/response.js.map +0 -1
  365. package/dist/tools/handlers/fetch-urls/validation.d.ts +0 -5
  366. package/dist/tools/handlers/fetch-urls/validation.d.ts.map +0 -1
  367. package/dist/tools/handlers/fetch-urls/validation.js +0 -18
  368. package/dist/tools/handlers/fetch-urls/validation.js.map +0 -1
  369. package/dist/tools/handlers/fetch-urls.tool.d.ts +0 -5
  370. package/dist/tools/handlers/fetch-urls.tool.d.ts.map +0 -1
  371. package/dist/tools/handlers/fetch-urls.tool.js +0 -124
  372. package/dist/tools/handlers/fetch-urls.tool.js.map +0 -1
  373. package/dist/tools/index.d.ts +0 -3
  374. package/dist/tools/index.d.ts.map +0 -1
  375. package/dist/tools/index.js +0 -37
  376. package/dist/tools/index.js.map +0 -1
  377. package/dist/tools/schemas.d.ts +0 -12
  378. package/dist/tools/schemas.d.ts.map +0 -1
  379. package/dist/tools/schemas.js +0 -21
  380. package/dist/tools/schemas.js.map +0 -1
  381. package/dist/tools/utils/cache-vary.d.ts +0 -1
  382. package/dist/tools/utils/cache-vary.d.ts.map +0 -1
  383. package/dist/tools/utils/cache-vary.js +0 -12
  384. package/dist/tools/utils/cache-vary.js.map +0 -1
  385. package/dist/tools/utils/cached-markdown.d.ts +0 -5
  386. package/dist/tools/utils/cached-markdown.js +0 -46
  387. package/dist/tools/utils/common.d.ts +0 -5
  388. package/dist/tools/utils/common.d.ts.map +0 -1
  389. package/dist/tools/utils/common.js +0 -42
  390. package/dist/tools/utils/common.js.map +0 -1
  391. package/dist/tools/utils/content-shaping.d.ts +0 -4
  392. package/dist/tools/utils/content-shaping.js +0 -67
  393. package/dist/tools/utils/content-transform-async.d.ts +0 -6
  394. package/dist/tools/utils/content-transform-async.js +0 -33
  395. package/dist/tools/utils/content-transform-core.d.ts +0 -5
  396. package/dist/tools/utils/content-transform-core.js +0 -180
  397. package/dist/tools/utils/content-transform-workers.d.ts +0 -1
  398. package/dist/tools/utils/content-transform-workers.js +0 -1
  399. package/dist/tools/utils/content-transform.d.ts +0 -3
  400. package/dist/tools/utils/content-transform.d.ts.map +0 -1
  401. package/dist/tools/utils/content-transform.js +0 -41
  402. package/dist/tools/utils/content-transform.js.map +0 -1
  403. package/dist/tools/utils/fetch-pipeline.d.ts +0 -2
  404. package/dist/tools/utils/fetch-pipeline.d.ts.map +0 -1
  405. package/dist/tools/utils/fetch-pipeline.js +0 -98
  406. package/dist/tools/utils/fetch-pipeline.js.map +0 -1
  407. package/dist/tools/utils/frontmatter.d.ts +0 -3
  408. package/dist/tools/utils/frontmatter.js +0 -73
  409. package/dist/tools/utils/index.d.ts +0 -4
  410. package/dist/tools/utils/index.d.ts.map +0 -1
  411. package/dist/tools/utils/index.js +0 -3
  412. package/dist/tools/utils/index.js.map +0 -1
  413. package/dist/tools/utils/inline-content.d.ts +0 -10
  414. package/dist/tools/utils/inline-content.d.ts.map +0 -1
  415. package/dist/tools/utils/inline-content.js +0 -35
  416. package/dist/tools/utils/inline-content.js.map +0 -1
  417. package/dist/tools/utils/markdown-heuristics.d.ts +0 -1
  418. package/dist/tools/utils/markdown-heuristics.js +0 -19
  419. package/dist/tools/utils/markdown-signals.d.ts +0 -1
  420. package/dist/tools/utils/markdown-signals.js +0 -19
  421. package/dist/tools/utils/markdown-toc.d.ts +0 -3
  422. package/dist/tools/utils/markdown-toc.d.ts.map +0 -1
  423. package/dist/tools/utils/markdown-toc.js +0 -35
  424. package/dist/tools/utils/markdown-toc.js.map +0 -1
  425. package/dist/tools/utils/raw-markdown-frontmatter.d.ts +0 -3
  426. package/dist/tools/utils/raw-markdown-frontmatter.js +0 -73
  427. package/dist/tools/utils/raw-markdown.d.ts +0 -6
  428. package/dist/tools/utils/raw-markdown.js +0 -149
  429. package/dist/tools/utils/response-builder.d.ts +0 -3
  430. package/dist/tools/utils/response-builder.d.ts.map +0 -1
  431. package/dist/tools/utils/response-builder.js +0 -24
  432. package/dist/tools/utils/response-builder.js.map +0 -1
  433. package/dist/tools/utils/tool-response.d.ts +0 -9
  434. package/dist/tools/utils/tool-response.d.ts.map +0 -1
  435. package/dist/tools/utils/tool-response.js +0 -19
  436. package/dist/tools/utils/tool-response.js.map +0 -1
  437. package/dist/transformers/jsonl.transformer.d.ts +0 -2
  438. package/dist/transformers/jsonl.transformer.d.ts.map +0 -1
  439. package/dist/transformers/jsonl.transformer.js +0 -75
  440. package/dist/transformers/jsonl.transformer.js.map +0 -1
  441. package/dist/transformers/markdown/fenced-code-rule.d.ts +0 -2
  442. package/dist/transformers/markdown/fenced-code-rule.js +0 -38
  443. package/dist/transformers/markdown/frontmatter.d.ts +0 -2
  444. package/dist/transformers/markdown/frontmatter.js +0 -45
  445. package/dist/transformers/markdown/noise-rule.d.ts +0 -2
  446. package/dist/transformers/markdown/noise-rule.js +0 -80
  447. package/dist/transformers/markdown/turndown-instance.d.ts +0 -2
  448. package/dist/transformers/markdown/turndown-instance.js +0 -19
  449. package/dist/transformers/markdown.d.ts +0 -5
  450. package/dist/transformers/markdown.js +0 -314
  451. package/dist/transformers/markdown.transformer.d.ts +0 -2
  452. package/dist/transformers/markdown.transformer.d.ts.map +0 -1
  453. package/dist/transformers/markdown.transformer.js +0 -14
  454. package/dist/transformers/markdown.transformer.js.map +0 -1
  455. package/dist/types/content.types.d.ts +0 -63
  456. package/dist/types/content.types.d.ts.map +0 -1
  457. package/dist/types/content.types.js +0 -2
  458. package/dist/types/content.types.js.map +0 -1
  459. package/dist/types/index.d.ts +0 -2
  460. package/dist/types/index.d.ts.map +0 -1
  461. package/dist/types/index.js +0 -2
  462. package/dist/types/index.js.map +0 -1
  463. package/dist/types/schemas.d.ts +0 -49
  464. package/dist/types/schemas.d.ts.map +0 -1
  465. package/dist/types/schemas.js +0 -5
  466. package/dist/types/schemas.js.map +0 -1
  467. package/dist/utils/cached-payload.d.ts +0 -7
  468. package/dist/utils/cached-payload.js +0 -36
  469. package/dist/utils/cancellation.d.ts +0 -1
  470. package/dist/utils/cancellation.js +0 -18
  471. package/dist/utils/code-language-bash.d.ts +0 -1
  472. package/dist/utils/code-language-bash.js +0 -48
  473. package/dist/utils/code-language-core.d.ts +0 -2
  474. package/dist/utils/code-language-core.js +0 -13
  475. package/dist/utils/code-language-detectors.d.ts +0 -5
  476. package/dist/utils/code-language-detectors.js +0 -142
  477. package/dist/utils/code-language-helpers.d.ts +0 -5
  478. package/dist/utils/code-language-helpers.js +0 -62
  479. package/dist/utils/code-language-parsing.d.ts +0 -5
  480. package/dist/utils/code-language-parsing.js +0 -62
  481. package/dist/utils/code-language.d.ts +0 -2
  482. package/dist/utils/code-language.d.ts.map +0 -1
  483. package/dist/utils/code-language.js +0 -260
  484. package/dist/utils/code-language.js.map +0 -1
  485. package/dist/utils/concurrency.d.ts +0 -3
  486. package/dist/utils/concurrency.d.ts.map +0 -1
  487. package/dist/utils/concurrency.js +0 -38
  488. package/dist/utils/concurrency.js.map +0 -1
  489. package/dist/utils/content-cleaner.d.ts +0 -5
  490. package/dist/utils/content-cleaner.d.ts.map +0 -1
  491. package/dist/utils/content-cleaner.js +0 -77
  492. package/dist/utils/content-cleaner.js.map +0 -1
  493. package/dist/utils/crypto.d.ts +0 -2
  494. package/dist/utils/crypto.d.ts.map +0 -1
  495. package/dist/utils/crypto.js +0 -32
  496. package/dist/utils/crypto.js.map +0 -1
  497. package/dist/utils/download-url.d.ts +0 -16
  498. package/dist/utils/download-url.d.ts.map +0 -1
  499. package/dist/utils/download-url.js +0 -30
  500. package/dist/utils/download-url.js.map +0 -1
  501. package/dist/utils/error-details.d.ts +0 -3
  502. package/dist/utils/error-details.js +0 -12
  503. package/dist/utils/error-utils.d.ts +0 -3
  504. package/dist/utils/error-utils.d.ts.map +0 -1
  505. package/dist/utils/error-utils.js +0 -12
  506. package/dist/utils/error-utils.js.map +0 -1
  507. package/dist/utils/filename-generator.d.ts +0 -1
  508. package/dist/utils/filename-generator.d.ts.map +0 -1
  509. package/dist/utils/filename-generator.js +0 -81
  510. package/dist/utils/filename-generator.js.map +0 -1
  511. package/dist/utils/guards.d.ts +0 -1
  512. package/dist/utils/guards.js +0 -3
  513. package/dist/utils/header-normalizer.d.ts +0 -5
  514. package/dist/utils/header-normalizer.d.ts.map +0 -1
  515. package/dist/utils/header-normalizer.js +0 -31
  516. package/dist/utils/header-normalizer.js.map +0 -1
  517. package/dist/utils/host-normalizer.d.ts +0 -1
  518. package/dist/utils/host-normalizer.js +0 -37
  519. package/dist/utils/html-truncator.d.ts +0 -1
  520. package/dist/utils/html-truncator.d.ts.map +0 -1
  521. package/dist/utils/html-truncator.js +0 -13
  522. package/dist/utils/html-truncator.js.map +0 -1
  523. package/dist/utils/ip-address.d.ts +0 -4
  524. package/dist/utils/ip-address.js +0 -6
  525. package/dist/utils/language-detector.d.ts +0 -2
  526. package/dist/utils/language-detector.d.ts.map +0 -1
  527. package/dist/utils/language-detector.js +0 -39
  528. package/dist/utils/language-detector.js.map +0 -1
  529. package/dist/utils/sanitizer.d.ts +0 -2
  530. package/dist/utils/sanitizer.d.ts.map +0 -1
  531. package/dist/utils/sanitizer.js +0 -20
  532. package/dist/utils/sanitizer.js.map +0 -1
  533. package/dist/utils/tool-error-handler.d.ts +0 -3
  534. package/dist/utils/tool-error-handler.d.ts.map +0 -1
  535. package/dist/utils/tool-error-handler.js +0 -31
  536. package/dist/utils/tool-error-handler.js.map +0 -1
  537. package/dist/utils/url-redactor.d.ts +0 -1
  538. package/dist/utils/url-redactor.js +0 -13
  539. package/dist/utils/url-sanitizer.d.ts +0 -2
  540. package/dist/utils/url-sanitizer.d.ts.map +0 -1
  541. package/dist/utils/url-sanitizer.js +0 -12
  542. package/dist/utils/url-sanitizer.js.map +0 -1
  543. package/dist/utils/url-transformer.d.ts +0 -7
  544. package/dist/utils/url-transformer.js +0 -147
  545. package/dist/utils/url-validator.d.ts +0 -6
  546. package/dist/utils/url-validator.d.ts.map +0 -1
  547. package/dist/utils/url-validator.js +0 -156
  548. package/dist/utils/url-validator.js.map +0 -1
  549. package/dist/workers/content-transform.worker.d.ts +0 -1
  550. package/dist/workers/content-transform.worker.js +0 -40
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/http/rate-limit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAEpC,UAAU,eAAgB,SAAQ,kBAAkB;IAClD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,yBAAyB;IACjC,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACtE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACpC;AAmBD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,GACvB,yBAAyB,CAkC3B"}
@@ -1,93 +0,0 @@
1
- import { setInterval as setIntervalPromise } from 'node:timers/promises';
2
- function getRateLimitKey(req) {
3
- return req.ip ?? req.socket.remoteAddress ?? 'unknown';
4
- }
5
- function createCleanupInterval(store, options) {
6
- const controller = new AbortController();
7
- void startCleanupLoop(store, options, controller.signal).catch(handleCleanupError);
8
- return controller;
9
- }
10
- export function createRateLimitMiddleware(options) {
11
- const store = new Map();
12
- const cleanupController = createCleanupInterval(store, options);
13
- const stop = () => {
14
- cleanupController.abort();
15
- };
16
- const middleware = createRateLimitHandler(store, options);
17
- return { middleware, stop, store };
18
- }
19
- function createRateLimitHandler(store, options) {
20
- return (req, res, next) => {
21
- if (shouldSkipRateLimit(req, options)) {
22
- next();
23
- return;
24
- }
25
- const now = Date.now();
26
- const key = getRateLimitKey(req);
27
- const resolution = resolveRateLimitEntry(store, key, now, options);
28
- if (resolution.isNew) {
29
- next();
30
- return;
31
- }
32
- if (handleRateLimitExceeded(res, resolution.entry, now, options)) {
33
- return;
34
- }
35
- next();
36
- };
37
- }
38
- async function startCleanupLoop(store, options, signal) {
39
- for await (const getNow of setIntervalPromise(options.cleanupIntervalMs, Date.now, { signal, ref: false })) {
40
- evictStaleEntries(store, options, getNow());
41
- }
42
- }
43
- function evictStaleEntries(store, options, now) {
44
- for (const [key, entry] of store.entries()) {
45
- if (now - entry.lastAccessed > options.windowMs * 2) {
46
- store.delete(key);
47
- }
48
- }
49
- }
50
- function isAbortError(error) {
51
- return error instanceof Error && error.name === 'AbortError';
52
- }
53
- function handleCleanupError(error) {
54
- if (isAbortError(error)) {
55
- return;
56
- }
57
- }
58
- function shouldSkipRateLimit(req, options) {
59
- return !options.enabled || req.method === 'OPTIONS';
60
- }
61
- function resolveRateLimitEntry(store, key, now, options) {
62
- const existing = store.get(key);
63
- if (!existing || now > existing.resetTime) {
64
- const entry = createNewEntry(now, options);
65
- store.set(key, entry);
66
- return { entry, isNew: true };
67
- }
68
- updateEntry(existing, now);
69
- return { entry: existing, isNew: false };
70
- }
71
- function createNewEntry(now, options) {
72
- return {
73
- count: 1,
74
- resetTime: now + options.windowMs,
75
- lastAccessed: now,
76
- };
77
- }
78
- function updateEntry(entry, now) {
79
- entry.count += 1;
80
- entry.lastAccessed = now;
81
- }
82
- function handleRateLimitExceeded(res, entry, now, options) {
83
- if (entry.count <= options.maxRequests) {
84
- return false;
85
- }
86
- const retryAfter = Math.max(1, Math.ceil((entry.resetTime - now) / 1000));
87
- res.set('Retry-After', String(retryAfter));
88
- res.status(429).json({
89
- error: 'Rate limit exceeded',
90
- retryAfter,
91
- });
92
- return true;
93
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/http/rate-limit.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function assertHttpConfiguration(): void;
@@ -1,40 +0,0 @@
1
- import { config } from '../config/index.js';
2
- import { logError } from '../services/logger.js';
3
- export function assertHttpConfiguration() {
4
- ensureBindAllowed();
5
- ensureStaticTokens();
6
- if (config.auth.mode === 'oauth') {
7
- ensureOauthConfiguration();
8
- }
9
- }
10
- function ensureBindAllowed() {
11
- const isLoopback = ['127.0.0.1', '::1', 'localhost'].includes(config.server.host);
12
- if (!config.security.allowRemote && !isLoopback) {
13
- logError('Refusing to bind to non-loopback host without ALLOW_REMOTE=true', { host: config.server.host });
14
- process.exit(1);
15
- }
16
- if (config.security.allowRemote && config.auth.mode !== 'oauth') {
17
- logError('Remote HTTP mode requires OAuth configuration; refusing to start');
18
- process.exit(1);
19
- }
20
- }
21
- function ensureStaticTokens() {
22
- if (config.auth.mode === 'static' && config.auth.staticTokens.length === 0) {
23
- logError('At least one static access token is required for HTTP mode');
24
- process.exit(1);
25
- }
26
- }
27
- function ensureOauthConfiguration() {
28
- if (!config.auth.issuerUrl || !config.auth.authorizationUrl) {
29
- logError('OAUTH_ISSUER_URL and OAUTH_AUTHORIZATION_URL are required for OAuth mode');
30
- process.exit(1);
31
- }
32
- if (!config.auth.tokenUrl) {
33
- logError('OAUTH_TOKEN_URL is required for OAuth mode');
34
- process.exit(1);
35
- }
36
- if (!config.auth.introspectionUrl) {
37
- logError('OAUTH_INTROSPECTION_URL is required for OAuth mode');
38
- process.exit(1);
39
- }
40
- }
@@ -1,7 +0,0 @@
1
- import type { Express, RequestHandler } from 'express';
2
- export declare function attachBaseMiddleware(options: {
3
- app: Express;
4
- jsonParser: RequestHandler;
5
- rateLimitMiddleware: RequestHandler;
6
- corsMiddleware: RequestHandler;
7
- }): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-middleware.d.ts","sourceRoot":"","sources":["../../src/http/server-middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,OAAO,EACP,cAAc,EACd,QAAQ,EACT,MAAM,SAAS,CAAC;AA0DjB,wBAAgB,8BAA8B,IAAI,cAAc,CAmB/D;AAED,wBAAgB,gBAAgB,IAAI;IAClC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAMA;AAED,wBAAgB,2BAA2B,IAAI,CAC7C,GAAG,EAAE,KAAK,EACV,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,KACf,IAAI,CAoBR;AAED,wBAAgB,uBAAuB,IAAI,CACzC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,YAAY,KACf,IAAI,CASR;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAStD;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,cAAc,EAC1B,mBAAmB,EAAE,cAAc,EACnC,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,GAC7B,IAAI,CASN"}
@@ -1,52 +0,0 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { config } from '../config/index.js';
3
- import { runWithRequestContext } from '../services/context.js';
4
- import { createHostValidationMiddleware, createOriginValidationMiddleware, } from './host-allowlist.js';
5
- import { getSessionId } from './sessions.js';
6
- function createJsonParseErrorHandler() {
7
- return (err, _req, res, next) => {
8
- if (err instanceof SyntaxError && 'body' in err) {
9
- res.status(400).json({
10
- jsonrpc: '2.0',
11
- error: {
12
- code: -32700,
13
- message: 'Parse error: Invalid JSON',
14
- },
15
- id: null,
16
- });
17
- return;
18
- }
19
- next();
20
- };
21
- }
22
- function createContextMiddleware() {
23
- return (req, _res, next) => {
24
- const requestId = randomUUID();
25
- const sessionId = getSessionId(req);
26
- const context = sessionId === undefined ? { requestId } : { requestId, sessionId };
27
- runWithRequestContext(context, () => {
28
- next();
29
- });
30
- };
31
- }
32
- function registerHealthRoute(app) {
33
- app.get('/health', (_req, res) => {
34
- res.json({
35
- status: 'healthy',
36
- name: config.server.name,
37
- version: config.server.version,
38
- uptime: process.uptime(),
39
- });
40
- });
41
- }
42
- export function attachBaseMiddleware(options) {
43
- const { app, jsonParser, rateLimitMiddleware, corsMiddleware } = options;
44
- app.use(createHostValidationMiddleware());
45
- app.use(createOriginValidationMiddleware());
46
- app.use(jsonParser);
47
- app.use(createContextMiddleware());
48
- app.use(createJsonParseErrorHandler());
49
- app.use(corsMiddleware);
50
- app.use('/mcp', rateLimitMiddleware);
51
- registerHealthRoute(app);
52
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-middleware.js","sourceRoot":"","sources":["../../src/http/server-middleware.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { Express } from 'express';
2
- import type { SessionStore } from './sessions.js';
3
- export declare function createShutdownHandler(server: ReturnType<Express['listen']>, sessionStore: SessionStore, sessionCleanupController: AbortController, stopRateLimitCleanup: () => void): (signal: string) => Promise<void>;
4
- export declare function registerSignalHandlers(shutdown: (signal: string) => Promise<void>): void;
@@ -1,43 +0,0 @@
1
- import { destroyAgents } from '../services/fetcher/agents.js';
2
- import { logError, logInfo, logWarn } from '../services/logger.js';
3
- import { getErrorMessage } from '../utils/error-details.js';
4
- export function createShutdownHandler(server, sessionStore, sessionCleanupController, stopRateLimitCleanup) {
5
- return (signal) => shutdownServer(signal, server, sessionStore, sessionCleanupController, stopRateLimitCleanup);
6
- }
7
- async function shutdownServer(signal, server, sessionStore, sessionCleanupController, stopRateLimitCleanup) {
8
- logInfo(`${signal} received, shutting down gracefully...`);
9
- stopRateLimitCleanup();
10
- sessionCleanupController.abort();
11
- await closeSessions(sessionStore);
12
- destroyAgents();
13
- closeServer(server);
14
- scheduleForcedShutdown(10000);
15
- }
16
- async function closeSessions(sessionStore) {
17
- const sessions = sessionStore.clear();
18
- await Promise.allSettled(sessions.map((session) => session.transport.close().catch((error) => {
19
- logWarn('Failed to close session during shutdown', {
20
- error: getErrorMessage(error),
21
- });
22
- })));
23
- }
24
- function closeServer(server) {
25
- server.close(() => {
26
- logInfo('HTTP server closed');
27
- process.exit(0);
28
- });
29
- }
30
- function scheduleForcedShutdown(timeoutMs) {
31
- setTimeout(() => {
32
- logError('Forced shutdown after timeout');
33
- process.exit(1);
34
- }, timeoutMs).unref();
35
- }
36
- export function registerSignalHandlers(shutdown) {
37
- process.on('SIGINT', () => {
38
- void shutdown('SIGINT');
39
- });
40
- process.on('SIGTERM', () => {
41
- void shutdown('SIGTERM');
42
- });
43
- }
@@ -1,9 +0,0 @@
1
- export interface HttpServerTuningTarget {
2
- headersTimeout?: number;
3
- requestTimeout?: number;
4
- keepAliveTimeout?: number;
5
- closeIdleConnections?: () => void;
6
- closeAllConnections?: () => void;
7
- }
8
- export declare function applyHttpServerTuning(server: HttpServerTuningTarget): void;
9
- export declare function drainConnectionsOnShutdown(server: HttpServerTuningTarget): void;
@@ -1,45 +0,0 @@
1
- import { config } from '../config/index.js';
2
- import { logDebug } from '../services/logger.js';
3
- export function applyHttpServerTuning(server) {
4
- const { headersTimeoutMs, requestTimeoutMs, keepAliveTimeoutMs } = config.server.http;
5
- if (headersTimeoutMs !== undefined) {
6
- server.headersTimeout = headersTimeoutMs;
7
- }
8
- if (requestTimeoutMs !== undefined) {
9
- server.requestTimeout = requestTimeoutMs;
10
- }
11
- if (keepAliveTimeoutMs !== undefined) {
12
- server.keepAliveTimeout = keepAliveTimeoutMs;
13
- }
14
- if (headersTimeoutMs !== undefined ||
15
- requestTimeoutMs !== undefined ||
16
- keepAliveTimeoutMs !== undefined) {
17
- logDebug('Applied HTTP server tuning', {
18
- headersTimeoutMs,
19
- requestTimeoutMs,
20
- keepAliveTimeoutMs,
21
- });
22
- }
23
- }
24
- export function drainConnectionsOnShutdown(server) {
25
- const { shutdownCloseAllConnections, shutdownCloseIdleConnections } = config.server.http;
26
- if (shutdownCloseAllConnections) {
27
- if (typeof server.closeAllConnections === 'function') {
28
- server.closeAllConnections();
29
- logDebug('Closed all HTTP connections during shutdown');
30
- }
31
- else {
32
- logDebug('HTTP server does not support closeAllConnections()');
33
- }
34
- return;
35
- }
36
- if (shutdownCloseIdleConnections) {
37
- if (typeof server.closeIdleConnections === 'function') {
38
- server.closeIdleConnections();
39
- logDebug('Closed idle HTTP connections during shutdown');
40
- }
41
- else {
42
- logDebug('HTTP server does not support closeIdleConnections()');
43
- }
44
- }
45
- }
@@ -1,3 +0,0 @@
1
- export declare function startHttpServer(): Promise<{
2
- shutdown: (signal: string) => Promise<void>;
3
- }>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAsHA,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,CAAC,CAwCD"}
@@ -1,291 +0,0 @@
1
- import { setInterval as setIntervalPromise } from 'node:timers/promises';
2
- import { config, enableHttpMode } from '../config/index.js';
3
- import { destroyAgents } from '../services/fetcher.js';
4
- import { logError, logInfo, logWarn } from '../services/logger.js';
5
- import { shutdownTransformWorkerPool } from '../services/transform-worker-pool.js';
6
- import { getErrorMessage } from '../utils/error-details.js';
7
- import { createAuthMetadataRouter, createAuthMiddleware } from './auth.js';
8
- import { attachBaseMiddleware } from './base-middleware.js';
9
- import { createCorsMiddleware } from './cors.js';
10
- import { registerDownloadRoutes } from './download-routes.js';
11
- import { errorHandler } from './error-handler.js';
12
- import { registerMcpRoutes } from './mcp-routes.js';
13
- import { createSessionStore, startSessionCleanupLoop, } from './mcp-sessions.js';
14
- import { applyHttpServerTuning, drainConnectionsOnShutdown, } from './server-tuning.js';
15
- function getRateLimitKey(req) {
16
- return req.ip ?? req.socket.remoteAddress ?? 'unknown';
17
- }
18
- function createCleanupInterval(store, options) {
19
- const controller = new AbortController();
20
- void startCleanupLoop(store, options, controller.signal).catch(handleCleanupError);
21
- return controller;
22
- }
23
- function createRateLimitMiddleware(options) {
24
- const store = new Map();
25
- const cleanupController = createCleanupInterval(store, options);
26
- const stop = () => {
27
- cleanupController.abort();
28
- };
29
- const middleware = createRateLimitHandler(store, options);
30
- return { middleware, stop, store };
31
- }
32
- function createRateLimitHandler(store, options) {
33
- return (req, res, next) => {
34
- if (shouldSkipRateLimit(req, options)) {
35
- next();
36
- return;
37
- }
38
- const now = Date.now();
39
- const key = getRateLimitKey(req);
40
- const resolution = resolveRateLimitEntry(store, key, now, options);
41
- if (resolution.isNew) {
42
- next();
43
- return;
44
- }
45
- if (handleRateLimitExceeded(res, resolution.entry, now, options)) {
46
- return;
47
- }
48
- next();
49
- };
50
- }
51
- async function startCleanupLoop(store, options, signal) {
52
- for await (const getNow of setIntervalPromise(options.cleanupIntervalMs, Date.now, { signal, ref: false })) {
53
- evictStaleEntries(store, options, getNow());
54
- }
55
- }
56
- function evictStaleEntries(store, options, now) {
57
- for (const [key, entry] of store.entries()) {
58
- if (now - entry.lastAccessed > options.windowMs * 2) {
59
- store.delete(key);
60
- }
61
- }
62
- }
63
- function isAbortError(error) {
64
- return error instanceof Error && error.name === 'AbortError';
65
- }
66
- function handleCleanupError(error) {
67
- if (isAbortError(error)) {
68
- return;
69
- }
70
- }
71
- function shouldSkipRateLimit(req, options) {
72
- return !options.enabled || req.method === 'OPTIONS';
73
- }
74
- function resolveRateLimitEntry(store, key, now, options) {
75
- const existing = store.get(key);
76
- if (!existing || now > existing.resetTime) {
77
- const entry = createNewEntry(now, options);
78
- store.set(key, entry);
79
- return { entry, isNew: true };
80
- }
81
- updateEntry(existing, now);
82
- return { entry: existing, isNew: false };
83
- }
84
- function createNewEntry(now, options) {
85
- return {
86
- count: 1,
87
- resetTime: now + options.windowMs,
88
- lastAccessed: now,
89
- };
90
- }
91
- function updateEntry(entry, now) {
92
- entry.count += 1;
93
- entry.lastAccessed = now;
94
- }
95
- function handleRateLimitExceeded(res, entry, now, options) {
96
- if (entry.count <= options.maxRequests) {
97
- return false;
98
- }
99
- const retryAfter = Math.max(1, Math.ceil((entry.resetTime - now) / 1000));
100
- res.set('Retry-After', String(retryAfter));
101
- res.status(429).json({
102
- error: 'Rate limit exceeded',
103
- retryAfter,
104
- });
105
- return true;
106
- }
107
- function assertHttpConfiguration() {
108
- ensureBindAllowed();
109
- ensureStaticTokens();
110
- if (config.auth.mode === 'oauth') {
111
- ensureOauthConfiguration();
112
- }
113
- }
114
- function ensureBindAllowed() {
115
- const isLoopback = ['127.0.0.1', '::1', 'localhost'].includes(config.server.host);
116
- if (!config.security.allowRemote && !isLoopback) {
117
- logError('Refusing to bind to non-loopback host without ALLOW_REMOTE=true', { host: config.server.host });
118
- process.exit(1);
119
- }
120
- if (!isLoopback &&
121
- config.security.allowRemote &&
122
- config.auth.mode !== 'oauth') {
123
- logError('Remote HTTP mode requires OAuth configuration; refusing to start');
124
- process.exit(1);
125
- }
126
- }
127
- function ensureStaticTokens() {
128
- if (config.auth.mode === 'static' && config.auth.staticTokens.length === 0) {
129
- logError('At least one static access token is required for HTTP mode');
130
- process.exit(1);
131
- }
132
- }
133
- function ensureOauthConfiguration() {
134
- if (!config.auth.issuerUrl || !config.auth.authorizationUrl) {
135
- logError('OAUTH_ISSUER_URL and OAUTH_AUTHORIZATION_URL are required for OAuth mode');
136
- process.exit(1);
137
- }
138
- if (!config.auth.tokenUrl) {
139
- logError('OAUTH_TOKEN_URL is required for OAuth mode');
140
- process.exit(1);
141
- }
142
- if (!config.auth.introspectionUrl) {
143
- logError('OAUTH_INTROSPECTION_URL is required for OAuth mode');
144
- process.exit(1);
145
- }
146
- }
147
- function createShutdownHandler(server, sessionStore, sessionCleanupController, stopRateLimitCleanup) {
148
- let inFlight = null;
149
- let initialSignal = null;
150
- return (signal) => {
151
- if (inFlight) {
152
- logWarn('Shutdown already in progress; ignoring signal', {
153
- signal,
154
- initialSignal,
155
- });
156
- return inFlight;
157
- }
158
- initialSignal = signal;
159
- inFlight = shutdownServer(signal, server, sessionStore, sessionCleanupController, stopRateLimitCleanup).catch((error) => {
160
- logError('Shutdown handler failed', error instanceof Error ? error : { error: getErrorMessage(error) });
161
- throw error;
162
- });
163
- return inFlight;
164
- };
165
- }
166
- async function shutdownServer(signal, server, sessionStore, sessionCleanupController, stopRateLimitCleanup) {
167
- logInfo(`${signal} received, shutting down gracefully...`);
168
- stopRateLimitCleanup();
169
- sessionCleanupController.abort();
170
- await closeSessions(sessionStore);
171
- destroyAgents();
172
- await shutdownTransformWorkerPool();
173
- drainConnectionsOnShutdown(server);
174
- closeServer(server);
175
- scheduleForcedShutdown(10000);
176
- }
177
- async function closeSessions(sessionStore) {
178
- const sessions = sessionStore.clear();
179
- await Promise.allSettled(sessions.map((session) => session.transport.close().catch((error) => {
180
- logWarn('Failed to close session during shutdown', {
181
- error: getErrorMessage(error),
182
- });
183
- })));
184
- }
185
- function closeServer(server) {
186
- server.close(() => {
187
- logInfo('HTTP server closed');
188
- process.exit(0);
189
- });
190
- }
191
- function scheduleForcedShutdown(timeoutMs) {
192
- setTimeout(() => {
193
- logError('Forced shutdown after timeout');
194
- process.exit(1);
195
- }, timeoutMs).unref();
196
- }
197
- function registerSignalHandlers(shutdown) {
198
- process.once('SIGINT', () => {
199
- void shutdown('SIGINT');
200
- });
201
- process.once('SIGTERM', () => {
202
- void shutdown('SIGTERM');
203
- });
204
- }
205
- function startListening(app) {
206
- return app
207
- .listen(config.server.port, config.server.host, () => {
208
- logInfo('superFetch MCP server started', {
209
- host: config.server.host,
210
- port: config.server.port,
211
- });
212
- const baseUrl = `http://${config.server.host}:${config.server.port}`;
213
- logInfo(`superFetch MCP server running at ${baseUrl} (health: ${baseUrl}/health, mcp: ${baseUrl}/mcp)`);
214
- logInfo('Run with --stdio flag for direct stdio integration');
215
- })
216
- .on('error', (err) => {
217
- logError('Failed to start server', err);
218
- process.exit(1);
219
- });
220
- }
221
- function buildMiddleware() {
222
- const { middleware: rateLimitMiddleware, stop: stopRateLimitCleanup } = createRateLimitMiddleware(config.rateLimit);
223
- const authMiddleware = createAuthMiddleware();
224
- // No CORS - MCP clients don't run in browsers
225
- const corsMiddleware = createCorsMiddleware();
226
- return {
227
- rateLimitMiddleware,
228
- stopRateLimitCleanup,
229
- authMiddleware,
230
- corsMiddleware,
231
- };
232
- }
233
- function createSessionInfrastructure() {
234
- const sessionStore = createSessionStore(config.server.sessionTtlMs);
235
- const sessionCleanupController = startSessionCleanupLoop(sessionStore, config.server.sessionTtlMs);
236
- return { sessionStore, sessionCleanupController };
237
- }
238
- function registerHttpRoutes(app, sessionStore, authMiddleware) {
239
- app.use('/mcp', authMiddleware);
240
- app.use('/mcp/downloads', authMiddleware);
241
- registerMcpRoutes(app, {
242
- sessionStore,
243
- maxSessions: config.server.maxSessions,
244
- });
245
- registerDownloadRoutes(app);
246
- app.use(errorHandler);
247
- }
248
- function attachAuthMetadata(app) {
249
- const authMetadataRouter = createAuthMetadataRouter();
250
- if (authMetadataRouter) {
251
- app.use(authMetadataRouter);
252
- }
253
- }
254
- async function buildServerContext() {
255
- const { app, authMiddleware, stopRateLimitCleanup } = await createAppWithMiddleware();
256
- const { sessionStore, sessionCleanupController } = attachSessionRoutes(app, authMiddleware);
257
- return { app, sessionStore, sessionCleanupController, stopRateLimitCleanup };
258
- }
259
- async function createAppWithMiddleware() {
260
- const { app, jsonParser } = await createExpressApp();
261
- const { rateLimitMiddleware, stopRateLimitCleanup, authMiddleware, corsMiddleware, } = buildMiddleware();
262
- attachBaseMiddleware({
263
- app,
264
- jsonParser,
265
- rateLimitMiddleware,
266
- corsMiddleware,
267
- });
268
- attachAuthMetadata(app);
269
- assertHttpConfiguration();
270
- return { app, authMiddleware, stopRateLimitCleanup };
271
- }
272
- function attachSessionRoutes(app, authMiddleware) {
273
- const { sessionStore, sessionCleanupController } = createSessionInfrastructure();
274
- registerHttpRoutes(app, sessionStore, authMiddleware);
275
- return { sessionStore, sessionCleanupController };
276
- }
277
- export async function startHttpServer() {
278
- enableHttpMode();
279
- const { app, sessionStore, sessionCleanupController, stopRateLimitCleanup } = await buildServerContext();
280
- const server = startListening(app);
281
- applyHttpServerTuning(server);
282
- const shutdown = createShutdownHandler(server, sessionStore, sessionCleanupController, stopRateLimitCleanup);
283
- registerSignalHandlers(shutdown);
284
- return { shutdown };
285
- }
286
- async function createExpressApp() {
287
- const { default: express } = await import('express');
288
- const app = express();
289
- const jsonParser = express.json({ limit: '1mb' });
290
- return { app, jsonParser };
291
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { SessionStore } from './sessions.js';
2
- export declare function startSessionCleanupLoop(store: SessionStore, sessionTtlMs: number): AbortController;
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-cleanup.d.ts","sourceRoot":"","sources":["../../src/http/session-cleanup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,MAAM,GACnB,eAAe,CAMjB"}