123456789101112131415161718192021222324lethash_location=""(* TODO: Maybe this should be implemented? *)letpath?serverUrlString:_()=[](* TODO: Maybe this should be implemented? *)letsearch?serverUrlString:_()=""letpush(_path:string)=()letreplace(_path:string)=()typeurl={path:stringlist;hash:string;search:string}typewatcherID=unit->unitleturl?serverUrlString()={path=path?serverUrlString();hash=hash();search=search?serverUrlString();}letdangerouslyGetInitialUrl=urlletwatchUrl_callback()=()letunwatchUrl_watcherID=()letuseUrl?serverUrl:_()=url()