File: proxy.wit

package info (click to toggle)
rust-wasmtime 26.0.1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 48,492 kB
  • sloc: ansic: 4,003; sh: 561; javascript: 542; cpp: 254; asm: 175; ml: 96; makefile: 55
file content (50 lines) | stat: -rw-r--r-- 1,931 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package wasi:http@0.2.1;

/// The `wasi:http/imports` world imports all the APIs for HTTP proxies.
/// It is intended to be `include`d in other worlds.
@since(version = 0.2.0)
world imports {
  /// HTTP proxies have access to time and randomness.
  @since(version = 0.2.0)
  import wasi:clocks/monotonic-clock@0.2.1;
  @since(version = 0.2.0)
  import wasi:clocks/wall-clock@0.2.1;
  @since(version = 0.2.0)
  import wasi:random/random@0.2.1;

  /// Proxies have standard output and error streams which are expected to
  /// terminate in a developer-facing console provided by the host.
  @since(version = 0.2.0)
  import wasi:cli/stdout@0.2.1;
  @since(version = 0.2.0)
  import wasi:cli/stderr@0.2.1;

  /// TODO: this is a temporary workaround until component tooling is able to
  /// gracefully handle the absence of stdin. Hosts must return an eof stream
  /// for this import, which is what wasi-libc + tooling will do automatically
  /// when this import is properly removed.
  @since(version = 0.2.0)
  import wasi:cli/stdin@0.2.1;

  /// This is the default handler to use when user code simply wants to make an
  /// HTTP request (e.g., via `fetch()`).
  @since(version = 0.2.0)
  import outgoing-handler;
}

/// The `wasi:http/proxy` world captures a widely-implementable intersection of
/// hosts that includes HTTP forward and reverse proxies. Components targeting
/// this world may concurrently stream in and out any number of incoming and
/// outgoing HTTP requests.
@since(version = 0.2.0)
world proxy {
  @since(version = 0.2.0)
  include imports;

  /// The host delivers incoming HTTP requests to a component by calling the
  /// `handle` function of this exported interface. A host may arbitrarily reuse
  /// or not reuse component instance when delivering incoming HTTP requests and
  /// thus a component must be able to handle 0..N calls to `handle`.
  @since(version = 0.2.0)
  export incoming-handler;
}