json.bend fails
raw source on the hub · import 0xf776c27e08f75fc19a070c691bcbb111/json.bend as Json
json.bend: A production-grade, highly reusable JSON library for Bend 2. Compliant with RFC 8259 (JSON specification) and RFC 6901 (JSON Pointer).
Supports: - Full JSON AST: Null, Bool, Number (Pos Nat, Neg Nat), String, Array, Object - Full RFC 8259 character escaping and unescaping - Safe type guards and typed value unwrapping - Comprehensive Object operations: get, has, set, remove, obj_len, keys, values, entries, merge, sort_keys - Functional Array combinators: arr_len, arr_get, arr_push, arr_set, arr_pop, arr_remove, arr_insert, arr_map, arr_filter, arr_fold - Ergonomic typed field extractors with fallback defaults: get_str, get_num, get_bool, etc. - RFC 6901 JSON Pointer queries and deep path updates: pointer, pointer_set - High-performance compact serialization: stringify - Configurable pretty printing with arbitrary indentation: pretty, pretty_indent - Streaming NDJSON (Newline Delimited JSON): parse_ndjson, stringify_ndjson - Fast JSON validation: validate - Linear recursive-descent parser: parse
1 import
import Base
Types
type Json source · line 24 · raw
Data
JNullJson
JBool@val:Bool -> Json
JNum@val:Nat -> Json
JNeg@val:Nat -> Json
JStr@val:String -> Json
JArr@vals:List<&2, Json> -> Json
JObj@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> Json
JRaw@raw:String -> Json
type Frame source · line 35 · raw
Data
Parser stack frames
FArr@items:List<&2, Json> -> Frame
FObjVal@key:String -> @kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> Frame
type StrCharKind source · line 40 · raw
Data
String parser types
SCQuoteStrCharKind
SCSlashStrCharKind
SCControlStrCharKind
SCOtherStrCharKind
type StrRes source · line 46 · raw
Data
SErr@msg:String -> StrRes
SOk@val:String -> @rest:String -> StrRes
type Hex4Res source · line 50 · raw
Data
H4Ok@val:U32 -> @rest:String -> Hex4Res
H4Err@msg:String -> Hex4Res
type EscRes source · line 54 · raw
Data
EscChar@c:Char -> @rest:String -> EscRes
EscErr@msg:String -> EscRes
type EscCharKind source · line 58 · raw
Data
ECQuoteEscCharKind
ECSlashEscCharKind
ECNewlineEscCharKind
ECCarriageEscCharKind
ECTabEscCharKind
ECBackspaceEscCharKind
ECFormFeedEscCharKind
ECControl@code:U32 -> EscCharKind
ECOther@code:U32 -> EscCharKind
type StrState source · line 69 · raw
Data
StrNormalStrState
StrEscapingStrState
StrEscCheck@res:EscRes -> StrState
StrChar@kind:StrCharKind -> @c:U32 -> StrState
type PtrUnescState source · line 75 · raw
Data
PUNormalPtrUnescState
PUTildePtrUnescState
PUChar@is_tilde:Bool -> @c:U32 -> PtrUnescState
PUTildeChar@is_one:Bool -> @is_zero:Bool -> @c:U32 -> PtrUnescState
type PtrSplitState source · line 81 · raw
Data
PSNormalPtrSplitState
PSChar@is_slash:Bool -> @c:U32 -> PtrSplitState
type NatState source · line 85 · raw
Data
NParseDigitsNatState
NCheckDigit@is_d:Bool -> @c:U32 -> NatState
NCheckSafe@is_safe:Bool -> @d:Nat -> NatState
type LineSplitState source · line 90 · raw
Data
LSNormalLineSplitState
LSCheckNl@is_nl:Bool -> @c:U32 -> LineSplitState
LSEmpty@is_empty:Bool -> @line:String -> LineSplitState
type WsState source · line 95 · raw
Data
WsStartWsState
WsChar@is_w:Bool -> @c:U32 -> WsState
type NumRes source · line 100 · raw
Data
Number parser result
NInt@is_n:Bool -> @val:Nat -> @rest:String -> NumRes
NRaw@raw:String -> @rest:String -> NumRes
NErr@msg:String -> NumRes
type NumCharKind source · line 105 · raw
Data
NCZeroNumCharKind
NCNonZeroDigit@d:Nat -> NumCharKind
NCMinusNumCharKind
NCPlusNumCharKind
NCDotNumCharKind
NCExpNumCharKind
NCOther@c:U32 -> NumCharKind
type NumState source · line 114 · raw
Data
NStartNumState
NStartChar@kind:NumCharKind -> @c:U32 -> NumState
NAfterMinusNumState
NAfterMinusChar@kind:NumCharKind -> @c:U32 -> NumState
NAfterZero@is_n:Bool -> NumState
NAfterZeroChar@is_n:Bool -> @kind:NumCharKind -> @c:U32 -> NumState
NIntDigits@is_n:Bool -> @acc:Nat -> @is_over:Bool -> NumState
NIntDigitsChar@is_n:Bool -> @acc:Nat -> @is_over:Bool -> @kind:NumCharKind -> @c:U32 -> NumState
NFracStartNumState
NFracStartChar@kind:NumCharKind -> @c:U32 -> NumState
NFracDigitsNumState
NFracDigitsChar@kind:NumCharKind -> @c:U32 -> NumState
NExpStartNumState
NExpStartChar@kind:NumCharKind -> @c:U32 -> NumState
NExpSignNumState
NExpSignChar@kind:NumCharKind -> @c:U32 -> NumState
NExpDigitsNumState
NExpDigitsChar@kind:NumCharKind -> @c:U32 -> NumState
type CharKind source · line 135 · raw
Data
General character classification
KindLBracketCharKind
KindRBracketCharKind
KindLBraceCharKind
KindRBraceCharKind
KindQuoteCharKind
KindCommaCharKind
KindColonCharKind
KindNullCharKind
KindTrueCharKind
KindFalseCharKind
KindMinusCharKind
KindDigitCharKind
KindOtherCharKind
type StepAct source · line 151 · raw
Data
Parser state machine actions
ActValStartStepAct
ActValChar@kind:CharKind -> @c:U32 -> StepAct
ActArrOpenStepAct
ActArrOpenChar@kind:CharKind -> @c:U32 -> StepAct
ActArrNext@v:Json -> @items:List<&2, Json> -> StepAct
ActArrNextChar@kind:CharKind -> @v:Json -> @items:List<&2, Json> -> StepAct
ActObjOpenStepAct
ActObjOpenChar@kind:CharKind -> @c:U32 -> StepAct
ActKeyStart@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> StepAct
ActKeyStartChar@kind:CharKind -> @kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> StepAct
ActKeyParsed@res:StrRes -> @kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> StepAct
ActColon@key:String -> @kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> StepAct
ActColonChar@kind:CharKind -> @key:String -> @kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> StepAct
ActObjNext@key:String -> @v:Json -> @kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> StepAct
ActObjNextChar@kind:CharKind -> @key:String -> @v:Json -> @kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> StepAct
ActHaveVal@v:Json -> StepAct
ActCheckEof@v:Json -> StepAct
ActStrParsed@res:StrRes -> StepAct
ActNumParsed@res:NumRes -> StepAct
ActLitCheck@expected:String -> @val:Json -> @ok:Bool -> @rest:String -> StepAct
type PrintTask source · line 174 · raw
Data
Serializer stack task
PVal@j:Json -> PrintTask
PArr@items:List<&2, Json> -> PrintTask
PObj@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> PrintTask
PLit@s:String -> PrintTask
type PrettyTask source · line 181 · raw
Data
Pretty printer stack task
PrVal@j:Json -> @indent:String -> PrettyTask
PrArr@items:List<&2, Json> -> @indent:String -> PrettyTask
PrObj@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> @indent:String -> PrettyTask
PrLit@s:String -> PrettyTask
type SizeTask source · line 188 · raw
Data
Size calculation stack task
SzVal@j:Json -> SizeTask
SzArr@vals:List<&2, Json> -> SizeTask
SzObj@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> SizeTask
Definitions
def null source · line 198 · raw
Json
def bool source · line 201 · raw
@b:Bool -> Json
def true_val source · line 204 · raw
Json
def false_val source · line 207 · raw
Json
def num source · line 210 · raw
@n:Nat -> Json
def neg source · line 213 · raw
@n:Nat -> Json
def str source · line 216 · raw
@s:String -> Json
def arr source · line 219 · raw
@vals:List<&2, Json> -> Json
def obj source · line 222 · raw
@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> Json
def kv source · line 225 · raw
@key:String -> @val:Json -> Sigma<&2, &2, String, _ => Json>
def raw source · line 228 · raw
@s:String -> Json
def is_null source · line 235 · raw
@j:Json -> Bool
def is_bool source · line 242 · raw
@j:Json -> Bool
def is_num source · line 249 · raw
@j:Json -> Bool
def is_neg source · line 256 · raw
@j:Json -> Bool
def is_str source · line 263 · raw
@j:Json -> Bool
def is_arr source · line 270 · raw
@j:Json -> Bool
def is_obj source · line 277 · raw
@j:Json -> Bool
def is_raw source · line 284 · raw
@j:Json -> Bool
def as_bool source · line 295 · raw
@j:Json -> Maybe<&2, Bool>
def as_num source · line 302 · raw
@j:Json -> Maybe<&2, Nat>
def as_neg source · line 309 · raw
@j:Json -> Maybe<&2, Nat>
def as_str source · line 316 · raw
@j:Json -> Maybe<&2, String>
def as_arr source · line 323 · raw
@j:Json -> Maybe<&2, List<&2, Json>>
def as_obj source · line 330 · raw
@j:Json -> Maybe<&2, List<&2, Sigma<&2, &2, String, _ => Json>>>
def as_raw source · line 337 · raw
@j:Json -> Maybe<&2, String>
def get_kv source · line 348 · raw
@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> @+key:String -> Maybe<&2, Json>
def get source · line 357 · raw
@j:Json -> @key:String -> Maybe<&2, Json>
def has.is_some source · line 364 · raw
@m:Maybe<&2, Json> -> Bool
def has source · line 371 · raw
@j:Json -> @key:String -> Bool
def set_kv source · line 374 · raw
@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> @+key:String -> @+val:Json -> List<&2, Sigma<&2, &2, String, _ => Json>>
def set source · line 383 · raw
@j:Json -> @key:String -> @val:Json -> Json
def remove_kv source · line 390 · raw
@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> @+key:String -> List<&2, Sigma<&2, &2, String, _ => Json>>
def remove source · line 399 · raw
@j:Json -> @key:String -> Json
def obj_len_kv source · line 406 · raw
@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> Nat
def obj_len source · line 413 · raw
@j:Json -> Nat
def keys_kv source · line 420 · raw
@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> List<&2, String>
def keys source · line 427 · raw
@j:Json -> List<&2, String>
def values_kv source · line 434 · raw
@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> List<&2, Json>
def values source · line 441 · raw
@j:Json -> List<&2, Json>
def entries source · line 448 · raw
@j:Json -> List<&2, Sigma<&2, &2, String, _ => Json>>
def merge_kvs source · line 455 · raw
@overrides:List<&2, Sigma<&2, &2, String, _ => Json>> -> @base:List<&2, Sigma<&2, &2, String, _ => Json>> -> List<&2, Sigma<&2, &2, String, _ => Json>>
def merge source · line 462 · raw
@j1:Json -> @j2:Json -> Json
def insert_kv_go source · line 473 · raw
@+ek:String -> @+ev:Json -> @+kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> List<&2, Sigma<&2, &2, String, _ => Json>>
def insert_kv source · line 482 · raw
@elem:Sigma<&2, &2, String, _ => Json> -> @kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> List<&2, Sigma<&2, &2, String, _ => Json>>
def sort_kvs source · line 486 · raw
@kvs:List<&2, Sigma<&2, &2, String, _ => Json>> -> List<&2, Sigma<&2, &2, String, _ => Json>>
def sort_keys source · line 493 · raw
@j:Json -> Json
def to_map source · line 500 · raw
@j:Json -> Maybe<&2, Map<&2, Json>>
def from_map source · line 507 · raw
@m:Map<&2, Json> -> Json
def arr_len_list source · line 514 · raw
@vals:List<&2, Json> -> Nat
def arr_len source · line 521 · raw
@j:Json -> Nat
def arr_get_list source · line 528 · raw
@vals:List<&2, Json> -> @idx:Nat -> Maybe<&2, Json>
def arr_get source · line 539 · raw
@j:Json -> @idx:Nat -> Maybe<&2, Json>
def arr_push source · line 546 · raw
@j:Json -> @elem:Json -> Json
def list_set_idx source · line 553 · raw
@xs:List<&2, Json> -> @idx:Nat -> @+val:Json -> List<&2, Json>
def arr_set source · line 564 · raw
@j:Json -> @idx:Nat -> @val:Json -> Json
def list_pop_step source · line 571 · raw
@h:Json -> @res:Pair(Maybe<&2, Json>, List<&2, Json>) -> Pair(Maybe<&2, Json>, List<&2, Json>)
def list_pop_last source · line 575 · raw
@xs:List<&2, Json> -> Pair(Maybe<&2, Json>, List<&2, Json>)
def arr_pop_step source · line 586 · raw
@res:Pair(Maybe<&2, Json>, List<&2, Json>) -> Pair(Maybe<&2, Json>, Json)
def arr_pop source · line 590 · raw
@j:Json -> Pair(Maybe<&2, Json>, Json)
def list_remove source · line 597 · raw
@xs:List<&2, Json> -> @idx:Nat -> List<&2, Json>
def arr_remove source · line 608 · raw
@j:Json -> @idx:Nat -> Json
def list_insert source · line 615 · raw
@xs:List<&2, Json> -> @idx:Nat -> @+val:Json -> List<&2, Json>
def arr_insert source · line 626 · raw
@j:Json -> @idx:Nat -> @val:Json -> Json
def get_str_step source · line 681 · raw
@m:Maybe<&2, Json> -> Maybe<&2, String>
def get_str source · line 688 · raw
@j:Json -> @key:String -> Maybe<&2, String>
def get_num_step source · line 691 · raw
@m:Maybe<&2, Json> -> Maybe<&2, Nat>
def get_num source · line 698 · raw
@j:Json -> @key:String -> Maybe<&2, Nat>
def get_neg_step source · line 701 · raw
@m:Maybe<&2, Json> -> Maybe<&2, Nat>
def get_neg source · line 708 · raw
@j:Json -> @key:String -> Maybe<&2, Nat>
def get_bool_step source · line 711 · raw
@m:Maybe<&2, Json> -> Maybe<&2, Bool>
def get_bool source · line 718 · raw
@j:Json -> @key:String -> Maybe<&2, Bool>
def get_arr_step source · line 721 · raw
@m:Maybe<&2, Json> -> Maybe<&2, List<&2, Json>>
def get_arr source · line 728 · raw
@j:Json -> @key:String -> Maybe<&2, List<&2, Json>>
def get_obj_step source · line 731 · raw
@m:Maybe<&2, Json> -> Maybe<&2, List<&2, Sigma<&2, &2, String, _ => Json>>>
def get_obj source · line 738 · raw
@j:Json -> @key:String -> Maybe<&2, List<&2, Sigma<&2, &2, String, _ => Json>>>
def get_str_or_step source · line 741 · raw
@m:Maybe<&2, String> -> @dflt:String -> String
def get_str_or source · line 748 · raw
@j:Json -> @key:String -> @dflt:String -> String
def get_num_or_step source · line 751 · raw
@m:Maybe<&2, Nat> -> @dflt:Nat -> Nat
def get_num_or source · line 758 · raw
@j:Json -> @key:String -> @dflt:Nat -> Nat
def get_bool_or_step source · line 761 · raw
@m:Maybe<&2, Bool> -> @dflt:Bool -> Bool
def get_bool_or source · line 768 · raw
@j:Json -> @key:String -> @dflt:Bool -> Bool
def str_len_loop source · line 775 · raw
@s:String -> @acc:Nat -> Nat
def str_len source · line 782 · raw
@s:String -> Nat
def str_from_rev_loop source · line 785 · raw
@cs:List<&2, Char> -> @cur:String -> String
def unescape_ptr_loop source · line 792 · raw
@fuel:Nat -> @st:PtrUnescState -> @s:String -> @acc:List<&2, Char> -> String
def unescape_ptr_token source · line 827 · raw
@+s:String -> String
def split_ptr_loop source · line 830 · raw
@fuel:Nat -> @st:PtrSplitState -> @s:String -> @+cur:String -> List<&2, String>
def split_ptr_tokens source · line 849 · raw
@+s:String -> List<&2, String>
def parse_ptr_tokens_slash source · line 852 · raw
@is_slash:Bool -> @+t:String -> Maybe<&2, List<&2, String>>
def parse_ptr_tokens source · line 859 · raw
@+path:String -> Maybe<&2, List<&2, String>>
def check_safe_mul10_step source · line 866 · raw
@is_small:Bool -> @acc:Nat -> @d:Nat -> Bool
def check_safe_mul10 source · line 873 · raw
@+acc:Nat -> @d:Nat -> Bool
def parse_nat_loop source · line 876 · raw
@fuel:Nat -> @st:NatState -> @s:String -> @+acc:Nat -> Maybe<&2, Nat>
def parse_nat_lead source · line 902 · raw
@is_zero:Bool -> @is_digit:Bool -> @+c:U32 -> @+t:String -> Maybe<&2, Nat>
def parse_nat source · line 918 · raw
@+s:String -> Maybe<&2, Nat>
def pointer_resolve_arr source · line 927 · raw
@j:Json -> @m:Maybe<&2, Nat> -> Maybe<&2, Json>
def pointer_resolve_token source · line 934 · raw
@j:Json -> @token:String -> Maybe<&2, Json>
def pointer_traverse_loop source · line 943 · raw
@+tokens:List<&2, String> -> @cur:Maybe<&2, Json> -> Maybe<&2, Json>
def pointer_start source · line 954 · raw
@m:Maybe<&2, List<&2, String>> -> @j:Json -> Maybe<&2, Json>
def pointer source · line 961 · raw
@j:Json -> @path:String -> Maybe<&2, Json>
def pointer_set_arr_leaf source · line 964 · raw
@m:Maybe<&2, Nat> -> @j:Json -> @val:Json -> Json
def child_or_obj source · line 971 · raw
@m:Maybe<&2, Json> -> Json
def child_or_null source · line 978 · raw
@m:Maybe<&2, Json> -> Json
def arr_child source · line 985 · raw
@j:Json -> @m:Maybe<&2, Nat> -> Json
def pointer_set_arr_res source · line 992 · raw
@m:Maybe<&2, Nat> -> @j:Json -> @new_child:Json -> Json
def pointer_set_traverse source · line 999 · raw
@+tokens:List<&2, String> -> @+j:Json -> @+val:Json -> Json
def pointer_set_step source · line 1025 · raw
@m:Maybe<&2, List<&2, String>> -> @j:Json -> @val:Json -> Json
def pointer_set source · line 1032 · raw
@j:Json -> @path:String -> @val:Json -> Json
def hex_to_char source · line 1039 · raw
@+d:U32 -> Char
def escape_char source · line 1044 · raw
@+c:Char -> String
def classify_esc_char source · line 1058 · raw
@+c:U32 -> EscCharKind
def escape_step source · line 1069 · raw
@kind:EscCharKind -> @acc:List<&2, Char> -> List<&2, Char>
def escape_str_loop source · line 1090 · raw
@fuel:Nat -> @s:String -> @acc:List<&2, Char> -> String
def escape_string source · line 1101 · raw
@+s:String -> String
def quote_string source · line 1106 · raw
@+s:String -> String
def json_size_loop source · line 1111 · raw
@fuel:Nat -> @+tasks:List<&2, SizeTask> -> @+acc:Nat -> Nat
def json_size source · line 1152 · raw
@j:Json -> Nat
def join_chunks_loop source · line 1155 · raw
@fuel:Nat -> @xs:List<&2, String> -> @cur:String -> String
def stringify_loop source · line 1166 · raw
@fuel:Nat -> @+tasks:List<&2, PrintTask> -> @+acc:List<&2, String> -> Result<&2, &2, String, String>
def stringify_checked source · line 1225 · raw
@+j:Json -> Result<&2, &2, String, String>
def stringify_unwrap source · line 1230 · raw
@r:Result<&2, &2, String, String> -> String
def stringify source · line 1237 · raw
@j:Json -> String
def make_spaces source · line 1244 · raw
@n:Nat -> String
def make_custom_indent source · line 1251 · raw
@count:Nat -> @+step_str:String -> String
def pretty_indent_loop source · line 1258 · raw
@fuel:Nat -> @+tasks:List<&2, PrettyTask> -> @+step_str:String -> @+acc:List<&2, String> -> String
def pretty_indent source · line 1315 · raw
@+j:Json -> @step:Nat -> String
def pretty source · line 1320 · raw
@j:Json -> String
def classify_str_char source · line 1327 · raw
@+c:U32 -> StrCharKind
def classify_char source · line 1333 · raw
@+c:U32 -> CharKind
def hex_digit_val source · line 1348 · raw
@+c:U32 -> U32
def make_hex4 source · line 1354 · raw
@+d1:U32 -> @+d2:U32 -> @+d3:U32 -> @+d4:U32 -> @rest:String -> Hex4Res
def parse_hex4 source · line 1360 · raw
@s:String -> Hex4Res
def finish_low_hex4 source · line 1379 · raw
@is_valid_lo:Bool -> @+hi_val:U32 -> @+lo_val:U32 -> @rest:String -> EscRes
def handle_low_hex4 source · line 1387 · raw
@+hi_val:U32 -> @h4:Hex4Res -> EscRes
def check_slash_u source · line 1395 · raw
@is_slash_u:Bool -> @+hi_val:U32 -> @t2:String -> EscRes
def parse_low_surrogate source · line 1402 · raw
@+hi_val:U32 -> @rest:String -> EscRes
def check_surrogate_hi source · line 1414 · raw
@is_hi:Bool -> @+val:U32 -> @rest:String -> EscRes
def check_surrogate_kind source · line 1421 · raw
@is_hi:Bool -> @is_lo:Bool -> @+val:U32 -> @rest:String -> EscRes
def check_surrogate source · line 1428 · raw
@+val:U32 -> @rest:String -> EscRes
def handle_unicode_hex4 source · line 1433 · raw
@h4:Hex4Res -> EscRes
def parse_escape_step source · line 1440 · raw
@is_u:Bool -> @+c:U32 -> @+rest:String -> EscRes
def parse_escape_seq source · line 1455 · raw
@+c:U32 -> @rest:String -> EscRes
def parse_str.loop source · line 1458 · raw
@fuel:Nat -> @st:StrState -> @s:String -> @acc:List<&2, Char> -> StrRes
def is_json_ws source · line 1496 · raw
@+c:U32 -> Bool
def skip_ws_loop source · line 1499 · raw
@fuel:Nat -> @st:WsState -> @s:String -> String
def skip_ws source · line 1518 · raw
@s:String -> String
def classify_num_char source · line 1521 · raw
@+c:U32 -> NumCharKind
def safe_mul_add source · line 1530 · raw
@is_safe:Bool -> @acc:Nat -> @d:Nat -> Nat
def parse_num_loop source · line 1537 · raw
@fuel:Nat -> @st:NumState -> @s:String -> @acc:List<&2, Char> -> NumRes
def parse_number source · line 1709 · raw
@fuel:Nat -> @s:String -> NumRes
def parse_step source · line 1712 · raw
@fuel:Nat -> @act:StepAct -> @+stack:List<&2, Frame> -> @s:String -> Result<&2, &2, String, Json>
def parse source · line 1887 · raw
@+s:String -> Result<&2, &2, String, Json>
def validate_step source · line 1895 · raw
@r:Result<&2, &2, String, Json> -> Bool
def validate source · line 1902 · raw
@s:String -> Bool
def raw_checked_val source · line 1905 · raw
@j:Json -> Maybe<&2, Json>
def raw_checked_res source · line 1916 · raw
@r:Result<&2, &2, String, Json> -> Maybe<&2, Json>
def raw_checked source · line 1923 · raw
@s:String -> Maybe<&2, Json>
def stringify_ndjson source · line 1926 · raw
@xs:List<&2, Json> -> String
def split_lines_done source · line 1933 · raw
@is_empty:Bool -> @+line:String -> List<&2, String>
def split_lines.loop source · line 1940 · raw
@fuel:Nat -> @st:LineSplitState -> @s:String -> @+cur:String -> List<&2, String>
def split_lines_loop source · line 1968 · raw
@+s:String -> @cur:String -> List<&2, String>
def list_parse_lines source · line 1972 · raw
@lines:List<&2, String> -> List<&2, Result<&2, &2, String, Json>>
def parse_ndjson source · line 1979 · raw
@s:String -> List<&2, Result<&2, &2, String, Json>>
Templates
template list_map source · line 633 · raw
@-f:(@_:Json -> Json) -> @xs:List<&2, Json> -> List<&2, Json>
template arr_map source · line 640 · raw
@-f:(@_:Json -> Json) -> @j:Json -> Json
template list_filter source · line 647 · raw
@-f:(@_:Json -> Bool) -> @+xs:List<&2, Json> -> List<&2, Json>
template arr_filter source · line 656 · raw
@-f:(@_:Json -> Bool) -> @j:Json -> Json
template list_fold source · line 663 · raw
@-f:(@_:Json -> @_:Json -> Json) -> @xs:List<&2, Json> -> @acc:Json -> Json
template arr_fold source · line 670 · raw
@-f:(@_:Json -> @_:Json -> Json) -> @acc:Json -> @j:Json -> Json