~/bend-docscommunity

src/app.bend relies on unsafe/foreign

raw source on the hub · import 0x958db28bf0cef817bff69fac7beb9846/src/app.bend as MApp

3 imports
import Base
import ./server.bend as Web
import ./json.bend as Json

Types

type Route source · line 5 · raw

Type

type Selection source · line 8 · raw

Type

type TextResult source · line 100 · raw

Data

Definitions

def contains_step source · line 13 · raw

@found:Bool -> @rest:(@_:Unit -> Bool) -> Bool

def contains source · line 18 · raw

@+name:String -> @names:List<&2, String> -> Bool

def unique source · line 23 · raw

@found:Bool -> @name:String -> @names:List<&2, String> -> List<&2, String>

def add_allowed source · line 28 · raw

@+method:String -> @selection:Selection -> Selection

def choose_method source · line 34 · raw

@matches:Bool -> @method:String -> @handler:(@_:0x958db28bf0cef817bff69fac7beb9846/src/server.Incoming -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)) -> @rest:(@_:Unit -> Selection) -> Selection

def choose_path source · line 39 · raw

@matches:Bool -> @same_method:Bool -> @method:String -> @handler:(@_:0x958db28bf0cef817bff69fac7beb9846/src/server.Incoming -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)) -> @rest:(@_:Unit -> Selection) -> Selection

def select source · line 45 · raw

@routes:List<&1, Route> -> @+method:String -> @+path:String -> Selection

Exact, case-sensitive matches. The first matching method/path wins.

def error source · line 52 · raw

@status:U32 -> @code:String -> @message:String -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

def allowed_tail source · line 56 · raw

@methods:List<&2, String> -> String

def allowed source · line 61 · raw

@methods:List<&2, String> -> String

def selected source · line 66 · raw

@selection:Selection -> @request:0x958db28bf0cef817bff69fac7beb9846/src/server.Incoming -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

def route source · line 75 · raw

@routes:List<&1, Route> -> @request:0x958db28bf0cef817bff69fac7beb9846/src/server.Incoming -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

def with_header source · line 81 · raw

@name:String -> @value:String -> @next:(@_:0x958db28bf0cef817bff69fac7beb9846/src/server.Incoming -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)) -> @request:0x958db28bf0cef817bff69fac7beb9846/src/server.Incoming -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

Middleware is an ordinary function taking the next handler and the request.

def guard source · line 87 · raw

@allowed:Bool -> @status:U32 -> @code:String -> @message:String -> @next:(@_:Unit -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)) -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

Rejected requests never evaluate the supplied continuation.

def parsed source · line 92 · raw

@next:(@_:0x958db28bf0cef817bff69fac7beb9846/src/json.Json -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)) -> @result:0x958db28bf0cef817bff69fac7beb9846/src/json.ParseResult -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

def json_body source · line 97 · raw

@body:String -> @next:(@_:0x958db28bf0cef817bff69fac7beb9846/src/json.Json -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)) -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

def text_length source · line 104 · raw

@valid:Bool -> @field:String -> @value:String -> TextResult

def text_value source · line 109 · raw

@field:String -> @min:Nat -> @max:Nat -> @value:0x958db28bf0cef817bff69fac7beb9846/src/json.Json -> TextResult

def text_field source · line 115 · raw

@field:String -> @min:Nat -> @max:Nat -> @value:Maybe<&1, 0x958db28bf0cef817bff69fac7beb9846/src/json.Json> -> TextResult

def required_text source · line 121 · raw

@+field:String -> @min:Nat -> @max:Nat -> @value:0x958db28bf0cef817bff69fac7beb9846/src/json.Json -> TextResult

Inclusive Unicode code-point lengths; no whitespace trimming or normalization.

def validation_error source · line 126 · raw

@field:String -> @code:String -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

def log_encoded source · line 134 · raw

@result:0x958db28bf0cef817bff69fac7beb9846/src/json.EncodeResult -> IO(Unit)

One JSON line per completed handler invocation, before transport submission. Intentionally omit user-controlled paths, targets, headers and bodies.

def observed source · line 140 · raw

@+id:U32 -> @method:String -> @start:Nat -> @reply:0x958db28bf0cef817bff69fac7beb9846/src/server.Reply -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)

def observe source · line 155 · raw

@next:(@_:0x958db28bf0cef817bff69fac7beb9846/src/server.Incoming -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)) -> @request:0x958db28bf0cef817bff69fac7beb9846/src/server.Incoming -> IO(0x958db28bf0cef817bff69fac7beb9846/src/server.Reply)