~/bend-docscommunity

router.bend checks

raw source on the hub · import bend-kit-router@0.2.0.0/router.bend as Router

Prepared HTTP routes with exact paths, validated registration, and path-first method selection. Source: https://github.com/paymog/bend-kit/tree/main/router

2 imports
import Base
import ./target.bend as Target

Types

type Segment source · line 5 · raw

Data

type Entry source · line 9 · raw

@-A:Data -> Data

type Handler source · line 12 · raw

@-A:Data -> Data

type Path source · line 15 · raw

@-A:Data -> Data

type Table source · line 18 · raw

@-A:Data -> Data

type Error source · line 21 · raw

Data

type Choice source · line 28 · raw

@-A:Data -> Data

type Resolved source · line 34 · raw

@-A:Data -> Data

type Hidden source · line 37 · raw

Data

type Description source · line 40 · raw

Data

Definitions

def scalar source · line 43 · raw

@+c:U32 -> Bool

def literal.valid source · line 46 · raw

@s:String -> Bool

def name.tail source · line 53 · raw

@s:String -> Bool

def name.valid source · line 60 · raw

@s:String -> Bool

def member source · line 67 · raw

@xs:List<&2, String> -> @+s:String -> Bool

def pattern.segment source · line 74 · raw

@s:String -> @names:List<&2, String> -> Maybe<&2, Segment>

def pattern.names source · line 84 · raw

@segment:Segment -> @names:List<&2, String> -> List<&2, String>

def pattern.parts source · line 91 · raw

@xs:List<&2, String> -> @+names:List<&2, String> -> @acc:List<&2, Segment> -> Maybe<&2, List<&2, Segment>>

def pattern source · line 105 · raw

@s:String -> Maybe<&2, List<&2, Segment>>

def token source · line 114 · raw

@+c:U32 -> Bool

def method.tail source · line 117 · raw

@s:String -> Bool

def method.valid source · line 124 · raw

@s:String -> Bool

def continue source · line 131 · raw

@ok:Bool -> @later:(@_:Unit -> Bool) -> Bool

def matches source · line 138 · raw

@pat:List<&2, Segment> -> @got:List<&2, String> -> Bool

def capture source · line 149 · raw

@pat:List<&2, Segment> -> @got:List<&2, String> -> @acc:Map<&2, String> -> Map<&2, String>

def shape source · line 158 · raw

@a:List<&2, Segment> -> @b:List<&2, Segment> -> Bool

def specific source · line 169 · raw

@a:List<&2, Segment> -> @b:List<&2, Segment> -> Bool

def groups.eq source · line 182 · raw

@a:List<&2, U32> -> @b:List<&2, U32> -> Bool

def method.prepend source · line 230 · raw

@get:Bool -> @method:String -> @tail:List<&2, String> -> List<&2, String>

def unique source · line 244 · raw

@xs:List<&2, String> -> @prev:String -> @+acc:List<&2, String> -> List<&2, String>

def allow source · line 251 · raw

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

def route.match source · line 384 · raw

@ok:Bool -> @ss:List<&2, Segment> -> @got:List<&2, String> -> Maybe<&2, Map<&2, String>>

def route.path source · line 391 · raw

@star:Bool -> @+ss:List<&2, Segment> -> @+got:List<&2, String> -> Maybe<&2, Map<&2, String>>

def route.target source · line 398 · raw

@parsed:Maybe<&2, 0x9606cc4b1afb0de13a7da7c0f6fc3a82/target.Target> -> @+ss:List<&2, Segment> -> Maybe<&2, Map<&2, String>>

def route.pattern source · line 405 · raw

@parsed:Maybe<&2, List<&2, Segment>> -> @path:String -> @method:String -> Maybe<&2, Map<&2, String>>

def route.method source · line 412 · raw

@same:Bool -> @p:String -> @path:String -> @method:String -> Maybe<&2, Map<&2, String>>

def route source · line 419 · raw

@want:String -> @+method:String -> @pattern:String -> @path:String -> Maybe<&2, Map<&2, String>>

def overlap source · line 422 · raw

@a:List<&2, Segment> -> @b:List<&2, Segment> -> Bool

def unavailable.prepend source · line 437 · raw

@keep:Bool -> @h:String -> @tail:List<&2, String> -> List<&2, String>

def unavailable source · line 444 · raw

@xs:List<&2, String> -> @+present:List<&2, String> -> List<&2, String>

def hidden.add source · line 451 · raw

@empty:Bool -> @pattern:String -> @methods:String -> @tail:List<&2, Hidden> -> List<&2, Hidden>

Templates

template handler.has source · line 191 · raw

@-A:Data -> @xs:List<&2, Handler<A>> -> @+method:String -> Bool

template insert.merge source · line 198 · raw

@-A:Data -> @duplicate:Bool -> @same_groups:Bool -> @entry:Handler<A> -> @segments:List<&2, Segment> -> @handlers:List<&2, Handler<A>> -> @groups:List<&2, U32> -> @rest:List<&2, Path<A>> -> Result<&2, &2, Error, List<&2, Path<A>>>

template insert.branch source · line 209 · raw

@-A:Data -> @same:Bool -> @segments:List<&2, Segment> -> @+handlers:List<&2, Handler<A>> -> @+old_groups:List<&2, U32> -> @allowed:String -> @tail:List<&2, Path<A>> -> @entry:Handler<A> -> @groups:List<&2, U32> -> @rest:(@_:Unit -> Result<&2, &2, Error, List<&2, Path<A>>>) -> Result<&2, &2, Error, List<&2, Path<A>>>

template insert source · line 220 · raw

@-A:Data -> @paths:List<&2, Path<A>> -> @+entry:Handler<A> -> @+groups:List<&2, U32> -> Result<&2, &2, Error, List<&2, Path<A>>>

ponytail: preparation merges shapes in O(routes²); replace with a shape index if construction becomes a bottleneck.

template method.names source · line 237 · raw

@-A:Data -> @xs:List<&2, Handler<A>> -> List<&2, String>

template finish.paths source · line 254 · raw

@-A:Data -> @paths:List<&2, Path<A>> -> List<&2, Path<A>>

template all.methods source · line 261 · raw

@-A:Data -> @paths:List<&2, Path<A>> -> List<&2, String>

template prepare.pattern source · line 268 · raw

@-A:Data -> @parsed:Maybe<&2, List<&2, Segment>> -> @method:String -> @pattern:String -> @action:A -> @groups:List<&2, U32> -> @paths:List<&2, Path<A>> -> Result<&2, &2, Error, List<&2, Path<A>>>

template prepare.entry source · line 275 · raw

@-A:Data -> @valid:Bool -> @entry:Entry<A> -> @paths:List<&2, Path<A>> -> Result<&2, &2, Error, List<&2, Path<A>>>

template prepare.go source · line 284 · raw

@-A:Data -> @entries:List<&2, Entry<A>> -> @paths:List<&2, Path<A>> -> Result<&2, &2, Error, Table<A>>

template prepare source · line 294 · raw

@-A:Data -> @entries:List<&2, Entry<A>> -> Result<&2, &2, Error, Table<A>>

template best.compare source · line 297 · raw

@-A:Data -> @candidate:Path<A> -> @old:Path<A> -> Maybe<&2, Path<A>>

template best.pick source · line 302 · raw

@-A:Data -> @best:Maybe<&2, Path<A>> -> @candidate:Path<A> -> Maybe<&2, Path<A>>

template best.step source · line 309 · raw

@-A:Data -> @matched:Bool -> @candidate:Path<A> -> @best:Maybe<&2, Path<A>> -> Maybe<&2, Path<A>>

template best source · line 317 · raw

@-A:Data -> @paths:List<&2, Path<A>> -> @+segments:List<&2, String> -> @acc:Maybe<&2, Path<A>> -> Maybe<&2, Path<A>>

ponytail: lookup scans prepared paths in O(routes × segments); use a trie if measured dispatch cost warrants it.

template handler.next source · line 324 · raw

@-A:Data -> @same:Bool -> @here:Handler<A> -> @later:(@_:Unit -> Maybe<&2, Handler<A>>) -> Maybe<&2, Handler<A>>

template handler source · line 331 · raw

@-A:Data -> @xs:List<&2, Handler<A>> -> @+method:String -> Maybe<&2, Handler<A>>

template chosen source · line 338 · raw

@-A:Data -> @hit:Maybe<&2, Handler<A>> -> @segments:List<&2, String> -> @+groups:List<&2, U32> -> @+allowed:String -> @options:Bool -> Choice<A>

template choose.fallback source · line 345 · raw

@-A:Data -> @head:Bool -> @handlers:List<&2, Handler<A>> -> @method:String -> @segments:List<&2, String> -> @groups:List<&2, U32> -> @allowed:String -> Choice<A>

template choose.method source · line 352 · raw

@-A:Data -> @direct:Maybe<&2, Handler<A>> -> @+handlers:List<&2, Handler<A>> -> @+method:String -> @segments:List<&2, String> -> @groups:List<&2, U32> -> @allowed:String -> Choice<A>

template choose.path source · line 359 · raw

@-A:Data -> @path:Maybe<&2, Path<A>> -> @+method:String -> @segments:List<&2, String> -> Choice<A>

template resolve.star source · line 366 · raw

@-A:Data -> @star:Bool -> @paths:List<&2, Path<A>> -> @allowed:String -> @target:0x9606cc4b1afb0de13a7da7c0f6fc3a82/target.Target -> @method:String -> @+segments:List<&2, String> -> Resolved<A>

template resolve.target source · line 373 · raw

@-A:Data -> @parsed:Maybe<&2, 0x9606cc4b1afb0de13a7da7c0f6fc3a82/target.Target> -> @table:Table<A> -> @method:String -> Result<&2, &2, Error, Resolved<A>>

template resolve source · line 381 · raw

@-A:Data -> @table:Table<A> -> @+method:String -> @target:String -> Result<&2, &2, Error, Resolved<A>>

template hidden.handlers source · line 458 · raw

@-A:Data -> @handlers:List<&2, Handler<A>> -> @+present:List<&2, String> -> @tail:List<&2, Hidden> -> List<&2, Hidden>

template hidden.path source · line 466 · raw

@-A:Data -> @hides:Bool -> @handlers:List<&2, Handler<A>> -> @present:List<&2, String> -> @tail:List<&2, Hidden> -> List<&2, Hidden>

template hidden.scan source · line 473 · raw

@-A:Data -> @paths:List<&2, Path<A>> -> @+segments:List<&2, Segment> -> @+methods:List<&2, String> -> List<&2, Hidden>

template description.handlers source · line 480 · raw

@-A:Data -> @handlers:List<&2, Handler<A>> -> @+groups:List<&2, U32> -> @+hidden:List<&2, Hidden> -> List<&2, Description>

template description.paths source · line 487 · raw

@-A:Data -> @paths:List<&2, Path<A>> -> @+all:List<&2, Path<A>> -> List<&2, Description>

template describe source · line 494 · raw

@-A:Data -> @table:Table<A> -> List<&2, Description>