Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file Js.ml
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732exceptionNot_implementedofstringletnotImplementedmodule_function_=raise(Not_implemented(Printf.sprintf"'%s.%s' is not implemented in native on `server-reason-react.js`. \
You are running code that depends on the browser, this is not \
supported. If this case should run on native and there's no browser \
dependency, please open an issue at %s"module_function_"https://github.com/ml-in-barcelona/server-reason-react/issues"))type'at=<..>as'amoduleFn=structtype'aarity0={i0:unit->'a[@internal]}type'aarity1={i1:'a[@internal]}type'aarity2={i2:'a[@internal]}type'aarity3={i3:'a[@internal]}type'aarity4={i4:'a[@internal]}type'aarity5={i5:'a[@internal]}type'aarity6={i6:'a[@internal]}type'aarity7={i7:'a[@internal]}type'aarity8={i8:'a[@internal]}type'aarity9={i9:'a[@internal]}type'aarity10={i10:'a[@internal]}type'aarity11={i11:'a[@internal]}type'aarity12={i12:'a[@internal]}type'aarity13={i13:'a[@internal]}type'aarity14={i14:'a[@internal]}type'aarity15={i15:'a[@internal]}type'aarity16={i16:'a[@internal]}type'aarity17={i17:'a[@internal]}type'aarity18={i18:'a[@internal]}type'aarity19={i19:'a[@internal]}type'aarity20={i20:'a[@internal]}type'aarity21={i21:'a[@internal]}type'aarity22={i22:'a[@internal]}end(**/**)(* module MapperRt = Js_mapperRt *)moduleInternal=struct(* open Fn *)(* Use opaque instead of [._n] to prevent some optimizations happening *)end(**/**)type+'anull='aoptiontype+'aundefined='aoptiontype+'anullable='aoptionexternaltoOption:'anull->'aoption="%identity"externalnullToOption:'anull->'aoption="%identity"externalundefinedToOption:'anull->'aoption="%identity"externalfromOpt:'aoption->'aundefined="%identity"(* external undefined : 'a undefined = "#undefined" *)(** The same as [empty] {!Js.Undefined} will be compiled as [undefined]*)letundefined=None(* external null : 'a null = "#null" *)(** The same as [empty] in {!Js.Null} will be compiled as [null]*)letnull=Noneletempty=Nonetype(+'a,+'e)promise(* external eqNull : 'a -> 'a null -> bool = "%bs_equal_null" *)(* let eqNull : 'a -> 'a null -> bool = fun x -> x == None *)(* external eqUndefined : 'a -> 'a undefined -> bool = "%bs_equal_undefined" *)(* let eqUndefined : 'a -> 'a undefined -> bool = function
| Some _ -> false
| None -> true *)(* external eqNullable : 'a -> 'a nullable -> bool = "%bs_equal_nullable" *)(* let eqNullable : 'a -> 'a nullable -> bool = function
| Some _ -> false
| None -> true *)(** [typeof x] will be compiled as [typeof x] in JS
Please consider functions in {!Types} for a type safe way of reflection *)lettypeof_=notImplemented"Js""typeof"(** {4 operators }*)(* external unsafe_lt : 'a -> 'a -> bool = "#unsafe_lt" *)(** [unsafe_lt a b] will be compiled as [a < b].
It is marked as unsafe, since it is impossible
to give a proper semantics for comparision which applies to any type *)(* external unsafe_le : 'a -> 'a -> bool = "#unsafe_le" *)(** [unsafe_le a b] will be compiled as [a <= b].
See also {unsafe_lt} *)(* external unsafe_gt : 'a -> 'a -> bool = "#unsafe_gt" *)(** [unsafe_gt a b] will be compiled as [a > b].
See also {unsafe_lt} *)(* external unsafe_ge : 'a -> 'a -> bool = "#unsafe_ge" *)(** [unsafe_ge a b] will be compiled as [a >= b].
See also {unsafe_lt} *)(** {12 nested modules}*)moduleNull=structtype'at='anullexternaltoOption:'at->'aoption="%identity"externalfromOpt:'aoption->'at="%identity"letempty=Noneletreturna=SomealetgetUnsafea=matchtoOptionawithNone->assertfalse|Somea->alettest=functionNone->true|Some_->falseletgetExn_=notImplemented"Js.Null""getExn"letbind__=notImplemented"Js.Null""bind"letiter__=notImplemented"Js.Null""iter"letfromOption=fromOptletfrom_opt=fromOptendmoduleUndefined=structtype'at='aundefinedexternalreturn:'a->'at="%identity"letempty=NoneexternaltoOption:'at->'aoption="%identity"externalfromOpt:'aoption->'at="%identity"letgetExn_=notImplemented"Js.Undefined""getExn"letgetUnsafea=matchtoOptionawithNone->assertfalse|Somea->aletbind__=notImplemented"Js.Undefined""bind"letiter__=notImplemented"Js.Undefined""iter"lettestAny_=notImplemented"Js.Undefined""testAny"lettest_=notImplemented"Js.Undefined""test"letfromOption=fromOptletfrom_opt=fromOptendmoduleNullable=structtype'at='aoptionexternaltoOption:'at->'aoption="%identity"externalto_opt:'at->'aoption="%identity"letreturn:'a->'at=funx->SomexletisNullable:'at->bool=functionSome_->false|None->trueletnull:'at=Noneletundefined:'at=Noneletbindxf=matchto_optxwithNone->((x:'at):'bt)|Somex->return(fx)letiterxf=matchto_optxwithNone->()|Somex->fxletfromOptionx=matchxwithNone->undefined|Somex->returnxletfrom_opt=fromOptionendmoduleNull_undefined=NullablemoduleExn=structtypettypeexn+=|Errorofstring|EvalErrorofstring|RangeErrorofstring|ReferenceErrorofstring|SyntaxErrorofstring|TypeErrorofstring|UriErrorofstringletasJsExn_=notImplemented"Js.Exn""asJsExn"letstack_=notImplemented"Js.Exn""stack"letmessage_=notImplemented"Js.Exn""message"letname_=notImplemented"Js.Exn""name"letfileName_=notImplemented"Js.Exn""fileName"letanyToExnInternal_=notImplemented"Js.Exn""anyToExnInternal"letisCamlExceptionOrOpenVariant_=notImplemented"Js.Exn""isCamlExceptionOrOpenVariant"letraiseErrorstr=raise(Errorstr)letraiseEvalErrorstr=raise(EvalErrorstr)letraiseRangeErrorstr=raise(RangeErrorstr)letraiseReferenceErrorstr=raise(ReferenceErrorstr)letraiseSyntaxErrorstr=raise(SyntaxErrorstr)letraiseTypeErrorstr=raise(TypeErrorstr)letraiseUriErrorstr=raise(UriErrorstr)endmoduleArray:sig(** JavaScript Array API *)type'at='aarraytype'aarray_likevalfrom:'aarray_like->'aarrayvalfromMap:'aarray_like->f:('a->'b)->'barrayvalisArray:'a->boolvallength:'aarray->intvalcopyWithin:to_:int->?start:int->?end_:int->'at->'atvalfill:value:'a->?start:int->?end_:int->'at->'atvalpop:'at->'aoptionvalpush:value:'a->'at->intvalpushMany:values:'aarray->'at->intvalreverseInPlace:'at->'atvalshift:'at->'aoptionvalsortInPlace:'at->'atvalsortInPlaceWith:f:('a->'a->int)->'at->'atvalspliceInPlace:start:int->remove:int->add:'aarray->'at->'atvalremoveFromInPlace:start:int->'at->'atvalremoveCountInPlace:start:int->count:int->'at->'atvalunshift:value:'a->'at->intvalunshiftMany:values:'aarray->'at->intvalconcat:other:'at->'at->'atvalconcatMany:arrays:'atarray->'at->'atvalincludes:value:'a->'at->boolvaljoin:?sep:string->stringt->stringvalindexOf:value:'a->?start:int->'at->intvallastIndexOf:value:'a->'at->intvallastIndexOfFrom:value:'a->start:int->'at->intvalcopy:'at->'atvalslice:?start:int->?end_:int->'at->'atvaltoString:'at->stringvaltoLocaleString:'at->stringvalevery:f:('a->bool)->'at->boolvaleveryi:f:('a->int->bool)->'at->boolvalfilter:f:('a->bool)->'at->'atvalfilteri:f:('a->int->bool)->'at->'atvalfind:f:('a->bool)->'at->'aoptionvalfindi:f:('a->int->bool)->'at->'aoptionvalfindIndex:f:('a->bool)->'at->intvalfindIndexi:f:('a->int->bool)->'at->intvalforEach:f:('a->unit)->'at->unitvalforEachi:f:('a->int->unit)->'at->unitvalmap:f:('a->'b)->'at->'btvalmapi:f:('a->int->'b)->'at->'btvalreduce:f:('b->'a->'b)->init:'b->'at->'bvalreducei:f:('b->'a->int->'b)->init:'b->'at->'bvalreduceRight:f:('b->'a->'b)->init:'b->'at->'bvalreduceRighti:f:('b->'a->int->'b)->init:'b->'at->'bvalsome:f:('a->bool)->'at->boolvalsomei:f:('a->int->bool)->'at->boolvalunsafe_get:'aarray->int->'avalunsafe_set:'aarray->int->'a->unitend=structtype'at='aarraytype'aarray_likeletfrom_=notImplemented"Js.Array""from"letfromMap_~f:_=notImplemented"Js.Array""fromMap"(* This doesn't behave the same as melange-js, since it's a runtime check
so lists are represented as arrays in the runtime: isArray([1, 2]) == true *)letisArray(_arr:'a)=trueletlengtharr=Stdlib.Array.lengtharr(* Mutator functions *)letcopyWithin~to_:_?start:_?end_:__=notImplemented"Js.Array""copyWithin"letfill~value:_?start:_?end_:__=notImplemented"Js.Array""fill"letpop_=notImplemented"Js.Array""pop"letpush~value:__=notImplemented"Js.Array""push"letpushMany~values:__=notImplemented"Js.Array""pushMany"letreverseInPlace_=notImplemented"Js.Array""reverseInPlace"letsortInPlace_=notImplemented"Js.Array""sortInPlace"letsortInPlaceWith~f:__=notImplemented"Js.Array""sortInPlaceWith"letspliceInPlace~start:_~remove:_~add:__=notImplemented"Js.Array""spliceInPlace"letremoveFromInPlace~start:__=notImplemented"Js.Array""removeFromInPlace"letremoveCountInPlace~start:_~count:__=notImplemented"Js.Array""removeCountInPlace"letshift_=notImplemented"Js.Array""shift"letunshift~value:__=notImplemented"Js.Array""unshift"letunshiftMany~values:__=notImplemented"Js.Array""unshiftMany"(* Accessor functions *)letconcat~other:secondfirst=Stdlib.Array.appendfirstsecondletconcatMany~arraysarr=Stdlib.Array.concat(arr::Stdlib.Array.to_listarrays)letincludes~valuearr=Stdlib.Array.exists(funx->x=value)arrletindexOf~value?startarr=letrecauxidx=ifidx>=Stdlib.Array.lengtharrthen-1elseifarr.(idx)=valuethenidxelseaux(idx+1)inmatchstartwith|None->aux0|Somefrom->iffrom<0||from>=Stdlib.Array.lengtharrthen-1elseauxfromletjoin?separr=(* js bindings can really take in `'a array`, while native is constrained to `string array` *)matchsepwith|None->Stdlib.Array.to_listarr|>String.concat","|Somesep->Stdlib.Array.to_listarr|>String.concatsepletlastIndexOf~valuearr=letrecauxidx=ifidx<0then-1elseifarr.(idx)=valuethenidxelseaux(idx-1)inaux(Stdlib.Array.lengtharr-1)letlastIndexOfFrom~value~startarr=letrecauxidx=ifidx<0then-1elseifarr.(idx)=valuethenidxelseaux(idx-1)inifstart<0||start>=Stdlib.Array.lengtharrthen-1elseauxstartletslice?start?end_arr=letlen=Stdlib.Array.lengtharrinletstart=matchstartwithNone->0|Somes->sinletend_=matchend_withNone->Stdlib.Array.lengtharr|Somee->einlets=max0(ifstart<0thenlen+startelsestart)inlete=minlen(ifend_<0thenlen+end_elseend_)inifs>=ethen[||]elseStdlib.Array.subarrs(e-s)letcopy=Stdlib.Array.copylettoString_=notImplemented"Js.Array""toString"lettoLocaleString_=notImplemented"Js.Array""toLocaleString"(* Iteration functions *)leteveryi~farr=letlen=Stdlib.Array.lengtharrinletrecauxidx=ifidx>=lenthentrueelseiffarr.(idx)idxthenaux(idx+1)elsefalseinaux0letevery~farr=letlen=Stdlib.Array.lengtharrinletrecauxidx=ifidx>=lenthentrueelseiffarr.(idx)thenaux(idx+1)elsefalseinaux0letfilter~farr=arr|>Stdlib.Array.to_list|>List.filterf|>Stdlib.Array.of_listletfilteri~farr=arr|>Stdlib.Array.to_list|>List.filteri(funia->fai)|>Stdlib.Array.of_listletfindi~farr=letlen=Stdlib.Array.lengtharrinletrecauxidx=ifidx>=lenthenNoneelseiffarr.(idx)idxthenSomearr.(idx)elseaux(idx+1)inaux0letfind~farr=letlen=Stdlib.Array.lengtharrinletrecauxidx=ifidx>=lenthenNoneelseiffarr.(idx)thenSomearr.(idx)elseaux(idx+1)inaux0letfindIndexi~farr=letlen=Stdlib.Array.lengtharrinletrecauxidx=ifidx>=lenthen-1elseiffarr.(idx)idxthenidxelseaux(idx+1)inaux0letfindIndex~farr=letlen=Stdlib.Array.lengtharrinletrecauxidx=ifidx>=lenthen-1elseiffarr.(idx)thenidxelseaux(idx+1)inaux0letforEach~farr=Stdlib.Array.iterfarrletforEachi~farr=Stdlib.Array.iteri(funia->fai)arrletmap~farr=Stdlib.Array.mapfarrletmapi~farr=Stdlib.Array.mapi(funia->fai)arrletreduce~f~initarr=letr=refinitinfori=0tolengtharr-1dor:=f!r(Stdlib.Array.unsafe_getarri)done;!rletreducei~f~initarr=letr=refinitinfori=0tolengtharr-1dor:=f!r(Stdlib.Array.unsafe_getarri)idone;!rletreduceRight~f~initarr=letr=refinitinfori=lengtharr-1downto0dor:=f!r(Stdlib.Array.unsafe_getarri)done;!rletreduceRighti~f~initarr=letr=refinitinfori=lengtharr-1downto0dor:=f!r(Stdlib.Array.unsafe_getarri)idone;!rletsome~farr=letn=Stdlib.Array.lengtharrinletrecloopi=ifi=nthenfalseelseiff(Stdlib.Array.unsafe_getarri)thentrueelseloop(succi)inloop0letsomei~farr=letn=Stdlib.Array.lengtharrinletrecloopi=ifi=nthenfalseelseiff(Stdlib.Array.unsafe_getarri)ithentrueelseloop(succi)inloop0letunsafe_getarridx=Stdlib.Array.unsafe_getarridxletunsafe_setarridxitem=Stdlib.Array.unsafe_setarridxitemendmoduleRe:sigtypettyperesultvalcaptures:result->stringNullable.tarrayvalindex:result->intvalinput:result->stringvalfromString:string->tvalfromStringWithFlags:string->flags:string->tvalflags:t->stringvalglobal:t->boolvalignoreCase:t->boolvallastIndex:t->intvalsetLastIndex:t->int->unitvalmultiline:t->boolvalsource:t->stringvalsticky:t->boolvalunicode:t->boolvalexec:str:string->t->resultoptionvaltest:str:string->t->boolend=struct(** Provide bindings to Js regex expression *)(* The RegExp object *)typet=Quickjs.RegExp.t(* The result of a executing a RegExp on a string. *)typeresult=Quickjs.RegExp.result(* Maps with nullable since Melange does too: https://melange.re/v3.0.0/api/re/melange/Js/Re/index.html#val-captures *)letcaptures:result->stringnullablearray=funresult->Quickjs.RegExp.capturesresult|>Stdlib.Array.map(funx->Nullable.returnx)letindex:result->int=Quickjs.RegExp.indexletinput:result->string=Quickjs.RegExp.inputletsource:t->string=Quickjs.RegExp.sourceletfromString:string->t=funstr->Quickjs.RegExp.compilestr""letfromStringWithFlags:string->flags:string->t=funstr~flags->Quickjs.RegExp.compilestrflagsletflags:t->string=funregexp->Quickjs.RegExp.flagsregexpletglobal:t->bool=funregexp->Quickjs.RegExp.globalregexpletignoreCase:t->bool=funregexp->Quickjs.RegExp.ignorecaseregexpletmultiline:t->bool=funregexp->Quickjs.RegExp.multilineregexpletsticky:t->bool=funregexp->Quickjs.RegExp.stickyregexpletunicode:t->bool=funregexp->Quickjs.RegExp.unicoderegexpletlastIndex:t->int=funregex->Quickjs.RegExp.lastIndexregexletsetLastIndex:t->int->unit=funregexindex->Quickjs.RegExp.setLastIndexregexindexletexec:str:string->t->resultoption=fun~strrex->matchQuickjs.RegExp.execrexstrwith|result->Someresult|exception_->Nonelettest_:t->string->bool=funregexpstr->Quickjs.RegExp.testregexpstrlettest:str:string->t->bool=fun~strregex->test_regexstrendmoduleString:sigtypet=stringvalmake:'a->tvalfromCharCode:int->tvalfromCharCodeMany:intarray->tvalfromCodePoint:int->tvalfromCodePointMany:intarray->tvallength:t->intvalget:t->int->tvalcharAt:index:int->t->tvalcharCodeAt:index:int->t->floatvalcodePointAt:index:int->t->intoptionvalconcat:other:t->t->tvalconcatMany:strings:tarray->t->tvalendsWith:suffix:t->?len:int->t->boolvalincludes:search:t->?start:int->t->boolvalindexOf:search:t->?start:int->t->intvallastIndexOf:search:t->?start:int->t->intvallocaleCompare:other:t->t->floatvalmatch_:regexp:Re.t->t->toptionarrayoptionvalnormalize:?form:[`NFC|`NFD|`NFKC|`NFKD]->t->tvalrepeat:count:int->t->tvalreplace:search:t->replacement:t->t->tvalreplaceByRe:regexp:Re.t->replacement:t->t->tvalunsafeReplaceBy0:regexp:Re.t->f:(t->int->t->t)->t->tvalunsafeReplaceBy1:regexp:Re.t->f:(t->t->int->t->t)->t->tvalunsafeReplaceBy2:regexp:Re.t->f:(t->t->t->int->t->t)->t->tvalunsafeReplaceBy3:regexp:Re.t->f:(t->t->t->t->int->t->t)->t->tvalsearch:regexp:Re.t->t->intvalslice:?start:int->?end_:int->t->tvalsplit:?sep:t->?limit:int->t->tarrayvalsplitByRe:regexp:Re.t->?limit:int->t->toptionarrayvalstartsWith:prefix:t->?start:int->t->boolvalsubstr:?start:int->?len:int->t->tvalsubstring:?start:int->?end_:int->t->tvaltoLowerCase:t->tvaltoLocaleLowerCase:t->tvaltoUpperCase:t->tvaltoLocaleUpperCase:t->tvaltrim:t->tvalanchor:name:t->t->tvallink:href:t->t->tend=structtypet=string(** JavaScript String API *)letmakewhatever=notImplemented"Js.String""make"letfromCharCodecode=letuchar=Uchar.of_intcodeinletchar_value=Uchar.to_charucharinStdlib.String.make1char_valueletfromCharCodeMany_=notImplemented"Js.String""fromCharCodeMany"letfromCodePointcode_point=letch=Char.chrcode_pointinStdlib.String.make1chletfromCodePointMany_=notImplemented"Js.String""fromCodePointMany"letlength=Stdlib.String.lengthletgetstrindex=letch=Stdlib.String.getstrindexinStdlib.String.make1ch(* TODO (davesnx): If the string contains characters outside the range [\u0000-\uffff], it will return the first 16-bit value at that position in the string. *)letcharAt~indexstr=ifindex<0||index>=Stdlib.String.lengthstrthen""elseletch=Stdlib.String.getstrindexinStdlib.String.make1chletcharCodeAt~index:ns=ifn<0||n>=Stdlib.String.lengthsthennanelsefloat_of_int(Stdlib.Char.code(Stdlib.String.getsn))letcodePointAt~indexstr=letstr_length=Stdlib.String.lengthstrinifindex>=0&&index<str_lengththenletuchar=Uchar.of_char(Stdlib.String.getstrindex)inSome(Uchar.to_intuchar)elseNoneletconcat~other:str2str1=Stdlib.String.concat""[str1;str2]letconcatMany~strings:manyoriginal=letmany_list=Stdlib.Array.to_listmanyinStdlib.String.concat""(original::many_list)letendsWith~suffix?lenstr=letstr_length=Stdlib.String.lengthstrinletend_idx=matchlenwithSomei->Stdlib.minstr_lengthi|None->str_lengthinletsub_str=Stdlib.String.substr0end_idxinStdlib.String.ends_with~suffixsub_strletincludes~search?startstr=letstr_length=Stdlib.String.lengthstrinletsearch_length=Stdlib.String.lengthsearchinletrecincludes_helperidx=ifidx+search_length>str_lengththenfalseelseifStdlib.String.substridxsearch_length=searchthentrueelseincludes_helper(idx+1)inletfrom=matchstartwithNone->0|Somef->finincludes_helperfromletindexOf~search?startstr=letstr_length=Stdlib.String.lengthstrinletsearch_length=Stdlib.String.lengthsearchinletrecindex_helperidx=ifidx+search_length>str_lengththen-1elseifStdlib.String.substridxsearch_length=searchthenidxelseindex_helper(idx+1)inletfrom=matchstartwithNone->0|Somef->finindex_helperfromletlastIndexOf~search?(start=max_int)str=letlen=String.lengthstrinletrecfind_indexi=ifi<0||i>startthen-1elseletsub_len=min(len-i)(String.lengthsearch)inifString.substrisub_len=searchthenielsefind_index(i-1)infind_index(min(len-1)start)letlocaleCompare~other:__=notImplemented"Js.String""localeCompare"letmatch_~regexpstr=letmatch_nextstrregex=matchRe.exec~strregexwith|None->None|Someresult->Some(Re.capturesresult)inletmatch_all:t->Re.t->tnullablearraynullable=funstrregex->matchmatch_nextstrregexwith|None->None|Someresult->(matchmatch_nextstrregexwith|None->Someresult|Somesecond->Some(Stdlib.Array.appendresultsecond))inifRe.globalregexpthenmatch_allstrregexpelsematch_nextstrregexpletnormalize?form:__=notImplemented"Js.String""normalize"(* TODO(davesnx): RangeError *)letrepeat~countstr=letrecrepeat'straccremaining=ifremaining<=0thenaccelserepeat'str(str^acc)(remaining-1)inrepeat'str""count(* If pattern is a string, only the first occurrence will be replaced.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace *)letreplace~search~replacementstr=letsearch_regexp=Str.regexp_stringsearchinStr.replace_firstsearch_regexpreplacementstrletreplaceByRe~regexp~replacementstr=letrecreplace_allstr=Re.setLastIndexregexp0;matchRe.exec~strregexpwith|None->str|SomeresultwhenStdlib.Array.length(Re.capturesresult)==0->str|Someresult->letmatches=Re.capturesresultinletmatched_str=Stdlib.Array.getmatches0|>Option.getinletprefix=Stdlib.String.substr0(Re.indexresult)inletsuffix_start=Re.indexresult+String.lengthmatched_strinletsuffix=Stdlib.String.substrsuffix_start(String.lengthstr-suffix_start)inRe.setLastIndexregexpsuffix_start;prefix^replacement^replace_allsuffixinletreplace_firststr=matchRe.exec~strregexpwith|None->str|Someresult->letmatches=Re.capturesresultinletmatched_str=Stdlib.Array.getmatches0|>Option.getinletprefix=Stdlib.String.substr0(Re.indexresult)inletsuffix_start=Re.indexresult+String.lengthmatched_strinletsuffix=Stdlib.String.substrsuffix_start(String.lengthstr-suffix_start)inprefix^replacement^suffixinifRe.globalregexpthenreplace_allstrelsereplace_firststrletunsafeReplaceBy0~regexp:_~f:__=notImplemented"Js.String""unsafeReplaceBy0"letunsafeReplaceBy1~regexp:_~f:__=notImplemented"Js.String""unsafeReplaceBy1"letunsafeReplaceBy2~regexp:_~f:__=notImplemented"Js.String""unsafeReplaceBy2"letunsafeReplaceBy3~regexp:_~f:__=notImplemented"Js.String""unsafeReplaceBy3"letsearch~regexp:__=notImplemented"Js.String""search"letslice?start?end_str=letstr_length=Stdlib.String.lengthstrinletstart=matchstartwithNone->0|Somes->sinletend_=matchend_withNone->str_length|Somes->sinletstart_idx=Stdlib.max0(Stdlib.minstartstr_length)inletend_idx=Stdlib.maxstart_idx(Stdlib.minend_str_length)inifstart_idx>=end_idxthen""elseStdlib.String.substrstart_idx(end_idx-start_idx)letsplit?sep?limit_str=notImplemented"Js.String""split"letsplitByRe~regexp?limitstr=letrev_arrayarr=arr|>Stdlib.Array.to_list|>Stdlib.List.rev|>Stdlib.Array.of_listinletrecsplit_allstracc=Re.setLastIndexregexp0;matchRe.exec~strregexpwith|SomeresultwhenStdlib.Array.length(Re.capturesresult)=0->Stdlib.Array.append[|Somestr|]acc|>rev_array|None->Stdlib.Array.append[|Somestr|]acc|>rev_array|Someresult->letmatches=Re.capturesresultinletmatched_str=Stdlib.Array.getmatches0|>Option.getinletprefix=String.substr0(Re.indexresult)inletsuffix_start=Re.indexresult+String.lengthmatched_strinletsuffix=String.substrsuffix_start(String.lengthstr-suffix_start)inletsuffix_matches=Stdlib.Array.append[|Someprefix|]accinsplit_allsuffixsuffix_matchesinletsplit_nextstracc=Re.setLastIndexregexp0;matchRe.exec~strregexpwith|None->Stdlib.Array.append[|Somestr|]acc|>rev_array|Someresult->letmatches=Re.capturesresultinletmatched_str=Stdlib.Array.getmatches0|>Option.getinletindex=Re.indexresultinletprefix=String.substr0indexinletsuffix_start=index+String.lengthmatched_strinletsuffix=String.substrsuffix_start(String.lengthstr-suffix_start)inStdlib.Array.append[|Someprefix|](split_allsuffixacc)inifRe.globalregexpthensplit_allstr[||]elsesplit_nextstr[||]letstartsWith~prefix?(start=0)str=letlen_prefix=String.lengthprefixinletlen_str=String.lengthstrinifstart<0||start>len_strthenfalseelseletreccompare_prefixi=i=len_prefix||i<len_str&&prefix.[i]=str.[start+i]&&compare_prefix(i+1)incompare_prefix0letsubstr?(start=0)?lenstr=letstr_length=Stdlib.String.lengthstrinletlen=matchlenwithNone->str_length|Somes->sinletstart_idx=max0(minstartstr_length)inletend_idx=min(start_idx+len)str_lengthinifstart_idx>=end_idxthen""elseStdlib.String.substrstart_idx(end_idx-start_idx)letsubstring?start?end_str=letstr_length=Stdlib.String.lengthstrinletstart=matchstartwithNone->0|Somes->sinletend_=matchend_withNone->str_length|Somes->sinletstart_idx=max0(minstartstr_length)inletend_idx=max0(minend_str_length)inifstart_idx>=end_idxthenStdlib.String.substrend_idx(start_idx-end_idx)elseStdlib.String.substrstart_idx(end_idx-start_idx)lettoLowerCase=Stdlib.String.lowercase_asciilettoLocaleLowerCase_=notImplemented"Js.String""toLocaleLowerCase"lettoUpperCase=Stdlib.String.uppercase_asciilettoLocaleUpperCase_=notImplemented"Js.String""toLocaleUpperCase"lettrimstr=letwhitespace=" \t\n\r"inletis_whitespacec=Stdlib.String.containswhitespacecinletlength=Stdlib.String.lengthstrinletrectrim_startidx=ifidx>=lengththenlengthelseifis_whitespace(Stdlib.String.getstridx)thentrim_start(idx+1)elseidxinletrectrim_endidx=ifidx<=0then0elseifis_whitespace(Stdlib.String.getstr(idx-1))thentrim_end(idx-1)elseidxinletstart_idx=trim_start0inletend_idx=trim_endlengthinifstart_idx>=end_idxthen""elseStdlib.String.substrstart_idx(end_idx-start_idx)letanchor~name:__=notImplemented"Js.String""anchor"letlink~href:__=notImplemented"Js.String""link"endmodulePromise=structtype+'at='aLwt.ttypeerror=exnletmake(fn:resolve:('a->unit)->reject:(exn->unit)->unit):'at=letpromise,resolver=Lwt.task()inletresolvevalue=Lwt.wakeup_laterresolvervalueinletrejectexn=Lwt.wakeup_later_exnresolverexninfn~resolve~reject;promiseletresolve=Lwt.returnletreject=Lwt.failletall(promises:'atarray):'aarrayt=Lwt.mapStdlib.Array.of_list(Lwt.all(Stdlib.Array.to_listpromises))letall2(a,b)=let%lwtres_a=ainlet%lwtres_b=binLwt.return(res_a,res_b)letall3(a,b,c)=let%lwtres_a=ainlet%lwtres_b=binlet%lwtres_c=cinLwt.return(res_a,res_b,res_c)letall4(a,b,c,d)=let%lwtres_a=ainlet%lwtres_b=binlet%lwtres_c=cinlet%lwtres_d=dinLwt.return(res_a,res_b,res_c,res_d)letall5(a,b,c,d,e)=let%lwtres_a=ainlet%lwtres_b=binlet%lwtres_c=cinlet%lwtres_d=dinlet%lwtres_e=einLwt.return(res_a,res_b,res_c,res_d,res_e)letall6(a,b,c,d,e,f)=let%lwtres_a=ainlet%lwtres_b=binlet%lwtres_c=cinlet%lwtres_d=dinlet%lwtres_e=einlet%lwtres_f=finLwt.return(res_a,res_b,res_c,res_d,res_e,res_f)letrace(promises:'atarray):'at=Lwt.pick(Stdlib.Array.to_listpromises)letthen_pfn=Lwt.bindfnpletcatch(handler:exn->'at)(promise:'at):'at=Lwt.catch(fun()->promise)handlerendmoduleDate:sigtypetvalvalueOf:t->floatvalmake:unit->tvalfromFloat:float->tvalfromString:string->tvalmakeWithYM:year:float->month:float->tvalmakeWithYMD:year:float->month:float->date:float->tvalmakeWithYMDH:year:float->month:float->date:float->hours:float->tvalmakeWithYMDHM:year:float->month:float->date:float->hours:float->minutes:float->tvalmakeWithYMDHMS:year:float->month:float->date:float->hours:float->minutes:float->seconds:float->tvalutcWithYM:year:float->month:float->floatvalutcWithYMD:year:float->month:float->date:float->floatvalutcWithYMDH:year:float->month:float->date:float->hours:float->floatvalutcWithYMDHM:year:float->month:float->date:float->hours:float->minutes:float->floatvalutcWithYMDHMS:year:float->month:float->date:float->hours:float->minutes:float->seconds:float->floatvalnow:unit->floatvalparseAsFloat:string->floatvalgetDate:t->floatvalgetDay:t->floatvalgetFullYear:t->floatvalgetHours:t->floatvalgetMilliseconds:t->floatvalgetMinutes:t->floatvalgetMonth:t->floatvalgetSeconds:t->floatvalgetTime:t->floatvalgetTimezoneOffset:t->floatvalgetUTCDate:t->floatvalgetUTCDay:t->floatvalgetUTCFullYear:t->floatvalgetUTCHours:t->floatvalgetUTCMilliseconds:t->floatvalgetUTCMinutes:t->floatvalgetUTCMonth:t->floatvalgetUTCSeconds:t->floatvalsetDate:float->t->floatvalsetFullYear:float->t->floatvalsetFullYearM:year:float->month:float->t->floatvalsetFullYearMD:year:float->month:float->date:float->t->floatvalsetHours:float->t->floatvalsetHoursM:hours:float->minutes:float->t->floatvalsetHoursMS:hours:float->minutes:float->seconds:float->t->floatvalsetHoursMSMs:hours:float->minutes:float->seconds:float->milliseconds:float->t->floatvalsetMilliseconds:float->t->floatvalsetMinutes:float->t->floatvalsetMinutesS:minutes:float->seconds:float->t->floatvalsetMinutesSMs:minutes:float->seconds:float->milliseconds:float->t->floatvalsetMonth:float->t->floatvalsetMonthD:month:float->date:float->t->floatvalsetSeconds:float->t->floatvalsetSecondsMs:seconds:float->milliseconds:float->t->floatvalsetTime:float->t->floatvalsetUTCDate:float->t->floatvalsetUTCFullYear:float->t->floatvalsetUTCFullYearM:year:float->month:float->t->floatvalsetUTCFullYearMD:year:float->month:float->date:float->t->floatvalsetUTCHours:float->t->floatvalsetUTCHoursM:hours:float->minutes:float->t->floatvalsetUTCHoursMS:hours:float->minutes:float->seconds:float->t->floatvalsetUTCHoursMSMs:hours:float->minutes:float->seconds:float->milliseconds:float->t->floatvalsetUTCMilliseconds:float->t->floatvalsetUTCMinutes:float->t->floatvalsetUTCMinutesS:minutes:float->seconds:float->t->floatvalsetUTCMinutesSMs:minutes:float->seconds:float->milliseconds:float->t->floatvalsetUTCMonth:float->t->floatvalsetUTCMonthD:month:float->date:float->t->floatvalsetUTCSeconds:float->t->floatvalsetUTCSecondsMs:seconds:float->milliseconds:float->t->floatvalsetUTCTime:float->t->floatvaltoDateString:t->stringvaltoISOString:t->stringvaltoJSON:t->stringoptionvaltoJSONUnsafe:t->stringvaltoLocaleDateString:t->stringvaltoLocaleString:t->stringvaltoLocaleTimeString:t->stringvaltoString:t->stringvaltoTimeString:t->stringvaltoUTCString:t->stringend=structtypet(** Provide bindings for JS Date *)(** returns the primitive value of this date, equivalent to getTime *)letvalueOf_t=notImplemented"Js.Date""valueOf"(** returns a date representing the current time *)letmake_=notImplemented"Js.Date""make"letfromFloat_=notImplemented"Js.Date""fromFloat"letfromString_=notImplemented"Js.Date""fromString"letmakeWithYM~year:_~month:_=notImplemented"Js.Date""makeWithYM"letmakeWithYMD~year:_~month:_~date:_=notImplemented"Js.Date""makeWithYMD"letmakeWithYMDH~year:_~month:_~date:_~hours:_=notImplemented"Js.Date""makeWithYMDH"letmakeWithYMDHM~year:_~month:_~date:_~hours:_~minutes:_=notImplemented"Js.Date""makeWithYMDHM"letmakeWithYMDHMS~year:_~month:_~date:_~hours:_~minutes:_~seconds:_=notImplemented"Js.Date""makeWithYMDHMS"letutcWithYM~year:_~month:_=notImplemented"Js.Date""utcWithYM"letutcWithYMD~year:_~month:_~date:_=notImplemented"Js.Date""utcWithYMD"letutcWithYMDH~year:_~month:_~date:_~hours:_=notImplemented"Js.Date""utcWithYMDH"letutcWithYMDHM~year:_~month:_~date:_~hours:_~minutes:_=notImplemented"Js.Date""utcWithYMDHM"letutcWithYMDHMS~year:_~month:_~date:_~hours:_~minutes:_~seconds:_=notImplemented"Js.Date""utcWithYMDHMS"(** returns the number of milliseconds since Unix epoch *)letnow_=notImplemented"Js.Date""now"(** returns NaN if passed invalid date string *)letparseAsFloat_=notImplemented"Js.Date""parseAsFloat"(** return the day of the month (1-31) *)letgetDate_=notImplemented"Js.Date""getDate"(** returns the day of the week (0-6) *)letgetDay_=notImplemented"Js.Date""getDay"letgetFullYear_=notImplemented"Js.Date""getFullYear"letgetHours_=notImplemented"Js.Date""getHours"letgetMilliseconds_=notImplemented"Js.Date""getMilliseconds"letgetMinutes_=notImplemented"Js.Date""getMinutes"(** returns the month (0-11) *)letgetMonth_=notImplemented"Js.Date""getMonth"letgetSeconds_=notImplemented"Js.Date""getSeconds"(** returns the number of milliseconds since Unix epoch *)letgetTime_=notImplemented"Js.Date""getTime"letgetTimezoneOffset_=notImplemented"Js.Date""getTimezoneOffset"(** return the day of the month (1-31) *)letgetUTCDate_=notImplemented"Js.Date""getUTCDate"(** returns the day of the week (0-6) *)letgetUTCDay_=notImplemented"Js.Date""getUTCDay"letgetUTCFullYear_=notImplemented"Js.Date""getUTCFullYear"letgetUTCHours_=notImplemented"Js.Date""getUTCHours"letgetUTCMilliseconds_=notImplemented"Js.Date""getUTCMilliseconds"letgetUTCMinutes_=notImplemented"Js.Date""getUTCMinutes"(** returns the month (0-11) *)letgetUTCMonth_=notImplemented"Js.Date""getUTCMonth"letgetUTCSeconds_=notImplemented"Js.Date""getUTCSeconds"letsetDate__=notImplemented"Js.Date""setDate"letsetFullYear_=notImplemented"Js.Date""setFullYear"letsetFullYearM~year:_~month:_=notImplemented"Js.Date""setFullYearM"letsetFullYearMD~year:_~month:_~date:_=notImplemented"Js.Date""setFullYearMD"letsetHours_=notImplemented"Js.Date""setHours"letsetHoursM~hours:_~minutes:_=notImplemented"Js.Date""setHoursM"letsetHoursMS~hours:_~minutes:_=notImplemented"Js.Date""setHoursMS"letsetHoursMSMs~hours:_~minutes:_~seconds:_~milliseconds:__=notImplemented"Js.Date""setHoursMSMs"letsetMilliseconds_=notImplemented"Js.Date""setMilliseconds"letsetMinutes_=notImplemented"Js.Date""setMinutes"letsetMinutesS~minutes:_=notImplemented"Js.Date""setMinutesS"letsetMinutesSMs~minutes:_=notImplemented"Js.Date""setMinutesSMs"letsetMonth_=notImplemented"Js.Date""setMonth"letsetMonthD~month:_~date:__=notImplemented"Js.Date""setMonthD"letsetSeconds_=notImplemented"Js.Date""setSeconds"letsetSecondsMs~seconds:_~milliseconds:__=notImplemented"Js.Date""setSecondsMs"letsetTime_=notImplemented"Js.Date""setTime"letsetUTCDate_=notImplemented"Js.Date""setUTCDate"letsetUTCFullYear_=notImplemented"Js.Date""setUTCFullYear"letsetUTCFullYearM~year:_~month:__=notImplemented"Js.Date""setUTCFullYearM"letsetUTCFullYearMD~year:_~month:_~date:__=notImplemented"Js.Date""setUTCFullYearMD"letsetUTCHours_=notImplemented"Js.Date""setUTCHours"letsetUTCHoursM~hours:_~minutes:_=notImplemented"Js.Date""setUTCHoursM"letsetUTCHoursMS~hours:_~minutes:_=notImplemented"Js.Date""setUTCHoursMS"letsetUTCHoursMSMs~hours:_~minutes:_~seconds:_~milliseconds:__=notImplemented"Js.Date""setUTCHoursMSMs"letsetUTCMilliseconds_=notImplemented"Js.Date""setUTCMilliseconds"letsetUTCMinutes_=notImplemented"Js.Date""setUTCMinutes"letsetUTCMinutesS~minutes:_=notImplemented"Js.Date""setUTCMinutesS"letsetUTCMinutesSMs~minutes:_=notImplemented"Js.Date""setUTCMinutesSMs"letsetUTCMonth_=notImplemented"Js.Date""setUTCMonth"letsetUTCMonthD~month:_~date:__=notImplemented"Js.Date""setUTCMonthD"letsetUTCSeconds_=notImplemented"Js.Date""setUTCSeconds"letsetUTCSecondsMs~seconds:_=notImplemented"Js.Date""setUTCSecondsMs"letsetUTCTime_=notImplemented"Js.Date""setUTCTime"lettoDateStringstring=notImplemented"Js.Date""toDateString"lettoISOStringstring=notImplemented"Js.Date""toISOString"lettoJSONstring=notImplemented"Js.Date""toJSON"lettoJSONUnsafestring=notImplemented"Js.Date""toJSONUnsafe"lettoLocaleDateStringstring=notImplemented"Js.Date""toLocaleDateString"(* TODO: has overloads with somewhat poor browser support *)lettoLocaleStringstring=notImplemented"Js.Date""toLocaleString"(* TODO: has overloads with somewhat poor browser support *)lettoLocaleTimeStringstring=notImplemented"Js.Date""toLocaleTimeString"(* TODO: has overloads with somewhat poor browser support *)lettoStringstring=notImplemented"Js.Date""toString"lettoTimeStringstring=notImplemented"Js.Date""toTimeString"lettoUTCStringstring=notImplemented"Js.Date""toUTCString"endmoduletypeDictionary=sig(* Implemented as an associative list *)type'attypekey=stringvalget:'at->key->'anullablevalunsafeGet:'at->key->'avalset:'at->key->'a->unitvalkeys:'at->keyarrayvalempty:unit->'atvalunsafeDeleteKey:keyt->key->unitvalentries:'at->(key*'a)arrayvalvalues:'at->'aarrayvalfromList:(key*'a)list->'atvalfromArray:(key*'a)array->'atvalmap:f:('a->'b)->'at->'btendmoduleDict:Dictionary=struct(** Provide utilities for JS dictionary object *)typekey=stringtype'at=(key,'a)Hashtbl.tletempty():'at=Hashtbl.create10letentries(dict:'at):(string*'a)array=Hashtbl.fold(funkvacc->(k,v)::acc)dict[]|>Stdlib.Array.of_listletget(dict:'at)(k:key):'aoption=trySome(Hashtbl.finddictk)withNot_found->Noneletmap~(f:'a->'b)(dict:'at)=Hashtbl.fold(funkvacc->Hashtbl.addacck(fv);acc)dict(empty())letset(dict:'at)(k:key)(x:'a):unit=Hashtbl.replacedictkxletfromList(lst:(key*'a)list):'at=letlength=Stdlib.List.lengthlstinletdict=Hashtbl.createlengthinStdlib.List.iter(fun(k,v)->Hashtbl.adddictkv)lst;dictletfromArray(arr:(key*'a)array):'at=letlength=Stdlib.Array.lengtharrinletdict=Hashtbl.createlengthinStdlib.Array.iter(fun(k,v)->Hashtbl.adddictkv)arr;dictletkeys(dict:'at)=Hashtbl.fold(funk_acc->k::acc)dict[]|>Stdlib.Array.of_listletvalues(dict:'at)=Hashtbl.fold(fun_kvalueacc->value::acc)dict[]|>Stdlib.Array.of_listletunsafeGet(dict:'at)(k:key):'a=Hashtbl.finddictkletunsafeDeleteKey(dict:'at)(key:key)=Hashtbl.removedictkeyendmoduleGlobal:sig(** Contains functions available in the global scope
([window] in a browser context) *)typeintervalId(** Identify an interval started by {! setInterval} *)typetimeoutId(** Identify timeout started by {! setTimeout} *)valclearInterval:intervalId->unitvalclearTimeout:timeoutId->unitvalsetInterval:f:(unit->unit)->int->intervalIdvalsetIntervalFloat:f:(unit->unit)->float->intervalIdvalsetTimeout:f:(unit->unit)->int->timeoutIdvalsetTimeoutFloat:f:(unit->unit)->float->timeoutIdvalencodeURI:string->stringvaldecodeURI:string->stringvalencodeURIComponent:string->stringvaldecodeURIComponent:string->stringend=structtypeintervalIdtypetimeoutIdletclearInterval_intervalId=notImplemented"Js.Global""clearInterval"letclearTimeout_timeoutId=notImplemented"Js.Global""clearTimeout"letsetInterval~f:__=notImplemented"Js.Global""setInterval"letsetIntervalFloat~f:__=notImplemented"Js.Global""setInterval"letsetTimeout~f:__=notImplemented"Js.Global""setTimeout"letsetTimeoutFloat~f:__=notImplemented"Js.Global""setTimeout"letencodeURI_string=notImplemented"Js.Global""encodeURI"letdecodeURI_string=notImplemented"Js.Global""decodeURI"letencodeURIComponent_string=notImplemented"Js.Global""encodeURIComponent"letdecodeURIComponent_string=notImplemented"Js.Global""decodeURIComponent"endmoduleTypes=struct(** Provide utilities for manipulating JS types *)typesymbol(**Js symbol type only available in ES6 *)typebigint_val(** Js bigint type only available in ES2020 *)typeobj_valtypeundefined_val(** This type has only one value [undefined] *)typenull_val(** This type has only one value [null] *)typefunction_valtype_t=|Undefined:undefined_valt|Null:null_valt|Boolean:boolt|Number:floatt|String:stringt|Function:function_valt|Object:obj_valt|Symbol:symbolt|BigInt:bigint_valt(** {[
test "x" String = true
]}*)lettest__=notImplemented"Js.Types""test"typetagged_t=|JSFalse|JSTrue|JSNull|JSUndefined|JSNumberoffloat|JSStringofstring|JSFunctionoffunction_val|JSObjectofobj_val|JSSymbolofsymbol|JSBigIntofbigint_valletclassify_=notImplemented"Js.Types""classify"endmoduleJson=struct(* Efficient JSON encoding using JavaScript API *)typettype_kind=|String:String.tkind|Number:floatkind|Object:tDict.tkind|Array:tarraykind|Boolean:boolkind|Null:Types.null_valkindtypetagged_t=|JSONFalse|JSONTrue|JSONNull|JSONStringofstring|JSONNumberoffloat|JSONObjectoftDict.t|JSONArrayoftarrayletclassify(_x:t):tagged_t=notImplemented"Js.Json""classify"lettest_:bool=notImplemented"Js.Json""test"letdecodeStringjson=notImplemented"Js.Json""decodeString"letdecodeNumberjson=notImplemented"Js.Json""decodeNumber"letdecodeObjectjson=notImplemented"Js.Json""decodeObject"letdecodeArrayjson=notImplemented"Js.Json""decodeArray"letdecodeBoolean(json:t)=notImplemented"Js.Json""decodeBoolean"letdecodeNulljson=notImplemented"Js.Json""decodeNull"letparseExn_=notImplemented"Js.Json""parseExn"letstringifyAny_=notImplemented"Js.Json""stringifyAny"letnull_=notImplemented"Js.Json""null"letstring_=notImplemented"Js.Json""string"letnumber_=notImplemented"Js.Json""number"letboolean_=notImplemented"Js.Json""boolean"letobject__=notImplemented"Js.Json""object_"letarray_=notImplemented"Js.Json""array"letstringArray_=notImplemented"Js.Json""stringArray"letnumberArray_=notImplemented"Js.Json""numberArray"letbooleanArray_=notImplemented"Js.Json""booleanArray"letobjectArray_=notImplemented"Js.Json""objectArray"letstringify_=notImplemented"Js.Json""stringify"letstringifyWithSpace_=notImplemented"Js.Json""stringifyWithSpace"letpatch_=notImplemented"Js.Json""patch"letserializeExn(_x:t):string=notImplemented"Js.Json""serializeExn"letdeserializeUnsafe(s:string):'a=notImplemented"Js.Json""mplemented"endmoduleMath:sigval_E:floatval_LN2:floatval_LN10:floatval_LOG2E:floatval_LOG10E:floatval_PI:floatval_SQRT1_2:floatval_SQRT2:floatvalabs_int:int->intvalabs_float:float->floatvalacos:float->floatvalacosh:float->floatvalasin:float->floatvalasinh:float->floatvalatan:float->floatvalatanh:float->floatvalatan2:y:float->x:float->floatvalcbrt:float->floatvalunsafe_ceil_int:float->intvalceil_int:float->intvalceil_float:float->floatvalclz32:int->intvalcos:float->floatvalcosh:float->floatvalexp:float->floatvalexpm1:float->floatvalunsafe_floor_int:float->intvalfloor_int:float->intvalfloor_float:float->floatvalfround:float->floatvalhypot:float->float->floatvalhypotMany:floatarray->floatvalimul:int->int->intvallog:float->floatvallog1p:float->floatvallog10:float->floatvallog2:float->floatvalmax_int:int->int->intvalmaxMany_int:intarray->intvalmax_float:float->float->floatvalmaxMany_float:floatarray->floatvalmin_int:int->int->intvalminMany_int:intarray->intvalmin_float:float->float->floatvalminMany_float:floatarray->floatvalpow_float:base:float->exp:float->floatvalrandom:unit->floatvalrandom_int:int->int->intvalunsafe_round:float->intvalround:float->floatvalsign_int:int->intvalsign_float:float->floatvalsin:float->floatvalsinh:float->floatvalsqrt:float->floatvaltan:float->floatvaltanh:float->floatvalunsafe_trunc:float->intvaltrunc:float->floatend=struct(** JavaScript Math API *)(** Euler's number *)let_E=2.718281828459045(** natural logarithm of 2 *)let_LN2=0.6931471805599453(** natural logarithm of 10 *)let_LN10=2.302585092994046(** base 2 logarithm of E *)let_LOG2E=1.4426950408889634(** base 10 logarithm of E *)let_LOG10E=0.4342944819032518(** Pi... (ratio of the circumference and diameter of a circle) *)let_PI=3.141592653589793(** square root of 1/2 *)let_SQRT1_2=0.7071067811865476(** square root of 2 *)let_SQRT2=1.41421356237(** absolute value *)letabs_int_=notImplemented"Js.Math""abs_int"letabs_float_=notImplemented"Js.Math""abs_float"letacos_=notImplemented"Js.Math""acos"letacosh_=notImplemented"Js.Math""acosh"letasin_=notImplemented"Js.Math""asin"letasinh_=notImplemented"Js.Math""asinh"letatan_=notImplemented"Js.Math""atan"letatanh_=notImplemented"Js.Math""atanh"letatan2~y:_~x:_=notImplemented"Js.Math""atan2"letcbrt_=notImplemented"Js.Math""cbrt"letunsafe_ceil_int_=notImplemented"Js.Math""unsafe_ceil_int"letceil_int_=notImplemented"Js.Math""ceil_int"letceil_float_=notImplemented"Js.Math""ceil_float"letclz32_=notImplemented"Js.Math""clz32"letcos=cosletcosh_=notImplemented"Js.Math""cosh"letexp_=notImplemented"Js.Math""exp"letexpm1_=notImplemented"Js.Math""expm1"letunsafe_floor_int_=notImplemented"Js.Math""unsafe_floor_int"letfloor_int_f=notImplemented"Js.Math""floor_int"letfloor_float_=notImplemented"Js.Math""floor_float"letfround_=notImplemented"Js.Math""fround"lethypot_=notImplemented"Js.Math""hypot"lethypotMany_=notImplemented"Js.Math""hypotMany"letimul_=notImplemented"Js.Math""imul"letlog_=notImplemented"Js.Math""log"letlog1p_=notImplemented"Js.Math""log1p"letlog10_=notImplemented"Js.Math""log10"letlog2_=notImplemented"Js.Math""log2"letmax_int_=notImplemented"Js.Math""max_int"letmaxMany_int_=notImplemented"Js.Math""maxMany_int"letmax_float_=notImplemented"Js.Math""max_float"letmaxMany_float_=notImplemented"Js.Math""maxMany_float"letmin_int_=notImplemented"Js.Math""min_int"letminMany_int_=notImplemented"Js.Math""minMany_int"letmin_float_=notImplemented"Js.Math""min_float"letminMany_float_=notImplemented"Js.Math""minMany_float"letpow_float~base:_~exp:_=notImplemented"Js.Math""pow_float"letrandom_=notImplemented"Js.Math""random"letrandom_int_min_max=notImplemented"Js.Math""random_int"letunsafe_round_=notImplemented"Js.Math""unsafe_round"letround_=notImplemented"Js.Math""round"letsign_int_=notImplemented"Js.Math""sign_int"letsign_float_=notImplemented"Js.Math""sign_float"letsin=sinletsinh_=notImplemented"Js.Math""sinh"letsqrt_=notImplemented"Js.Math""sqrt"lettan_=notImplemented"Js.Math""tan"lettanh_=notImplemented"Js.Math""tanh"letunsafe_trunc_=notImplemented"Js.Math""unsafe_trunc"lettrunc_=notImplemented"Js.Math""trunc"endmoduleObj=struct(** Provide utilities for {!Js.t} *)letempty_=notImplemented"Js.Obj""empty"letassign__=notImplemented"Js.Obj""assign"letkeys_=notImplemented"Js.Obj""keys"endmoduleTyped_array=struct(** Provide bindings for JS typed array *)moduleUint16Array=structtypetendmoduleUint8ClampedArray=structtypetendmoduleFloat32Array=structtypetendendmoduleTypedArray2=struct(** Provide bindings for JS typed array *)endmoduleFloat:sig(** Provides functions for inspecting and manipulating [float]s *)typet=floatval_NaN:tvalisNaN:t->boolvalisFinite:t->boolvaltoExponential:?digits:int->t->stringvaltoFixed:?digits:int->t->stringvaltoPrecision:?digits:int->t->stringvaltoString:?radix:int->t->stringvalfromString:string->tend=structtypet=floatlet_NaN=Stdlib.Float.nanletisNaNfloat=Stdlib.Float.is_nanfloatletisFinitefloat=Stdlib.Float.is_finitefloatlettoExponential?digits:__=notImplemented"Js.Float""toExponential"lettoFixed?digits:__=notImplemented"Js.Float""toFixed"lettoPrecision?digits:__=notImplemented"Js.Float""toPrecision"lettoString?radixf=matchradixwith|None->(* round x rounds x to the nearest integer with ties (fractional values of 0.5) rounded away from zero, regardless of the current rounding direction. If x is an integer, +0., -0., nan, or infinite, x itself is returned.
On 64-bit mingw-w64, this function may be emulated owing to a bug in the C runtime library (CRT) on this platform. *)(* if round(f) == f, print the integer (since string_of_float 1.0 => "1.") *)ifStdlib.Float.equal(Stdlib.Float.roundf)fthenf|>int_of_float|>string_of_intelsePrintf.sprintf"%g"f|Some_->notImplemented"Js.Float""toString ~radix"letfromString=Stdlib.float_of_stringendmoduleInt:sig(** Provides functions for inspecting and manipulating [int]s *)typet=intvaltoExponential:?digits:t->t->stringvaltoPrecision:?digits:t->t->stringvaltoString:?radix:t->t->stringvaltoFloat:t->floatvalequal:t->t->boolvalmax:tvalmin:tend=structtypet=intlettoExponential?digits:__=notImplemented"Js.Int""toExponential"lettoPrecision?digits:__=notImplemented"Js.Int""toPrecision"lettoString?radixint=matchradixwith|None->Stdlib.string_of_intint|Some_->notImplemented"Js.Int""toString ~radix"lettoFloatint=Stdlib.float_of_intintletequal=Stdlib.Int.equalletmax=2147483647letmin=-2147483648endmoduleBigint=struct(** Provide utilities for bigint *)endmoduleVector=struct(** Provide utilities for Vector *)type'at='aarrayletfilterInPlace_=notImplemented"Js.Vector""filterInPlace"letempty_=notImplemented"Js.Vector""empty"letpushBack_=notImplemented"Js.Vector""pushBack"letcopy_=notImplemented"Js.Vector""copy"letmemByRef_=notImplemented"Js.Vector""memByRef"letiter_=notImplemented"Js.Vector""iter"letiteri_=notImplemented"Js.Vector""iteri"lettoList_=notImplemented"Js.Vector""toList"letmap_=notImplemented"Js.Vector""map"letmapi_=notImplemented"Js.Vector""mapi"letfoldLeft_=notImplemented"Js.Vector""foldLeft"letfoldRight_=notImplemented"Js.Vector""foldRight"externallength:'at->int="%array_length"externalget:'at->int->'a="%array_safe_get"externalset:'at->int->'a->unit="%array_safe_set"externalmake:int->'a->'at="caml_make_vect"letinit_=notImplemented"Js.Vector""init"letappend_=notImplemented"Js.Vector""append"externalunsafe_get:'at->int->'a="%array_unsafe_get"externalunsafe_set:'at->int->'a->unit="%array_unsafe_set"endmoduleConsole=structletlog_=()letlog2__=()letlog3___=()letlog4____=()letlogMany_arr=()letinfo=logletinfo2=log2letinfo3=log3letinfo4=log4letinfoMany=logManyleterror=logleterror2=log2leterror3=log3leterror4=log4leterrorMany=logManyletwarn=logletwarn2=log2letwarn3=log3letwarn4=log4letwarnMany=logManylettrace()=()lettimeStart_=()lettimeEnd_=()endletlog=Console.logletlog2=Console.log2letlog3=Console.log3letlog4=Console.log4letlogMany=Console.logManymoduleSet=struct(** Provides bindings for ES6 Set *)type'atendmoduleWeakSet=struct(** Provides bindings for ES6 WeakSet *)type'atendmoduleMap=struct(** Provides bindings for ES6 Map *)type('k,'v)tendmoduleWeakMap=struct(** Provides bindings for ES6 WeakMap *)type('k,'v)tend