wit-component 0.8.1

Tooling for working with `*.wit` and component files together.
Documentation
interface types {
  use io.streams.streams.{input-stream, output-stream}
  use poll.poll.poll.{pollable}

  type status-code = u16

  variant scheme {
    HTTP,
    HTTPS,
    other(string),
  }

  type response-outparam = u32

  record request-options {
    connect-timeout-ms: option<u32>,
    first-byte-timeout-ms: option<u32>,
    between-bytes-timeout-ms: option<u32>,
  }

  type outgoing-stream = output-stream

  type outgoing-response = u32

  type outgoing-request = u32

  variant method {
    get,
    head,
    post,
    put,
    delete,
    connect,
    options,
    trace,
    patch,
    other(string),
  }

  type incoming-stream = input-stream

  type incoming-response = u32

  type incoming-request = u32

  type future-incoming-response = u32

  type fields = u32

  type trailers = fields

  type headers = fields

  variant error {
    invalid-url(string),
    timeout-error(string),
    protocol-error(string),
    unexpected-error(string),
  }

  drop-fields: func(fields: fields)

  new-fields: func(entries: list<tuple<string, string>>) -> fields

  fields-get: func(fields: fields, name: string) -> list<string>

  fields-set: func(fields: fields, name: string, value: list<string>)

  fields-delete: func(fields: fields, name: string)

  fields-append: func(fields: fields, name: string, value: string)

  fields-entries: func(fields: fields) -> list<tuple<string, string>>

  fields-clone: func(fields: fields) -> fields

  finish-incoming-stream: func(s: incoming-stream) -> option<trailers>

  finish-outgoing-stream: func(s: outgoing-stream, trailers: option<trailers>)

  drop-incoming-request: func(request: incoming-request)

  drop-outgoing-request: func(request: outgoing-request)

  incoming-request-method: func(request: incoming-request) -> method

  incoming-request-path: func(request: incoming-request) -> string

  incoming-request-query: func(request: incoming-request) -> string

  incoming-request-scheme: func(request: incoming-request) -> option<scheme>

  incoming-request-authority: func(request: incoming-request) -> string

  incoming-request-headers: func(request: incoming-request) -> headers

  incoming-request-consume: func(request: incoming-request) -> result<incoming-stream>

  new-outgoing-request: func(method: method, path: string, query: string, scheme: option<scheme>, authority: string, headers: headers) -> outgoing-request

  outgoing-request-write: func(request: outgoing-request) -> result<outgoing-stream>

  drop-response-outparam: func(response: response-outparam)

  set-response-outparam: func(param: response-outparam, response: result<outgoing-response, error>) -> result

  drop-incoming-response: func(response: incoming-response)

  drop-outgoing-response: func(response: outgoing-response)

  incoming-response-status: func(response: incoming-response) -> status-code

  incoming-response-headers: func(response: incoming-response) -> headers

  incoming-response-consume: func(response: incoming-response) -> result<incoming-stream>

  new-outgoing-response: func(status-code: status-code, headers: headers) -> outgoing-response

  outgoing-response-write: func(response: outgoing-response) -> result<outgoing-stream>

  drop-future-incoming-response: func(f: future-incoming-response)

  future-incoming-response-get: func(f: future-incoming-response) -> option<result<incoming-response, error>>

  listen-to-future-incoming-response: func(f: future-incoming-response) -> pollable
}