úÎ!7Ä3¾F      !"#$%&'()*+,-./0123456789:;<=>?@ABCDENone7;="javascript-extrasÿ<This provides a consistent way to safely convert from JSVal. The semantics is that if the return value is a Just, then the JSVal is not a null value. Also, Nothing is also returned for values out of range. They are not silently truncated. (Except for Float where there may be loss of precision) during conversion.»The reason for this class is because GHCJS.Marshal.fromJSVal and GHCJS.Marshal.pFromJSVal are not safe to use as it assumes that the JSVal are of the correct type and not null. (https:/ github.comghcjs ghcjs-base}issues/87). The safe way to convert from JSVal is to use JavaScript.Cast or to use the 'Maybe a' instance of FromJSVal, ie *fromJSVal :: JSVal -> IO (Maybe (Maybe a))©, which is a bit more awkward to use, and requires IO. Also, Javascript.Cast doesn't have much instances, and it hardcodes the instance detection method to javascript  isinstance3 which is not sufficient for complex types (https:/ github.comghcjs ghcjs-base issues/86).ÏIt is actually safe to convert from JSVal without IO because every JSVal is a copy of a value or reference. The copy never change, so the conversion will always convert to the same result/object every time.javascript-extrasÂThis provides a consistent way to convert to JSVal, with different semantics for Char. In the Char's instance of ToJS, it converts to a string instead of integer - IMHO this is less surprising.ÿThe other reason for this class is while GHCJS base provide both IsJSVal and PToJSVal to convert to jsval, some types are instances of one or the other class. This means you can't use the "Maybe a" instance of PToJSVal if it contains IsISJVal but not pToJSVal.javascript-extrashThis is a pure conversion, so instances must be able to convert the same or equivalent JSVal each time.javascript-extras Char instance converts to string'javascript-extras3This will only succeed on a single character stringNone6$T,javascript-extrashWrapper to have a JSVal that also have an IString instance This is helpful when using OverloadedStrings,-./0,-./0None%„;javascript-extrasInjection attack! Use with care::Safe(ö>javascript-extrasRalways returns a number between [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]?javascript-extrasRalways returns a number between [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]<=>?<=>?None<N3Ajavascript-extraseCreates a JE.JSRep single string for "className" property from a list of (JSString, Bool) Idea from 'https://github.com/JedWatson/classnamesBjavascript-extras\get a property of any JSVal. If a null or undefined is queried, the result will also be nullCjavascript-extrasset a property of any JSValFjavascript-extras(throws an exception if undefined or nullGjavascript-extras(throws an exception if undefined or nullHjavascript-extrasžzip list of string and JSVal to object, lists must have been completely forced first Using the idea from JavaScript.Array.Internal.fromList h$fromHsListJSVal@ABCDEA@BCDENone3n,-./0<=>?@ABCDEI      !"#$%&'()*+,-./01233456789:;<=>?@ABCDEFGHIJKLMNO0javascript-extras-0.5.0.0-FnIKV4JEOADEry4bPmAtGdJavaScript.Extras.CastJavaScript.Extras.JSRepJavaScript.Extras.JSRep.UnsafeJavaScript.Extras.NumberJavaScript.Extras.PropertyJavaScript.ExtrasFromJSfromJSToJStoJS $fToJSMaybe$fToJSJSString$fToJS[] $fToJSText $fToJSWord32 $fToJSWord16 $fToJSWord8 $fToJSWord $fToJSInt32 $fToJSInt16 $fToJSInt8 $fToJSInt $fToJSFloat $fToJSDouble $fToJSChar $fToJSBool $fToJSObject$fToJSSomeJSArray$fToJSNullable $fToJSExport$fToJSCallback $fToJSJSVal$fFromJSJSString $fFromJS[] $fFromJSText$fFromJSWord32$fFromJSWord16 $fFromJSWord8 $fFromJSWord $fFromJSInt32 $fFromJSInt16 $fFromJSInt8 $fFromJSInt $fFromJSFloat$fFromJSDouble $fFromJSChar $fFromJSBool$fFromJSObject$fFromJSSomeJSArray $fFromJSJSValJSReptoJSRfromJSR js_stringify $fNFDataJSRep$fIsStringJSRep $fFromJSJSRep $fToJSJSRep$fPToJSValJSRep$fIsJSValJSRep $fShowJSRep$fNewtypeJSRep$fGenericJSRepjs_eval $fReadJSRepmaxSafeIntegerminSafeInteger safeIncrement safeDecrementProperty classNames getProperty setPropertyfromProperties toPropertiesjs_unsafeGetPropertyjs_unsafeSetPropertyjs_toJSObjectPure