src/schema.bend relies on unsafe/foreign
raw source on the hub · import 0x2731c2a5d4185b57cf5353061639642e/src/schema.bend as Schema
3 imports
import Base import ./json.bend as Json import ./server.bend as Web
Types
type Field source · line 5 · raw
@-S:Data -> Data
Field@-S:Data -> @name:String -> @required:Bool -> @schema:S -> Field<S>
type Schema source · line 8 · raw
Data
Text@min:Nat -> @max:Nat -> Schema
UInt@min:U32 -> @max:U32 -> Schema
BooleanSchema
Nullable@inner:Schema -> Schema
Sequence@inner:Schema -> @min:Nat -> @max:Nat -> Schema
Object@fields:List<&2, Field<Schema>> -> @strict:Bool -> Schema
type Verdict source · line 16 · raw
Data
ValidVerdict
Invalid@path:List<&2, String> -> @code:String -> Verdict
type Task source · line 20 · raw
Data
Check@schema:Schema -> @path:List<&2, String> -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> Task
Failure@path:List<&2, String> -> @code:String -> Task
Definitions
def check source · line 24 · raw
@ok:Bool -> @path:List<&2, String> -> @code:String -> @rest:List<&2, Task> -> List<&2, Task>
def text source · line 29 · raw
@min:Nat -> @max:Nat -> @path:List<&2, String> -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @rest:List<&2, Task> -> List<&2, Task>
def uint_value source · line 35 · raw
@min:U32 -> @max:U32 -> @path:List<&2, String> -> @value:Maybe<&2, U32> -> @rest:List<&2, Task> -> List<&2, Task>
def uint source · line 40 · raw
@min:U32 -> @max:U32 -> @path:List<&2, String> -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @rest:List<&2, Task> -> List<&2, Task>
def boolean source · line 45 · raw
@path:List<&2, String> -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @rest:List<&2, Task> -> List<&2, Task>
def nullable source · line 50 · raw
@inner:Schema -> @path:List<&2, String> -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @rest:List<&2, Task> -> List<&2, Task>
def child source · line 55 · raw
@path:List<&2, String> -> @name:String -> List<&2, String>
def items source · line 58 · raw
@+schema:Schema -> @+path:List<&2, String> -> @values:List<&2, 0x2731c2a5d4185b57cf5353061639642e/src/json.Json> -> @+index:Nat -> @rest:List<&2, Task> -> List<&2, Task>
def sequence source · line 64 · raw
@inner:Schema -> @min:Nat -> @max:Nat -> @+path:List<&2, String> -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @rest:List<&2, Task> -> List<&2, Task>
def field_value source · line 70 · raw
@required:Bool -> @schema:Schema -> @path:List<&2, String> -> @value:Maybe<&1, 0x2731c2a5d4185b57cf5353061639642e/src/json.Json> -> @rest:List<&2, Task> -> List<&2, Task>
def fields source · line 75 · raw
@rules:List<&2, Field<Schema>> -> @+path:List<&2, String> -> @+entries:List<&2, Sigma<&2, &2, String, _ => 0x2731c2a5d4185b57cf5353061639642e/src/json.Json>> -> @rest:List<&2, Task> -> List<&2, Task>
def named_step source · line 81 · raw
@found:Bool -> @next:(@_:Unit -> Bool) -> Bool
def named source · line 86 · raw
@+name:String -> @rules:List<&2, Field<Schema>> -> Bool
def extras source · line 91 · raw
@+rules:List<&2, Field<Schema>> -> @+path:List<&2, String> -> @entries:List<&2, Sigma<&2, &2, String, _ => 0x2731c2a5d4185b57cf5353061639642e/src/json.Json>> -> @rest:List<&2, Task> -> List<&2, Task>
def strict source · line 97 · raw
@enabled:Bool -> @rules:List<&2, Field<Schema>> -> @path:List<&2, String> -> @entries:List<&2, Sigma<&2, &2, String, _ => 0x2731c2a5d4185b57cf5353061639642e/src/json.Json>> -> @rest:List<&2, Task> -> List<&2, Task>
def object source · line 102 · raw
@+rules:List<&2, Field<Schema>> -> @closed:Bool -> @+path:List<&2, String> -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @rest:List<&2, Task> -> List<&2, Task>
def expand source · line 107 · raw
@schema:Schema -> @path:List<&2, String> -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @rest:List<&2, Task> -> List<&2, Task>
def validate source · line 124 · raw
@schema:Schema -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> Verdict
def path_json source · line 127 · raw
@path:List<&2, String> -> List<&2, 0x2731c2a5d4185b57cf5353061639642e/src/json.Json>
def error source · line 132 · raw
@path:List<&2, String> -> @code:String -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
def accepted source · line 137 · raw
@result:Verdict -> @value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @next:(@_:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
def apply source · line 142 · raw
@schema:Schema -> @+value:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> @next:(@_:0x2731c2a5d4185b57cf5353061639642e/src/json.Json -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)) -> IO(0x2731c2a5d4185b57cf5353061639642e/src/server.Reply)
Unsafe
unsafe run source · line 118 · raw
@tasks:List<&2, Task> -> Verdict
Worklist expansion terminates for finite schema/data; this is tested, not a law.