/** * `node:http2` driver — multiplexes streams over a single * `ClientHttp2Session` per origin, with auto-reconnect on `GOAWAY` * frames or session errors. * * Zero peer dep (uses the Node built-in). Less common than * `misina/driver/undici` (#73 covers 95% of pool-tuning cases); this * driver exists for environments where undici can't be installed * (lockdown profiles, custom dispatchers) and for HTTP/2-specific * features that need direct access to the session. * * @example * ```ts * import { http2Driver } from "misina/driver/http2" * * const api = createMisina({ * driver: http2Driver({ * sessionIdleTimeoutMs: 30_000, * }), * baseURL: "https://h2.example.com", * }) * ``` */ import type { MisinaDriver } from "../types.mjs"; export interface Http2DriverOptions { /** * Idle timeout in ms before a session is closed and a new one is * lazily reopened on the next request. Default: 30_000. */ sessionIdleTimeoutMs?: number; } /** * `MisinaDriver` plus a `dispose()` method that closes every cached * `ClientHttp2Session` and clears its idle timer. Useful in tests and * graceful shutdown paths where the process can't wait for the * server-side close to ripple back. */ export interface Http2MisinaDriver extends MisinaDriver { dispose: () => Promise; } declare function http2Driver(rawOptions?: Http2DriverOptions): Http2MisinaDriver; export { http2Driver }; export default http2Driver;