@psnext/slingcli 3.3.20260924-1 → 3.3.20261005-1

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 (749) hide show
  1. package/node_modules/@hono/node-server/README.md +21 -10
  2. package/node_modules/@hono/node-server/dist/early-hints.cjs +1 -1
  3. package/node_modules/@hono/node-server/dist/early-hints.mjs +1 -1
  4. package/node_modules/@hono/node-server/dist/index.cjs +41 -19
  5. package/node_modules/@hono/node-server/dist/index.mjs +42 -20
  6. package/node_modules/@hono/node-server/dist/serve-static.cjs +1 -0
  7. package/node_modules/@hono/node-server/dist/serve-static.d.cts +2 -1
  8. package/node_modules/@hono/node-server/dist/serve-static.d.mts +2 -1
  9. package/node_modules/@hono/node-server/dist/serve-static.mjs +1 -0
  10. package/node_modules/@hono/node-server/package.json +3 -2
  11. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.d.ts +43 -2
  12. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.d.ts.map +1 -1
  13. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.js +26 -5
  14. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth-extensions.js.map +1 -1
  15. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts +11 -0
  16. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.d.ts.map +1 -1
  17. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.js +105 -21
  18. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/auth.js.map +1 -1
  19. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.d.ts +13 -0
  20. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.d.ts.map +1 -1
  21. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.js +17 -4
  22. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/sse.js.map +1 -1
  23. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.d.ts +13 -0
  24. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.d.ts.map +1 -1
  25. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js +23 -10
  26. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/client/streamableHttp.js.map +1 -1
  27. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.d.ts +1 -0
  28. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.d.ts.map +1 -1
  29. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.js +11 -2
  30. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/client/simpleClientCredentials.js.map +1 -1
  31. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/demoInMemoryOAuthProvider.d.ts +2 -0
  32. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/demoInMemoryOAuthProvider.d.ts.map +1 -1
  33. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationFormExample.js +63 -20
  34. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationFormExample.js.map +1 -1
  35. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationUrlExample.js +71 -29
  36. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/elicitationUrlExample.js.map +1 -1
  37. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/jsonResponseStreamableHttp.js +45 -6
  38. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -1
  39. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleStreamableHttp.js +71 -31
  40. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -1
  41. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleTaskInteractive.js +61 -18
  42. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/simpleTaskInteractive.js.map +1 -1
  43. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +57 -19
  44. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
  45. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/ssePollingExample.js +64 -17
  46. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/ssePollingExample.js.map +1 -1
  47. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +61 -13
  48. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
  49. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.d.ts +4 -0
  50. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.d.ts.map +1 -1
  51. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/interfaces.js.map +1 -1
  52. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.d.ts +17 -8
  53. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.d.ts.map +1 -1
  54. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.js +31 -14
  55. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/experimental/tasks/stores/in-memory.js.map +1 -1
  56. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.d.ts +9 -1
  57. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.d.ts.map +1 -1
  58. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.js +17 -1
  59. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/middleware/bearerAuth.js.map +1 -1
  60. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.d.ts.map +1 -1
  61. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.js +6 -3
  62. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/providers/proxyProvider.js.map +1 -1
  63. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts +12 -1
  64. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.d.ts.map +1 -1
  65. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js +46 -2
  66. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js.map +1 -1
  67. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.d.ts +3 -0
  68. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.d.ts.map +1 -1
  69. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.js +12 -2
  70. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.js.map +1 -1
  71. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts +1 -0
  72. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.d.ts.map +1 -1
  73. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.js +39 -9
  74. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/protocol.js.map +1 -1
  75. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts +10 -0
  76. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.d.ts.map +1 -1
  77. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.js +77 -0
  78. package/node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/transport.js.map +1 -1
  79. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.d.ts +43 -2
  80. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.d.ts.map +1 -1
  81. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.js +26 -5
  82. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth-extensions.js.map +1 -1
  83. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts +11 -0
  84. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.d.ts.map +1 -1
  85. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js +105 -21
  86. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js.map +1 -1
  87. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts +13 -0
  88. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.d.ts.map +1 -1
  89. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.js +18 -5
  90. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/sse.js.map +1 -1
  91. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.d.ts +13 -0
  92. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.d.ts.map +1 -1
  93. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js +24 -11
  94. package/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js.map +1 -1
  95. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.d.ts +1 -0
  96. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.d.ts.map +1 -1
  97. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.js +11 -2
  98. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleClientCredentials.js.map +1 -1
  99. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/demoInMemoryOAuthProvider.d.ts +2 -0
  100. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/demoInMemoryOAuthProvider.d.ts.map +1 -1
  101. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationFormExample.js +63 -20
  102. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationFormExample.js.map +1 -1
  103. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationUrlExample.js +71 -29
  104. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/elicitationUrlExample.js.map +1 -1
  105. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/jsonResponseStreamableHttp.js +45 -6
  106. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -1
  107. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleStreamableHttp.js +71 -31
  108. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -1
  109. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleTaskInteractive.js +61 -18
  110. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/simpleTaskInteractive.js.map +1 -1
  111. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +57 -19
  112. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
  113. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/ssePollingExample.js +64 -17
  114. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/ssePollingExample.js.map +1 -1
  115. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +61 -13
  116. package/node_modules/@modelcontextprotocol/sdk/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
  117. package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.d.ts +4 -0
  118. package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.d.ts.map +1 -1
  119. package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js.map +1 -1
  120. package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.d.ts +17 -8
  121. package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.d.ts.map +1 -1
  122. package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.js +31 -14
  123. package/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/stores/in-memory.js.map +1 -1
  124. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.d.ts +9 -1
  125. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.d.ts.map +1 -1
  126. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.js +17 -1
  127. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/middleware/bearerAuth.js.map +1 -1
  128. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.d.ts.map +1 -1
  129. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.js +6 -3
  130. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/providers/proxyProvider.js.map +1 -1
  131. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts +12 -1
  132. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts.map +1 -1
  133. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +46 -2
  134. package/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -1
  135. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts +3 -0
  136. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.d.ts.map +1 -1
  137. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js +12 -2
  138. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js.map +1 -1
  139. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts +1 -0
  140. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts.map +1 -1
  141. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +39 -9
  142. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -1
  143. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts +10 -0
  144. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts.map +1 -1
  145. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.js +72 -0
  146. package/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.js.map +1 -1
  147. package/node_modules/@modelcontextprotocol/sdk/package.json +1 -1
  148. package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +33 -11
  149. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +3 -0
  150. package/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/exceptions.js +33 -11
  151. package/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +3 -0
  152. package/node_modules/@smithy/core/dist-types/submodules/client/smithy-client/exceptions.d.ts +1 -0
  153. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/client/smithy-client/exceptions.d.ts +1 -0
  154. package/node_modules/@smithy/core/package.json +1 -1
  155. package/node_modules/@smithy/signature-v4/dist-cjs/index.js +4 -1
  156. package/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js +4 -1
  157. package/node_modules/@smithy/signature-v4/package.json +3 -3
  158. package/node_modules/@types/node/README.md +1 -1
  159. package/node_modules/@types/node/crypto.d.ts +2 -2
  160. package/node_modules/@types/node/dgram.d.ts +1 -1
  161. package/node_modules/@types/node/package.json +2 -2
  162. package/node_modules/@types/node/zlib.d.ts +6 -0
  163. package/node_modules/hono/dist/_virtual/_rolldown/runtime.js +13 -0
  164. package/node_modules/hono/dist/adapter/aws-lambda/conninfo.js +42 -23
  165. package/node_modules/hono/dist/adapter/aws-lambda/handler.js +318 -344
  166. package/node_modules/hono/dist/adapter/aws-lambda/index.js +2 -8
  167. package/node_modules/hono/dist/adapter/aws-lambda/types.js +1 -0
  168. package/node_modules/hono/dist/adapter/bun/conninfo.js +20 -25
  169. package/node_modules/hono/dist/adapter/bun/index.js +3 -13
  170. package/node_modules/hono/dist/adapter/bun/serve-static.js +27 -27
  171. package/node_modules/hono/dist/adapter/bun/server.js +11 -5
  172. package/node_modules/hono/dist/adapter/bun/ssg.js +25 -15
  173. package/node_modules/hono/dist/adapter/bun/websocket.js +61 -68
  174. package/node_modules/hono/dist/adapter/cloudflare-pages/conninfo.js +24 -9
  175. package/node_modules/hono/dist/adapter/cloudflare-pages/handler.js +59 -62
  176. package/node_modules/hono/dist/adapter/cloudflare-pages/index.js +2 -8
  177. package/node_modules/hono/dist/adapter/cloudflare-workers/conninfo.js +7 -9
  178. package/node_modules/hono/dist/adapter/cloudflare-workers/index.js +3 -8
  179. package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static-module.js +5 -6
  180. package/node_modules/hono/dist/adapter/cloudflare-workers/serve-static.js +26 -20
  181. package/node_modules/hono/dist/adapter/cloudflare-workers/utils.js +21 -34
  182. package/node_modules/hono/dist/adapter/cloudflare-workers/websocket.js +31 -39
  183. package/node_modules/hono/dist/adapter/deno/conninfo.js +16 -13
  184. package/node_modules/hono/dist/adapter/deno/deno.d.js +1 -0
  185. package/node_modules/hono/dist/adapter/deno/index.js +3 -10
  186. package/node_modules/hono/dist/adapter/deno/serve-static.js +33 -38
  187. package/node_modules/hono/dist/adapter/deno/ssg.js +27 -16
  188. package/node_modules/hono/dist/adapter/deno/websocket.js +30 -30
  189. package/node_modules/hono/dist/adapter/lambda-edge/conninfo.js +7 -9
  190. package/node_modules/hono/dist/adapter/lambda-edge/handler.js +102 -101
  191. package/node_modules/hono/dist/adapter/lambda-edge/index.js +2 -6
  192. package/node_modules/hono/dist/adapter/netlify/conninfo.js +24 -9
  193. package/node_modules/hono/dist/adapter/netlify/handler.js +10 -8
  194. package/node_modules/hono/dist/adapter/netlify/index.js +3 -2
  195. package/node_modules/hono/dist/adapter/netlify/mod.js +2 -6
  196. package/node_modules/hono/dist/adapter/service-worker/handler.js +15 -19
  197. package/node_modules/hono/dist/adapter/service-worker/index.js +23 -7
  198. package/node_modules/hono/dist/adapter/service-worker/types.js +1 -0
  199. package/node_modules/hono/dist/adapter/vercel/conninfo.js +7 -10
  200. package/node_modules/hono/dist/adapter/vercel/handler.js +8 -6
  201. package/node_modules/hono/dist/adapter/vercel/index.js +2 -6
  202. package/node_modules/hono/dist/cjs/_virtual/_rolldown/runtime.js +33 -0
  203. package/node_modules/hono/dist/cjs/adapter/aws-lambda/conninfo.js +42 -44
  204. package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +326 -373
  205. package/node_modules/hono/dist/cjs/adapter/aws-lambda/index.js +7 -34
  206. package/node_modules/hono/dist/cjs/adapter/aws-lambda/types.js +0 -15
  207. package/node_modules/hono/dist/cjs/adapter/bun/conninfo.js +21 -47
  208. package/node_modules/hono/dist/cjs/adapter/bun/index.js +14 -45
  209. package/node_modules/hono/dist/cjs/adapter/bun/serve-static.js +29 -50
  210. package/node_modules/hono/dist/cjs/adapter/bun/server.js +11 -26
  211. package/node_modules/hono/dist/cjs/adapter/bun/ssg.js +24 -35
  212. package/node_modules/hono/dist/cjs/adapter/bun/websocket.js +63 -91
  213. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/conninfo.js +25 -31
  214. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/handler.js +61 -85
  215. package/node_modules/hono/dist/cjs/adapter/cloudflare-pages/index.js +7 -34
  216. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/conninfo.js +8 -31
  217. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/index.js +7 -33
  218. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +7 -29
  219. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/serve-static.js +27 -42
  220. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/utils.js +21 -55
  221. package/node_modules/hono/dist/cjs/adapter/cloudflare-workers/websocket.js +33 -62
  222. package/node_modules/hono/dist/cjs/adapter/deno/conninfo.js +16 -34
  223. package/node_modules/hono/dist/cjs/adapter/deno/index.js +10 -38
  224. package/node_modules/hono/dist/cjs/adapter/deno/serve-static.js +33 -59
  225. package/node_modules/hono/dist/cjs/adapter/deno/ssg.js +27 -37
  226. package/node_modules/hono/dist/cjs/adapter/deno/websocket.js +32 -53
  227. package/node_modules/hono/dist/cjs/adapter/lambda-edge/conninfo.js +8 -31
  228. package/node_modules/hono/dist/cjs/adapter/lambda-edge/handler.js +102 -130
  229. package/node_modules/hono/dist/cjs/adapter/lambda-edge/index.js +5 -30
  230. package/node_modules/hono/dist/cjs/adapter/netlify/conninfo.js +25 -31
  231. package/node_modules/hono/dist/cjs/adapter/netlify/handler.js +10 -29
  232. package/node_modules/hono/dist/cjs/adapter/netlify/index.js +5 -21
  233. package/node_modules/hono/dist/cjs/adapter/netlify/mod.js +5 -30
  234. package/node_modules/hono/dist/cjs/adapter/service-worker/handler.js +16 -41
  235. package/node_modules/hono/dist/cjs/adapter/service-worker/index.js +25 -30
  236. package/node_modules/hono/dist/cjs/adapter/service-worker/types.js +0 -15
  237. package/node_modules/hono/dist/cjs/adapter/vercel/conninfo.js +8 -32
  238. package/node_modules/hono/dist/cjs/adapter/vercel/handler.js +8 -27
  239. package/node_modules/hono/dist/cjs/adapter/vercel/index.js +5 -30
  240. package/node_modules/hono/dist/cjs/client/client.js +139 -212
  241. package/node_modules/hono/dist/cjs/client/fetch-result-please.js +62 -80
  242. package/node_modules/hono/dist/cjs/client/index.js +7 -32
  243. package/node_modules/hono/dist/cjs/client/types.js +0 -15
  244. package/node_modules/hono/dist/cjs/client/utils.js +54 -92
  245. package/node_modules/hono/dist/cjs/compose.js +49 -66
  246. package/node_modules/hono/dist/cjs/context.js +379 -450
  247. package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +47 -72
  248. package/node_modules/hono/dist/cjs/helper/accepts/index.js +3 -27
  249. package/node_modules/hono/dist/cjs/helper/adapter/index.js +33 -73
  250. package/node_modules/hono/dist/cjs/helper/conninfo/index.js +0 -15
  251. package/node_modules/hono/dist/cjs/helper/conninfo/types.js +0 -15
  252. package/node_modules/hono/dist/cjs/helper/cookie/index.js +75 -116
  253. package/node_modules/hono/dist/cjs/helper/css/common.js +165 -244
  254. package/node_modules/hono/dist/cjs/helper/css/index.js +136 -151
  255. package/node_modules/hono/dist/cjs/helper/dev/index.js +45 -71
  256. package/node_modules/hono/dist/cjs/helper/factory/index.js +30 -51
  257. package/node_modules/hono/dist/cjs/helper/html/index.js +32 -62
  258. package/node_modules/hono/dist/cjs/helper/proxy/index.js +113 -106
  259. package/node_modules/hono/dist/cjs/helper/route/index.js +123 -66
  260. package/node_modules/hono/dist/cjs/helper/ssg/index.js +19 -43
  261. package/node_modules/hono/dist/cjs/helper/ssg/middleware.js +56 -64
  262. package/node_modules/hono/dist/cjs/helper/ssg/plugins.js +55 -57
  263. package/node_modules/hono/dist/cjs/helper/ssg/ssg.js +196 -296
  264. package/node_modules/hono/dist/cjs/helper/ssg/utils.js +47 -90
  265. package/node_modules/hono/dist/cjs/helper/streaming/index.js +8 -35
  266. package/node_modules/hono/dist/cjs/helper/streaming/sse.js +53 -85
  267. package/node_modules/hono/dist/cjs/helper/streaming/stream.js +23 -53
  268. package/node_modules/hono/dist/cjs/helper/streaming/text.js +10 -32
  269. package/node_modules/hono/dist/cjs/helper/streaming/utils.js +13 -32
  270. package/node_modules/hono/dist/cjs/helper/testing/index.js +16 -31
  271. package/node_modules/hono/dist/cjs/helper/websocket/index.js +51 -76
  272. package/node_modules/hono/dist/cjs/hono-base.js +347 -403
  273. package/node_modules/hono/dist/cjs/hono.js +28 -42
  274. package/node_modules/hono/dist/cjs/http-exception.js +55 -56
  275. package/node_modules/hono/dist/cjs/index.js +22 -30
  276. package/node_modules/hono/dist/cjs/jsx/base.js +237 -366
  277. package/node_modules/hono/dist/cjs/jsx/children.js +16 -41
  278. package/node_modules/hono/dist/cjs/jsx/components.js +119 -192
  279. package/node_modules/hono/dist/cjs/jsx/constants.js +15 -42
  280. package/node_modules/hono/dist/cjs/jsx/context.js +144 -162
  281. package/node_modules/hono/dist/cjs/jsx/dom/client.js +49 -69
  282. package/node_modules/hono/dist/cjs/jsx/dom/components.js +23 -52
  283. package/node_modules/hono/dist/cjs/jsx/dom/context.js +39 -67
  284. package/node_modules/hono/dist/cjs/jsx/dom/css.js +143 -158
  285. package/node_modules/hono/dist/cjs/jsx/dom/hooks/index.js +55 -64
  286. package/node_modules/hono/dist/cjs/jsx/dom/index.js +114 -173
  287. package/node_modules/hono/dist/cjs/jsx/dom/intrinsic-element/components.js +282 -375
  288. package/node_modules/hono/dist/cjs/jsx/dom/jsx-dev-runtime.js +14 -49
  289. package/node_modules/hono/dist/cjs/jsx/dom/jsx-runtime.js +5 -32
  290. package/node_modules/hono/dist/cjs/jsx/dom/render.js +469 -623
  291. package/node_modules/hono/dist/cjs/jsx/dom/server.js +37 -64
  292. package/node_modules/hono/dist/cjs/jsx/dom/utils.js +7 -30
  293. package/node_modules/hono/dist/cjs/jsx/hooks/index.js +225 -318
  294. package/node_modules/hono/dist/cjs/jsx/index.js +86 -135
  295. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/common.js +20 -43
  296. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +117 -168
  297. package/node_modules/hono/dist/cjs/jsx/intrinsic-elements.js +0 -15
  298. package/node_modules/hono/dist/cjs/jsx/jsx-dev-runtime.js +14 -39
  299. package/node_modules/hono/dist/cjs/jsx/jsx-runtime.js +34 -68
  300. package/node_modules/hono/dist/cjs/jsx/streaming.js +123 -166
  301. package/node_modules/hono/dist/cjs/jsx/types.js +0 -15
  302. package/node_modules/hono/dist/cjs/jsx/utils.js +91 -175
  303. package/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +98 -86
  304. package/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +92 -109
  305. package/node_modules/hono/dist/cjs/middleware/body-limit/index.js +66 -72
  306. package/node_modules/hono/dist/cjs/middleware/cache/index.js +153 -199
  307. package/node_modules/hono/dist/cjs/middleware/combine/index.js +135 -95
  308. package/node_modules/hono/dist/cjs/middleware/compress/index.js +73 -88
  309. package/node_modules/hono/dist/cjs/middleware/context-storage/index.js +49 -41
  310. package/node_modules/hono/dist/cjs/middleware/cors/index.js +107 -107
  311. package/node_modules/hono/dist/cjs/middleware/csrf/index.js +101 -72
  312. package/node_modules/hono/dist/cjs/middleware/etag/digest.js +58 -97
  313. package/node_modules/hono/dist/cjs/middleware/etag/index.js +71 -91
  314. package/node_modules/hono/dist/cjs/middleware/ip-restriction/index.js +161 -169
  315. package/node_modules/hono/dist/cjs/middleware/jsx-renderer/index.js +99 -77
  316. package/node_modules/hono/dist/cjs/middleware/jwk/index.js +3 -27
  317. package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +118 -135
  318. package/node_modules/hono/dist/cjs/middleware/jwt/index.js +9 -38
  319. package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +120 -141
  320. package/node_modules/hono/dist/cjs/middleware/language/index.js +7 -35
  321. package/node_modules/hono/dist/cjs/middleware/language/language.js +184 -182
  322. package/node_modules/hono/dist/cjs/middleware/logger/index.js +41 -62
  323. package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +82 -88
  324. package/node_modules/hono/dist/cjs/middleware/method-override/index.js +101 -102
  325. package/node_modules/hono/dist/cjs/middleware/mount/index.js +71 -0
  326. package/node_modules/hono/dist/cjs/middleware/powered-by/index.js +23 -30
  327. package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +38 -42
  328. package/node_modules/hono/dist/cjs/middleware/request-id/index.js +3 -27
  329. package/node_modules/hono/dist/cjs/middleware/request-id/request-id.js +34 -42
  330. package/node_modules/hono/dist/cjs/middleware/secure-headers/index.js +4 -29
  331. package/node_modules/hono/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -15
  332. package/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +142 -174
  333. package/node_modules/hono/dist/cjs/middleware/serve-static/index.js +56 -93
  334. package/node_modules/hono/dist/cjs/middleware/serve-static/path.js +15 -38
  335. package/node_modules/hono/dist/cjs/middleware/timeout/index.js +40 -45
  336. package/node_modules/hono/dist/cjs/middleware/timing/index.js +7 -35
  337. package/node_modules/hono/dist/cjs/middleware/timing/timing.js +177 -118
  338. package/node_modules/hono/dist/cjs/middleware/trailing-slash/index.js +85 -58
  339. package/node_modules/hono/dist/cjs/preset/quick.js +18 -37
  340. package/node_modules/hono/dist/cjs/preset/tiny.js +15 -33
  341. package/node_modules/hono/dist/cjs/request/constants.js +5 -27
  342. package/node_modules/hono/dist/cjs/request.js +334 -346
  343. package/node_modules/hono/dist/cjs/router/linear-router/index.js +3 -27
  344. package/node_modules/hono/dist/cjs/router/linear-router/router.js +95 -143
  345. package/node_modules/hono/dist/cjs/router/pattern-router/index.js +3 -27
  346. package/node_modules/hono/dist/cjs/router/pattern-router/router.js +41 -63
  347. package/node_modules/hono/dist/cjs/router/reg-exp-router/index.js +7 -34
  348. package/node_modules/hono/dist/cjs/router/reg-exp-router/matcher.js +18 -45
  349. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +91 -135
  350. package/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +92 -161
  351. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +98 -147
  352. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +73 -89
  353. package/node_modules/hono/dist/cjs/router/smart-router/index.js +3 -27
  354. package/node_modules/hono/dist/cjs/router/smart-router/router.js +49 -79
  355. package/node_modules/hono/dist/cjs/router/trie-router/index.js +3 -27
  356. package/node_modules/hono/dist/cjs/router/trie-router/node.js +134 -186
  357. package/node_modules/hono/dist/cjs/router/trie-router/router.js +15 -39
  358. package/node_modules/hono/dist/cjs/router/utils.js +5 -27
  359. package/node_modules/hono/dist/cjs/router.js +37 -37
  360. package/node_modules/hono/dist/cjs/types.js +5 -28
  361. package/node_modules/hono/dist/cjs/utils/accept.js +177 -225
  362. package/node_modules/hono/dist/cjs/utils/basic-auth.js +16 -40
  363. package/node_modules/hono/dist/cjs/utils/body.js +84 -110
  364. package/node_modules/hono/dist/cjs/utils/buffer.js +43 -91
  365. package/node_modules/hono/dist/cjs/utils/color.js +35 -44
  366. package/node_modules/hono/dist/cjs/utils/compress.js +11 -26
  367. package/node_modules/hono/dist/cjs/utils/concurrent.js +29 -59
  368. package/node_modules/hono/dist/cjs/utils/constants.js +7 -26
  369. package/node_modules/hono/dist/cjs/utils/cookie.js +107 -177
  370. package/node_modules/hono/dist/cjs/utils/crypto.js +30 -61
  371. package/node_modules/hono/dist/cjs/utils/encode.js +31 -48
  372. package/node_modules/hono/dist/cjs/utils/filepath.js +23 -54
  373. package/node_modules/hono/dist/cjs/utils/handler.js +11 -33
  374. package/node_modules/hono/dist/cjs/utils/headers.js +0 -15
  375. package/node_modules/hono/dist/cjs/utils/html.js +96 -137
  376. package/node_modules/hono/dist/cjs/utils/http-status.js +0 -15
  377. package/node_modules/hono/dist/cjs/utils/ipaddr.js +213 -286
  378. package/node_modules/hono/dist/cjs/utils/jwt/index.js +14 -27
  379. package/node_modules/hono/dist/cjs/utils/jwt/jwa.js +25 -42
  380. package/node_modules/hono/dist/cjs/utils/jwt/jws.js +119 -199
  381. package/node_modules/hono/dist/cjs/utils/jwt/jwt.js +122 -206
  382. package/node_modules/hono/dist/cjs/utils/jwt/types.js +122 -159
  383. package/node_modules/hono/dist/cjs/utils/jwt/utf8.js +9 -28
  384. package/node_modules/hono/dist/cjs/utils/mime.js +75 -101
  385. package/node_modules/hono/dist/cjs/utils/stream.js +88 -111
  386. package/node_modules/hono/dist/cjs/utils/types.js +0 -15
  387. package/node_modules/hono/dist/cjs/utils/url.js +185 -234
  388. package/node_modules/hono/dist/cjs/validator/index.js +3 -27
  389. package/node_modules/hono/dist/cjs/validator/utils.js +0 -15
  390. package/node_modules/hono/dist/cjs/validator/validator.js +60 -103
  391. package/node_modules/hono/dist/client/client.js +138 -197
  392. package/node_modules/hono/dist/client/fetch-result-please.js +59 -56
  393. package/node_modules/hono/dist/client/index.js +3 -7
  394. package/node_modules/hono/dist/client/types.js +1 -0
  395. package/node_modules/hono/dist/client/utils.js +51 -68
  396. package/node_modules/hono/dist/compose.js +49 -45
  397. package/node_modules/hono/dist/context.js +376 -426
  398. package/node_modules/hono/dist/helper/accepts/accepts.js +47 -51
  399. package/node_modules/hono/dist/helper/accepts/index.js +1 -4
  400. package/node_modules/hono/dist/helper/adapter/index.js +33 -52
  401. package/node_modules/hono/dist/helper/conninfo/index.js +1 -0
  402. package/node_modules/hono/dist/helper/conninfo/types.js +1 -0
  403. package/node_modules/hono/dist/helper/cookie/index.js +74 -94
  404. package/node_modules/hono/dist/helper/css/common.js +167 -225
  405. package/node_modules/hono/dist/helper/css/index.js +132 -137
  406. package/node_modules/hono/dist/helper/dev/index.js +44 -49
  407. package/node_modules/hono/dist/helper/factory/index.js +27 -27
  408. package/node_modules/hono/dist/helper/html/index.js +30 -39
  409. package/node_modules/hono/dist/helper/proxy/index.js +116 -88
  410. package/node_modules/hono/dist/helper/route/index.js +121 -43
  411. package/node_modules/hono/dist/helper/ssg/index.js +3 -18
  412. package/node_modules/hono/dist/helper/ssg/middleware.js +53 -40
  413. package/node_modules/hono/dist/helper/ssg/plugins.js +55 -36
  414. package/node_modules/hono/dist/helper/ssg/ssg.js +198 -283
  415. package/node_modules/hono/dist/helper/ssg/utils.js +53 -75
  416. package/node_modules/hono/dist/helper/streaming/index.js +2 -8
  417. package/node_modules/hono/dist/helper/streaming/sse.js +50 -61
  418. package/node_modules/hono/dist/helper/streaming/stream.js +22 -31
  419. package/node_modules/hono/dist/helper/streaming/text.js +9 -10
  420. package/node_modules/hono/dist/helper/streaming/utils.js +9 -12
  421. package/node_modules/hono/dist/helper/testing/index.js +16 -10
  422. package/node_modules/hono/dist/helper/websocket/index.js +49 -53
  423. package/node_modules/hono/dist/hono-base.js +344 -379
  424. package/node_modules/hono/dist/hono.js +27 -20
  425. package/node_modules/hono/dist/http-exception.js +53 -33
  426. package/node_modules/hono/dist/index.js +19 -6
  427. package/node_modules/hono/dist/jsx/base.js +231 -340
  428. package/node_modules/hono/dist/jsx/children.js +16 -20
  429. package/node_modules/hono/dist/jsx/components.js +118 -170
  430. package/node_modules/hono/dist/jsx/constants.js +9 -15
  431. package/node_modules/hono/dist/jsx/context.js +153 -150
  432. package/node_modules/hono/dist/jsx/dom/client.js +45 -48
  433. package/node_modules/hono/dist/jsx/dom/components.js +21 -29
  434. package/node_modules/hono/dist/jsx/dom/context.js +37 -44
  435. package/node_modules/hono/dist/jsx/dom/css.js +142 -147
  436. package/node_modules/hono/dist/jsx/dom/hooks/index.js +52 -40
  437. package/node_modules/hono/dist/jsx/dom/index.js +71 -134
  438. package/node_modules/hono/dist/jsx/dom/intrinsic-element/components.js +275 -359
  439. package/node_modules/hono/dist/jsx/dom/jsx-dev-runtime.js +14 -18
  440. package/node_modules/hono/dist/jsx/dom/jsx-runtime.js +2 -8
  441. package/node_modules/hono/dist/jsx/dom/render.js +492 -631
  442. package/node_modules/hono/dist/jsx/dom/server.js +32 -32
  443. package/node_modules/hono/dist/jsx/dom/utils.js +6 -8
  444. package/node_modules/hono/dist/jsx/hooks/index.js +236 -308
  445. package/node_modules/hono/dist/jsx/index.js +45 -98
  446. package/node_modules/hono/dist/jsx/intrinsic-element/common.js +20 -22
  447. package/node_modules/hono/dist/jsx/intrinsic-element/components.js +113 -154
  448. package/node_modules/hono/dist/jsx/intrinsic-elements.js +1 -0
  449. package/node_modules/hono/dist/jsx/jsx-dev-runtime.js +12 -16
  450. package/node_modules/hono/dist/jsx/jsx-runtime.js +29 -42
  451. package/node_modules/hono/dist/jsx/streaming.js +120 -142
  452. package/node_modules/hono/dist/jsx/types.js +1 -0
  453. package/node_modules/hono/dist/jsx/utils.js +105 -168
  454. package/node_modules/hono/dist/middleware/basic-auth/index.js +96 -63
  455. package/node_modules/hono/dist/middleware/bearer-auth/index.js +93 -89
  456. package/node_modules/hono/dist/middleware/body-limit/index.js +66 -51
  457. package/node_modules/hono/dist/middleware/cache/index.js +165 -190
  458. package/node_modules/hono/dist/middleware/combine/index.js +134 -73
  459. package/node_modules/hono/dist/middleware/compress/index.js +75 -69
  460. package/node_modules/hono/dist/middleware/context-storage/index.js +49 -19
  461. package/node_modules/hono/dist/middleware/cors/index.js +107 -86
  462. package/node_modules/hono/dist/middleware/csrf/index.js +103 -53
  463. package/node_modules/hono/dist/middleware/etag/digest.js +59 -77
  464. package/node_modules/hono/dist/middleware/etag/index.js +71 -70
  465. package/node_modules/hono/dist/middleware/ip-restriction/index.js +163 -158
  466. package/node_modules/hono/dist/middleware/jsx-renderer/index.js +97 -54
  467. package/node_modules/hono/dist/middleware/jwk/index.js +1 -4
  468. package/node_modules/hono/dist/middleware/jwk/jwk.js +116 -112
  469. package/node_modules/hono/dist/middleware/jwt/index.js +2 -10
  470. package/node_modules/hono/dist/middleware/jwt/jwt.js +114 -114
  471. package/node_modules/hono/dist/middleware/language/index.js +2 -15
  472. package/node_modules/hono/dist/middleware/language/language.js +180 -157
  473. package/node_modules/hono/dist/middleware/logger/index.js +43 -37
  474. package/node_modules/hono/dist/middleware/method-not-allowed/index.js +81 -66
  475. package/node_modules/hono/dist/middleware/method-override/index.js +101 -81
  476. package/node_modules/hono/dist/middleware/mount/index.js +70 -0
  477. package/node_modules/hono/dist/middleware/powered-by/index.js +23 -9
  478. package/node_modules/hono/dist/middleware/pretty-json/index.js +39 -22
  479. package/node_modules/hono/dist/middleware/request-id/index.js +1 -4
  480. package/node_modules/hono/dist/middleware/request-id/request-id.js +33 -20
  481. package/node_modules/hono/dist/middleware/secure-headers/index.js +1 -5
  482. package/node_modules/hono/dist/middleware/secure-headers/permissions-policy.js +1 -0
  483. package/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +144 -155
  484. package/node_modules/hono/dist/middleware/serve-static/index.js +56 -72
  485. package/node_modules/hono/dist/middleware/serve-static/path.js +15 -17
  486. package/node_modules/hono/dist/middleware/timeout/index.js +40 -23
  487. package/node_modules/hono/dist/middleware/timing/index.js +2 -9
  488. package/node_modules/hono/dist/middleware/timing/timing.js +177 -97
  489. package/node_modules/hono/dist/middleware/trailing-slash/index.js +85 -37
  490. package/node_modules/hono/dist/preset/quick.js +17 -15
  491. package/node_modules/hono/dist/preset/tiny.js +14 -11
  492. package/node_modules/hono/dist/request/constants.js +4 -5
  493. package/node_modules/hono/dist/request.js +328 -319
  494. package/node_modules/hono/dist/router/linear-router/index.js +1 -4
  495. package/node_modules/hono/dist/router/linear-router/router.js +93 -120
  496. package/node_modules/hono/dist/router/pattern-router/index.js +1 -4
  497. package/node_modules/hono/dist/router/pattern-router/router.js +39 -40
  498. package/node_modules/hono/dist/router/reg-exp-router/index.js +1 -7
  499. package/node_modules/hono/dist/router/reg-exp-router/matcher.js +17 -23
  500. package/node_modules/hono/dist/router/reg-exp-router/node.js +87 -110
  501. package/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +89 -137
  502. package/node_modules/hono/dist/router/reg-exp-router/router.js +92 -129
  503. package/node_modules/hono/dist/router/reg-exp-router/trie.js +69 -64
  504. package/node_modules/hono/dist/router/smart-router/index.js +1 -4
  505. package/node_modules/hono/dist/router/smart-router/router.js +46 -55
  506. package/node_modules/hono/dist/router/trie-router/index.js +1 -4
  507. package/node_modules/hono/dist/router/trie-router/node.js +131 -162
  508. package/node_modules/hono/dist/router/trie-router/router.js +11 -14
  509. package/node_modules/hono/dist/router/utils.js +4 -5
  510. package/node_modules/hono/dist/router.js +35 -14
  511. package/node_modules/hono/dist/types/adapter/aws-lambda/conninfo.d.ts +4 -1
  512. package/node_modules/hono/dist/types/adapter/aws-lambda/handler.d.ts +150 -104
  513. package/node_modules/hono/dist/types/adapter/aws-lambda/index.d.ts +4 -8
  514. package/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +152 -122
  515. package/node_modules/hono/dist/types/adapter/bun/conninfo.d.ts +4 -1
  516. package/node_modules/hono/dist/types/adapter/bun/index.d.ts +6 -10
  517. package/node_modules/hono/dist/types/adapter/bun/serve-static.d.ts +7 -2
  518. package/node_modules/hono/dist/types/adapter/bun/server.d.ts +4 -5
  519. package/node_modules/hono/dist/types/adapter/bun/ssg.d.ts +5 -1
  520. package/node_modules/hono/dist/types/adapter/bun/websocket.d.ts +31 -16
  521. package/node_modules/hono/dist/types/adapter/cloudflare-pages/conninfo.d.ts +4 -1
  522. package/node_modules/hono/dist/types/adapter/cloudflare-pages/handler.d.ts +29 -17
  523. package/node_modules/hono/dist/types/adapter/cloudflare-pages/index.d.ts +3 -7
  524. package/node_modules/hono/dist/types/adapter/cloudflare-workers/conninfo.d.ts +6 -1
  525. package/node_modules/hono/dist/types/adapter/cloudflare-workers/index.d.ts +4 -7
  526. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +5 -2
  527. package/node_modules/hono/dist/types/adapter/cloudflare-workers/serve-static.d.ts +10 -5
  528. package/node_modules/hono/dist/types/adapter/cloudflare-workers/utils.d.ts +10 -2
  529. package/node_modules/hono/dist/types/adapter/cloudflare-workers/websocket.d.ts +6 -1
  530. package/node_modules/hono/dist/types/adapter/deno/conninfo.d.ts +4 -1
  531. package/node_modules/hono/dist/types/adapter/deno/deno.d.ts +1 -0
  532. package/node_modules/hono/dist/types/adapter/deno/index.d.ts +5 -8
  533. package/node_modules/hono/dist/types/adapter/deno/serve-static.d.ts +7 -2
  534. package/node_modules/hono/dist/types/adapter/deno/ssg.d.ts +5 -1
  535. package/node_modules/hono/dist/types/adapter/deno/websocket.d.ts +6 -1
  536. package/node_modules/hono/dist/types/adapter/lambda-edge/conninfo.d.ts +6 -1
  537. package/node_modules/hono/dist/types/adapter/lambda-edge/handler.d.ts +83 -57
  538. package/node_modules/hono/dist/types/adapter/lambda-edge/index.d.ts +3 -7
  539. package/node_modules/hono/dist/types/adapter/netlify/conninfo.d.ts +4 -1
  540. package/node_modules/hono/dist/types/adapter/netlify/handler.d.ts +6 -1
  541. package/node_modules/hono/dist/types/adapter/netlify/index.d.ts +3 -5
  542. package/node_modules/hono/dist/types/adapter/netlify/mod.d.ts +3 -2
  543. package/node_modules/hono/dist/types/adapter/service-worker/handler.d.ts +9 -7
  544. package/node_modules/hono/dist/types/adapter/service-worker/index.d.ts +7 -9
  545. package/node_modules/hono/dist/types/adapter/service-worker/types.d.ts +12 -7
  546. package/node_modules/hono/dist/types/adapter/vercel/conninfo.d.ts +6 -1
  547. package/node_modules/hono/dist/types/adapter/vercel/handler.d.ts +6 -1
  548. package/node_modules/hono/dist/types/adapter/vercel/index.d.ts +3 -6
  549. package/node_modules/hono/dist/types/client/client.d.ts +5 -3
  550. package/node_modules/hono/dist/types/client/fetch-result-please.d.ts +21 -19
  551. package/node_modules/hono/dist/types/client/index.d.ts +5 -7
  552. package/node_modules/hono/dist/types/client/types.d.ts +134 -159
  553. package/node_modules/hono/dist/types/client/utils.d.ts +6 -4
  554. package/node_modules/hono/dist/types/compose.d.ts +4 -2
  555. package/node_modules/hono/dist/types/context.d.ts +335 -335
  556. package/node_modules/hono/dist/types/helper/accepts/accepts.d.ts +11 -9
  557. package/node_modules/hono/dist/types/helper/accepts/index.d.ts +2 -5
  558. package/node_modules/hono/dist/types/helper/adapter/index.d.ts +4 -6
  559. package/node_modules/hono/dist/types/helper/conninfo/index.d.ts +2 -5
  560. package/node_modules/hono/dist/types/helper/conninfo/types.d.ts +25 -23
  561. package/node_modules/hono/dist/types/helper/cookie/index.d.ts +10 -12
  562. package/node_modules/hono/dist/types/helper/css/common.d.ts +11 -9
  563. package/node_modules/hono/dist/types/helper/css/index.d.ts +26 -28
  564. package/node_modules/hono/dist/types/helper/dev/index.d.ts +10 -12
  565. package/node_modules/hono/dist/types/helper/factory/index.d.ts +26 -73
  566. package/node_modules/hono/dist/types/helper/html/index.d.ts +4 -7
  567. package/node_modules/hono/dist/types/helper/proxy/index.d.ts +19 -21
  568. package/node_modules/hono/dist/types/helper/route/index.d.ts +4 -2
  569. package/node_modules/hono/dist/types/helper/ssg/index.d.ts +4 -7
  570. package/node_modules/hono/dist/types/helper/ssg/middleware.d.ts +8 -6
  571. package/node_modules/hono/dist/types/helper/ssg/plugins.d.ts +3 -1
  572. package/node_modules/hono/dist/types/helper/ssg/ssg.d.ts +38 -36
  573. package/node_modules/hono/dist/types/helper/ssg/utils.d.ts +5 -3
  574. package/node_modules/hono/dist/types/helper/streaming/index.d.ts +4 -8
  575. package/node_modules/hono/dist/types/helper/streaming/sse.d.ts +10 -8
  576. package/node_modules/hono/dist/types/helper/streaming/stream.d.ts +4 -2
  577. package/node_modules/hono/dist/types/helper/streaming/text.d.ts +4 -2
  578. package/node_modules/hono/dist/types/helper/streaming/utils.d.ts +2 -0
  579. package/node_modules/hono/dist/types/helper/testing/index.d.ts +7 -9
  580. package/node_modules/hono/dist/types/helper/websocket/index.d.ts +30 -33
  581. package/node_modules/hono/dist/types/hono-base.d.ts +210 -210
  582. package/node_modules/hono/dist/types/hono.d.ts +11 -10
  583. package/node_modules/hono/dist/types/http-exception.d.ts +20 -22
  584. package/node_modules/hono/dist/types/index.d.ts +6 -37
  585. package/node_modules/hono/dist/types/jsx/base.d.ts +37 -35
  586. package/node_modules/hono/dist/types/jsx/children.d.ts +8 -6
  587. package/node_modules/hono/dist/types/jsx/components.d.ts +8 -5
  588. package/node_modules/hono/dist/types/jsx/constants.d.ts +2 -0
  589. package/node_modules/hono/dist/types/jsx/context.d.ts +9 -6
  590. package/node_modules/hono/dist/types/jsx/dom/client.d.ts +9 -10
  591. package/node_modules/hono/dist/types/jsx/dom/components.d.ts +9 -6
  592. package/node_modules/hono/dist/types/jsx/dom/context.d.ts +3 -1
  593. package/node_modules/hono/dist/types/jsx/dom/css.d.ts +27 -30
  594. package/node_modules/hono/dist/types/jsx/dom/hooks/index.d.ts +11 -12
  595. package/node_modules/hono/dist/types/jsx/dom/index.d.ts +79 -83
  596. package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +9 -5
  597. package/node_modules/hono/dist/types/jsx/dom/jsx-dev-runtime.d.ts +4 -6
  598. package/node_modules/hono/dist/types/jsx/dom/jsx-runtime.d.ts +3 -7
  599. package/node_modules/hono/dist/types/jsx/dom/render.d.ts +32 -50
  600. package/node_modules/hono/dist/types/jsx/dom/server.d.ts +87 -85
  601. package/node_modules/hono/dist/types/jsx/dom/utils.d.ts +2 -0
  602. package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +16 -16
  603. package/node_modules/hono/dist/types/jsx/index.d.ts +71 -73
  604. package/node_modules/hono/dist/types/jsx/intrinsic-element/common.d.ts +3 -1
  605. package/node_modules/hono/dist/types/jsx/intrinsic-element/components.d.ts +7 -4
  606. package/node_modules/hono/dist/types/jsx/intrinsic-elements.d.ts +708 -708
  607. package/node_modules/hono/dist/types/jsx/jsx-dev-runtime.d.ts +4 -7
  608. package/node_modules/hono/dist/types/jsx/jsx-runtime.d.ts +7 -10
  609. package/node_modules/hono/dist/types/jsx/streaming.d.ts +9 -10
  610. package/node_modules/hono/dist/types/jsx/types.d.ts +12 -13
  611. package/node_modules/hono/dist/types/jsx/utils.d.ts +2 -0
  612. package/node_modules/hono/dist/types/middleware/basic-auth/index.d.ts +17 -19
  613. package/node_modules/hono/dist/types/middleware/bearer-auth/index.d.ts +46 -48
  614. package/node_modules/hono/dist/types/middleware/body-limit/index.d.ts +6 -8
  615. package/node_modules/hono/dist/types/middleware/cache/index.d.ts +13 -15
  616. package/node_modules/hono/dist/types/middleware/combine/index.d.ts +4 -6
  617. package/node_modules/hono/dist/types/middleware/compress/index.d.ts +9 -10
  618. package/node_modules/hono/dist/types/middleware/context-storage/index.d.ts +4 -6
  619. package/node_modules/hono/dist/types/middleware/cors/index.d.ts +10 -12
  620. package/node_modules/hono/dist/types/middleware/csrf/index.d.ts +6 -8
  621. package/node_modules/hono/dist/types/middleware/etag/digest.d.ts +2 -0
  622. package/node_modules/hono/dist/types/middleware/etag/index.d.ts +6 -8
  623. package/node_modules/hono/dist/types/middleware/ip-restriction/index.d.ts +11 -12
  624. package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +11 -11
  625. package/node_modules/hono/dist/types/middleware/jwk/index.d.ts +2 -1
  626. package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +20 -23
  627. package/node_modules/hono/dist/types/middleware/jwt/index.d.ts +7 -6
  628. package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +28 -30
  629. package/node_modules/hono/dist/types/middleware/language/index.d.ts +6 -5
  630. package/node_modules/hono/dist/types/middleware/language/language.d.ts +42 -44
  631. package/node_modules/hono/dist/types/middleware/logger/index.d.ts +3 -5
  632. package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +7 -9
  633. package/node_modules/hono/dist/types/middleware/method-override/index.d.ts +14 -16
  634. package/node_modules/hono/dist/types/middleware/mount/index.d.ts +46 -0
  635. package/node_modules/hono/dist/types/middleware/powered-by/index.d.ts +8 -10
  636. package/node_modules/hono/dist/types/middleware/pretty-json/index.d.ts +18 -20
  637. package/node_modules/hono/dist/types/middleware/request-id/index.d.ts +6 -5
  638. package/node_modules/hono/dist/types/middleware/request-id/request-id.d.ts +9 -11
  639. package/node_modules/hono/dist/types/middleware/secure-headers/index.d.ts +6 -6
  640. package/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +2 -0
  641. package/node_modules/hono/dist/types/middleware/secure-headers/secure-headers.d.ts +55 -57
  642. package/node_modules/hono/dist/types/middleware/serve-static/index.d.ts +24 -24
  643. package/node_modules/hono/dist/types/middleware/serve-static/path.d.ts +2 -0
  644. package/node_modules/hono/dist/types/middleware/timeout/index.d.ts +5 -7
  645. package/node_modules/hono/dist/types/middleware/timing/index.d.ts +6 -5
  646. package/node_modules/hono/dist/types/middleware/timing/timing.d.ts +17 -20
  647. package/node_modules/hono/dist/types/middleware/trailing-slash/index.d.ts +35 -37
  648. package/node_modules/hono/dist/types/preset/quick.d.ts +6 -9
  649. package/node_modules/hono/dist/types/preset/tiny.d.ts +6 -9
  650. package/node_modules/hono/dist/types/request/constants.d.ts +2 -0
  651. package/node_modules/hono/dist/types/request.d.ts +288 -286
  652. package/node_modules/hono/dist/types/router/linear-router/index.d.ts +2 -5
  653. package/node_modules/hono/dist/types/router/linear-router/router.d.ts +7 -5
  654. package/node_modules/hono/dist/types/router/pattern-router/index.d.ts +2 -5
  655. package/node_modules/hono/dist/types/router/pattern-router/router.d.ts +7 -5
  656. package/node_modules/hono/dist/types/router/reg-exp-router/index.d.ts +3 -6
  657. package/node_modules/hono/dist/types/router/reg-exp-router/matcher.d.ts +3 -1
  658. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +6 -4
  659. package/node_modules/hono/dist/types/router/reg-exp-router/prepared-router.d.ts +11 -10
  660. package/node_modules/hono/dist/types/router/reg-exp-router/router.d.ts +10 -9
  661. package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +7 -5
  662. package/node_modules/hono/dist/types/router/smart-router/index.d.ts +2 -5
  663. package/node_modules/hono/dist/types/router/smart-router/router.d.ts +11 -9
  664. package/node_modules/hono/dist/types/router/trie-router/index.d.ts +2 -5
  665. package/node_modules/hono/dist/types/router/trie-router/node.d.ts +6 -4
  666. package/node_modules/hono/dist/types/router/trie-router/router.d.ts +7 -5
  667. package/node_modules/hono/dist/types/router/utils.d.ts +2 -0
  668. package/node_modules/hono/dist/types/router.d.ts +23 -22
  669. package/node_modules/hono/dist/types/types.d.ts +146 -505
  670. package/node_modules/hono/dist/types/utils/accept.d.ts +5 -3
  671. package/node_modules/hono/dist/types/utils/basic-auth.d.ts +4 -2
  672. package/node_modules/hono/dist/types/utils/body.d.ts +46 -50
  673. package/node_modules/hono/dist/types/utils/buffer.d.ts +7 -5
  674. package/node_modules/hono/dist/types/utils/color.d.ts +2 -0
  675. package/node_modules/hono/dist/types/utils/compress.d.ts +2 -0
  676. package/node_modules/hono/dist/types/utils/concurrent.d.ts +6 -4
  677. package/node_modules/hono/dist/types/utils/constants.d.ts +2 -0
  678. package/node_modules/hono/dist/types/utils/cookie.d.ts +20 -18
  679. package/node_modules/hono/dist/types/utils/crypto.d.ts +5 -7
  680. package/node_modules/hono/dist/types/utils/encode.d.ts +2 -0
  681. package/node_modules/hono/dist/types/utils/filepath.d.ts +5 -3
  682. package/node_modules/hono/dist/types/utils/handler.d.ts +2 -0
  683. package/node_modules/hono/dist/types/utils/headers.d.ts +2 -0
  684. package/node_modules/hono/dist/types/utils/html.d.ts +11 -9
  685. package/node_modules/hono/dist/types/utils/http-status.d.ts +2 -0
  686. package/node_modules/hono/dist/types/utils/ipaddr.d.ts +4 -6
  687. package/node_modules/hono/dist/types/utils/jwt/index.d.ts +18 -12
  688. package/node_modules/hono/dist/types/utils/jwt/jwa.d.ts +15 -13
  689. package/node_modules/hono/dist/types/utils/jwt/jws.d.ts +4 -7
  690. package/node_modules/hono/dist/types/utils/jwt/jwt.d.ts +26 -29
  691. package/node_modules/hono/dist/types/utils/jwt/types.d.ts +48 -45
  692. package/node_modules/hono/dist/types/utils/jwt/utf8.d.ts +2 -0
  693. package/node_modules/hono/dist/types/utils/mime.d.ts +60 -57
  694. package/node_modules/hono/dist/types/utils/stream.d.ts +27 -25
  695. package/node_modules/hono/dist/types/utils/types.d.ts +14 -26
  696. package/node_modules/hono/dist/types/utils/url.d.ts +2 -0
  697. package/node_modules/hono/dist/types/validator/index.d.ts +3 -7
  698. package/node_modules/hono/dist/types/validator/utils.d.ts +6 -8
  699. package/node_modules/hono/dist/types/validator/validator.d.ts +11 -9
  700. package/node_modules/hono/dist/types.js +4 -6
  701. package/node_modules/hono/dist/utils/accept.js +185 -212
  702. package/node_modules/hono/dist/utils/basic-auth.js +18 -21
  703. package/node_modules/hono/dist/utils/body.js +87 -92
  704. package/node_modules/hono/dist/utils/buffer.js +44 -71
  705. package/node_modules/hono/dist/utils/color.js +33 -21
  706. package/node_modules/hono/dist/utils/compress.js +11 -5
  707. package/node_modules/hono/dist/utils/concurrent.js +29 -38
  708. package/node_modules/hono/dist/utils/constants.js +7 -5
  709. package/node_modules/hono/dist/utils/cookie.js +114 -163
  710. package/node_modules/hono/dist/utils/crypto.js +30 -40
  711. package/node_modules/hono/dist/utils/encode.js +30 -26
  712. package/node_modules/hono/dist/utils/filepath.js +23 -33
  713. package/node_modules/hono/dist/utils/handler.js +10 -11
  714. package/node_modules/hono/dist/utils/headers.js +1 -0
  715. package/node_modules/hono/dist/utils/html.js +97 -117
  716. package/node_modules/hono/dist/utils/http-status.js +1 -0
  717. package/node_modules/hono/dist/utils/ipaddr.js +227 -279
  718. package/node_modules/hono/dist/utils/jwt/index.js +12 -4
  719. package/node_modules/hono/dist/utils/jwt/jwa.js +24 -20
  720. package/node_modules/hono/dist/utils/jwt/jws.js +115 -174
  721. package/node_modules/hono/dist/utils/jwt/jwt.js +120 -198
  722. package/node_modules/hono/dist/utils/jwt/types.js +79 -95
  723. package/node_modules/hono/dist/utils/jwt/utf8.js +9 -7
  724. package/node_modules/hono/dist/utils/mime.js +74 -79
  725. package/node_modules/hono/dist/utils/stream.js +86 -88
  726. package/node_modules/hono/dist/utils/types.js +1 -0
  727. package/node_modules/hono/dist/utils/url.js +187 -215
  728. package/node_modules/hono/dist/validator/index.js +1 -4
  729. package/node_modules/hono/dist/validator/utils.js +1 -0
  730. package/node_modules/hono/dist/validator/validator.js +61 -83
  731. package/node_modules/hono/package.json +35 -27
  732. package/node_modules/ip-address/README.md +34 -34
  733. package/node_modules/ip-address/dist/ipv4.js +7 -0
  734. package/node_modules/ip-address/dist/ipv4.js.map +1 -1
  735. package/node_modules/ip-address/package.json +1 -1
  736. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +3 -1
  737. package/node_modules/undici/docs/docs/api/Dispatcher.md +1 -0
  738. package/node_modules/undici/lib/core/request.js +23 -2
  739. package/node_modules/undici/lib/dispatcher/client-h1.js +11 -4
  740. package/node_modules/undici/lib/dispatcher/client-h2.js +14 -5
  741. package/node_modules/undici/lib/handler/retry-handler.js +71 -20
  742. package/node_modules/undici/lib/interceptor/decompress.js +228 -68
  743. package/node_modules/undici/lib/web/websocket/connection.js +18 -8
  744. package/node_modules/undici/package.json +1 -1
  745. package/node_modules/undici/types/interceptors.d.ts +1 -1
  746. package/node_modules/ws/lib/websocket.js +17 -3
  747. package/node_modules/ws/package.json +1 -1
  748. package/package.json +3 -3
  749. package/slingshot/index.js +256 -256
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "4.13.9",
3
+ "version": "4.13.13",
4
4
  "description": "Web framework built on Web Standards",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",
@@ -11,29 +11,31 @@
11
11
  "!dist/**/*.tsbuildinfo"
12
12
  ],
13
13
  "scripts": {
14
- "test": "tsc -p tsconfig.spec.json && vitest --run",
15
- "test:watch": "vitest --watch",
14
+ "test": "tsc -p tsconfig.spec.json && vp test --run",
15
+ "test:watch": "vp test --watch",
16
16
  "test:deno": "deno test --allow-read --allow-env --allow-write --allow-net -c runtime-tests/deno/deno.json runtime-tests/deno && deno test --no-lock -c runtime-tests/deno-jsx/deno.precompile.json runtime-tests/deno-jsx && deno test --no-lock -c runtime-tests/deno-jsx/deno.react-jsx.json runtime-tests/deno-jsx",
17
- "test:bun": "bun test --jsx-import-source ../../src/jsx runtime-tests/bun/*",
18
- "test:fastly": "vitest --run --project fastly",
19
- "test:node": "vitest --run --project node",
20
- "test:workerd": "vitest --run --project workerd",
21
- "test:lambda": "vitest --run --project lambda",
22
- "test:lambda-edge": "vitest --run --project lambda-edge",
23
- "test:all": "bun run test && bun test:deno && bun test:bun",
24
- "lint": "eslint src runtime-tests build perf-measures benchmarks",
25
- "lint:fix": "eslint src runtime-tests build perf-measures benchmarks --fix",
26
- "format": "prettier --check --cache \"src/**/*.{js,ts,tsx}\" \"runtime-tests/**/*.{js,ts,tsx}\" \"build/**/*.{js,ts,tsx}\" \"perf-measures/**/*.{js,ts,tsx}\" \"benchmarks/**/*.{js,ts,tsx}\"",
27
- "format:fix": "prettier --write --cache --cache-strategy metadata \"src/**/*.{js,ts,tsx}\" \"runtime-tests/**/*.{js,ts,tsx}\" \"build/**/*.{js,ts,tsx}\" \"perf-measures/**/*.{js,ts,tsx}\" \"benchmarks/**/*.{js,ts,tsx}\"",
17
+ "test:bun": "bun test --jsx-import-source ../../src/jsx runtime-tests/bun",
18
+ "test:fastly": "vp test --run --project fastly",
19
+ "test:node": "vp test --run --project node",
20
+ "test:workerd": "vp test --run --project workerd",
21
+ "test:all": "pnpm run test && pnpm run test:deno && pnpm run test:bun",
22
+ "check": "vp check",
23
+ "check:fix": "vp check --fix",
24
+ "lint": "vp lint src runtime-tests build perf-measures benchmarks adapters",
25
+ "lint:fix": "vp lint --fix src runtime-tests build perf-measures benchmarks adapters",
26
+ "format": "vp fmt --check \"src/**/*.{js,ts,tsx}\" \"runtime-tests/**/*.{js,ts,tsx}\" \"build/**/*.{js,ts,tsx}\" \"perf-measures/**/*.{js,ts,tsx}\" \"benchmarks/**/*.{js,ts,tsx}\" \"adapters/**/*.{js,ts,tsx}\"",
27
+ "format:fix": "vp fmt \"src/**/*.{js,ts,tsx}\" \"runtime-tests/**/*.{js,ts,tsx}\" \"build/**/*.{js,ts,tsx}\" \"perf-measures/**/*.{js,ts,tsx}\" \"benchmarks/**/*.{js,ts,tsx}\" \"adapters/**/*.{js,ts,tsx}\"",
28
28
  "editorconfig-checker": "editorconfig-checker",
29
29
  "copy:package.cjs.json": "cp ./package.cjs.json ./dist/cjs/package.json && cp ./package.cjs.json ./dist/types/package.json",
30
- "build": "bun run --shell bun remove-dist && bun ./build/build.ts && bun run copy:package.cjs.json",
31
- "postbuild": "publint",
32
- "watch": "bun run --shell bun remove-dist && bun ./build/build.ts --watch && bun run copy:package.cjs.json",
33
- "coverage": "vitest --run --coverage",
34
- "prerelease": "bun test:deno && bun run build",
30
+ "build": "pnpm run remove-dist && vp pack && pnpm run copy:package.cjs.json && publint",
31
+ "watch": "pnpm run remove-dist && vp pack --watch && pnpm run copy:package.cjs.json",
32
+ "coverage": "vp test --run --coverage",
33
+ "prerelease": "pnpm run test:deno && pnpm run build",
35
34
  "release": "np --no-publish",
36
- "remove-dist": "rm -rf dist"
35
+ "remove-dist": "rm -rf dist",
36
+ "build:adapters": "pnpm -r --filter \"./adapters/*\" run build",
37
+ "test:adapters": "pnpm -r --filter \"./adapters/*\" run test",
38
+ "release:adapter": "node ./build/release-adapter.ts"
37
39
  },
38
40
  "exports": {
39
41
  ".": {
@@ -101,6 +103,11 @@
101
103
  "import": "./dist/helper/route/index.js",
102
104
  "require": "./dist/cjs/helper/route/index.js"
103
105
  },
106
+ "./mount": {
107
+ "types": "./dist/types/middleware/mount/index.d.ts",
108
+ "import": "./dist/middleware/mount/index.js",
109
+ "require": "./dist/cjs/middleware/mount/index.js"
110
+ },
104
111
  "./cookie": {
105
112
  "types": "./dist/types/helper/cookie/index.d.ts",
106
113
  "import": "./dist/helper/cookie/index.js",
@@ -455,6 +462,9 @@
455
462
  "route": [
456
463
  "./dist/types/helper/route"
457
464
  ],
465
+ "mount": [
466
+ "./dist/types/middleware/mount"
467
+ ],
458
468
  "cookie": [
459
469
  "./dist/types/helper/cookie"
460
470
  ],
@@ -674,32 +684,30 @@
674
684
  "nodejs"
675
685
  ],
676
686
  "devDependencies": {
677
- "@hono/eslint-config": "^2.1.1",
678
687
  "@hono/node-server": "^2.0.12",
679
688
  "@types/jsdom": "^21.1.7",
680
689
  "@types/node": "^24.3.0",
681
690
  "@types/ws": "^8.18.1",
682
691
  "@typescript/native-preview": "7.0.0-dev.20260210.1",
683
- "@vitest/coverage-v8": "^4.1.7",
692
+ "@vitest/coverage-v8": "5.0.1",
684
693
  "bun-types": "^1.2.20",
685
694
  "editorconfig-checker": "6.2.0",
686
695
  "esbuild": "^0.27.1",
687
- "eslint": "^9.39.3",
688
696
  "jsdom": "22.1.0",
689
697
  "msw": "^2.6.0",
690
698
  "np": "11.2.1",
691
- "oxc-parser": "^0.96.0",
692
699
  "pkg-pr-new": "^0.0.53",
693
- "prettier": "3.7.4",
694
700
  "publint": "0.3.15",
701
+ "rolldown": "^1.2.10",
695
702
  "typescript": "^6.0.3",
696
703
  "vite-plugin-fastly-js-compute": "^0.4.2",
697
- "vitest": "^4.1.9",
704
+ "vite-plus": "1.0.0",
705
+ "vitest": "5.0.1",
698
706
  "wrangler": "4.107.0",
699
707
  "ws": "^8.21.0",
700
708
  "zod": "^3.23.8"
701
709
  },
702
- "packageManager": "bun@1.2.20",
710
+ "packageManager": "pnpm@12.6.0",
703
711
  "engines": {
704
712
  "node": ">=16.9.0"
705
713
  }
@@ -115,43 +115,43 @@ A few terms used throughout the API can be confusing if you haven't worked deepl
115
115
  - `static fromHex(hex: string): Address4` — Converts a hex string to an IPv4 address object. Accepts 8 hex digits with optional `:` separators (e.g. `'7f000001'` or `'7f:00:00:01'`). Throws `AddressError` for any other length or for non-hex characters. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L189)
116
116
  - `static fromInteger(integer: number): Address4` — Converts an integer into a IPv4 address object. The integer must be a non-negative safe integer in the range `[0, 2**32 - 1]`; otherwise `AddressError` is thrown. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L212)
117
117
  - `static fromArpa(arpaFormAddress: string): Address4` — Return an address from in-addr.arpa form: the four octets reversed, with or without the `.in-addr.arpa` suffix and root dot, in any case. Throws `AddressError` unless the reversed labels form a valid IPv4 address, so `fromArpa(x.reverseForm())` round-trips reverseForm. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L231)
118
- - `static fromBigInt(bigInt: bigint): Address4` — Converts a BigInt to a v4 address object. The value must be in the range `[0, 2**32 - 1]`; otherwise `AddressError` is thrown. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L413)
119
- - `static fromByteArray(bytes: number[]): Address4` — Convert a byte array to an Address4 object. Throws `AddressError` unless given exactly 4 integers from 0 to 255. Signed bytes are rejected, so this differs from `Address6.fromByteArray`, which folds them; the two contracts converge on this stricter form in the next major version. To convert from a Node.js `Buffer`, spread it: `Address4.fromByteArray([...buf])`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L431)
120
- - `static fromUnsignedByteArray(bytes: number[]): Address4` — Convert an unsigned byte array to an Address4 object. Throws `AddressError` unless given exactly 4 bytes, and rejects values outside 0 to 255 when parsing the resulting address. To convert from a Node.js `Buffer`, spread it: `Address4.fromUnsignedByteArray([...buf])`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L447)
118
+ - `static fromBigInt(bigInt: bigint): Address4` — Converts a BigInt to a v4 address object. The value must be in the range `[0, 2**32 - 1]`; otherwise `AddressError` is thrown. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L422)
119
+ - `static fromByteArray(bytes: number[]): Address4` — Convert a byte array to an Address4 object. Throws `AddressError` unless given exactly 4 integers from 0 to 255. Signed bytes are rejected, so this differs from `Address6.fromByteArray`, which folds them; the two contracts converge on this stricter form in the next major version. To convert from a Node.js `Buffer`, spread it: `Address4.fromByteArray([...buf])`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L440)
120
+ - `static fromUnsignedByteArray(bytes: number[]): Address4` — Convert an unsigned byte array to an Address4 object. Throws `AddressError` unless given exactly 4 bytes, and rejects values outside 0 to 255 when parsing the resulting address. To convert from a Node.js `Buffer`, spread it: `Address4.fromUnsignedByteArray([...buf])`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L456)
121
121
 
122
122
  **Instance methods**
123
123
 
124
124
  - `parse(address: string): string[]` — Parses an IPv4 address string into its four octet groups and stores the result on `this.parsedAddress`. Called automatically by the constructor; you typically don't need to call it directly. Throws `AddressError` if the input is not a valid IPv4 address. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L79)
125
125
  - `correctForm(): string` — Returns the address in correct form: octets joined with `.` and any leading zeros stripped (e.g. `192.168.1.1`). For IPv4 this matches the canonical dotted-decimal representation. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L100)
126
- - `toHex(): string` — Converts an IPv4 address object to a hex string [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L245)
127
- - `toArray(): number[]` — Converts an IPv4 address object to an array of bytes. To get a Node.js `Buffer`, wrap the result: `Buffer.from(address.toArray())`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L255)
128
- - `toGroup6(): string` — Converts an IPv4 address object to an IPv6 address group [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L263)
129
- - `bigInt(): bigint` — Returns the address as a `bigint` [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L282)
130
- - `startAddress(): Address4` — The first address in the range given by this address' subnet. Often referred to as the Network Address. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L299)
131
- - `startAddressExclusive(): Address4` — The first host address in the range given by this address's subnet ie the first address after the Network Address [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L308)
132
- - `offset(n: number | bigint): Address4` — Returns the address `n` addresses after this one (or before, when `n` is negative), keeping this address's subnet mask. Throws `AddressError` when the result would fall outside the IPv4 address space or `n` is not an integer. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L323)
133
- - `nextNetwork(): Address4` — Returns the network that follows this address's network: the address after endAddress, with the same subnet mask. Throws `AddressError` when this network is the last one in the address space. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L337)
134
- - `endAddress(): Address4` — The last address in the range given by this address' subnet Often referred to as the Broadcast [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L360)
135
- - `endAddressExclusive(): Address4` — The last host address in the range given by this address's subnet ie the last address prior to the Broadcast Address [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L369)
136
- - `subnetMaskAddress(): Address4` — The dotted-decimal form of the subnet mask, e.g. `255.255.240.0` for a `/20`. Returns an `Address4`; call `.correctForm()` for the string. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L379)
137
- - `wildcardMask(): Address4` — The Cisco-style wildcard mask, e.g. `0.0.0.255` for a `/24`. This is the bitwise inverse of `subnetMaskAddress()`. Returns an `Address4`; call `.correctForm()` for the string. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L391)
138
- - `networkForm(): string` — The network address in CIDR string form, e.g. `192.168.1.0/24` for `192.168.1.5/24`. For an address with no explicit subnet the prefix is `/32`, e.g. `networkForm()` on `192.168.1.5` returns `192.168.1.5/32`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L403)
139
- - `mask(mask?: number): string` — Returns the first n bits of the address, defaulting to the subnet mask [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L461)
140
- - `getBitsBase2(start: number, end: number): string` — Returns the bits in the given range as a base-2 string [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L473)
141
- - `reverseForm(options?: ReverseFormOptions): string` — Return the reversed in-addr.arpa form of the address, e.g. `42.2.0.192.in-addr.arpa.` for `192.0.2.42`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L484)
142
- - `isMulticast(): boolean` — Returns true if the given address is a multicast address [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L522)
143
- - `isPrivate(): boolean` — Returns true if the address is in one of the [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) private address ranges (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L530)
144
- - `isLoopback(): boolean` — Returns true if the address is in the loopback range `127.0.0.0/8` ([RFC 1122](https://datatracker.ietf.org/doc/html/rfc1122)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L538)
145
- - `isLinkLocal(): boolean` — Returns true if the address is in the link-local range `169.254.0.0/16` ([RFC 3927](https://datatracker.ietf.org/doc/html/rfc3927)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L546)
146
- - `isUnspecified(): boolean` — Returns true if the address is the unspecified address `0.0.0.0`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L554)
147
- - `isBroadcast(): boolean` — Returns true if the address is the limited broadcast address `255.255.255.255` ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L562)
148
- - `isCGNAT(): boolean` — Returns true if the address is in the carrier-grade NAT range `100.64.0.0/10` ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L570)
149
- - `isDocumentation(): boolean` — Returns true if the address is in one of the documentation ranges `192.0.2.0/24`, `198.51.100.0/24`, or `203.0.113.0/24` ([RFC 5737](https://datatracker.ietf.org/doc/html/rfc5737)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L579)
150
- - `isBenchmarking(): boolean` — Returns true if the address is in the benchmarking range `198.18.0.0/15` ([RFC 2544](https://datatracker.ietf.org/doc/html/rfc2544)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L587)
151
- - `isReserved(): boolean` — Returns true if the address is in the reserved range `240.0.0.0/4` ([RFC 1112](https://datatracker.ietf.org/doc/html/rfc1112)), which includes the limited broadcast address. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L596)
152
- - `isGlobal(): boolean` — Returns true if the address is globally reachable: not multicast, and not in any block the [IANA IPv4 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv4-special-registry/) marks as not globally reachable. That covers everything the individual classifiers name (private, loopback, link-local, CGNAT, unspecified, broadcast, documentation, benchmarking, reserved) and the blocks they do not, such as `0.0.0.0/8` and the IETF protocol assignments in `192.0.0.0/24`. This is the single predicate to use where a request must not reach an internal or special-purpose destination; see SECURITY.md. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L611)
153
- - `binaryZeroPad(): string` — Returns a zero-padded base-2 string representation of the address [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L619)
154
- - `groupForV6(): string` — Groups an IPv4 address for inclusion at the end of an IPv6 address. Returns an HTML fragment: each half of the address is wrapped in a `<span>` carrying the group classes an address-inspector UI hovers on. The address content is HTML-escaped; anything you concatenate around it is your responsibility. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L635)
126
+ - `toHex(): string` — Converts an IPv4 address object to a hex string [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L254)
127
+ - `toArray(): number[]` — Converts an IPv4 address object to an array of bytes. To get a Node.js `Buffer`, wrap the result: `Buffer.from(address.toArray())`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L264)
128
+ - `toGroup6(): string` — Converts an IPv4 address object to an IPv6 address group [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L272)
129
+ - `bigInt(): bigint` — Returns the address as a `bigint` [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L291)
130
+ - `startAddress(): Address4` — The first address in the range given by this address' subnet. Often referred to as the Network Address. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L308)
131
+ - `startAddressExclusive(): Address4` — The first host address in the range given by this address's subnet ie the first address after the Network Address [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L317)
132
+ - `offset(n: number | bigint): Address4` — Returns the address `n` addresses after this one (or before, when `n` is negative), keeping this address's subnet mask. Throws `AddressError` when the result would fall outside the IPv4 address space or `n` is not an integer. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L332)
133
+ - `nextNetwork(): Address4` — Returns the network that follows this address's network: the address after endAddress, with the same subnet mask. Throws `AddressError` when this network is the last one in the address space. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L346)
134
+ - `endAddress(): Address4` — The last address in the range given by this address' subnet Often referred to as the Broadcast [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L369)
135
+ - `endAddressExclusive(): Address4` — The last host address in the range given by this address's subnet ie the last address prior to the Broadcast Address [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L378)
136
+ - `subnetMaskAddress(): Address4` — The dotted-decimal form of the subnet mask, e.g. `255.255.240.0` for a `/20`. Returns an `Address4`; call `.correctForm()` for the string. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L388)
137
+ - `wildcardMask(): Address4` — The Cisco-style wildcard mask, e.g. `0.0.0.255` for a `/24`. This is the bitwise inverse of `subnetMaskAddress()`. Returns an `Address4`; call `.correctForm()` for the string. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L400)
138
+ - `networkForm(): string` — The network address in CIDR string form, e.g. `192.168.1.0/24` for `192.168.1.5/24`. For an address with no explicit subnet the prefix is `/32`, e.g. `networkForm()` on `192.168.1.5` returns `192.168.1.5/32`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L412)
139
+ - `mask(mask?: number): string` — Returns the first n bits of the address, defaulting to the subnet mask [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L470)
140
+ - `getBitsBase2(start: number, end: number): string` — Returns the bits in the given range as a base-2 string [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L482)
141
+ - `reverseForm(options?: ReverseFormOptions): string` — Return the reversed in-addr.arpa form of the address, e.g. `42.2.0.192.in-addr.arpa.` for `192.0.2.42`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L493)
142
+ - `isMulticast(): boolean` — Returns true if the given address is a multicast address [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L531)
143
+ - `isPrivate(): boolean` — Returns true if the address is in one of the [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) private address ranges (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L539)
144
+ - `isLoopback(): boolean` — Returns true if the address is in the loopback range `127.0.0.0/8` ([RFC 1122](https://datatracker.ietf.org/doc/html/rfc1122)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L547)
145
+ - `isLinkLocal(): boolean` — Returns true if the address is in the link-local range `169.254.0.0/16` ([RFC 3927](https://datatracker.ietf.org/doc/html/rfc3927)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L555)
146
+ - `isUnspecified(): boolean` — Returns true if the address is the unspecified address `0.0.0.0`. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L563)
147
+ - `isBroadcast(): boolean` — Returns true if the address is the limited broadcast address `255.255.255.255` ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L571)
148
+ - `isCGNAT(): boolean` — Returns true if the address is in the carrier-grade NAT range `100.64.0.0/10` ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L579)
149
+ - `isDocumentation(): boolean` — Returns true if the address is in one of the documentation ranges `192.0.2.0/24`, `198.51.100.0/24`, or `203.0.113.0/24` ([RFC 5737](https://datatracker.ietf.org/doc/html/rfc5737)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L588)
150
+ - `isBenchmarking(): boolean` — Returns true if the address is in the benchmarking range `198.18.0.0/15` ([RFC 2544](https://datatracker.ietf.org/doc/html/rfc2544)). [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L596)
151
+ - `isReserved(): boolean` — Returns true if the address is in the reserved range `240.0.0.0/4` ([RFC 1112](https://datatracker.ietf.org/doc/html/rfc1112)), which includes the limited broadcast address. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L605)
152
+ - `isGlobal(): boolean` — Returns true if the address is globally reachable: not multicast, and not in any block the [IANA IPv4 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv4-special-registry/) marks as not globally reachable. That covers everything the individual classifiers name (private, loopback, link-local, CGNAT, unspecified, broadcast, documentation, benchmarking, reserved) and the blocks they do not, such as `0.0.0.0/8` and the IETF protocol assignments in `192.0.0.0/24`. This is the single predicate to use where a request must not reach an internal or special-purpose destination; see SECURITY.md. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L620)
153
+ - `binaryZeroPad(): string` — Returns a zero-padded base-2 string representation of the address [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L628)
154
+ - `groupForV6(): string` — Groups an IPv4 address for inclusion at the end of an IPv6 address. Returns an HTML fragment: each half of the address is wrapped in a `<span>` carrying the group classes an address-inspector UI hovers on. The address content is HTML-escaped; anything you concatenate around it is your responsibility. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L644)
155
155
 
156
156
  **Properties**
157
157
 
@@ -164,8 +164,8 @@ A few terms used throughout the API can be confusing if you haven't worked deepl
164
164
  - `subnetMask: number` — [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L20)
165
165
  - `v4: boolean` — [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L21)
166
166
  - `isCorrect: () => boolean` — Returns true if the address is correct, false otherwise [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L108)
167
- - `isInSubnet: (address: Address4 | Address6) => boolean` — Returns true if the given address is in the subnet of the current address. An `Address6` is never in the subnet of an `Address4`; convert with `to4()` or `Address6.fromAddress4()` to compare across families. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L504)
168
- - `isHostInSubnet: (address: Address4 | Address6) => boolean` — Returns true if this address's host bits fall inside the given subnet, ignoring this address's own subnet mask. Prefer this over `isInSubnet` when classifying a single address, so the answer doesn't change with the CIDR suffix the caller happened to write — notably when the address came from untrusted input and the result backs a trust-boundary decision. An `Address6` is never in the subnet of an `Address4`; convert with `to4()` or `Address6.fromAddress4()` to compare across families. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L516)
167
+ - `isInSubnet: (address: Address4 | Address6) => boolean` — Returns true if the given address is in the subnet of the current address. An `Address6` is never in the subnet of an `Address4`; convert with `to4()` or `Address6.fromAddress4()` to compare across families. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L513)
168
+ - `isHostInSubnet: (address: Address4 | Address6) => boolean` — Returns true if this address's host bits fall inside the given subnet, ignoring this address's own subnet mask. Prefer this over `isInSubnet` when classifying a single address, so the answer doesn't change with the CIDR suffix the caller happened to write — notably when the address came from untrusted input and the result backs a trust-boundary decision. An `Address6` is never in the subnet of an `Address4`; convert with `to4()` or `Address6.fromAddress4()` to compare across families. [src](https://github.com/beaugunderson/ip-address/blob/main/src/ipv4.ts#L525)
169
169
 
170
170
  </details>
171
171
 
@@ -235,6 +235,13 @@ class Address4 {
235
235
  * address.correctForm(); // '192.0.2.42'
236
236
  */
237
237
  static fromArpa(arpaFormAddress) {
238
+ // A 15-character address, a "/32" prefix length and ".in-addr.arpa.": the
239
+ // longest name is 32 characters. Longer input is rejected before its
240
+ // labels are split, as the constructor does at its own limit.
241
+ const longest = constants.GROUPS * 4 - 1 + '/32'.length + '.in-addr.arpa.'.length;
242
+ if (arpaFormAddress.length > longest) {
243
+ throw new address_error_1.AddressError(`in-addr.arpa names are at most ${longest} characters.`);
244
+ }
238
245
  // remove an ending ".in-addr.arpa", in any case and with or without the
239
246
  // root dot, as Address6.fromArpa does for ".ip6.arpa"
240
247
  const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.?$/i, '');
@@ -1 +1 @@
1
- {"version":3,"file":"ipv4.js","sourceRoot":"","sources":["../src/ipv4.ts"],"names":[],"mappings":";AAAA,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,iDAAmC;AACnC,0DAA4C;AAC5C,mDAA+C;AAE/C,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpD;;;GAGG;AACH,MAAa,QAAQ;IAWnB,YAAY,OAAe;QAT3B,uBAAkB,GAAW,EAAE,CAAC;QAChC,WAAM,GAAW,SAAS,CAAC,MAAM,CAAC;QAClC,kBAAa,GAAa,EAAE,CAAC;QAC7B,iBAAY,GAAW,EAAE,CAAC;QAC1B,WAAM,GAAW,KAAK,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,OAAE,GAAY,IAAI,CAAC;QAmFnB;;;WAGG;QACH,cAAS,GAAG,UAAU,CAAC;QAsYvB;;;;;WAKG;QACH,eAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAE/B;;;;;;;;;WASG;QACH,mBAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QA3erC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAEpC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC5D,MAAM,IAAI,4BAAY,CAAC,sBAAsB,CAAC,CAAC;YACjD,CAAC;YAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,0EAA0E;QAC1E,yEAAyE;QACzE,yBAAyB;QACzB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,4BAAY,CAAC,8BAA8B,OAAO,cAAc,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;QAElC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,IAAI,CAAC;YACH,kCAAkC;YAClC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEtB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAe;QACnB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAElC,0EAA0E;QAC1E,2DAA2D;QAC3D,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,4BAAY,CAAC,2CAA2C,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,4BAAY,CAAC,uBAAuB,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAQD;;;;;;;;OAQG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAe,EAAE,IAAY;QACrD,MAAM,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACtF,OAAO,IAAI,QAAQ,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,0BAA0B,CAAC,OAAe,EAAE,YAAoB;QACrE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,QAAQ,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,YAAY,CAAC,KAAa;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,4BAAY,CAAC,qCAAqC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACtB,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;oBACzB,aAAa,GAAG,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;iBAAM,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,4BAAY,CACpB,uEAAuE,CACxE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC;QAEjD,OAAO,IAAI,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,GAAW;QACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,4BAAY,CAAC,uCAAuC,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;YACtE,MAAM,IAAI,4BAAY,CAAC,kDAAkD,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,QAAQ,CAAC,eAAuB;QACrC,wEAAwE;QACxE,sDAAsD;QACtD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtD,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC;IAED;;;;;OAKG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC;QAEN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CACT,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAC3E,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAC1B,EAAE,CACJ,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,qBAAqB;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,CAAkB;QACvB,OAAO,QAAQ,CAAC,UAAU,CACxB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAC9D,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,WAAW;QACT,OAAO,QAAQ,CAAC,UAAU,CACxB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CACnE,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAEO,cAAc,CAAC,UAAkB;QACvC,OAAO,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,mBAAmB;QACjB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,OAAO,QAAQ,CAAC,UAAU,CACxB,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAC1F,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,YAAY;QACV,OAAO,QAAQ,CAAC,UAAU,CACxB,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAC1F,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,WAAW;QACT,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,MAAc;QAC9B,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,4BAAY,CAAC,iDAAiD,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,aAAa,CAAC,KAAoB;QACvC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAoB;QAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,4BAAY,CAAC,wCAAwC,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,IAAa;QAChB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,KAAa,EAAE,GAAW;QACrC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,OAAmC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,GAAG,QAAQ,gBAAgB,CAAC;IACrC,CAAC;IAsBD;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,eAAe;QACb,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ;QACN,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAC/B,SAAS,CAAC,UAAU,EACpB,8CAA8C,QAAQ;aACnD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,IAAI,CAAC,GAAG,CAAC,sDAAsD,QAAQ;aACvE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,IAAI,CAAC,GAAG,CAAC,SAAS,CACtB,CAAC;IACJ,CAAC;CACF;AA1nBD,4BA0nBC;AAED,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjD,MAAM,UAAU,GAAG;IACjB,IAAI,QAAQ,CAAC,YAAY,CAAC;IAC1B,IAAI,QAAQ,CAAC,eAAe,CAAC;IAC7B,IAAI,QAAQ,CAAC,gBAAgB,CAAC;CAC/B,CAAC;AACF,MAAM,WAAW,GAAG,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;AAChD,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACrD,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;AAClD,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC/C,MAAM,gBAAgB,GAAG;IACvB,IAAI,QAAQ,CAAC,cAAc,CAAC;IAC5B,IAAI,QAAQ,CAAC,iBAAiB,CAAC;IAC/B,IAAI,QAAQ,CAAC,gBAAgB,CAAC;CAC/B,CAAC;AACF,MAAM,eAAe,GAAG,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;AACtD,MAAM,WAAW,GAAG,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC;AAChD,MAAM,kBAAkB,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,AAAD,EAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IACjF,MAAM,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC;IAC1B,SAAS;CACV,CAAC,CAAC,CAAC","sourcesContent":["/* eslint-disable no-param-reassign */\n\nimport * as common from './common';\nimport * as constants from './v4/constants';\nimport { AddressError } from './address-error';\n\nconst isCorrect4 = common.isCorrect(constants.BITS);\n\n/**\n * Represents an IPv4 address\n * @param {string} address - An IPv4 address string\n */\nexport class Address4 {\n address: string;\n addressMinusSuffix: string = '';\n groups: number = constants.GROUPS;\n parsedAddress: string[] = [];\n parsedSubnet: string = '';\n subnet: string = '/32';\n subnetMask: number = 32;\n v4: boolean = true;\n private _binaryZeroPad?: string;\n\n constructor(address: string) {\n this.address = address;\n\n const subnet = constants.RE_SUBNET_STRING.exec(address);\n\n if (subnet) {\n this.parsedSubnet = subnet[0].replace('/', '');\n this.subnetMask = parseInt(this.parsedSubnet, 10);\n this.subnet = `/${this.subnetMask}`;\n\n if (this.subnetMask < 0 || this.subnetMask > constants.BITS) {\n throw new AddressError('Invalid subnet mask.');\n }\n\n address = address.replace(constants.RE_SUBNET_STRING, '');\n }\n\n // Four three-digit octets and three dots: the longest well-formed address\n // is 15 characters. Longer input is rejected before parsing, as Address6\n // does at its own limit.\n const longest = constants.GROUPS * 4 - 1;\n\n if (address.length > longest) {\n throw new AddressError(`IPv4 addresses are at most ${longest} characters.`);\n }\n\n this.addressMinusSuffix = address;\n\n this.parsedAddress = this.parse(address);\n }\n\n /**\n * Returns true if the given string is a valid IPv4 address (with optional\n * CIDR subnet), false otherwise. Host bits in the subnet portion are\n * allowed (e.g. `192.168.1.5/24` is valid); for strict network-address\n * validation compare `correctForm()` to `startAddress().correctForm()`,\n * or use `networkForm()`.\n */\n static isValid(address: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new Address4(address);\n\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Parses an IPv4 address string into its four octet groups and stores the\n * result on `this.parsedAddress`. Called automatically by the constructor;\n * you typically don't need to call it directly. Throws `AddressError` if\n * the input is not a valid IPv4 address.\n */\n parse(address: string) {\n const groups = address.split('.');\n\n // Checked before the general match so the error names the actual problem.\n // Address6 rejects the same notation on its v4-in-v6 path.\n if (groups.some((group) => /^0\\d/.test(group))) {\n throw new AddressError(\"IPv4 addresses can't have leading zeroes.\");\n }\n\n if (!address.match(constants.RE_ADDRESS)) {\n throw new AddressError('Invalid IPv4 address.');\n }\n\n return groups;\n }\n\n /**\n * Returns the address in correct form: octets joined with `.` and any\n * leading zeros stripped (e.g. `192.168.1.1`). For IPv4 this matches the\n * canonical dotted-decimal representation.\n */\n correctForm(): string {\n return this.parsedAddress.map((part) => parseInt(part, 10)).join('.');\n }\n\n /**\n * Returns true if the address is correct, false otherwise\n * @returns {Boolean}\n */\n isCorrect = isCorrect4;\n\n /**\n * Construct an `Address4` from an address and a dotted-decimal subnet\n * mask given as separate strings (e.g. as returned by Node's\n * `os.networkInterfaces()`). Throws `AddressError` if the mask is\n * non-contiguous (e.g. `255.0.255.0`).\n * @example\n * var address = Address4.fromAddressAndMask('192.168.1.1', '255.255.255.0');\n * address.subnetMask; // 24\n */\n static fromAddressAndMask(address: string, mask: string): Address4 {\n const bits = common.prefixLengthFromMask(new Address4(mask).bigInt(), constants.BITS);\n return new Address4(`${address}/${bits}`);\n }\n\n /**\n * Construct an `Address4` from an address and a Cisco-style wildcard mask\n * given as separate strings (e.g. `0.0.0.255` for a `/24`). The wildcard\n * mask is the bitwise inverse of the subnet mask. Throws `AddressError`\n * if the mask is non-contiguous (e.g. `0.255.0.255`).\n * @example\n * var address = Address4.fromAddressAndWildcardMask('10.0.0.1', '0.0.0.255');\n * address.subnetMask; // 24\n */\n static fromAddressAndWildcardMask(address: string, wildcardMask: string): Address4 {\n const wildcard = new Address4(wildcardMask).bigInt();\n const allOnes = (BigInt(1) << BigInt(constants.BITS)) - BigInt(1);\n const mask = wildcard ^ allOnes;\n const bits = common.prefixLengthFromMask(mask, constants.BITS);\n return new Address4(`${address}/${bits}`);\n }\n\n /**\n * Construct an `Address4` from a wildcard pattern with trailing `*`\n * octets. The number of trailing wildcards determines the prefix\n * length: each `*` represents 8 bits.\n *\n * Only trailing whole-octet wildcards are supported. Partial-octet\n * wildcards (e.g. `192.168.0.1*`) and interior wildcards (e.g.\n * `192.*.0.1`) throw `AddressError`.\n * @example\n * Address4.fromWildcard('192.168.0.*').subnet; // '/24'\n * Address4.fromWildcard('192.168.*.*').subnet; // '/16'\n * Address4.fromWildcard('*.*.*.*').subnet; // '/0'\n */\n static fromWildcard(input: string): Address4 {\n const groups = input.split('.');\n\n if (groups.length !== constants.GROUPS) {\n throw new AddressError('Wildcard pattern must have 4 octets');\n }\n\n let firstWildcard = -1;\n\n for (let i = 0; i < groups.length; i++) {\n if (groups[i] === '*') {\n if (firstWildcard === -1) {\n firstWildcard = i;\n }\n } else if (firstWildcard !== -1) {\n throw new AddressError(\n 'Wildcard `*` must only appear in trailing octets (e.g. `192.168.0.*`)',\n );\n }\n }\n\n const trailing = firstWildcard === -1 ? 0 : groups.length - firstWildcard;\n const replaced = groups.map((g) => (g === '*' ? '0' : g));\n const subnetBits = constants.BITS - trailing * 8;\n\n return new Address4(`${replaced.join('.')}/${subnetBits}`);\n }\n\n /**\n * Converts a hex string to an IPv4 address object. Accepts 8 hex digits\n * with optional `:` separators (e.g. `'7f000001'` or `'7f:00:00:01'`).\n * Throws `AddressError` for any other length or for non-hex characters.\n * @param {string} hex - a hex string to convert\n * @returns {Address4}\n */\n static fromHex(hex: string): Address4 {\n const stripped = hex.replace(/:/g, '');\n\n if (!/^[0-9a-fA-F]{8}$/.test(stripped)) {\n throw new AddressError('IPv4 hex must be exactly 8 hex digits');\n }\n\n const groups = [];\n\n for (let i = 0; i < 8; i += 2) {\n groups.push(parseInt(stripped.slice(i, i + 2), 16));\n }\n\n return new Address4(groups.join('.'));\n }\n\n /**\n * Converts an integer into a IPv4 address object. The integer must be a\n * non-negative safe integer in the range `[0, 2**32 - 1]`; otherwise\n * `AddressError` is thrown.\n * @param {integer} integer - a number to convert\n * @returns {Address4}\n */\n static fromInteger(integer: number): Address4 {\n if (!Number.isInteger(integer) || integer < 0 || integer > 0xffffffff) {\n throw new AddressError('IPv4 integer must be in the range 0 to 2**32 - 1');\n }\n\n return Address4.fromHex(integer.toString(16).padStart(8, '0'));\n }\n\n /**\n * Return an address from in-addr.arpa form: the four octets reversed, with\n * or without the `.in-addr.arpa` suffix and root dot, in any case. Throws\n * `AddressError` unless the reversed labels form a valid IPv4 address, so\n * `fromArpa(x.reverseForm())` round-trips {@link reverseForm}.\n * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address\n * @returns {Adress4}\n * @example\n * var address = Address4.fromArpa('42.2.0.192.in-addr.arpa.')\n * address.correctForm(); // '192.0.2.42'\n */\n static fromArpa(arpaFormAddress: string): Address4 {\n // remove an ending \".in-addr.arpa\", in any case and with or without the\n // root dot, as Address6.fromArpa does for \".ip6.arpa\"\n const leader = arpaFormAddress.replace(/(\\.in-addr\\.arpa)?\\.?$/i, '');\n\n const address = leader.split('.').reverse().join('.');\n\n return new Address4(address);\n }\n\n /**\n * Converts an IPv4 address object to a hex string\n * @returns {String}\n */\n toHex(): string {\n return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(':');\n }\n\n /**\n * Converts an IPv4 address object to an array of bytes.\n *\n * To get a Node.js `Buffer`, wrap the result: `Buffer.from(address.toArray())`.\n * @returns {Array}\n */\n toArray(): number[] {\n return this.parsedAddress.map((part) => parseInt(part, 10));\n }\n\n /**\n * Converts an IPv4 address object to an IPv6 address group\n * @returns {String}\n */\n toGroup6(): string {\n const output = [];\n let i;\n\n for (i = 0; i < constants.GROUPS; i += 2) {\n output.push(\n `${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(\n this.parsedAddress[i + 1],\n )}`,\n );\n }\n\n return output.join(':');\n }\n\n /**\n * Returns the address as a `bigint`\n * @returns {bigint}\n */\n bigInt(): bigint {\n return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join('')}`);\n }\n\n /**\n * Helper function getting start address.\n * @returns {bigint}\n */\n _startAddress(): bigint {\n return BigInt(`0b${this.mask() + '0'.repeat(constants.BITS - this.subnetMask)}`);\n }\n\n /**\n * The first address in the range given by this address' subnet.\n * Often referred to as the Network Address.\n * @returns {Address4}\n */\n startAddress(): Address4 {\n return Address4.fromBigInt(this._startAddress());\n }\n\n /**\n * The first host address in the range given by this address's subnet ie\n * the first address after the Network Address\n * @returns {Address4}\n */\n startAddressExclusive(): Address4 {\n const adjust = BigInt('1');\n return Address4.fromBigInt(this._startAddress() + adjust);\n }\n\n /**\n * Returns the address `n` addresses after this one (or before, when `n` is\n * negative), keeping this address's subnet mask. Throws `AddressError` when\n * the result would fall outside the IPv4 address space or `n` is not an\n * integer.\n * @param {number | bigint} n\n * @returns {Address4}\n * @example\n * new Address4('10.0.0.0/24').offset(1).correctForm(); // '10.0.0.1'\n */\n offset(n: number | bigint): Address4 {\n return Address4.fromBigInt(\n common.offsetBigInt(this.bigInt(), n, constants.BITS, 'IPv4'),\n ).withSubnetMask(this.subnetMask);\n }\n\n /**\n * Returns the network that follows this address's network: the address after\n * {@link endAddress}, with the same subnet mask. Throws `AddressError` when\n * this network is the last one in the address space.\n * @returns {Address4}\n * @example\n * new Address4('10.0.0.0/24').nextNetwork().networkForm(); // '10.0.1.0/24'\n */\n nextNetwork(): Address4 {\n return Address4.fromBigInt(\n common.offsetBigInt(this._endAddress(), 1, constants.BITS, 'IPv4'),\n ).withSubnetMask(this.subnetMask);\n }\n\n private withSubnetMask(subnetMask: number): Address4 {\n return new Address4(`${this.correctForm()}/${subnetMask}`);\n }\n\n /**\n * Helper function getting end address.\n * @returns {bigint}\n */\n _endAddress(): bigint {\n return BigInt(`0b${this.mask() + '1'.repeat(constants.BITS - this.subnetMask)}`);\n }\n\n /**\n * The last address in the range given by this address' subnet\n * Often referred to as the Broadcast\n * @returns {Address4}\n */\n endAddress(): Address4 {\n return Address4.fromBigInt(this._endAddress());\n }\n\n /**\n * The last host address in the range given by this address's subnet ie\n * the last address prior to the Broadcast Address\n * @returns {Address4}\n */\n endAddressExclusive(): Address4 {\n const adjust = BigInt('1');\n return Address4.fromBigInt(this._endAddress() - adjust);\n }\n\n /**\n * The dotted-decimal form of the subnet mask, e.g. `255.255.240.0` for\n * a `/20`. Returns an `Address4`; call `.correctForm()` for the string.\n * @returns {Address4}\n */\n subnetMaskAddress(): Address4 {\n return Address4.fromBigInt(\n BigInt(`0b${'1'.repeat(this.subnetMask)}${'0'.repeat(constants.BITS - this.subnetMask)}`),\n );\n }\n\n /**\n * The Cisco-style wildcard mask, e.g. `0.0.0.255` for a `/24`. This is\n * the bitwise inverse of `subnetMaskAddress()`. Returns an `Address4`;\n * call `.correctForm()` for the string.\n * @returns {Address4}\n */\n wildcardMask(): Address4 {\n return Address4.fromBigInt(\n BigInt(`0b${'0'.repeat(this.subnetMask)}${'1'.repeat(constants.BITS - this.subnetMask)}`),\n );\n }\n\n /**\n * The network address in CIDR string form, e.g. `192.168.1.0/24` for\n * `192.168.1.5/24`. For an address with no explicit subnet the prefix is\n * `/32`, e.g. `networkForm()` on `192.168.1.5` returns `192.168.1.5/32`.\n * @returns {string}\n */\n networkForm(): string {\n return `${this.startAddress().correctForm()}/${this.subnetMask}`;\n }\n\n /**\n * Converts a BigInt to a v4 address object. The value must be in the\n * range `[0, 2**32 - 1]`; otherwise `AddressError` is thrown.\n * @param {bigint} bigInt - a BigInt to convert\n * @returns {Address4}\n */\n static fromBigInt(bigInt: bigint): Address4 {\n if (bigInt < BigInt(0) || bigInt > BigInt(0xffffffff)) {\n throw new AddressError('IPv4 BigInt must be in the range 0 to 2**32 - 1');\n }\n\n return Address4.fromHex(bigInt.toString(16).padStart(8, '0'));\n }\n\n /**\n * Convert a byte array to an Address4 object. Throws `AddressError` unless\n * given exactly 4 integers from 0 to 255. Signed bytes are rejected, so\n * this differs from `Address6.fromByteArray`, which folds them; the two\n * contracts converge on this stricter form in the next major version.\n *\n * To convert from a Node.js `Buffer`, spread it: `Address4.fromByteArray([...buf])`.\n * @param {Array<number>} bytes - an array of 4 bytes (0-255)\n * @returns {Address4}\n */\n static fromByteArray(bytes: Array<number>): Address4 {\n common.assertByteArray(bytes, 4, 'IPv4', 0);\n\n return this.fromUnsignedByteArray(bytes);\n }\n\n /**\n * Convert an unsigned byte array to an Address4 object. Throws\n * `AddressError` unless given exactly 4 bytes, and rejects values outside\n * 0 to 255 when parsing the resulting address.\n *\n * To convert from a Node.js `Buffer`, spread it:\n * `Address4.fromUnsignedByteArray([...buf])`.\n * @param {Array<number>} bytes - an array of 4 unsigned bytes (0-255)\n * @returns {Address4}\n */\n static fromUnsignedByteArray(bytes: Array<number>): Address4 {\n if (bytes.length !== 4) {\n throw new AddressError('IPv4 addresses require exactly 4 bytes');\n }\n\n const address = bytes.join('.');\n return new Address4(address);\n }\n\n /**\n * Returns the first n bits of the address, defaulting to the\n * subnet mask\n * @returns {String}\n */\n mask(mask?: number): string {\n if (mask === undefined) {\n mask = this.subnetMask;\n }\n\n return this.getBitsBase2(0, mask);\n }\n\n /**\n * Returns the bits in the given range as a base-2 string\n * @returns {string}\n */\n getBitsBase2(start: number, end: number): string {\n return this.binaryZeroPad().slice(start, end);\n }\n\n /**\n * Return the reversed in-addr.arpa form of the address, e.g.\n * `42.2.0.192.in-addr.arpa.` for `192.0.2.42`.\n * @param {Object} options\n * @param {boolean} options.omitSuffix - omit the \"in-addr.arpa\" suffix\n * @returns {String}\n */\n reverseForm(options?: common.ReverseFormOptions): string {\n if (!options) {\n options = {};\n }\n\n const reversed = this.correctForm().split('.').reverse().join('.');\n\n if (options.omitSuffix) {\n return reversed;\n }\n\n return `${reversed}.in-addr.arpa.`;\n }\n\n /**\n * Returns true if the given address is in the subnet of the current address.\n * An `Address6` is never in the subnet of an `Address4`; convert with\n * `to4()` or `Address6.fromAddress4()` to compare across families.\n * @returns {boolean}\n */\n isInSubnet = common.isInSubnet;\n\n /**\n * Returns true if this address's host bits fall inside the given subnet,\n * ignoring this address's own subnet mask. Prefer this over `isInSubnet`\n * when classifying a single address, so the answer doesn't change with the\n * CIDR suffix the caller happened to write — notably when the address came\n * from untrusted input and the result backs a trust-boundary decision.\n * An `Address6` is never in the subnet of an `Address4`; convert with\n * `to4()` or `Address6.fromAddress4()` to compare across families.\n * @returns {boolean}\n */\n isHostInSubnet = common.isHostInSubnet;\n\n /**\n * Returns true if the given address is a multicast address\n * @returns {boolean}\n */\n isMulticast(): boolean {\n return this.isHostInSubnet(MULTICAST_V4);\n }\n\n /**\n * Returns true if the address is in one of the [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) private address ranges (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`).\n * @returns {boolean}\n */\n isPrivate(): boolean {\n return PRIVATE_V4.some((subnet) => this.isHostInSubnet(subnet));\n }\n\n /**\n * Returns true if the address is in the loopback range `127.0.0.0/8` ([RFC 1122](https://datatracker.ietf.org/doc/html/rfc1122)).\n * @returns {boolean}\n */\n isLoopback(): boolean {\n return this.isHostInSubnet(LOOPBACK_V4);\n }\n\n /**\n * Returns true if the address is in the link-local range `169.254.0.0/16` ([RFC 3927](https://datatracker.ietf.org/doc/html/rfc3927)).\n * @returns {boolean}\n */\n isLinkLocal(): boolean {\n return this.isHostInSubnet(LINK_LOCAL_V4);\n }\n\n /**\n * Returns true if the address is the unspecified address `0.0.0.0`.\n * @returns {boolean}\n */\n isUnspecified(): boolean {\n return this.isHostInSubnet(UNSPECIFIED_V4);\n }\n\n /**\n * Returns true if the address is the limited broadcast address `255.255.255.255` ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)).\n * @returns {boolean}\n */\n isBroadcast(): boolean {\n return this.isHostInSubnet(BROADCAST_V4);\n }\n\n /**\n * Returns true if the address is in the carrier-grade NAT range `100.64.0.0/10` ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)).\n * @returns {boolean}\n */\n isCGNAT(): boolean {\n return this.isHostInSubnet(CGNAT_V4);\n }\n\n /**\n * Returns true if the address is in one of the documentation ranges\n * `192.0.2.0/24`, `198.51.100.0/24`, or `203.0.113.0/24` ([RFC 5737](https://datatracker.ietf.org/doc/html/rfc5737)).\n * @returns {boolean}\n */\n isDocumentation(): boolean {\n return DOCUMENTATION_V4.some((subnet) => this.isHostInSubnet(subnet));\n }\n\n /**\n * Returns true if the address is in the benchmarking range `198.18.0.0/15` ([RFC 2544](https://datatracker.ietf.org/doc/html/rfc2544)).\n * @returns {boolean}\n */\n isBenchmarking(): boolean {\n return this.isHostInSubnet(BENCHMARKING_V4);\n }\n\n /**\n * Returns true if the address is in the reserved range `240.0.0.0/4` ([RFC 1112](https://datatracker.ietf.org/doc/html/rfc1112)),\n * which includes the limited broadcast address.\n * @returns {boolean}\n */\n isReserved(): boolean {\n return this.isHostInSubnet(RESERVED_V4);\n }\n\n /**\n * Returns true if the address is globally reachable: not multicast, and not\n * in any block the [IANA IPv4 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv4-special-registry/)\n * marks as not globally reachable. That covers everything the individual\n * classifiers name (private, loopback, link-local, CGNAT, unspecified,\n * broadcast, documentation, benchmarking, reserved) and the blocks they do\n * not, such as `0.0.0.0/8` and the IETF protocol assignments in\n * `192.0.0.0/24`. This is the single predicate to use where a request must\n * not reach an internal or special-purpose destination; see SECURITY.md.\n * @returns {boolean}\n */\n isGlobal(): boolean {\n return !this.isMulticast() && common.isGloballyReachable.call(this, SPECIAL_PURPOSE_V4);\n }\n\n /**\n * Returns a zero-padded base-2 string representation of the address\n * @returns {string}\n */\n binaryZeroPad(): string {\n if (this._binaryZeroPad === undefined) {\n this._binaryZeroPad = this.bigInt().toString(2).padStart(constants.BITS, '0');\n }\n return this._binaryZeroPad;\n }\n\n /**\n * Groups an IPv4 address for inclusion at the end of an IPv6 address.\n *\n * Returns an HTML fragment: each half of the address is wrapped in a\n * `<span>` carrying the group classes an address-inspector UI hovers on.\n * The address content is HTML-escaped; anything you concatenate around it\n * is your responsibility.\n * @returns {String}\n */\n groupForV6(): string {\n const segments = this.parsedAddress;\n\n return this.correctForm().replace(\n constants.RE_ADDRESS,\n `<span class=\"hover-group group-v4 group-6\">${segments\n .slice(0, 2)\n .join('.')}</span>.<span class=\"hover-group group-v4 group-7\">${segments\n .slice(2, 4)\n .join('.')}</span>`,\n );\n }\n}\n\nconst MULTICAST_V4 = new Address4('224.0.0.0/4');\nconst PRIVATE_V4 = [\n new Address4('10.0.0.0/8'),\n new Address4('172.16.0.0/12'),\n new Address4('192.168.0.0/16'),\n];\nconst LOOPBACK_V4 = new Address4('127.0.0.0/8');\nconst LINK_LOCAL_V4 = new Address4('169.254.0.0/16');\nconst UNSPECIFIED_V4 = new Address4('0.0.0.0/32');\nconst BROADCAST_V4 = new Address4('255.255.255.255/32');\nconst CGNAT_V4 = new Address4('100.64.0.0/10');\nconst DOCUMENTATION_V4 = [\n new Address4('192.0.2.0/24'),\n new Address4('198.51.100.0/24'),\n new Address4('203.0.113.0/24'),\n];\nconst BENCHMARKING_V4 = new Address4('198.18.0.0/15');\nconst RESERVED_V4 = new Address4('240.0.0.0/4');\nconst SPECIAL_PURPOSE_V4 = constants.SPECIAL_PURPOSE.map(([cidr, , reachable]) => ({\n subnet: new Address4(cidr),\n reachable,\n}));\n"]}
1
+ {"version":3,"file":"ipv4.js","sourceRoot":"","sources":["../src/ipv4.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\n\nimport * as common from './common';\nimport * as constants from './v4/constants';\nimport { AddressError } from './address-error';\n\nconst isCorrect4 = common.isCorrect(constants.BITS);\n\n/**\n * Represents an IPv4 address\n * @param {string} address - An IPv4 address string\n */\nexport class Address4 {\n address: string;\n addressMinusSuffix: string = '';\n groups: number = constants.GROUPS;\n parsedAddress: string[] = [];\n parsedSubnet: string = '';\n subnet: string = '/32';\n subnetMask: number = 32;\n v4: boolean = true;\n private _binaryZeroPad?: string;\n\n constructor(address: string) {\n this.address = address;\n\n const subnet = constants.RE_SUBNET_STRING.exec(address);\n\n if (subnet) {\n this.parsedSubnet = subnet[0].replace('/', '');\n this.subnetMask = parseInt(this.parsedSubnet, 10);\n this.subnet = `/${this.subnetMask}`;\n\n if (this.subnetMask < 0 || this.subnetMask > constants.BITS) {\n throw new AddressError('Invalid subnet mask.');\n }\n\n address = address.replace(constants.RE_SUBNET_STRING, '');\n }\n\n // Four three-digit octets and three dots: the longest well-formed address\n // is 15 characters. Longer input is rejected before parsing, as Address6\n // does at its own limit.\n const longest = constants.GROUPS * 4 - 1;\n\n if (address.length > longest) {\n throw new AddressError(`IPv4 addresses are at most ${longest} characters.`);\n }\n\n this.addressMinusSuffix = address;\n\n this.parsedAddress = this.parse(address);\n }\n\n /**\n * Returns true if the given string is a valid IPv4 address (with optional\n * CIDR subnet), false otherwise. Host bits in the subnet portion are\n * allowed (e.g. `192.168.1.5/24` is valid); for strict network-address\n * validation compare `correctForm()` to `startAddress().correctForm()`,\n * or use `networkForm()`.\n */\n static isValid(address: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new Address4(address);\n\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Parses an IPv4 address string into its four octet groups and stores the\n * result on `this.parsedAddress`. Called automatically by the constructor;\n * you typically don't need to call it directly. Throws `AddressError` if\n * the input is not a valid IPv4 address.\n */\n parse(address: string) {\n const groups = address.split('.');\n\n // Checked before the general match so the error names the actual problem.\n // Address6 rejects the same notation on its v4-in-v6 path.\n if (groups.some((group) => /^0\\d/.test(group))) {\n throw new AddressError(\"IPv4 addresses can't have leading zeroes.\");\n }\n\n if (!address.match(constants.RE_ADDRESS)) {\n throw new AddressError('Invalid IPv4 address.');\n }\n\n return groups;\n }\n\n /**\n * Returns the address in correct form: octets joined with `.` and any\n * leading zeros stripped (e.g. `192.168.1.1`). For IPv4 this matches the\n * canonical dotted-decimal representation.\n */\n correctForm(): string {\n return this.parsedAddress.map((part) => parseInt(part, 10)).join('.');\n }\n\n /**\n * Returns true if the address is correct, false otherwise\n * @returns {Boolean}\n */\n isCorrect = isCorrect4;\n\n /**\n * Construct an `Address4` from an address and a dotted-decimal subnet\n * mask given as separate strings (e.g. as returned by Node's\n * `os.networkInterfaces()`). Throws `AddressError` if the mask is\n * non-contiguous (e.g. `255.0.255.0`).\n * @example\n * var address = Address4.fromAddressAndMask('192.168.1.1', '255.255.255.0');\n * address.subnetMask; // 24\n */\n static fromAddressAndMask(address: string, mask: string): Address4 {\n const bits = common.prefixLengthFromMask(new Address4(mask).bigInt(), constants.BITS);\n return new Address4(`${address}/${bits}`);\n }\n\n /**\n * Construct an `Address4` from an address and a Cisco-style wildcard mask\n * given as separate strings (e.g. `0.0.0.255` for a `/24`). The wildcard\n * mask is the bitwise inverse of the subnet mask. Throws `AddressError`\n * if the mask is non-contiguous (e.g. `0.255.0.255`).\n * @example\n * var address = Address4.fromAddressAndWildcardMask('10.0.0.1', '0.0.0.255');\n * address.subnetMask; // 24\n */\n static fromAddressAndWildcardMask(address: string, wildcardMask: string): Address4 {\n const wildcard = new Address4(wildcardMask).bigInt();\n const allOnes = (BigInt(1) << BigInt(constants.BITS)) - BigInt(1);\n const mask = wildcard ^ allOnes;\n const bits = common.prefixLengthFromMask(mask, constants.BITS);\n return new Address4(`${address}/${bits}`);\n }\n\n /**\n * Construct an `Address4` from a wildcard pattern with trailing `*`\n * octets. The number of trailing wildcards determines the prefix\n * length: each `*` represents 8 bits.\n *\n * Only trailing whole-octet wildcards are supported. Partial-octet\n * wildcards (e.g. `192.168.0.1*`) and interior wildcards (e.g.\n * `192.*.0.1`) throw `AddressError`.\n * @example\n * Address4.fromWildcard('192.168.0.*').subnet; // '/24'\n * Address4.fromWildcard('192.168.*.*').subnet; // '/16'\n * Address4.fromWildcard('*.*.*.*').subnet; // '/0'\n */\n static fromWildcard(input: string): Address4 {\n const groups = input.split('.');\n\n if (groups.length !== constants.GROUPS) {\n throw new AddressError('Wildcard pattern must have 4 octets');\n }\n\n let firstWildcard = -1;\n\n for (let i = 0; i < groups.length; i++) {\n if (groups[i] === '*') {\n if (firstWildcard === -1) {\n firstWildcard = i;\n }\n } else if (firstWildcard !== -1) {\n throw new AddressError(\n 'Wildcard `*` must only appear in trailing octets (e.g. `192.168.0.*`)',\n );\n }\n }\n\n const trailing = firstWildcard === -1 ? 0 : groups.length - firstWildcard;\n const replaced = groups.map((g) => (g === '*' ? '0' : g));\n const subnetBits = constants.BITS - trailing * 8;\n\n return new Address4(`${replaced.join('.')}/${subnetBits}`);\n }\n\n /**\n * Converts a hex string to an IPv4 address object. Accepts 8 hex digits\n * with optional `:` separators (e.g. `'7f000001'` or `'7f:00:00:01'`).\n * Throws `AddressError` for any other length or for non-hex characters.\n * @param {string} hex - a hex string to convert\n * @returns {Address4}\n */\n static fromHex(hex: string): Address4 {\n const stripped = hex.replace(/:/g, '');\n\n if (!/^[0-9a-fA-F]{8}$/.test(stripped)) {\n throw new AddressError('IPv4 hex must be exactly 8 hex digits');\n }\n\n const groups = [];\n\n for (let i = 0; i < 8; i += 2) {\n groups.push(parseInt(stripped.slice(i, i + 2), 16));\n }\n\n return new Address4(groups.join('.'));\n }\n\n /**\n * Converts an integer into a IPv4 address object. The integer must be a\n * non-negative safe integer in the range `[0, 2**32 - 1]`; otherwise\n * `AddressError` is thrown.\n * @param {integer} integer - a number to convert\n * @returns {Address4}\n */\n static fromInteger(integer: number): Address4 {\n if (!Number.isInteger(integer) || integer < 0 || integer > 0xffffffff) {\n throw new AddressError('IPv4 integer must be in the range 0 to 2**32 - 1');\n }\n\n return Address4.fromHex(integer.toString(16).padStart(8, '0'));\n }\n\n /**\n * Return an address from in-addr.arpa form: the four octets reversed, with\n * or without the `.in-addr.arpa` suffix and root dot, in any case. Throws\n * `AddressError` unless the reversed labels form a valid IPv4 address, so\n * `fromArpa(x.reverseForm())` round-trips {@link reverseForm}.\n * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address\n * @returns {Adress4}\n * @example\n * var address = Address4.fromArpa('42.2.0.192.in-addr.arpa.')\n * address.correctForm(); // '192.0.2.42'\n */\n static fromArpa(arpaFormAddress: string): Address4 {\n // A 15-character address, a \"/32\" prefix length and \".in-addr.arpa.\": the\n // longest name is 32 characters. Longer input is rejected before its\n // labels are split, as the constructor does at its own limit.\n const longest = constants.GROUPS * 4 - 1 + '/32'.length + '.in-addr.arpa.'.length;\n\n if (arpaFormAddress.length > longest) {\n throw new AddressError(`in-addr.arpa names are at most ${longest} characters.`);\n }\n\n // remove an ending \".in-addr.arpa\", in any case and with or without the\n // root dot, as Address6.fromArpa does for \".ip6.arpa\"\n const leader = arpaFormAddress.replace(/(\\.in-addr\\.arpa)?\\.?$/i, '');\n\n const address = leader.split('.').reverse().join('.');\n\n return new Address4(address);\n }\n\n /**\n * Converts an IPv4 address object to a hex string\n * @returns {String}\n */\n toHex(): string {\n return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(':');\n }\n\n /**\n * Converts an IPv4 address object to an array of bytes.\n *\n * To get a Node.js `Buffer`, wrap the result: `Buffer.from(address.toArray())`.\n * @returns {Array}\n */\n toArray(): number[] {\n return this.parsedAddress.map((part) => parseInt(part, 10));\n }\n\n /**\n * Converts an IPv4 address object to an IPv6 address group\n * @returns {String}\n */\n toGroup6(): string {\n const output = [];\n let i;\n\n for (i = 0; i < constants.GROUPS; i += 2) {\n output.push(\n `${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(\n this.parsedAddress[i + 1],\n )}`,\n );\n }\n\n return output.join(':');\n }\n\n /**\n * Returns the address as a `bigint`\n * @returns {bigint}\n */\n bigInt(): bigint {\n return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join('')}`);\n }\n\n /**\n * Helper function getting start address.\n * @returns {bigint}\n */\n _startAddress(): bigint {\n return BigInt(`0b${this.mask() + '0'.repeat(constants.BITS - this.subnetMask)}`);\n }\n\n /**\n * The first address in the range given by this address' subnet.\n * Often referred to as the Network Address.\n * @returns {Address4}\n */\n startAddress(): Address4 {\n return Address4.fromBigInt(this._startAddress());\n }\n\n /**\n * The first host address in the range given by this address's subnet ie\n * the first address after the Network Address\n * @returns {Address4}\n */\n startAddressExclusive(): Address4 {\n const adjust = BigInt('1');\n return Address4.fromBigInt(this._startAddress() + adjust);\n }\n\n /**\n * Returns the address `n` addresses after this one (or before, when `n` is\n * negative), keeping this address's subnet mask. Throws `AddressError` when\n * the result would fall outside the IPv4 address space or `n` is not an\n * integer.\n * @param {number | bigint} n\n * @returns {Address4}\n * @example\n * new Address4('10.0.0.0/24').offset(1).correctForm(); // '10.0.0.1'\n */\n offset(n: number | bigint): Address4 {\n return Address4.fromBigInt(\n common.offsetBigInt(this.bigInt(), n, constants.BITS, 'IPv4'),\n ).withSubnetMask(this.subnetMask);\n }\n\n /**\n * Returns the network that follows this address's network: the address after\n * {@link endAddress}, with the same subnet mask. Throws `AddressError` when\n * this network is the last one in the address space.\n * @returns {Address4}\n * @example\n * new Address4('10.0.0.0/24').nextNetwork().networkForm(); // '10.0.1.0/24'\n */\n nextNetwork(): Address4 {\n return Address4.fromBigInt(\n common.offsetBigInt(this._endAddress(), 1, constants.BITS, 'IPv4'),\n ).withSubnetMask(this.subnetMask);\n }\n\n private withSubnetMask(subnetMask: number): Address4 {\n return new Address4(`${this.correctForm()}/${subnetMask}`);\n }\n\n /**\n * Helper function getting end address.\n * @returns {bigint}\n */\n _endAddress(): bigint {\n return BigInt(`0b${this.mask() + '1'.repeat(constants.BITS - this.subnetMask)}`);\n }\n\n /**\n * The last address in the range given by this address' subnet\n * Often referred to as the Broadcast\n * @returns {Address4}\n */\n endAddress(): Address4 {\n return Address4.fromBigInt(this._endAddress());\n }\n\n /**\n * The last host address in the range given by this address's subnet ie\n * the last address prior to the Broadcast Address\n * @returns {Address4}\n */\n endAddressExclusive(): Address4 {\n const adjust = BigInt('1');\n return Address4.fromBigInt(this._endAddress() - adjust);\n }\n\n /**\n * The dotted-decimal form of the subnet mask, e.g. `255.255.240.0` for\n * a `/20`. Returns an `Address4`; call `.correctForm()` for the string.\n * @returns {Address4}\n */\n subnetMaskAddress(): Address4 {\n return Address4.fromBigInt(\n BigInt(`0b${'1'.repeat(this.subnetMask)}${'0'.repeat(constants.BITS - this.subnetMask)}`),\n );\n }\n\n /**\n * The Cisco-style wildcard mask, e.g. `0.0.0.255` for a `/24`. This is\n * the bitwise inverse of `subnetMaskAddress()`. Returns an `Address4`;\n * call `.correctForm()` for the string.\n * @returns {Address4}\n */\n wildcardMask(): Address4 {\n return Address4.fromBigInt(\n BigInt(`0b${'0'.repeat(this.subnetMask)}${'1'.repeat(constants.BITS - this.subnetMask)}`),\n );\n }\n\n /**\n * The network address in CIDR string form, e.g. `192.168.1.0/24` for\n * `192.168.1.5/24`. For an address with no explicit subnet the prefix is\n * `/32`, e.g. `networkForm()` on `192.168.1.5` returns `192.168.1.5/32`.\n * @returns {string}\n */\n networkForm(): string {\n return `${this.startAddress().correctForm()}/${this.subnetMask}`;\n }\n\n /**\n * Converts a BigInt to a v4 address object. The value must be in the\n * range `[0, 2**32 - 1]`; otherwise `AddressError` is thrown.\n * @param {bigint} bigInt - a BigInt to convert\n * @returns {Address4}\n */\n static fromBigInt(bigInt: bigint): Address4 {\n if (bigInt < BigInt(0) || bigInt > BigInt(0xffffffff)) {\n throw new AddressError('IPv4 BigInt must be in the range 0 to 2**32 - 1');\n }\n\n return Address4.fromHex(bigInt.toString(16).padStart(8, '0'));\n }\n\n /**\n * Convert a byte array to an Address4 object. Throws `AddressError` unless\n * given exactly 4 integers from 0 to 255. Signed bytes are rejected, so\n * this differs from `Address6.fromByteArray`, which folds them; the two\n * contracts converge on this stricter form in the next major version.\n *\n * To convert from a Node.js `Buffer`, spread it: `Address4.fromByteArray([...buf])`.\n * @param {Array<number>} bytes - an array of 4 bytes (0-255)\n * @returns {Address4}\n */\n static fromByteArray(bytes: Array<number>): Address4 {\n common.assertByteArray(bytes, 4, 'IPv4', 0);\n\n return this.fromUnsignedByteArray(bytes);\n }\n\n /**\n * Convert an unsigned byte array to an Address4 object. Throws\n * `AddressError` unless given exactly 4 bytes, and rejects values outside\n * 0 to 255 when parsing the resulting address.\n *\n * To convert from a Node.js `Buffer`, spread it:\n * `Address4.fromUnsignedByteArray([...buf])`.\n * @param {Array<number>} bytes - an array of 4 unsigned bytes (0-255)\n * @returns {Address4}\n */\n static fromUnsignedByteArray(bytes: Array<number>): Address4 {\n if (bytes.length !== 4) {\n throw new AddressError('IPv4 addresses require exactly 4 bytes');\n }\n\n const address = bytes.join('.');\n return new Address4(address);\n }\n\n /**\n * Returns the first n bits of the address, defaulting to the\n * subnet mask\n * @returns {String}\n */\n mask(mask?: number): string {\n if (mask === undefined) {\n mask = this.subnetMask;\n }\n\n return this.getBitsBase2(0, mask);\n }\n\n /**\n * Returns the bits in the given range as a base-2 string\n * @returns {string}\n */\n getBitsBase2(start: number, end: number): string {\n return this.binaryZeroPad().slice(start, end);\n }\n\n /**\n * Return the reversed in-addr.arpa form of the address, e.g.\n * `42.2.0.192.in-addr.arpa.` for `192.0.2.42`.\n * @param {Object} options\n * @param {boolean} options.omitSuffix - omit the \"in-addr.arpa\" suffix\n * @returns {String}\n */\n reverseForm(options?: common.ReverseFormOptions): string {\n if (!options) {\n options = {};\n }\n\n const reversed = this.correctForm().split('.').reverse().join('.');\n\n if (options.omitSuffix) {\n return reversed;\n }\n\n return `${reversed}.in-addr.arpa.`;\n }\n\n /**\n * Returns true if the given address is in the subnet of the current address.\n * An `Address6` is never in the subnet of an `Address4`; convert with\n * `to4()` or `Address6.fromAddress4()` to compare across families.\n * @returns {boolean}\n */\n isInSubnet = common.isInSubnet;\n\n /**\n * Returns true if this address's host bits fall inside the given subnet,\n * ignoring this address's own subnet mask. Prefer this over `isInSubnet`\n * when classifying a single address, so the answer doesn't change with the\n * CIDR suffix the caller happened to write — notably when the address came\n * from untrusted input and the result backs a trust-boundary decision.\n * An `Address6` is never in the subnet of an `Address4`; convert with\n * `to4()` or `Address6.fromAddress4()` to compare across families.\n * @returns {boolean}\n */\n isHostInSubnet = common.isHostInSubnet;\n\n /**\n * Returns true if the given address is a multicast address\n * @returns {boolean}\n */\n isMulticast(): boolean {\n return this.isHostInSubnet(MULTICAST_V4);\n }\n\n /**\n * Returns true if the address is in one of the [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) private address ranges (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`).\n * @returns {boolean}\n */\n isPrivate(): boolean {\n return PRIVATE_V4.some((subnet) => this.isHostInSubnet(subnet));\n }\n\n /**\n * Returns true if the address is in the loopback range `127.0.0.0/8` ([RFC 1122](https://datatracker.ietf.org/doc/html/rfc1122)).\n * @returns {boolean}\n */\n isLoopback(): boolean {\n return this.isHostInSubnet(LOOPBACK_V4);\n }\n\n /**\n * Returns true if the address is in the link-local range `169.254.0.0/16` ([RFC 3927](https://datatracker.ietf.org/doc/html/rfc3927)).\n * @returns {boolean}\n */\n isLinkLocal(): boolean {\n return this.isHostInSubnet(LINK_LOCAL_V4);\n }\n\n /**\n * Returns true if the address is the unspecified address `0.0.0.0`.\n * @returns {boolean}\n */\n isUnspecified(): boolean {\n return this.isHostInSubnet(UNSPECIFIED_V4);\n }\n\n /**\n * Returns true if the address is the limited broadcast address `255.255.255.255` ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)).\n * @returns {boolean}\n */\n isBroadcast(): boolean {\n return this.isHostInSubnet(BROADCAST_V4);\n }\n\n /**\n * Returns true if the address is in the carrier-grade NAT range `100.64.0.0/10` ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)).\n * @returns {boolean}\n */\n isCGNAT(): boolean {\n return this.isHostInSubnet(CGNAT_V4);\n }\n\n /**\n * Returns true if the address is in one of the documentation ranges\n * `192.0.2.0/24`, `198.51.100.0/24`, or `203.0.113.0/24` ([RFC 5737](https://datatracker.ietf.org/doc/html/rfc5737)).\n * @returns {boolean}\n */\n isDocumentation(): boolean {\n return DOCUMENTATION_V4.some((subnet) => this.isHostInSubnet(subnet));\n }\n\n /**\n * Returns true if the address is in the benchmarking range `198.18.0.0/15` ([RFC 2544](https://datatracker.ietf.org/doc/html/rfc2544)).\n * @returns {boolean}\n */\n isBenchmarking(): boolean {\n return this.isHostInSubnet(BENCHMARKING_V4);\n }\n\n /**\n * Returns true if the address is in the reserved range `240.0.0.0/4` ([RFC 1112](https://datatracker.ietf.org/doc/html/rfc1112)),\n * which includes the limited broadcast address.\n * @returns {boolean}\n */\n isReserved(): boolean {\n return this.isHostInSubnet(RESERVED_V4);\n }\n\n /**\n * Returns true if the address is globally reachable: not multicast, and not\n * in any block the [IANA IPv4 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv4-special-registry/)\n * marks as not globally reachable. That covers everything the individual\n * classifiers name (private, loopback, link-local, CGNAT, unspecified,\n * broadcast, documentation, benchmarking, reserved) and the blocks they do\n * not, such as `0.0.0.0/8` and the IETF protocol assignments in\n * `192.0.0.0/24`. This is the single predicate to use where a request must\n * not reach an internal or special-purpose destination; see SECURITY.md.\n * @returns {boolean}\n */\n isGlobal(): boolean {\n return !this.isMulticast() && common.isGloballyReachable.call(this, SPECIAL_PURPOSE_V4);\n }\n\n /**\n * Returns a zero-padded base-2 string representation of the address\n * @returns {string}\n */\n binaryZeroPad(): string {\n if (this._binaryZeroPad === undefined) {\n this._binaryZeroPad = this.bigInt().toString(2).padStart(constants.BITS, '0');\n }\n return this._binaryZeroPad;\n }\n\n /**\n * Groups an IPv4 address for inclusion at the end of an IPv6 address.\n *\n * Returns an HTML fragment: each half of the address is wrapped in a\n * `<span>` carrying the group classes an address-inspector UI hovers on.\n * The address content is HTML-escaped; anything you concatenate around it\n * is your responsibility.\n * @returns {String}\n */\n groupForV6(): string {\n const segments = this.parsedAddress;\n\n return this.correctForm().replace(\n constants.RE_ADDRESS,\n `<span class=\"hover-group group-v4 group-6\">${segments\n .slice(0, 2)\n .join('.')}</span>.<span class=\"hover-group group-v4 group-7\">${segments\n .slice(2, 4)\n .join('.')}</span>`,\n );\n }\n}\n\nconst MULTICAST_V4 = new Address4('224.0.0.0/4');\nconst PRIVATE_V4 = [\n new Address4('10.0.0.0/8'),\n new Address4('172.16.0.0/12'),\n new Address4('192.168.0.0/16'),\n];\nconst LOOPBACK_V4 = new Address4('127.0.0.0/8');\nconst LINK_LOCAL_V4 = new Address4('169.254.0.0/16');\nconst UNSPECIFIED_V4 = new Address4('0.0.0.0/32');\nconst BROADCAST_V4 = new Address4('255.255.255.255/32');\nconst CGNAT_V4 = new Address4('100.64.0.0/10');\nconst DOCUMENTATION_V4 = [\n new Address4('192.0.2.0/24'),\n new Address4('198.51.100.0/24'),\n new Address4('203.0.113.0/24'),\n];\nconst BENCHMARKING_V4 = new Address4('198.18.0.0/15');\nconst RESERVED_V4 = new Address4('240.0.0.0/4');\nconst SPECIAL_PURPOSE_V4 = constants.SPECIAL_PURPOSE.map(([cidr, , reachable]) => ({\n subnet: new Address4(cidr),\n reachable,\n}));\n"]}
@@ -16,7 +16,7 @@
16
16
  "bigint",
17
17
  "browser"
18
18
  ],
19
- "version": "10.7.2",
19
+ "version": "10.7.3",
20
20
  "author": "Beau Gunderson <beau@beaugunderson.com> (https://beaugunderson.com/)",
21
21
  "license": "MIT",
22
22
  "main": "dist/ip-address.js",
@@ -53,7 +53,8 @@ diagnosticsChannel.channel('undici:request:bodySent').subscribe(({ request }) =>
53
53
 
54
54
  ## `undici:request:headers`
55
55
 
56
- This message is published after the response headers have been received.
56
+ This message is published after the response headers have been received. This includes a successful CONNECT or
57
+ protocol upgrade response.
57
58
 
58
59
  ```js
59
60
  import diagnosticsChannel from 'diagnostics_channel'
@@ -82,6 +83,7 @@ diagnosticsChannel.channel('undici:request:bodyChunkReceived').subscribe(({ requ
82
83
  ## `undici:request:trailers`
83
84
 
84
85
  This message is published after the response body and trailers have been received, i.e. the response has been completed.
86
+ After an upgraded socket is passed to the request handler, this message is published with an empty `trailers` array.
85
87
 
86
88
  ```js
87
89
  import diagnosticsChannel from 'diagnostics_channel'
@@ -1153,6 +1153,7 @@ The `decompress` interceptor automatically decompresses response bodies that are
1153
1153
 
1154
1154
  - `skipErrorResponses` - Whether to skip decompression for error responses (status codes >= 400). Default: `true`.
1155
1155
  - `skipStatusCodes` - Array of status codes to skip decompression for. Default: `[204, 304]`.
1156
+ - `maxSize` - Maximum decompressed response size in bytes for each decompression stage. Set to `0` to disable the limit. Default: `0`.
1156
1157
 
1157
1158
  **Example - Basic Decompress Interceptor**
1158
1159
 
@@ -302,11 +302,32 @@ class Request {
302
302
  }
303
303
  }
304
304
 
305
- onUpgrade (statusCode, headers, socket) {
305
+ /**
306
+ * @param {number} statusCode
307
+ * @param {Buffer[]|string[]} headers
308
+ * @param {import('node:stream').Duplex} socket
309
+ * @param {string} [statusText]
310
+ */
311
+ onUpgrade (statusCode, headers, socket, statusText = '') {
312
+ this.onFinally()
313
+
306
314
  assert(!this.aborted)
307
315
  assert(!this.completed)
308
316
 
309
- return this[kHandler].onUpgrade(statusCode, headers, socket)
317
+ if (channels.headers.hasSubscribers) {
318
+ channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })
319
+ }
320
+
321
+ const result = this[kHandler].onUpgrade(statusCode, headers, socket)
322
+
323
+ if (!this.aborted) {
324
+ this.completed = true
325
+ if (channels.trailers.hasSubscribers) {
326
+ channels.trailers.publish({ request: this, trailers: [] })
327
+ }
328
+ }
329
+
330
+ return result
310
331
  }
311
332
 
312
333
  onComplete (trailers) {
@@ -69,8 +69,14 @@ function lazyllhttp () {
69
69
 
70
70
  let mod
71
71
 
72
- // We disable wasm SIMD on ppc64 as it seems to be broken on Power 9 architectures.
73
- let useWasmSIMD = process.arch !== 'ppc64'
72
+ // We disable wasm SIMD on older versions of Node.js on ppc64 that are broken on Power >=9 architectures.
73
+ let useWasmSIMD = true
74
+ if (process.arch === 'ppc64') {
75
+ const [major, minor] = process.versions.node.split('.').map(n => parseInt(n, 10))
76
+ if (major < 24 || (major === 24 && minor < 12)) {
77
+ useWasmSIMD = false
78
+ }
79
+ }
74
80
  // The Env Variable UNDICI_NO_WASM_SIMD allows explicitly overriding the default behavior
75
81
  if (process.env.UNDICI_NO_WASM_SIMD === '1') {
76
82
  useWasmSIMD = false
@@ -521,7 +527,7 @@ class Parser {
521
527
  * @param {Buffer} head
522
528
  */
523
529
  onUpgrade (head) {
524
- const { upgrade, client, socket, headers, statusCode } = this
530
+ const { upgrade, client, socket, headers, statusCode, statusText } = this
525
531
 
526
532
  assert(upgrade)
527
533
  assert(client[kSocket] === socket)
@@ -556,8 +562,9 @@ class Parser {
556
562
  client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))
557
563
 
558
564
  try {
559
- request.onUpgrade(statusCode, headers, socket)
565
+ request.onUpgrade(statusCode, headers, socket, statusText)
560
566
  } catch (err) {
567
+ util.errorRequest(client, request, err)
561
568
  util.destroy(socket, err)
562
569
  }
563
570
 
@@ -575,13 +575,17 @@ function writeH2 (client, request) {
575
575
 
576
576
  stream = session.request(headers, { endStream: false, signal })
577
577
  stream[kHTTP2Stream] = true
578
+ ++session[kOpenStreams]
578
579
 
579
580
  stream.once('response', (headers, _flags) => {
580
581
  const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers
581
582
 
582
- request.onUpgrade(statusCode, parseH2Headers(realHeaders), stream)
583
-
584
- ++session[kOpenStreams]
583
+ try {
584
+ request.onUpgrade(statusCode, parseH2Headers(realHeaders), stream)
585
+ } catch (err) {
586
+ abort(err)
587
+ return
588
+ }
585
589
  completeRequest(client, request)
586
590
  })
587
591
 
@@ -610,11 +614,16 @@ function writeH2 (client, request) {
610
614
  // We disabled endStream to allow the user to write to the stream
611
615
  stream = session.request(headers, { endStream: false, signal })
612
616
  stream[kHTTP2Stream] = true
617
+ ++session[kOpenStreams]
613
618
  stream.on('response', headers => {
614
619
  const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers
615
620
 
616
- request.onUpgrade(statusCode, parseH2Headers(realHeaders), stream)
617
- ++session[kOpenStreams]
621
+ try {
622
+ request.onUpgrade(statusCode, parseH2Headers(realHeaders), stream)
623
+ } catch (err) {
624
+ abort(err)
625
+ return
626
+ }
618
627
  completeRequest(client, request)
619
628
  })
620
629
  stream.on('error', abort)