12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273(*
* Copyright (c) 2021 Craig Ferguson <craig@tarides.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*)open!ImportopenS.Store_propertiesmoduletypeS=sigmoduleHash:Hash.S(** Internal hashes. *)moduleContents:Contents.STOREwithtypekey=Hash.t(** Private content store. *)moduleNode:Node.STOREwithtypekey=Hash.t(** Private node store. *)moduleCommit:Commit.STOREwithtypekey=Hash.t(** Private commit store. *)moduleBranch:Branch.STOREwithtypevalue=Hash.t(** Private branch store. *)(** Private slices. *)moduleSlice:Slice.Swithtypecontents=Contents.key*Contents.valueandtypenode=Node.key*Node.valueandtypecommit=Commit.key*Commit.value(** Private repositories. *)moduleRepo:sigtypetincludeOF_CONFIGwithtype_t:=t(** @inline *)includeCLOSEABLEwithtype_t:=t(** @inline *)valcontents_t:t->readContents.tvalnode_t:t->readNode.tvalcommit_t:t->readCommit.tvalbranch_t:t->Branch.tvalbatch:t->(read_writeContents.t->read_writeNode.t->read_writeCommit.t->'aLwt.t)->'aLwt.tend(** URI-based low-level sync. *)moduleSync:sigincludeSync.Swithtypecommit=Commit.keyandtypebranch=Branch.keyvalv:Repo.t->tLwt.tendend