{
  "classes": [
    {
      "constants": [],
      "types": [
        {
          "lua_type": "type SessionOptions = {\n    timeout: number?,\n    connectTimeout: number?,\n    readTimeout: number?,\n    writeTimeout: number?,\n    verifySsl: boolean?,\n    maxRedirects: number?,\n    decompress: boolean?,\n    idleTimeout: number?,\n    maxConnectionsPerHost: number?,\n    cookies: CookieJar.CookieJar?,\n}",
          "name": "SessionOptions",
          "tags": [],
          "source": {
            "path": "",
            "line": 41
          },
          "fields": [
            {
              "lua_type": "timeout: number?",
              "name": "timeout",
              "desc": "Applies one timeout to connect, read, and write phases when the\nmore specific timeout fields are omitted."
            },
            {
              "lua_type": "connectTimeout: number?",
              "name": "connectTimeout",
              "desc": "Default timeout used while opening new pooled connections."
            },
            {
              "lua_type": "readTimeout: number?",
              "name": "readTimeout",
              "desc": "Default timeout used while waiting for response bytes."
            },
            {
              "lua_type": "writeTimeout: number?",
              "name": "writeTimeout",
              "desc": "Default timeout used while sending request bytes."
            },
            {
              "lua_type": "verifySsl: boolean?",
              "name": "verifySsl",
              "desc": ""
            },
            {
              "lua_type": "maxRedirects: number?",
              "name": "maxRedirects",
              "desc": ""
            },
            {
              "lua_type": "decompress: boolean?",
              "name": "decompress",
              "desc": ""
            },
            {
              "lua_type": "idleTimeout: number?",
              "name": "idleTimeout",
              "desc": ""
            },
            {
              "lua_type": "maxConnectionsPerHost: number?",
              "name": "maxConnectionsPerHost",
              "desc": "Maximum number of pooled connections per scheme/host/port."
            },
            {
              "lua_type": "cookies: CookieJar.CookieJar?",
              "name": "cookies",
              "desc": "Shared cookie jar used when requests do not override it."
            }
          ],
          "desc": "Options for creating a [[Session]].\n"
        }
      ],
      "name": "@eryx/http/Session",
      "tags": [],
      "functions": [],
      "properties": [],
      "source": {
        "path": "",
        "line": 0
      },
      "desc": ""
    },
    {
      "is_primary_export": false,
      "source": {
        "path": "",
        "line": 36
      },
      "tags": [],
      "properties": [
        {
          "tags": [],
          "lua_type": "_pool: { [string]: { PoolEntry } }",
          "name": "_pool",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_cookies: CookieJar.CookieJar",
          "name": "_cookies",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_timeout: number?",
          "name": "_timeout",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_connectTimeout: number?",
          "name": "_connectTimeout",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_readTimeout: number?",
          "name": "_readTimeout",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_writeTimeout: number?",
          "name": "_writeTimeout",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_verifySsl: boolean?",
          "name": "_verifySsl",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_maxRedirects: number?",
          "name": "_maxRedirects",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_decompress: boolean?",
          "name": "_decompress",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_idleTimeout: number?",
          "name": "_idleTimeout",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_maxConnectionsPerHost: number",
          "name": "_maxConnectionsPerHost",
          "desc": ""
        }
      ],
      "desc": "A pooled HTTP client session.\n\nSessions reuse keep-alive connections per origin, share a cookie jar\nacross requests by default, and support both buffered and streamed\nrequests.\n",
      "name": "Session",
      "functions": [
        {
          "source": {
            "path": "",
            "line": 81
          },
          "is_method": false,
          "signature": "Session.new(\n    options: SessionOptions?  -- Session-wide defaults for requests and pooling.\n) → (\n    Session  -- The new session. \n)",
          "owner": "Session",
          "desc": "Creates a new pooled HTTP client session.\n",
          "tags": [],
          "name": "new",
          "return_str": "Session",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "Session",
              "desc": "The new session. "
            }
          ],
          "params": [
            {
              "lua_type": "SessionOptions?",
              "name": "options",
              "desc": "Session-wide defaults for requests and pooling."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 102
          },
          "is_method": true,
          "signature": "Session:_prunePoolEntries(key: string) → { PoolEntry }",
          "owner": "Session",
          "desc": "",
          "tags": [],
          "name": "_prunePoolEntries",
          "return_str": "{ PoolEntry }",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "{ PoolEntry }",
              "desc": ""
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "key",
              "desc": ""
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 131
          },
          "is_method": true,
          "signature": "Session:_getConnection(parsedUrl: { scheme: string, host: string, port: number }, timeouts: HttpConnection.TimeoutOptions?, verifySsl: boolean?) → HttpConnection.HttpConnection",
          "owner": "Session",
          "desc": "",
          "tags": [],
          "name": "_getConnection",
          "return_str": "HttpConnection.HttpConnection",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "HttpConnection.HttpConnection",
              "desc": ""
            }
          ],
          "params": [
            {
              "lua_type": "{ scheme: string, host: string, port: number }",
              "name": "parsedUrl",
              "desc": ""
            },
            {
              "lua_type": "HttpConnection.TimeoutOptions?",
              "name": "timeouts",
              "desc": ""
            },
            {
              "lua_type": "boolean?",
              "name": "verifySsl",
              "desc": ""
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 175
          },
          "is_method": true,
          "signature": "Session:_discardConnection(parsedUrl: { scheme: string, host: string, port: number }, targetConn: HttpConnection.HttpConnection?) → ()",
          "owner": "Session",
          "desc": "",
          "tags": [],
          "name": "_discardConnection",
          "return_str": "",
          "function_type": "Method",
          "returns": [],
          "params": [
            {
              "lua_type": "{ scheme: string, host: string, port: number }",
              "name": "parsedUrl",
              "desc": ""
            },
            {
              "lua_type": "HttpConnection.HttpConnection?",
              "name": "targetConn",
              "desc": ""
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 210
          },
          "is_method": true,
          "signature": "Session:evict(\n    url: string?  -- Optional URL whose origin should be evicted. \n) → ()",
          "owner": "Session",
          "desc": "Evicts pooled connections from the session.\n\nWhen `url` is provided, only the pool entry for that origin is\nremoved. When omitted, all pooled connections are closed.\n",
          "tags": [],
          "name": "evict",
          "return_str": "",
          "function_type": "Method",
          "returns": [],
          "params": [
            {
              "lua_type": "string?",
              "name": "url",
              "desc": "Optional URL whose origin should be evicted. "
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 220
          },
          "is_method": true,
          "signature": "Session:_resolveOptions(options: request.RequestOptions?) → request.RequestOptions",
          "owner": "Session",
          "desc": "",
          "tags": [],
          "name": "_resolveOptions",
          "return_str": "request.RequestOptions",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "request.RequestOptions",
              "desc": ""
            }
          ],
          "params": [
            {
              "lua_type": "request.RequestOptions?",
              "name": "options",
              "desc": ""
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 264
          },
          "is_method": true,
          "signature": "Session:request(\n    method: string,  -- The HTTP method.\n    url: string,  -- The absolute URL to request.\n    options: request.RequestOptions?  -- Optional per-request overrides.\n) → (\n    HttpResponse  -- The buffered response. \n)",
          "owner": "Session",
          "desc": "Makes a buffered HTTP request using the session's pooled connections.\n\nSafe requests may be retried once when a reused keep-alive socket has\ngone stale before any response is received.\n",
          "tags": [],
          "name": "request",
          "return_str": "HttpConnection.HttpResponse",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "HttpConnection.HttpResponse",
              "desc": "The buffered response. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "method",
              "desc": "The HTTP method."
            },
            {
              "lua_type": "string",
              "name": "url",
              "desc": "The absolute URL to request."
            },
            {
              "lua_type": "request.RequestOptions?",
              "name": "options",
              "desc": "Optional per-request overrides."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 307
          },
          "is_method": true,
          "signature": "Session:stream(\n    method: string,  -- The HTTP method.\n    url: string,  -- The absolute URL to request.\n    options: request.RequestOptions?  -- Optional per-request overrides.\n) → (\n    HttpResponseStream  -- The streamed response. \n)",
          "owner": "Session",
          "desc": "Makes a streamed HTTP request using the session's pooled connections.\n\nThe returned response must be fully consumed or explicitly closed\nbefore its connection can be reused.\n",
          "tags": [],
          "name": "stream",
          "return_str": "HttpConnection.HttpResponseStream",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "HttpConnection.HttpResponseStream",
              "desc": "The streamed response. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "method",
              "desc": "The HTTP method."
            },
            {
              "lua_type": "string",
              "name": "url",
              "desc": "The absolute URL to request."
            },
            {
              "lua_type": "request.RequestOptions?",
              "name": "options",
              "desc": "Optional per-request overrides."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 346
          },
          "is_method": true,
          "signature": "Session:get(\n    url: string,  -- The absolute URL to request.\n    options: request.RequestOptions?  -- Optional per-request overrides.\n) → (\n    HttpResponse  -- The buffered response. \n)",
          "owner": "Session",
          "desc": "Convenience wrapper for `GET`.\n",
          "tags": [],
          "name": "get",
          "return_str": "HttpConnection.HttpResponse",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "HttpConnection.HttpResponse",
              "desc": "The buffered response. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "url",
              "desc": "The absolute URL to request."
            },
            {
              "lua_type": "request.RequestOptions?",
              "name": "options",
              "desc": "Optional per-request overrides."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 358
          },
          "is_method": true,
          "signature": "Session:post(\n    url: string,  -- The absolute URL to request.\n    body: string?,  -- Optional raw request body.\n    options: request.RequestOptions?  -- Optional per-request overrides.\n) → (\n    HttpResponse  -- The buffered response. \n)",
          "owner": "Session",
          "desc": "Convenience wrapper for `POST`.\n",
          "tags": [],
          "name": "post",
          "return_str": "HttpConnection.HttpResponse",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "HttpConnection.HttpResponse",
              "desc": "The buffered response. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "url",
              "desc": "The absolute URL to request."
            },
            {
              "lua_type": "string?",
              "name": "body",
              "desc": "Optional raw request body."
            },
            {
              "lua_type": "request.RequestOptions?",
              "name": "options",
              "desc": "Optional per-request overrides."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 377
          },
          "is_method": true,
          "signature": "Session:put(\n    url: string,  -- The absolute URL to request.\n    body: string?,  -- Optional raw request body.\n    options: request.RequestOptions?  -- Optional per-request overrides.\n) → (\n    HttpResponse  -- The buffered response. \n)",
          "owner": "Session",
          "desc": "Convenience wrapper for `PUT`.\n",
          "tags": [],
          "name": "put",
          "return_str": "HttpConnection.HttpResponse",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "HttpConnection.HttpResponse",
              "desc": "The buffered response. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "url",
              "desc": "The absolute URL to request."
            },
            {
              "lua_type": "string?",
              "name": "body",
              "desc": "Optional raw request body."
            },
            {
              "lua_type": "request.RequestOptions?",
              "name": "options",
              "desc": "Optional per-request overrides."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 395
          },
          "is_method": true,
          "signature": "Session:delete(\n    url: string,  -- The absolute URL to request.\n    options: request.RequestOptions?  -- Optional per-request overrides.\n) → (\n    HttpResponse  -- The buffered response. \n)",
          "owner": "Session",
          "desc": "Convenience wrapper for `DELETE`.\n",
          "tags": [],
          "name": "delete",
          "return_str": "HttpConnection.HttpResponse",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "HttpConnection.HttpResponse",
              "desc": "The buffered response. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "url",
              "desc": "The absolute URL to request."
            },
            {
              "lua_type": "request.RequestOptions?",
              "name": "options",
              "desc": "Optional per-request overrides."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 406
          },
          "is_method": true,
          "signature": "Session:head(\n    url: string,  -- The absolute URL to request.\n    options: request.RequestOptions?  -- Optional per-request overrides.\n) → (\n    HttpResponse  -- The buffered response (body is empty). \n)",
          "owner": "Session",
          "desc": "Convenience wrapper for `HEAD`.\n",
          "tags": [],
          "name": "head",
          "return_str": "HttpConnection.HttpResponse",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "HttpConnection.HttpResponse",
              "desc": "The buffered response (body is empty). "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "url",
              "desc": "The absolute URL to request."
            },
            {
              "lua_type": "request.RequestOptions?",
              "name": "options",
              "desc": "Optional per-request overrides."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 413
          },
          "is_method": true,
          "signature": "Session:close() → ()",
          "owner": "Session",
          "desc": "Closes every pooled connection and empties the session pool.\n",
          "tags": [],
          "name": "close",
          "return_str": "",
          "function_type": "Method",
          "returns": [],
          "params": []
        }
      ],
      "metamethods": [],
      "types": []
    }
  ]
}