@suveren/gateway 0.3.17 → 0.4.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.
Files changed (255) hide show
  1. package/bin/suveren-gateway.js +419 -28
  2. package/content/integrations/calendar.json +20 -8
  3. package/content/integrations/crm.json +97 -23
  4. package/content/integrations/gmail.json +166 -29
  5. package/content/integrations/linkedin.json +15 -3
  6. package/content/integrations/mollie.json +2 -2
  7. package/dist/control-plane/index.mjs +333 -41
  8. package/dist/mcp-server/http.mjs +880 -210
  9. package/dist/ui/assets/index-BDQY7Z3H.js +105 -0
  10. package/dist/ui/assets/{index-DOt3SNnl.css → index-JHaCddDE.css} +1 -1
  11. package/dist/ui/index.html +2 -2
  12. package/node_modules/@hap/core/dist/index.d.mts +27 -0
  13. package/node_modules/@hap/core/dist/index.d.ts +27 -0
  14. package/node_modules/@hap/core/dist/index.js +13 -1
  15. package/node_modules/@hap/core/dist/index.mjs +13 -1
  16. package/node_modules/@hap/core/package.json +1 -1
  17. package/node_modules/@hap/core/src/gatekeeper.ts +47 -1
  18. package/node_modules/@hap/core/src/types.ts +27 -0
  19. package/node_modules/@hono/node-server/README.md +58 -25
  20. package/node_modules/@hono/node-server/dist/conninfo.cjs +22 -0
  21. package/node_modules/@hono/node-server/dist/{conninfo.d.ts → conninfo.d.cts} +4 -3
  22. package/node_modules/@hono/node-server/dist/conninfo.d.mts +4 -3
  23. package/node_modules/@hono/node-server/dist/conninfo.mjs +19 -16
  24. package/node_modules/@hono/node-server/dist/constants-BLSFu_RU.mjs +5 -0
  25. package/node_modules/@hono/node-server/dist/constants-BXAKTxRC.cjs +11 -0
  26. package/node_modules/@hono/node-server/dist/index.cjs +1173 -0
  27. package/node_modules/@hono/node-server/dist/index.d.cts +101 -0
  28. package/node_modules/@hono/node-server/dist/index.d.mts +101 -8
  29. package/node_modules/@hono/node-server/dist/index.mjs +1143 -637
  30. package/node_modules/@hono/node-server/dist/serve-static.cjs +151 -0
  31. package/node_modules/@hono/node-server/dist/serve-static.d.cts +18 -0
  32. package/node_modules/@hono/node-server/dist/serve-static.d.mts +14 -13
  33. package/node_modules/@hono/node-server/dist/serve-static.mjs +143 -145
  34. package/node_modules/@hono/node-server/dist/utils/response.cjs +8 -0
  35. package/node_modules/@hono/node-server/dist/utils/response.d.cts +4 -0
  36. package/node_modules/@hono/node-server/dist/utils/response.d.mts +3 -2
  37. package/node_modules/@hono/node-server/dist/utils/response.mjs +6 -9
  38. package/node_modules/@hono/node-server/dist/utils/stream.cjs +65 -0
  39. package/node_modules/@hono/node-server/dist/utils/stream.d.cts +6 -0
  40. package/node_modules/@hono/node-server/dist/utils/stream.d.mts +6 -0
  41. package/node_modules/@hono/node-server/dist/utils/stream.mjs +64 -0
  42. package/node_modules/@hono/node-server/package.json +65 -54
  43. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.d.ts.map +1 -1
  44. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.js +1 -12
  45. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/index.js.map +1 -1
  46. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.d.ts +7 -0
  47. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.d.ts.map +1 -1
  48. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.js +9 -3
  49. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/stdio.js.map +1 -1
  50. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.d.ts.map +1 -1
  51. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js +5 -3
  52. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js.map +1 -1
  53. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.d.ts.map +1 -1
  54. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.js +1 -12
  55. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/index.js.map +1 -1
  56. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.d.ts +5 -0
  57. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.d.ts.map +1 -0
  58. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.js +17 -0
  59. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/sseKeepAlive.js.map +1 -0
  60. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.d.ts +9 -1
  61. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.d.ts.map +1 -1
  62. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.js +10 -4
  63. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/stdio.js.map +1 -1
  64. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.d.ts +21 -0
  65. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.d.ts.map +1 -1
  66. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.js +239 -41
  67. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/webStandardStreamableHttp.js.map +1 -1
  68. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.d.ts.map +1 -1
  69. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.js +25 -6
  70. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/zod-compat.js.map +1 -1
  71. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.d.ts +32 -0
  72. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.d.ts.map +1 -0
  73. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.js +64 -0
  74. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/mediaType.js.map +1 -0
  75. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.d.ts +5 -0
  76. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.d.ts.map +1 -1
  77. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.js +10 -1
  78. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/stdio.js.map +1 -1
  79. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts.map +1 -1
  80. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js +2 -13
  81. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +1 -1
  82. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts +7 -0
  83. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts.map +1 -1
  84. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js +9 -3
  85. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js.map +1 -1
  86. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.d.ts.map +1 -1
  87. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js +5 -3
  88. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js.map +1 -1
  89. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts.map +1 -1
  90. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +2 -13
  91. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -1
  92. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.d.ts +5 -0
  93. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.d.ts.map +1 -0
  94. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js +13 -0
  95. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sseKeepAlive.js.map +1 -0
  96. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts +9 -1
  97. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts.map +1 -1
  98. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +10 -4
  99. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js.map +1 -1
  100. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.d.ts +21 -0
  101. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.d.ts.map +1 -1
  102. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js +239 -41
  103. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js.map +1 -1
  104. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.d.ts.map +1 -1
  105. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +25 -6
  106. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -1
  107. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.d.ts +32 -0
  108. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.d.ts.map +1 -0
  109. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js +57 -0
  110. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/mediaType.js.map +1 -0
  111. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.d.ts +5 -0
  112. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.d.ts.map +1 -1
  113. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js +9 -0
  114. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js.map +1 -1
  115. package/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/README.md +15 -14
  116. package/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/index.js +0 -8
  117. package/node_modules/@modelcontextprotocol/sdk/node_modules/media-typer/package.json +16 -12
  118. package/node_modules/@modelcontextprotocol/sdk/package.json +4 -3
  119. package/node_modules/@types/node/README.md +1 -1
  120. package/node_modules/@types/node/crypto.d.ts +1 -1
  121. package/node_modules/@types/node/package.json +2 -2
  122. package/node_modules/body-parser/HISTORY.md +7 -1
  123. package/node_modules/body-parser/lib/types/json.js +7 -3
  124. package/node_modules/body-parser/lib/types/raw.js +7 -3
  125. package/node_modules/body-parser/lib/types/text.js +7 -3
  126. package/node_modules/body-parser/lib/types/urlencoded.js +7 -3
  127. package/node_modules/body-parser/package.json +1 -1
  128. package/node_modules/express-rate-limit/dist/index.cjs +69 -5
  129. package/node_modules/express-rate-limit/dist/index.d.cts +16 -0
  130. package/node_modules/express-rate-limit/dist/index.d.mts +16 -0
  131. package/node_modules/express-rate-limit/dist/index.d.ts +16 -0
  132. package/node_modules/express-rate-limit/dist/index.mjs +55 -5
  133. package/node_modules/express-rate-limit/node_modules/debug/LICENSE +20 -0
  134. package/node_modules/express-rate-limit/node_modules/debug/README.md +481 -0
  135. package/node_modules/express-rate-limit/node_modules/debug/package.json +64 -0
  136. package/node_modules/express-rate-limit/node_modules/debug/src/browser.js +272 -0
  137. package/node_modules/express-rate-limit/node_modules/debug/src/common.js +292 -0
  138. package/node_modules/express-rate-limit/node_modules/debug/src/index.js +10 -0
  139. package/node_modules/express-rate-limit/node_modules/debug/src/node.js +263 -0
  140. package/node_modules/express-rate-limit/node_modules/ms/index.js +162 -0
  141. package/node_modules/express-rate-limit/node_modules/ms/license.md +21 -0
  142. package/node_modules/express-rate-limit/node_modules/ms/package.json +38 -0
  143. package/node_modules/express-rate-limit/node_modules/ms/readme.md +59 -0
  144. package/node_modules/express-rate-limit/package.json +12 -9
  145. package/node_modules/fast-uri/index.js +17 -0
  146. package/node_modules/fast-uri/package.json +1 -1
  147. package/node_modules/fast-uri/test/security.test.js +62 -0
  148. package/node_modules/hono/dist/adapter/aws-lambda/handler.js +1 -4
  149. package/node_modules/hono/dist/adapter/lambda-edge/handler.js +12 -2
  150. package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +1 -4
  151. package/node_modules/hono/dist/cjs/adapter/lambda-edge/handler.js +12 -2
  152. package/node_modules/hono/dist/cjs/client/client.js +10 -1
  153. package/node_modules/hono/dist/cjs/client/utils.js +1 -1
  154. package/node_modules/hono/dist/cjs/helper/streaming/sse.js +5 -4
  155. package/node_modules/hono/dist/cjs/middleware/cache/index.js +1 -1
  156. package/node_modules/hono/dist/cjs/middleware/compress/index.js +2 -1
  157. package/node_modules/hono/dist/cjs/middleware/etag/index.js +2 -1
  158. package/node_modules/hono/dist/cjs/middleware/method-override/index.js +5 -3
  159. package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +10 -4
  160. package/node_modules/hono/dist/cjs/request.js +8 -3
  161. package/node_modules/hono/dist/cjs/router/trie-router/node.js +9 -0
  162. package/node_modules/hono/dist/cjs/utils/accept.js +1 -1
  163. package/node_modules/hono/dist/cjs/utils/body.js +6 -0
  164. package/node_modules/hono/dist/cjs/utils/url.js +1 -1
  165. package/node_modules/hono/dist/client/client.js +10 -1
  166. package/node_modules/hono/dist/client/utils.js +1 -1
  167. package/node_modules/hono/dist/helper/streaming/sse.js +5 -4
  168. package/node_modules/hono/dist/middleware/cache/index.js +1 -1
  169. package/node_modules/hono/dist/middleware/compress/index.js +2 -1
  170. package/node_modules/hono/dist/middleware/etag/index.js +2 -1
  171. package/node_modules/hono/dist/middleware/method-override/index.js +5 -3
  172. package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +10 -4
  173. package/node_modules/hono/dist/request.js +8 -3
  174. package/node_modules/hono/dist/router/trie-router/node.js +9 -0
  175. package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
  176. package/node_modules/hono/dist/types/adapter/lambda-edge/handler.d.ts +1 -1
  177. package/node_modules/hono/dist/types/helper/websocket/index.d.ts +1 -1
  178. package/node_modules/hono/dist/types/middleware/combine/index.d.ts +1 -1
  179. package/node_modules/hono/dist/types/middleware/language/language.d.ts +18 -0
  180. package/node_modules/hono/dist/types/utils/types.d.ts +1 -1
  181. package/node_modules/hono/dist/utils/accept.js +1 -1
  182. package/node_modules/hono/dist/utils/body.js +6 -0
  183. package/node_modules/hono/dist/utils/url.js +1 -1
  184. package/node_modules/hono/package.json +4 -4
  185. package/node_modules/ip-address/README.md +102 -96
  186. package/node_modules/ip-address/dist/common.d.ts +23 -0
  187. package/node_modules/ip-address/dist/common.js +27 -4
  188. package/node_modules/ip-address/dist/common.js.map +1 -1
  189. package/node_modules/ip-address/dist/ipv4.d.ts +8 -1
  190. package/node_modules/ip-address/dist/ipv4.js +21 -8
  191. package/node_modules/ip-address/dist/ipv4.js.map +1 -1
  192. package/node_modules/ip-address/dist/ipv6.d.ts +59 -1
  193. package/node_modules/ip-address/dist/ipv6.js +149 -41
  194. package/node_modules/ip-address/dist/ipv6.js.map +1 -1
  195. package/node_modules/ip-address/dist/v4/constants.js +5 -1
  196. package/node_modules/ip-address/dist/v4/constants.js.map +1 -1
  197. package/node_modules/ip-address/dist/v6/constants.js +3 -2
  198. package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  199. package/node_modules/ip-address/package.json +2 -2
  200. package/node_modules/jose/README.md +1 -4
  201. package/node_modules/jose/dist/types/jwks/remote.d.ts +3 -3
  202. package/node_modules/jose/dist/webapi/jwks/remote.js +1 -1
  203. package/node_modules/jose/dist/webapi/lib/key_to_jwk.js +4 -1
  204. package/node_modules/jose/package.json +1 -1
  205. package/package.json +2 -2
  206. package/profiles/customers/0.4.profile.json +7 -4
  207. package/profiles/customers/0.5.profile.json +131 -0
  208. package/profiles/customers/0.6.profile.json +153 -0
  209. package/profiles/email/0.4.profile.json +8 -4
  210. package/profiles/index.json +2 -0
  211. package/server.js +10 -0
  212. package/dist/ui/assets/index-CTmWS7W4.js +0 -105
  213. package/node_modules/@hono/node-server/dist/conninfo.js +0 -42
  214. package/node_modules/@hono/node-server/dist/globals.d.mts +0 -2
  215. package/node_modules/@hono/node-server/dist/globals.d.ts +0 -2
  216. package/node_modules/@hono/node-server/dist/globals.js +0 -29
  217. package/node_modules/@hono/node-server/dist/globals.mjs +0 -5
  218. package/node_modules/@hono/node-server/dist/index.d.ts +0 -8
  219. package/node_modules/@hono/node-server/dist/index.js +0 -702
  220. package/node_modules/@hono/node-server/dist/listener.d.mts +0 -13
  221. package/node_modules/@hono/node-server/dist/listener.d.ts +0 -13
  222. package/node_modules/@hono/node-server/dist/listener.js +0 -670
  223. package/node_modules/@hono/node-server/dist/listener.mjs +0 -635
  224. package/node_modules/@hono/node-server/dist/request.d.mts +0 -25
  225. package/node_modules/@hono/node-server/dist/request.d.ts +0 -25
  226. package/node_modules/@hono/node-server/dist/request.js +0 -238
  227. package/node_modules/@hono/node-server/dist/request.mjs +0 -206
  228. package/node_modules/@hono/node-server/dist/response.d.mts +0 -26
  229. package/node_modules/@hono/node-server/dist/response.d.ts +0 -26
  230. package/node_modules/@hono/node-server/dist/response.js +0 -112
  231. package/node_modules/@hono/node-server/dist/response.mjs +0 -85
  232. package/node_modules/@hono/node-server/dist/serve-static.d.ts +0 -17
  233. package/node_modules/@hono/node-server/dist/serve-static.js +0 -177
  234. package/node_modules/@hono/node-server/dist/server.d.mts +0 -10
  235. package/node_modules/@hono/node-server/dist/server.d.ts +0 -10
  236. package/node_modules/@hono/node-server/dist/server.js +0 -696
  237. package/node_modules/@hono/node-server/dist/server.mjs +0 -660
  238. package/node_modules/@hono/node-server/dist/types.d.mts +0 -44
  239. package/node_modules/@hono/node-server/dist/types.d.ts +0 -44
  240. package/node_modules/@hono/node-server/dist/types.js +0 -18
  241. package/node_modules/@hono/node-server/dist/types.mjs +0 -0
  242. package/node_modules/@hono/node-server/dist/utils/response/constants.d.mts +0 -3
  243. package/node_modules/@hono/node-server/dist/utils/response/constants.d.ts +0 -3
  244. package/node_modules/@hono/node-server/dist/utils/response/constants.js +0 -30
  245. package/node_modules/@hono/node-server/dist/utils/response/constants.mjs +0 -5
  246. package/node_modules/@hono/node-server/dist/utils/response.d.ts +0 -3
  247. package/node_modules/@hono/node-server/dist/utils/response.js +0 -37
  248. package/node_modules/@hono/node-server/dist/utils.d.mts +0 -9
  249. package/node_modules/@hono/node-server/dist/utils.d.ts +0 -9
  250. package/node_modules/@hono/node-server/dist/utils.js +0 -99
  251. package/node_modules/@hono/node-server/dist/utils.mjs +0 -71
  252. package/node_modules/@hono/node-server/dist/vercel.d.mts +0 -7
  253. package/node_modules/@hono/node-server/dist/vercel.d.ts +0 -7
  254. package/node_modules/@hono/node-server/dist/vercel.js +0 -677
  255. package/node_modules/@hono/node-server/dist/vercel.mjs +0 -640
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Module dependencies.
3
+ */
4
+
5
+ const tty = require('tty');
6
+ const util = require('util');
7
+
8
+ /**
9
+ * This is the Node.js implementation of `debug()`.
10
+ */
11
+
12
+ exports.init = init;
13
+ exports.log = log;
14
+ exports.formatArgs = formatArgs;
15
+ exports.save = save;
16
+ exports.load = load;
17
+ exports.useColors = useColors;
18
+ exports.destroy = util.deprecate(
19
+ () => {},
20
+ 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'
21
+ );
22
+
23
+ /**
24
+ * Colors.
25
+ */
26
+
27
+ exports.colors = [6, 2, 3, 4, 5, 1];
28
+
29
+ try {
30
+ // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)
31
+ // eslint-disable-next-line import/no-extraneous-dependencies
32
+ const supportsColor = require('supports-color');
33
+
34
+ if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
35
+ exports.colors = [
36
+ 20,
37
+ 21,
38
+ 26,
39
+ 27,
40
+ 32,
41
+ 33,
42
+ 38,
43
+ 39,
44
+ 40,
45
+ 41,
46
+ 42,
47
+ 43,
48
+ 44,
49
+ 45,
50
+ 56,
51
+ 57,
52
+ 62,
53
+ 63,
54
+ 68,
55
+ 69,
56
+ 74,
57
+ 75,
58
+ 76,
59
+ 77,
60
+ 78,
61
+ 79,
62
+ 80,
63
+ 81,
64
+ 92,
65
+ 93,
66
+ 98,
67
+ 99,
68
+ 112,
69
+ 113,
70
+ 128,
71
+ 129,
72
+ 134,
73
+ 135,
74
+ 148,
75
+ 149,
76
+ 160,
77
+ 161,
78
+ 162,
79
+ 163,
80
+ 164,
81
+ 165,
82
+ 166,
83
+ 167,
84
+ 168,
85
+ 169,
86
+ 170,
87
+ 171,
88
+ 172,
89
+ 173,
90
+ 178,
91
+ 179,
92
+ 184,
93
+ 185,
94
+ 196,
95
+ 197,
96
+ 198,
97
+ 199,
98
+ 200,
99
+ 201,
100
+ 202,
101
+ 203,
102
+ 204,
103
+ 205,
104
+ 206,
105
+ 207,
106
+ 208,
107
+ 209,
108
+ 214,
109
+ 215,
110
+ 220,
111
+ 221
112
+ ];
113
+ }
114
+ } catch (error) {
115
+ // Swallow - we only care if `supports-color` is available; it doesn't have to be.
116
+ }
117
+
118
+ /**
119
+ * Build up the default `inspectOpts` object from the environment variables.
120
+ *
121
+ * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
122
+ */
123
+
124
+ exports.inspectOpts = Object.keys(process.env).filter(key => {
125
+ return /^debug_/i.test(key);
126
+ }).reduce((obj, key) => {
127
+ // Camel-case
128
+ const prop = key
129
+ .substring(6)
130
+ .toLowerCase()
131
+ .replace(/_([a-z])/g, (_, k) => {
132
+ return k.toUpperCase();
133
+ });
134
+
135
+ // Coerce string value into JS value
136
+ let val = process.env[key];
137
+ if (/^(yes|on|true|enabled)$/i.test(val)) {
138
+ val = true;
139
+ } else if (/^(no|off|false|disabled)$/i.test(val)) {
140
+ val = false;
141
+ } else if (val === 'null') {
142
+ val = null;
143
+ } else {
144
+ val = Number(val);
145
+ }
146
+
147
+ obj[prop] = val;
148
+ return obj;
149
+ }, {});
150
+
151
+ /**
152
+ * Is stdout a TTY? Colored output is enabled when `true`.
153
+ */
154
+
155
+ function useColors() {
156
+ return 'colors' in exports.inspectOpts ?
157
+ Boolean(exports.inspectOpts.colors) :
158
+ tty.isatty(process.stderr.fd);
159
+ }
160
+
161
+ /**
162
+ * Adds ANSI color escape codes if enabled.
163
+ *
164
+ * @api public
165
+ */
166
+
167
+ function formatArgs(args) {
168
+ const {namespace: name, useColors} = this;
169
+
170
+ if (useColors) {
171
+ const c = this.color;
172
+ const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c);
173
+ const prefix = ` ${colorCode};1m${name} \u001B[0m`;
174
+
175
+ args[0] = prefix + args[0].split('\n').join('\n' + prefix);
176
+ args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m');
177
+ } else {
178
+ args[0] = getDate() + name + ' ' + args[0];
179
+ }
180
+ }
181
+
182
+ function getDate() {
183
+ if (exports.inspectOpts.hideDate) {
184
+ return '';
185
+ }
186
+ return new Date().toISOString() + ' ';
187
+ }
188
+
189
+ /**
190
+ * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.
191
+ */
192
+
193
+ function log(...args) {
194
+ return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n');
195
+ }
196
+
197
+ /**
198
+ * Save `namespaces`.
199
+ *
200
+ * @param {String} namespaces
201
+ * @api private
202
+ */
203
+ function save(namespaces) {
204
+ if (namespaces) {
205
+ process.env.DEBUG = namespaces;
206
+ } else {
207
+ // If you set a process.env field to null or undefined, it gets cast to the
208
+ // string 'null' or 'undefined'. Just delete instead.
209
+ delete process.env.DEBUG;
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Load `namespaces`.
215
+ *
216
+ * @return {String} returns the previously persisted debug modes
217
+ * @api private
218
+ */
219
+
220
+ function load() {
221
+ return process.env.DEBUG;
222
+ }
223
+
224
+ /**
225
+ * Init logic for `debug` instances.
226
+ *
227
+ * Create a new `inspectOpts` object in case `useColors` is set
228
+ * differently for a particular `debug` instance.
229
+ */
230
+
231
+ function init(debug) {
232
+ debug.inspectOpts = {};
233
+
234
+ const keys = Object.keys(exports.inspectOpts);
235
+ for (let i = 0; i < keys.length; i++) {
236
+ debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
237
+ }
238
+ }
239
+
240
+ module.exports = require('./common')(exports);
241
+
242
+ const {formatters} = module.exports;
243
+
244
+ /**
245
+ * Map %o to `util.inspect()`, all on a single line.
246
+ */
247
+
248
+ formatters.o = function (v) {
249
+ this.inspectOpts.colors = this.useColors;
250
+ return util.inspect(v, this.inspectOpts)
251
+ .split('\n')
252
+ .map(str => str.trim())
253
+ .join(' ');
254
+ };
255
+
256
+ /**
257
+ * Map %O to `util.inspect()`, allowing multiple lines if needed.
258
+ */
259
+
260
+ formatters.O = function (v) {
261
+ this.inspectOpts.colors = this.useColors;
262
+ return util.inspect(v, this.inspectOpts);
263
+ };
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Helpers.
3
+ */
4
+
5
+ var s = 1000;
6
+ var m = s * 60;
7
+ var h = m * 60;
8
+ var d = h * 24;
9
+ var w = d * 7;
10
+ var y = d * 365.25;
11
+
12
+ /**
13
+ * Parse or format the given `val`.
14
+ *
15
+ * Options:
16
+ *
17
+ * - `long` verbose formatting [false]
18
+ *
19
+ * @param {String|Number} val
20
+ * @param {Object} [options]
21
+ * @throws {Error} throw an error if val is not a non-empty string or a number
22
+ * @return {String|Number}
23
+ * @api public
24
+ */
25
+
26
+ module.exports = function (val, options) {
27
+ options = options || {};
28
+ var type = typeof val;
29
+ if (type === 'string' && val.length > 0) {
30
+ return parse(val);
31
+ } else if (type === 'number' && isFinite(val)) {
32
+ return options.long ? fmtLong(val) : fmtShort(val);
33
+ }
34
+ throw new Error(
35
+ 'val is not a non-empty string or a valid number. val=' +
36
+ JSON.stringify(val)
37
+ );
38
+ };
39
+
40
+ /**
41
+ * Parse the given `str` and return milliseconds.
42
+ *
43
+ * @param {String} str
44
+ * @return {Number}
45
+ * @api private
46
+ */
47
+
48
+ function parse(str) {
49
+ str = String(str);
50
+ if (str.length > 100) {
51
+ return;
52
+ }
53
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
54
+ str
55
+ );
56
+ if (!match) {
57
+ return;
58
+ }
59
+ var n = parseFloat(match[1]);
60
+ var type = (match[2] || 'ms').toLowerCase();
61
+ switch (type) {
62
+ case 'years':
63
+ case 'year':
64
+ case 'yrs':
65
+ case 'yr':
66
+ case 'y':
67
+ return n * y;
68
+ case 'weeks':
69
+ case 'week':
70
+ case 'w':
71
+ return n * w;
72
+ case 'days':
73
+ case 'day':
74
+ case 'd':
75
+ return n * d;
76
+ case 'hours':
77
+ case 'hour':
78
+ case 'hrs':
79
+ case 'hr':
80
+ case 'h':
81
+ return n * h;
82
+ case 'minutes':
83
+ case 'minute':
84
+ case 'mins':
85
+ case 'min':
86
+ case 'm':
87
+ return n * m;
88
+ case 'seconds':
89
+ case 'second':
90
+ case 'secs':
91
+ case 'sec':
92
+ case 's':
93
+ return n * s;
94
+ case 'milliseconds':
95
+ case 'millisecond':
96
+ case 'msecs':
97
+ case 'msec':
98
+ case 'ms':
99
+ return n;
100
+ default:
101
+ return undefined;
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Short format for `ms`.
107
+ *
108
+ * @param {Number} ms
109
+ * @return {String}
110
+ * @api private
111
+ */
112
+
113
+ function fmtShort(ms) {
114
+ var msAbs = Math.abs(ms);
115
+ if (msAbs >= d) {
116
+ return Math.round(ms / d) + 'd';
117
+ }
118
+ if (msAbs >= h) {
119
+ return Math.round(ms / h) + 'h';
120
+ }
121
+ if (msAbs >= m) {
122
+ return Math.round(ms / m) + 'm';
123
+ }
124
+ if (msAbs >= s) {
125
+ return Math.round(ms / s) + 's';
126
+ }
127
+ return ms + 'ms';
128
+ }
129
+
130
+ /**
131
+ * Long format for `ms`.
132
+ *
133
+ * @param {Number} ms
134
+ * @return {String}
135
+ * @api private
136
+ */
137
+
138
+ function fmtLong(ms) {
139
+ var msAbs = Math.abs(ms);
140
+ if (msAbs >= d) {
141
+ return plural(ms, msAbs, d, 'day');
142
+ }
143
+ if (msAbs >= h) {
144
+ return plural(ms, msAbs, h, 'hour');
145
+ }
146
+ if (msAbs >= m) {
147
+ return plural(ms, msAbs, m, 'minute');
148
+ }
149
+ if (msAbs >= s) {
150
+ return plural(ms, msAbs, s, 'second');
151
+ }
152
+ return ms + ' ms';
153
+ }
154
+
155
+ /**
156
+ * Pluralization helper.
157
+ */
158
+
159
+ function plural(ms, msAbs, n, name) {
160
+ var isPlural = msAbs >= n * 1.5;
161
+ return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
162
+ }
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 Vercel, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "ms",
3
+ "version": "2.1.3",
4
+ "description": "Tiny millisecond conversion utility",
5
+ "repository": "vercel/ms",
6
+ "main": "./index",
7
+ "files": [
8
+ "index.js"
9
+ ],
10
+ "scripts": {
11
+ "precommit": "lint-staged",
12
+ "lint": "eslint lib/* bin/*",
13
+ "test": "mocha tests.js"
14
+ },
15
+ "eslintConfig": {
16
+ "extends": "eslint:recommended",
17
+ "env": {
18
+ "node": true,
19
+ "es6": true
20
+ }
21
+ },
22
+ "lint-staged": {
23
+ "*.js": [
24
+ "npm run lint",
25
+ "prettier --single-quote --write",
26
+ "git add"
27
+ ]
28
+ },
29
+ "license": "MIT",
30
+ "devDependencies": {
31
+ "eslint": "4.18.2",
32
+ "expect.js": "0.3.1",
33
+ "husky": "0.14.3",
34
+ "lint-staged": "5.0.0",
35
+ "mocha": "4.0.1",
36
+ "prettier": "2.0.5"
37
+ }
38
+ }
@@ -0,0 +1,59 @@
1
+ # ms
2
+
3
+ ![CI](https://github.com/vercel/ms/workflows/CI/badge.svg)
4
+
5
+ Use this package to easily convert various time formats to milliseconds.
6
+
7
+ ## Examples
8
+
9
+ ```js
10
+ ms('2 days') // 172800000
11
+ ms('1d') // 86400000
12
+ ms('10h') // 36000000
13
+ ms('2.5 hrs') // 9000000
14
+ ms('2h') // 7200000
15
+ ms('1m') // 60000
16
+ ms('5s') // 5000
17
+ ms('1y') // 31557600000
18
+ ms('100') // 100
19
+ ms('-3 days') // -259200000
20
+ ms('-1h') // -3600000
21
+ ms('-200') // -200
22
+ ```
23
+
24
+ ### Convert from Milliseconds
25
+
26
+ ```js
27
+ ms(60000) // "1m"
28
+ ms(2 * 60000) // "2m"
29
+ ms(-3 * 60000) // "-3m"
30
+ ms(ms('10 hours')) // "10h"
31
+ ```
32
+
33
+ ### Time Format Written-Out
34
+
35
+ ```js
36
+ ms(60000, { long: true }) // "1 minute"
37
+ ms(2 * 60000, { long: true }) // "2 minutes"
38
+ ms(-3 * 60000, { long: true }) // "-3 minutes"
39
+ ms(ms('10 hours'), { long: true }) // "10 hours"
40
+ ```
41
+
42
+ ## Features
43
+
44
+ - Works both in [Node.js](https://nodejs.org) and in the browser
45
+ - If a number is supplied to `ms`, a string with a unit is returned
46
+ - If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`)
47
+ - If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned
48
+
49
+ ## Related Packages
50
+
51
+ - [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time.
52
+
53
+ ## Caught a Bug?
54
+
55
+ 1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
56
+ 2. Link the package to the global module directory: `npm link`
57
+ 3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms!
58
+
59
+ As always, you can run the tests using: `npm test`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "express-rate-limit",
3
- "version": "8.5.2",
3
+ "version": "8.6.1",
4
4
  "description": "Basic IP rate-limiting middleware for Express. Use to limit repeated requests to public APIs and/or endpoints such as password reset.",
5
5
  "author": {
6
6
  "name": "Nathan Friedly",
@@ -75,33 +75,36 @@
75
75
  "prepare": "run-s compile && husky"
76
76
  },
77
77
  "dependencies": {
78
+ "debug": "^4.4.3",
78
79
  "ip-address": "^10.2.0"
79
80
  },
80
81
  "peerDependencies": {
81
82
  "express": ">= 4.11"
82
83
  },
83
84
  "devDependencies": {
85
+ "@asyncapi/specs": "6.11.1",
84
86
  "@biomejs/biome": "2.4.6",
85
87
  "@express-rate-limit/prettier": "1.1.1",
86
- "@express-rate-limit/tsconfig": "1.0.2",
88
+ "@express-rate-limit/tsconfig": "1.0.5",
87
89
  "@jest/globals": "30.4.1",
90
+ "@types/debug": "4.1.13",
88
91
  "@types/express": "5.0.6",
89
92
  "@types/jest": "30.0.0",
90
- "@types/node": "25.7.0",
91
- "@types/supertest": "7.2.0",
93
+ "@types/node": "26.1.1",
94
+ "@types/supertest": "7.2.1",
92
95
  "del-cli": "7.0.0",
93
96
  "dts-bundle-generator": "8.1.2",
94
- "esbuild": "0.28.0",
97
+ "esbuild": "0.28.1",
95
98
  "express": "5.2.1",
96
99
  "husky": "9.1.7",
97
100
  "jest": "30.4.2",
98
- "lint-staged": "17.0.4",
99
- "mintlify": "4.2.559",
101
+ "lint-staged": "17.1.0",
102
+ "mintlify": "4.2.715",
100
103
  "npm-run-all": "4.1.5",
101
- "prettier": "3.8.3",
104
+ "prettier": "3.9.5",
102
105
  "ratelimit-header-parser": "0.1.0",
103
106
  "supertest": "7.2.2",
104
- "ts-jest": "29.4.9",
107
+ "ts-jest": "29.4.11",
105
108
  "ts-node": "10.9.2",
106
109
  "typescript": "5.9.3"
107
110
  },
@@ -202,6 +202,10 @@ function serialize (cmpts, opts) {
202
202
 
203
203
  const URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u
204
204
 
205
+ // Captures the authority component (between "//" and the next "/", "?" or "#"),
206
+ // with or without a scheme prefix, for the literal-backslash rejection below.
207
+ const AUTHORITY_PREFIX = /^(?:[^#/:?]+:)?\/\/([^/?#]*)/
208
+
205
209
  /**
206
210
  * @param {import('./types/index').URIComponent} parsed
207
211
  * @param {RegExpMatchArray} matches
@@ -248,6 +252,19 @@ function parseWithStatus (uri, opts) {
248
252
  }
249
253
  }
250
254
 
255
+ // A literal backslash (U+005C) is not a valid RFC 3986 URI character and is
256
+ // not an authority delimiter. Reject it in the authority rather than
257
+ // rewriting it: normalizing "\" -> "/" (WHATWG error recovery) could silently
258
+ // change the resource identified by an otherwise-invalid input, and lets "\"
259
+ // act as a host delimiter here while Node's native URL parses a different
260
+ // host (SSRF / redirect / origin-allowlist bypass). Percent-encoded %5C is
261
+ // untouched and remains valid encoded data.
262
+ const authorityMatch = uri.match(AUTHORITY_PREFIX)
263
+ if (authorityMatch !== null && authorityMatch[1].indexOf('\\') !== -1) {
264
+ parsed.error = 'URI authority must not contain a literal backslash.'
265
+ malformedAuthorityOrPort = true
266
+ }
267
+
251
268
  const matches = uri.match(URI_PARSE)
252
269
 
253
270
  if (matches) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fast-uri",
3
3
  "description": "Dependency-free RFC 3986 URI toolbox",
4
- "version": "3.1.3",
4
+ "version": "3.1.4",
5
5
  "main": "index.js",
6
6
  "type": "commonjs",
7
7
  "types": "types/index.d.ts",
@@ -159,3 +159,65 @@ test('parse canonicalises IDN / Unicode hosts to their ASCII form', (t) => {
159
159
  t.equal(parsed.host, expectedHost, `host canonicalised to ASCII: ${description}`)
160
160
  })
161
161
  })
162
+
163
+ test('parse rejects a literal backslash in the authority as malformed (RFC 3986)', (t) => {
164
+ // Regression for the host-confusion bypass: a literal "\" is invalid RFC 3986
165
+ // syntax and must be flagged malformed, not silently rewritten. Otherwise "\"
166
+ // acts as a host delimiter here while Node's native URL parses a different
167
+ // host, defeating a host-based SSRF/redirect/origin allowlist.
168
+ const cases = [
169
+ 'http://evil.com\\@allowed.com',
170
+ 'https://169.254.169.254\\@trusted.example.com',
171
+ 'http://127.0.0.1\\@public.example.com',
172
+ 'https://attacker.com\\@api.internal',
173
+ 'http://a\\@b',
174
+ 'ws://evil.com\\@allowed.com/chat',
175
+ 'wss://evil.com\\@allowed.com/chat',
176
+ 'http://evil.com\\%40allowed.com',
177
+ '//evil.com\\@allowed.com'
178
+ ]
179
+
180
+ t.plan(cases.length)
181
+
182
+ cases.forEach((input) => {
183
+ t.equal(
184
+ fastURI.parse(input).error,
185
+ 'URI authority must not contain a literal backslash.',
186
+ input
187
+ )
188
+ })
189
+ })
190
+
191
+ test('normalize does not canonicalize a literal-backslash URI into a different valid URL', (t) => {
192
+ const cases = [
193
+ 'http://evil.com\\@allowed.com',
194
+ 'https://attacker.com\\@api.internal'
195
+ ]
196
+
197
+ t.plan(cases.length)
198
+
199
+ cases.forEach((input) => {
200
+ t.equal(fastURI.normalize(input), input, input)
201
+ })
202
+ })
203
+
204
+ test('parse leaves percent-encoded %5C untouched as encoded data (not rejected)', (t) => {
205
+ // Only the literal "\" byte is rejected; %5C stays valid encoded data and
206
+ // does not diverge from the native URL parser, so it must not be flagged.
207
+ const input = 'http://evil.com%5C@allowed.com'
208
+ const parsed = fastURI.parse(input)
209
+
210
+ t.plan(2)
211
+ t.notOk(parsed.error, '%5C is valid encoded data, not malformed')
212
+ t.equal(parsed.host, new URL(input).hostname, '%5C host matches native URL (no divergence)')
213
+ })
214
+
215
+ test('parse does not reject a literal backslash in the query or fragment', (t) => {
216
+ // The rejection is scoped to the authority/path (the host-confusion surface);
217
+ // a backslash after "?"/"#" is normalized as encoded data as before.
218
+ const parsed = fastURI.parse('http://host.example.com/?x=\\y#z\\w')
219
+
220
+ t.plan(2)
221
+ t.notOk(parsed.error, 'backslash in query/fragment does not mark the URI malformed')
222
+ t.equal(parsed.host, 'host.example.com', 'host parsed normally')
223
+ })