src/app.bend relies on unsafe/foreign
raw source on the hub · import 0x2731c2a5d4185b57cf5353061639642e/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
Route@method:String -> @path:String -> @handler:(@_:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> Route
type Selection source · line 8 · raw
Type
Found@handler:(@_:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> Selection
MissingSelection
WrongMethod@methods:List<&2, String> -> Selection
type TextResult source · line 100 · raw
Data
TextValid@value:String -> TextResult
TextInvalid@field:String -> @code:String -> TextResult
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:(@_:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> @rest:(@_:Unit -> Selection) -> Selection
def choose_path source · line 39 · raw
@matches:Bool -> @same_method:Bool -> @method:String -> @handler:(@_:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/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(0x2731c2a5d4185b57cf5353061639642e/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:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
def route source · line 75 · raw
@routes:List<&1, Route> -> @request:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
def with_header source · line 81 · raw
@name:String -> @value:String -> @next:(@_:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> @request:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/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(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
Rejected requests never evaluate the supplied continuation.
def parsed source · line 92 · raw
@next:(@_:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> @result:0x2731c2a5d4185b57cf5353061639642e/src/json.ParseResult -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
def json_body source · line 97 · raw
@body:String -> @next:(@_:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> IO(0x2731c2a5d4185b57cf5353061639642e/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:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> TextResult
def text_field source · line 115 · raw
@field:String -> @min:Nat -> @max:Nat -> @value:Maybe<&1, 0x2731c2a5d4185b57cf5353061639642e/src/json.Json> -> TextResult
def required_text source · line 121 · raw
@+field:String -> @min:Nat -> @max:Nat -> @value:0x2731c2a5d4185b57cf5353061639642e/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(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
def log_encoded source · line 134 · raw
@result:0x2731c2a5d4185b57cf5353061639642e/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:0x2731c2a5d4185b57cf5353061639642e/src/server.Reply -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
def observe source · line 155 · raw
@next:(@_:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> @request:0x2731c2a5d4185b57cf5353061639642e/src/server.Incoming -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)