!;},      !"#$%&'()*+NoneK,-./0123456789None: json-stream)Public interface for parsing JSON tokens.; json-streamvfound element, continuation, actual parsing view - so that we can report the unparsed data when the parsing finishes. :<;=>?@ABCDEFNone D`GNone"#^H json-stream*Header for the C routing for batch parsingI json-streamLimit for maximum size of a number; fail if larger number is found this is needed to make this constant-space, otherwise we would eat all memory just memoizing the number. The lexer fails if larger number is encountered.J json-stream*Hardcoded result record size (see lexer.h)K json-streamBParse number from bytestring to Scientific using JSON syntax rulesL json-streamParse particular resultM json-stream&Estimate number of elements in a chunkGN BSD-stylepalkovsky.ondrej@gmail.com experimentalportableNoneNV|-5 json-stream>Result of parsing. Contains continuations to continue parsing. json-streamReturns a value from a parser. json-stream+Parser needs more data to continue parsing. json-stream"Parsing failed, error is reported. json-stream,Parsing finished, unparsed data is returned. json-streamA representation of the parser.O json-streamPrivate parsing resultP json-stream#Limit for the size of an object keyQ json-stream.Yield list of results, finish with last action json-streamMatch all items of an array.R json-streamGenerate start/end objects when an element is found, in between run a parser. The inner parser is not run if an array is not found. json-streamGenerate start/end values when an object is found, in between run a parser. The inner parser is not run if an array is not found. json-streamGenerate start/end values when an array is found, in between run a parser. The inner parser is not run if an array is not found.Alet test = "[[1,2,3],true,[],false,{\"key\":1}]" :: BS.ByteStringIparseByteString (arrayOf (arrayFound 10 20 (1 .! integer))) test :: [Int][10,2,20,10,20]  json-streamMatch nith item in an array.  json-stream1Match all items of an array, add index to output.S json-streamUGo through an object; if once is True, yield only first success, then ignore the restT json-stream:Helper function to deduplicate TokMoreData/FokFailed logic  json-streamMatch all key-value pairs of an object, return them as a tuple. If the source object defines same key multiple times, all values are matched.  json-streamMatch all key-value pairs of an object, return only values. If the source object defines same key multiple times, all values are matched. Keys are ignored.  json-streamMatch only specific key of an object. This function will return only the first matched value in an object even if the source JSON defines the key multiple times (in violation of the specification).U json-stream1Parses underlying values and generates a AE.ValueV json-streamCOptimized function for aeson objects - evades reversing the objectsW json-streampConvert a strict aeson value (no object/array) to a value. Non-matching type is ignored and not parsed (unlike )X json-stream:Match a possibly bounded string roughly limited by a limit json-stream+Parse string value, skip parsing otherwise. json-streamStops parsing string after the limit is reached. The string will not be matched if it exceeds the size. The size is the size of escaped string including escape characters. json-stream*Parse number, return in scientific format. json-stream#Parse to bounded integer type (not YX). If you are using integer numbers, use this parser. It skips the conversion JSON -> Z -> [ and uses an [ directly. json-streamParse to float/double. json-stream)Parse bool, skip if the type is not bool. json-streamMatch a null value. json-stream*Parses a field with a possible null value. json-streamMatch FromJSON, value. Calls parseJSON on the parsed value.1let json = "[{\"key1\": [1,2], \"key2\": [5,6]}]"2parseByteString (arrayOf value) json :: [AE.Value]c[Object (fromList [("key2",Array [Number 5.0,Number 6.0]),("key1",Array [Number 1.0,Number 2.0])])] json-streamTake maximum n matching items.LparseByteString (takeI 3 $ arrayOf integer) "[1,2,3,4,5,6,7,8,9,0]" :: [Int][1,2,3]\ json-stream&Skip rest of string + call next parser] json-stream5Skip value; cheat to avoid parsing and make it faster json-stream)Let only items matching a condition pass.QparseByteString (filterI (>5) $ arrayOf integer) "[1,2,3,4,5,6,7,8,9,0]" :: [Int] [6,7,8,9] json-stream}A back-door for lifting of possibly failing actions. If an action fails with Left value, convert it into failure of parsing json-stream Synonym for   . Matches key in an object. The  operators can be chained.,let json = "{\"key1\": {\"nested-key\": 3}}"AparseByteString ("key1" .: "nested-key" .: integer) json :: [Int][3] json-streamReturns ^@ if value is null or does not exist or match. Otherwise returns _ value. #key .:? val = optional (key .: val) json-streamMReturn default value if the parsers on the left hand didn't produce a result. p .| defval = p <|> pure defvalMThe operator works on complete left side, the following statements are equal: zRecord <$> "key1" .: "nested-key" .: value .| defaultValue Record <$> (("key1" .: "nested-key" .: value) .| defaultValue) json-stream Synonym for  . Matches n-th item in array.RparseByteString (arrayOf (1 .! bool)) "[ [1,true,null], [2,false], [3]]" :: [Bool] [True,False] json-stream(Run streaming parser with initial input. json-stream*Run streaming parser, immediately returns .  json-streamaParse a bytestring, generate lazy list of parsed values. If an error occurs, throws an exception.6parseByteString (arrayOf integer) "[1,2,3,4]" :: [Int] [1,2,3,4]YparseByteString (arrayOf ("name" .: string)) "[{\"name\":\"KIWI\"}, {\"name\":\"BIRD\"}]"["KIWI","BIRD"]! json-streamfParse a lazy bytestring, generate lazy list of parsed values. If an error occurs, throws an exception." json-stream#Deserialize a JSON value from lazy `.2If this fails due to incomplete or invalid input, ^ is returned.^The input must consist solely of a JSON document, with no trailing data except for whitespace.# json-streamLike "2 but returns an error message when decoding fails.$ json-streamLike ", but on strict a% json-streamLike #, but on strict a& json-streamMatch items from the first parser, if none is matched, return items from the second parser. Constant-space if second parser returns constant number of items. $ is implemented using this operator.Blet json = "[{\"key1\": [1,2], \"key2\": [5,6], \"key3\": [8,9]}]"Nlet parser = arrayOf $ "key1" .: (arrayOf value) <|> "key2" .: (arrayOf value)$parseByteString parser json :: [Int][1,2]Qlet parser = arrayOf $ "key-non" .: (arrayOf value) <|> "key2" .: (arrayOf value)$parseByteString parser json :: [Int][5,6]b* - Gather matches and return them as list.Ulet json = "[{\"keys\":[1,2], \"values\":[5,6]}, {\"keys\":[9,8], \"values\":[7,6]}]"flet parser = arrayOf $ (,) <$> many ("keys" .: arrayOf integer) <*> many ("values" .: arrayOf integer)/parseByteString parser json :: [([Int], [Int])][([1,2],[5,6]),([9,8],[7,6])]( json-streamcG will run both parsers in parallel yielding from both as the data comes:m +Data.MonoidBlet test = "[{\"key1\": [1,2], \"key2\": [5,6], \"key3\": [8,9]}]"Mlet parser = arrayOf $ "key1" .: (arrayOf value) <> "key2" .: (arrayOf value)$parseByteString parser test :: [Int] [1,2,5,6]) json-streamd7 will run both parsers in parallel and combine results.RIt behaves as a list functor (produces all combinations), but the typical use is::set -XOverloadedStringsTlet text = "[{\"name\": \"John\", \"age\": 20}, {\"age\": 30, \"name\": \"Frank\"}]"Elet parser = arrayOf $ (,) <$> "name" .: string <*> "age" .: integer-parseByteString parser text :: [(T.Text,Int)][("John",20),("Frank",30)]&  !"#$%& !"#$%  7767e      !"#$%&'()*+,-./01223456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkijlmnompoijqijrijst*json-stream-0.4.2.4-Ii3ytSqR1pADhRekHUre0aData.JsonStream.ParserData.JsonStream.CLexTypeData.JsonStream.TokenParserData.JsonStream.UnescapeData.JsonStream.CLexer ParseOutput ParseYield ParseNeedData ParseFailed ParseDoneParserarrayOf objectFound arrayFoundarrayWithIndexOfindexedArrayOf objectItems objectValues objectWithKeystring safeStringnumberintegerrealbooljNullnullablevaluetakeIfilterImapWithFailure.:.:?.|.! runParser' runParserparseByteStringparseLazyByteStringdecode eitherDecode decodeStricteitherDecodeStrict$fAlternativeParser$fSemigroupParser$fMonoidParser$fApplicativeParser$fFunctorParser$fFunctorParseResult LexResultType resNumber resStringresTrueresFalseresNull resOpenBrace resCloseBraceresOpenBracketresCloseBracketresStringPartialresNumberPartialresNumberSmall TokenResult PartialResult TokMoreData TokFailedElement ArrayBeginArrayEnd ObjectBegin ObjectEnd StringContent StringEndJValueJInteger unescapeTextHeadernumberDigitLimit resultRecSize parseNumber parseResultsestResultLimit tokenParser ParseResultobjectKeyStringLimit yieldResults elemFoundobject'moreDataaeValue manyReversejvalue longString integer-gmpGHC.Integer.TypeInteger)scientific-0.3.6.2-1Y7gECuYbRnGpxQvPxXEhSData.Scientific Scientificghc-prim GHC.TypesIntignoreStrRestThen ignoreValbaseGHC.BaseNothingJustbytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteStringData.ByteString.Internalmany<><*>