@tellahq/rescript 10.1.4-republish-2 → 10.1.4-republish-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/darwin/bsb_helper.exe +0 -0
  2. package/darwin/bsc.exe +0 -0
  3. package/darwin/ninja.exe +0 -0
  4. package/darwin/rescript.exe +0 -0
  5. package/darwinarm64/bsb_helper.exe +0 -0
  6. package/darwinarm64/bsc.exe +0 -0
  7. package/darwinarm64/ninja.exe +0 -0
  8. package/darwinarm64/rescript.exe +0 -0
  9. package/lib/ocaml/arg.cmi +0 -0
  10. package/lib/ocaml/arg.cmt +0 -0
  11. package/lib/ocaml/arg.cmti +0 -0
  12. package/lib/ocaml/arg.ml +359 -0
  13. package/lib/ocaml/arg.mli +185 -0
  14. package/lib/ocaml/array.cmi +0 -0
  15. package/lib/ocaml/array.cmt +0 -0
  16. package/lib/ocaml/array.cmti +0 -0
  17. package/lib/ocaml/array.ml +307 -0
  18. package/lib/ocaml/array.mli +275 -0
  19. package/lib/ocaml/arrayLabels.cmi +0 -0
  20. package/lib/ocaml/arrayLabels.cmt +0 -0
  21. package/lib/ocaml/arrayLabels.cmti +0 -0
  22. package/lib/ocaml/arrayLabels.ml +307 -0
  23. package/lib/ocaml/arrayLabels.mli +276 -0
  24. package/lib/ocaml/belt.cmi +0 -0
  25. package/lib/ocaml/belt.cmt +0 -0
  26. package/lib/ocaml/belt.ml +352 -0
  27. package/lib/ocaml/belt_Array.cmi +0 -0
  28. package/lib/ocaml/belt_Array.cmt +0 -0
  29. package/lib/ocaml/belt_Array.cmti +0 -0
  30. package/lib/ocaml/belt_Array.ml +525 -0
  31. package/lib/ocaml/belt_Array.mli +707 -0
  32. package/lib/ocaml/belt_Float.cmi +0 -0
  33. package/lib/ocaml/belt_Float.cmt +0 -0
  34. package/lib/ocaml/belt_Float.cmti +0 -0
  35. package/lib/ocaml/belt_Float.ml +50 -0
  36. package/lib/ocaml/belt_Float.mli +106 -0
  37. package/lib/ocaml/belt_HashMap.cmi +0 -0
  38. package/lib/ocaml/belt_HashMap.cmt +0 -0
  39. package/lib/ocaml/belt_HashMap.cmti +0 -0
  40. package/lib/ocaml/belt_HashMap.ml +226 -0
  41. package/lib/ocaml/belt_HashMap.mli +436 -0
  42. package/lib/ocaml/belt_HashMapInt.cmi +0 -0
  43. package/lib/ocaml/belt_HashMapInt.cmt +0 -0
  44. package/lib/ocaml/belt_HashMapInt.cmti +0 -0
  45. package/lib/ocaml/belt_HashMapInt.ml +206 -0
  46. package/lib/ocaml/belt_HashMapInt.mli +50 -0
  47. package/lib/ocaml/belt_HashMapString.cmi +0 -0
  48. package/lib/ocaml/belt_HashMapString.cmt +0 -0
  49. package/lib/ocaml/belt_HashMapString.cmti +0 -0
  50. package/lib/ocaml/belt_HashMapString.ml +206 -0
  51. package/lib/ocaml/belt_HashMapString.mli +50 -0
  52. package/lib/ocaml/belt_HashSet.cmi +0 -0
  53. package/lib/ocaml/belt_HashSet.cmt +0 -0
  54. package/lib/ocaml/belt_HashSet.cmti +0 -0
  55. package/lib/ocaml/belt_HashSet.ml +196 -0
  56. package/lib/ocaml/belt_HashSet.mli +125 -0
  57. package/lib/ocaml/belt_HashSetInt.cmi +0 -0
  58. package/lib/ocaml/belt_HashSetInt.cmt +0 -0
  59. package/lib/ocaml/belt_HashSetInt.cmti +0 -0
  60. package/lib/ocaml/belt_HashSetInt.ml +155 -0
  61. package/lib/ocaml/belt_HashSetInt.mli +74 -0
  62. package/lib/ocaml/belt_HashSetString.cmi +0 -0
  63. package/lib/ocaml/belt_HashSetString.cmt +0 -0
  64. package/lib/ocaml/belt_HashSetString.cmti +0 -0
  65. package/lib/ocaml/belt_HashSetString.ml +156 -0
  66. package/lib/ocaml/belt_HashSetString.mli +74 -0
  67. package/lib/ocaml/belt_Id.cmi +0 -0
  68. package/lib/ocaml/belt_Id.cmt +0 -0
  69. package/lib/ocaml/belt_Id.cmti +0 -0
  70. package/lib/ocaml/belt_Id.ml +133 -0
  71. package/lib/ocaml/belt_Id.mli +171 -0
  72. package/lib/ocaml/belt_Int.cmi +0 -0
  73. package/lib/ocaml/belt_Int.cmt +0 -0
  74. package/lib/ocaml/belt_Int.cmti +0 -0
  75. package/lib/ocaml/belt_Int.ml +50 -0
  76. package/lib/ocaml/belt_Int.mli +103 -0
  77. package/lib/ocaml/belt_List.cmi +0 -0
  78. package/lib/ocaml/belt_List.cmt +0 -0
  79. package/lib/ocaml/belt_List.cmti +0 -0
  80. package/lib/ocaml/belt_List.ml +803 -0
  81. package/lib/ocaml/belt_List.mli +844 -0
  82. package/lib/ocaml/belt_Map.cmi +0 -0
  83. package/lib/ocaml/belt_Map.cmt +0 -0
  84. package/lib/ocaml/belt_Map.cmti +0 -0
  85. package/lib/ocaml/belt_Map.ml +170 -0
  86. package/lib/ocaml/belt_Map.mli +496 -0
  87. package/lib/ocaml/belt_MapDict.cmi +0 -0
  88. package/lib/ocaml/belt_MapDict.cmt +0 -0
  89. package/lib/ocaml/belt_MapDict.cmti +0 -0
  90. package/lib/ocaml/belt_MapDict.ml +278 -0
  91. package/lib/ocaml/belt_MapDict.mli +268 -0
  92. package/lib/ocaml/belt_MapInt.cmi +0 -0
  93. package/lib/ocaml/belt_MapInt.cmt +0 -0
  94. package/lib/ocaml/belt_MapInt.cmti +0 -0
  95. package/lib/ocaml/belt_MapInt.ml +169 -0
  96. package/lib/ocaml/belt_MapInt.mli +187 -0
  97. package/lib/ocaml/belt_MapString.cmi +0 -0
  98. package/lib/ocaml/belt_MapString.cmt +0 -0
  99. package/lib/ocaml/belt_MapString.cmti +0 -0
  100. package/lib/ocaml/belt_MapString.ml +169 -0
  101. package/lib/ocaml/belt_MapString.mli +187 -0
  102. package/lib/ocaml/belt_MutableMap.cmi +0 -0
  103. package/lib/ocaml/belt_MutableMap.cmt +0 -0
  104. package/lib/ocaml/belt_MutableMap.cmti +0 -0
  105. package/lib/ocaml/belt_MutableMap.ml +241 -0
  106. package/lib/ocaml/belt_MutableMap.mli +145 -0
  107. package/lib/ocaml/belt_MutableMapInt.cmi +0 -0
  108. package/lib/ocaml/belt_MutableMapInt.cmt +0 -0
  109. package/lib/ocaml/belt_MutableMapInt.cmti +0 -0
  110. package/lib/ocaml/belt_MutableMapInt.ml +172 -0
  111. package/lib/ocaml/belt_MutableMapInt.mli +135 -0
  112. package/lib/ocaml/belt_MutableMapString.cmi +0 -0
  113. package/lib/ocaml/belt_MutableMapString.cmt +0 -0
  114. package/lib/ocaml/belt_MutableMapString.cmti +0 -0
  115. package/lib/ocaml/belt_MutableMapString.ml +172 -0
  116. package/lib/ocaml/belt_MutableMapString.mli +135 -0
  117. package/lib/ocaml/belt_MutableQueue.cmi +0 -0
  118. package/lib/ocaml/belt_MutableQueue.cmt +0 -0
  119. package/lib/ocaml/belt_MutableQueue.cmti +0 -0
  120. package/lib/ocaml/belt_MutableQueue.ml +222 -0
  121. package/lib/ocaml/belt_MutableQueue.mli +116 -0
  122. package/lib/ocaml/belt_MutableSet.cmi +0 -0
  123. package/lib/ocaml/belt_MutableSet.cmt +0 -0
  124. package/lib/ocaml/belt_MutableSet.cmti +0 -0
  125. package/lib/ocaml/belt_MutableSet.ml +371 -0
  126. package/lib/ocaml/belt_MutableSet.mli +617 -0
  127. package/lib/ocaml/belt_MutableSetInt.cmi +0 -0
  128. package/lib/ocaml/belt_MutableSetInt.cmt +0 -0
  129. package/lib/ocaml/belt_MutableSetInt.cmti +0 -0
  130. package/lib/ocaml/belt_MutableSetInt.ml +342 -0
  131. package/lib/ocaml/belt_MutableSetInt.mli +124 -0
  132. package/lib/ocaml/belt_MutableSetString.cmi +0 -0
  133. package/lib/ocaml/belt_MutableSetString.cmt +0 -0
  134. package/lib/ocaml/belt_MutableSetString.cmti +0 -0
  135. package/lib/ocaml/belt_MutableSetString.ml +342 -0
  136. package/lib/ocaml/belt_MutableSetString.mli +124 -0
  137. package/lib/ocaml/belt_MutableStack.cmi +0 -0
  138. package/lib/ocaml/belt_MutableStack.cmt +0 -0
  139. package/lib/ocaml/belt_MutableStack.cmti +0 -0
  140. package/lib/ocaml/belt_MutableStack.ml +106 -0
  141. package/lib/ocaml/belt_MutableStack.mli +63 -0
  142. package/lib/ocaml/belt_Option.cmi +0 -0
  143. package/lib/ocaml/belt_Option.cmt +0 -0
  144. package/lib/ocaml/belt_Option.cmti +0 -0
  145. package/lib/ocaml/belt_Option.ml +93 -0
  146. package/lib/ocaml/belt_Option.mli +270 -0
  147. package/lib/ocaml/belt_Range.cmi +0 -0
  148. package/lib/ocaml/belt_Range.cmt +0 -0
  149. package/lib/ocaml/belt_Range.cmti +0 -0
  150. package/lib/ocaml/belt_Range.ml +76 -0
  151. package/lib/ocaml/belt_Range.mli +114 -0
  152. package/lib/ocaml/belt_Result.cmi +0 -0
  153. package/lib/ocaml/belt_Result.cmt +0 -0
  154. package/lib/ocaml/belt_Result.cmti +0 -0
  155. package/lib/ocaml/belt_Result.ml +75 -0
  156. package/lib/ocaml/belt_Result.mli +205 -0
  157. package/lib/ocaml/belt_Set.cmi +0 -0
  158. package/lib/ocaml/belt_Set.cmt +0 -0
  159. package/lib/ocaml/belt_Set.cmti +0 -0
  160. package/lib/ocaml/belt_Set.cppo.ml +205 -0
  161. package/lib/ocaml/belt_Set.cppo.mli +153 -0
  162. package/lib/ocaml/belt_Set.ml +164 -0
  163. package/lib/ocaml/belt_Set.mli +523 -0
  164. package/lib/ocaml/belt_SetDict.cmi +0 -0
  165. package/lib/ocaml/belt_SetDict.cmt +0 -0
  166. package/lib/ocaml/belt_SetDict.cmti +0 -0
  167. package/lib/ocaml/belt_SetDict.ml +237 -0
  168. package/lib/ocaml/belt_SetDict.mli +567 -0
  169. package/lib/ocaml/belt_SetInt.cmi +0 -0
  170. package/lib/ocaml/belt_SetInt.cmt +0 -0
  171. package/lib/ocaml/belt_SetInt.cmti +0 -0
  172. package/lib/ocaml/belt_SetInt.ml +201 -0
  173. package/lib/ocaml/belt_SetInt.mli +151 -0
  174. package/lib/ocaml/belt_SetString.cmi +0 -0
  175. package/lib/ocaml/belt_SetString.cmt +0 -0
  176. package/lib/ocaml/belt_SetString.cmti +0 -0
  177. package/lib/ocaml/belt_SetString.ml +201 -0
  178. package/lib/ocaml/belt_SetString.mli +151 -0
  179. package/lib/ocaml/belt_SortArray.cmi +0 -0
  180. package/lib/ocaml/belt_SortArray.cmt +0 -0
  181. package/lib/ocaml/belt_SortArray.cmti +0 -0
  182. package/lib/ocaml/belt_SortArray.ml +322 -0
  183. package/lib/ocaml/belt_SortArray.mli +146 -0
  184. package/lib/ocaml/belt_SortArrayInt.cmi +0 -0
  185. package/lib/ocaml/belt_SortArrayInt.cmt +0 -0
  186. package/lib/ocaml/belt_SortArrayInt.cmti +0 -0
  187. package/lib/ocaml/belt_SortArrayInt.ml +263 -0
  188. package/lib/ocaml/belt_SortArrayInt.mli +93 -0
  189. package/lib/ocaml/belt_SortArrayString.cmi +0 -0
  190. package/lib/ocaml/belt_SortArrayString.cmt +0 -0
  191. package/lib/ocaml/belt_SortArrayString.cmti +0 -0
  192. package/lib/ocaml/belt_SortArrayString.ml +263 -0
  193. package/lib/ocaml/belt_SortArrayString.mli +93 -0
  194. package/lib/ocaml/belt_internalAVLset.cmt +0 -0
  195. package/lib/ocaml/belt_internalAVLset.cmti +0 -0
  196. package/lib/ocaml/belt_internalAVLset.ml +665 -0
  197. package/lib/ocaml/belt_internalAVLset.mli +124 -0
  198. package/lib/ocaml/belt_internalAVLtree.cmt +0 -0
  199. package/lib/ocaml/belt_internalAVLtree.cmti +0 -0
  200. package/lib/ocaml/belt_internalAVLtree.ml +762 -0
  201. package/lib/ocaml/belt_internalAVLtree.mli +215 -0
  202. package/lib/ocaml/belt_internalBuckets.cmt +0 -0
  203. package/lib/ocaml/belt_internalBuckets.cmti +0 -0
  204. package/lib/ocaml/belt_internalBuckets.ml +218 -0
  205. package/lib/ocaml/belt_internalBuckets.mli +57 -0
  206. package/lib/ocaml/belt_internalBucketsType.cmt +0 -0
  207. package/lib/ocaml/belt_internalBucketsType.cmti +0 -0
  208. package/lib/ocaml/belt_internalBucketsType.ml +59 -0
  209. package/lib/ocaml/belt_internalBucketsType.mli +46 -0
  210. package/lib/ocaml/belt_internalMapInt.cmt +0 -0
  211. package/lib/ocaml/belt_internalMapInt.ml +227 -0
  212. package/lib/ocaml/belt_internalMapString.cmt +0 -0
  213. package/lib/ocaml/belt_internalMapString.ml +227 -0
  214. package/lib/ocaml/belt_internalSetBuckets.cmt +0 -0
  215. package/lib/ocaml/belt_internalSetBuckets.cmti +0 -0
  216. package/lib/ocaml/belt_internalSetBuckets.ml +157 -0
  217. package/lib/ocaml/belt_internalSetBuckets.mli +47 -0
  218. package/lib/ocaml/belt_internalSetInt.cmt +0 -0
  219. package/lib/ocaml/belt_internalSetInt.ml +129 -0
  220. package/lib/ocaml/belt_internalSetString.cmt +0 -0
  221. package/lib/ocaml/belt_internalSetString.ml +129 -0
  222. package/lib/ocaml/belt_internals.cmti +0 -0
  223. package/lib/ocaml/belt_internals.mli +79 -0
  224. package/lib/ocaml/buffer.cmi +0 -0
  225. package/lib/ocaml/buffer.cmt +0 -0
  226. package/lib/ocaml/buffer.cmti +0 -0
  227. package/lib/ocaml/buffer.ml +250 -0
  228. package/lib/ocaml/buffer.mli +149 -0
  229. package/lib/ocaml/bytes.cmi +0 -0
  230. package/lib/ocaml/bytes.cmt +0 -0
  231. package/lib/ocaml/bytes.cmti +0 -0
  232. package/lib/ocaml/bytes.ml +431 -0
  233. package/lib/ocaml/bytes.mli +430 -0
  234. package/lib/ocaml/bytesLabels.cmi +0 -0
  235. package/lib/ocaml/bytesLabels.cmt +0 -0
  236. package/lib/ocaml/bytesLabels.cmti +0 -0
  237. package/lib/ocaml/bytesLabels.ml +428 -0
  238. package/lib/ocaml/bytesLabels.mli +276 -0
  239. package/lib/ocaml/callback.cmi +0 -0
  240. package/lib/ocaml/callback.cmt +0 -0
  241. package/lib/ocaml/callback.cmti +0 -0
  242. package/lib/ocaml/callback.ml +20 -0
  243. package/lib/ocaml/callback.mli +34 -0
  244. package/lib/ocaml/camlinternalLazy.cmi +0 -0
  245. package/lib/ocaml/camlinternalLazy.cmt +0 -0
  246. package/lib/ocaml/camlinternalLazy.cmti +0 -0
  247. package/lib/ocaml/camlinternalLazy.ml +89 -0
  248. package/lib/ocaml/camlinternalLazy.mli +27 -0
  249. package/lib/ocaml/camlinternalMod.cmi +0 -0
  250. package/lib/ocaml/camlinternalMod.cmt +0 -0
  251. package/lib/ocaml/camlinternalMod.cmti +0 -0
  252. package/lib/ocaml/camlinternalMod.ml +21 -0
  253. package/lib/ocaml/camlinternalMod.mli +25 -0
  254. package/lib/ocaml/char.cmi +0 -0
  255. package/lib/ocaml/char.cmt +0 -0
  256. package/lib/ocaml/char.cmti +0 -0
  257. package/lib/ocaml/char.ml +76 -0
  258. package/lib/ocaml/char.mli +72 -0
  259. package/lib/ocaml/complex.cmi +0 -0
  260. package/lib/ocaml/complex.cmt +0 -0
  261. package/lib/ocaml/complex.cmti +0 -0
  262. package/lib/ocaml/complex.ml +87 -0
  263. package/lib/ocaml/complex.mli +86 -0
  264. package/lib/ocaml/digest.cmi +0 -0
  265. package/lib/ocaml/digest.cmt +0 -0
  266. package/lib/ocaml/digest.cmti +0 -0
  267. package/lib/ocaml/digest.ml +66 -0
  268. package/lib/ocaml/digest.mli +68 -0
  269. package/lib/ocaml/dom.cmi +0 -0
  270. package/lib/ocaml/dom.cmt +0 -0
  271. package/lib/ocaml/dom.ml +296 -0
  272. package/lib/ocaml/dom_storage.cmi +0 -0
  273. package/lib/ocaml/dom_storage.cmt +0 -0
  274. package/lib/ocaml/dom_storage.ml +22 -0
  275. package/lib/ocaml/dom_storage2.cmi +0 -0
  276. package/lib/ocaml/dom_storage2.cmt +0 -0
  277. package/lib/ocaml/dom_storage2.ml +11 -0
  278. package/lib/ocaml/filename.cmi +0 -0
  279. package/lib/ocaml/filename.cmt +0 -0
  280. package/lib/ocaml/filename.cmti +0 -0
  281. package/lib/ocaml/filename.ml +233 -0
  282. package/lib/ocaml/filename.mli +134 -0
  283. package/lib/ocaml/genlex.cmi +0 -0
  284. package/lib/ocaml/genlex.cmt +0 -0
  285. package/lib/ocaml/genlex.cmti +0 -0
  286. package/lib/ocaml/genlex.ml +201 -0
  287. package/lib/ocaml/genlex.mli +73 -0
  288. package/lib/ocaml/hashmap.cppo.ml +214 -0
  289. package/lib/ocaml/hashmap.cppo.mli +54 -0
  290. package/lib/ocaml/hashset.cppo.ml +165 -0
  291. package/lib/ocaml/hashset.cppo.mli +77 -0
  292. package/lib/ocaml/hashtbl.cmi +0 -0
  293. package/lib/ocaml/hashtbl.cmt +0 -0
  294. package/lib/ocaml/hashtbl.cmti +0 -0
  295. package/lib/ocaml/hashtbl.ml +541 -0
  296. package/lib/ocaml/hashtbl.mli +411 -0
  297. package/lib/ocaml/hashtblLabels.cmi +0 -0
  298. package/lib/ocaml/hashtblLabels.cmt +0 -0
  299. package/lib/ocaml/hashtblLabels.ml +130 -0
  300. package/lib/ocaml/int32.cmi +0 -0
  301. package/lib/ocaml/int32.cmt +0 -0
  302. package/lib/ocaml/int32.cmti +0 -0
  303. package/lib/ocaml/int32.ml +64 -0
  304. package/lib/ocaml/int32.mli +186 -0
  305. package/lib/ocaml/int64.cmi +0 -0
  306. package/lib/ocaml/int64.cmt +0 -0
  307. package/lib/ocaml/int64.cmti +0 -0
  308. package/lib/ocaml/int64.ml +72 -0
  309. package/lib/ocaml/int64.mli +197 -0
  310. package/lib/ocaml/internal_map.cppo.ml +230 -0
  311. package/lib/ocaml/internal_set.cppo.ml +134 -0
  312. package/lib/ocaml/js.cmi +0 -0
  313. package/lib/ocaml/js.cmt +0 -0
  314. package/lib/ocaml/js.ml +316 -0
  315. package/lib/ocaml/js_OO.cmi +0 -0
  316. package/lib/ocaml/js_OO.cmt +0 -0
  317. package/lib/ocaml/js_OO.ml +180 -0
  318. package/lib/ocaml/js_array.cmi +0 -0
  319. package/lib/ocaml/js_array.cmt +0 -0
  320. package/lib/ocaml/js_array.ml +970 -0
  321. package/lib/ocaml/js_array2.cmi +0 -0
  322. package/lib/ocaml/js_array2.cmt +0 -0
  323. package/lib/ocaml/js_array2.ml +1065 -0
  324. package/lib/ocaml/js_bigint.cmi +0 -0
  325. package/lib/ocaml/js_bigint.cmt +0 -0
  326. package/lib/ocaml/js_bigint.ml +3 -0
  327. package/lib/ocaml/js_cast.cmi +0 -0
  328. package/lib/ocaml/js_cast.cmt +0 -0
  329. package/lib/ocaml/js_cast.cmti +0 -0
  330. package/lib/ocaml/js_cast.ml +29 -0
  331. package/lib/ocaml/js_cast.mli +45 -0
  332. package/lib/ocaml/js_console.cmi +0 -0
  333. package/lib/ocaml/js_console.cmt +0 -0
  334. package/lib/ocaml/js_console.ml +51 -0
  335. package/lib/ocaml/js_date.cmi +0 -0
  336. package/lib/ocaml/js_date.cmt +0 -0
  337. package/lib/ocaml/js_date.ml +1263 -0
  338. package/lib/ocaml/js_dict.cmi +0 -0
  339. package/lib/ocaml/js_dict.cmt +0 -0
  340. package/lib/ocaml/js_dict.cmti +0 -0
  341. package/lib/ocaml/js_dict.ml +114 -0
  342. package/lib/ocaml/js_dict.mli +152 -0
  343. package/lib/ocaml/js_exn.cmi +0 -0
  344. package/lib/ocaml/js_exn.cmt +0 -0
  345. package/lib/ocaml/js_exn.cmti +0 -0
  346. package/lib/ocaml/js_exn.ml +102 -0
  347. package/lib/ocaml/js_exn.mli +79 -0
  348. package/lib/ocaml/js_float.cmi +0 -0
  349. package/lib/ocaml/js_float.cmt +0 -0
  350. package/lib/ocaml/js_float.ml +294 -0
  351. package/lib/ocaml/js_global.cmi +0 -0
  352. package/lib/ocaml/js_global.cmt +0 -0
  353. package/lib/ocaml/js_global.ml +185 -0
  354. package/lib/ocaml/js_int.cmi +0 -0
  355. package/lib/ocaml/js_int.cmt +0 -0
  356. package/lib/ocaml/js_int.ml +158 -0
  357. package/lib/ocaml/js_json.cmi +0 -0
  358. package/lib/ocaml/js_json.cmt +0 -0
  359. package/lib/ocaml/js_json.cmti +0 -0
  360. package/lib/ocaml/js_json.ml +195 -0
  361. package/lib/ocaml/js_json.mli +244 -0
  362. package/lib/ocaml/js_list.cmi +0 -0
  363. package/lib/ocaml/js_list.cmt +0 -0
  364. package/lib/ocaml/js_list.cmti +0 -0
  365. package/lib/ocaml/js_list.ml +174 -0
  366. package/lib/ocaml/js_list.mli +72 -0
  367. package/lib/ocaml/js_map.cmi +0 -0
  368. package/lib/ocaml/js_map.cmt +0 -0
  369. package/lib/ocaml/js_map.ml +3 -0
  370. package/lib/ocaml/js_mapperRt.cmi +0 -0
  371. package/lib/ocaml/js_mapperRt.cmt +0 -0
  372. package/lib/ocaml/js_mapperRt.cmti +0 -0
  373. package/lib/ocaml/js_mapperRt.ml +50 -0
  374. package/lib/ocaml/js_mapperRt.mli +44 -0
  375. package/lib/ocaml/js_math.cmi +0 -0
  376. package/lib/ocaml/js_math.cmt +0 -0
  377. package/lib/ocaml/js_math.ml +626 -0
  378. package/lib/ocaml/js_null.cmi +0 -0
  379. package/lib/ocaml/js_null.cmt +0 -0
  380. package/lib/ocaml/js_null.cmti +0 -0
  381. package/lib/ocaml/js_null.ml +57 -0
  382. package/lib/ocaml/js_null.mli +87 -0
  383. package/lib/ocaml/js_null_undefined.cmi +0 -0
  384. package/lib/ocaml/js_null_undefined.cmt +0 -0
  385. package/lib/ocaml/js_null_undefined.cmti +0 -0
  386. package/lib/ocaml/js_null_undefined.ml +50 -0
  387. package/lib/ocaml/js_null_undefined.mli +85 -0
  388. package/lib/ocaml/js_obj.cmi +0 -0
  389. package/lib/ocaml/js_obj.cmt +0 -0
  390. package/lib/ocaml/js_obj.ml +100 -0
  391. package/lib/ocaml/js_option.cmi +0 -0
  392. package/lib/ocaml/js_option.cmt +0 -0
  393. package/lib/ocaml/js_option.cmti +0 -0
  394. package/lib/ocaml/js_option.ml +203 -0
  395. package/lib/ocaml/js_option.mli +52 -0
  396. package/lib/ocaml/js_promise.cmi +0 -0
  397. package/lib/ocaml/js_promise.cmt +0 -0
  398. package/lib/ocaml/js_promise.ml +100 -0
  399. package/lib/ocaml/js_promise2.cmi +0 -0
  400. package/lib/ocaml/js_promise2.cmt +0 -0
  401. package/lib/ocaml/js_promise2.res +58 -0
  402. package/lib/ocaml/js_re.cmi +0 -0
  403. package/lib/ocaml/js_re.cmt +0 -0
  404. package/lib/ocaml/js_re.ml +184 -0
  405. package/lib/ocaml/js_result.cmi +0 -0
  406. package/lib/ocaml/js_result.cmt +0 -0
  407. package/lib/ocaml/js_result.cmti +0 -0
  408. package/lib/ocaml/js_result.ml +28 -0
  409. package/lib/ocaml/js_result.mli +28 -0
  410. package/lib/ocaml/js_set.cmi +0 -0
  411. package/lib/ocaml/js_set.cmt +0 -0
  412. package/lib/ocaml/js_set.ml +3 -0
  413. package/lib/ocaml/js_string.cmi +0 -0
  414. package/lib/ocaml/js_string.cmt +0 -0
  415. package/lib/ocaml/js_string.ml +914 -0
  416. package/lib/ocaml/js_string2.cmi +0 -0
  417. package/lib/ocaml/js_string2.cmt +0 -0
  418. package/lib/ocaml/js_string2.ml +912 -0
  419. package/lib/ocaml/js_typed_array.cmi +0 -0
  420. package/lib/ocaml/js_typed_array.cmt +0 -0
  421. package/lib/ocaml/js_typed_array.cppo.ml +429 -0
  422. package/lib/ocaml/js_typed_array.ml +1405 -0
  423. package/lib/ocaml/js_typed_array2.cmi +0 -0
  424. package/lib/ocaml/js_typed_array2.cmt +0 -0
  425. package/lib/ocaml/js_typed_array2.cppo.ml +296 -0
  426. package/lib/ocaml/js_typed_array2.ml +1269 -0
  427. package/lib/ocaml/js_types.cmi +0 -0
  428. package/lib/ocaml/js_types.cmt +0 -0
  429. package/lib/ocaml/js_types.cmti +0 -0
  430. package/lib/ocaml/js_types.ml +118 -0
  431. package/lib/ocaml/js_types.mli +78 -0
  432. package/lib/ocaml/js_undefined.cmi +0 -0
  433. package/lib/ocaml/js_undefined.cmt +0 -0
  434. package/lib/ocaml/js_undefined.cmti +0 -0
  435. package/lib/ocaml/js_undefined.ml +59 -0
  436. package/lib/ocaml/js_undefined.mli +92 -0
  437. package/lib/ocaml/js_vector.cmi +0 -0
  438. package/lib/ocaml/js_vector.cmt +0 -0
  439. package/lib/ocaml/js_vector.cmti +0 -0
  440. package/lib/ocaml/js_vector.ml +143 -0
  441. package/lib/ocaml/js_vector.mli +92 -0
  442. package/lib/ocaml/js_weakmap.cmi +0 -0
  443. package/lib/ocaml/js_weakmap.cmt +0 -0
  444. package/lib/ocaml/js_weakmap.ml +3 -0
  445. package/lib/ocaml/js_weakset.cmi +0 -0
  446. package/lib/ocaml/js_weakset.cmt +0 -0
  447. package/lib/ocaml/js_weakset.ml +3 -0
  448. package/lib/ocaml/jsx.cmi +0 -0
  449. package/lib/ocaml/jsx.cmt +0 -0
  450. package/lib/ocaml/jsx.res +40 -0
  451. package/lib/ocaml/jsxDOM.cmi +0 -0
  452. package/lib/ocaml/jsxDOM.cmt +0 -0
  453. package/lib/ocaml/jsxDOM.res +620 -0
  454. package/lib/ocaml/jsxDOMStyle.cmi +0 -0
  455. package/lib/ocaml/jsxDOMStyle.cmt +0 -0
  456. package/lib/ocaml/jsxDOMStyle.ml +781 -0
  457. package/lib/ocaml/jsxEvent.cmi +0 -0
  458. package/lib/ocaml/jsxEvent.cmt +0 -0
  459. package/lib/ocaml/jsxEvent.ml +358 -0
  460. package/lib/ocaml/jsxPPXReactSupport.cmi +0 -0
  461. package/lib/ocaml/jsxPPXReactSupport.cmt +0 -0
  462. package/lib/ocaml/jsxPPXReactSupport.res +48 -0
  463. package/lib/ocaml/lazy.cmi +0 -0
  464. package/lib/ocaml/lazy.cmt +0 -0
  465. package/lib/ocaml/lazy.cmti +0 -0
  466. package/lib/ocaml/lazy.ml +70 -0
  467. package/lib/ocaml/lazy.mli +95 -0
  468. package/lib/ocaml/lexing.cmi +0 -0
  469. package/lib/ocaml/lexing.cmt +0 -0
  470. package/lib/ocaml/lexing.cmti +0 -0
  471. package/lib/ocaml/lexing.ml +230 -0
  472. package/lib/ocaml/lexing.mli +172 -0
  473. package/lib/ocaml/list.cmi +0 -0
  474. package/lib/ocaml/list.cmt +0 -0
  475. package/lib/ocaml/list.cmti +0 -0
  476. package/lib/ocaml/list.ml +485 -0
  477. package/lib/ocaml/list.mli +347 -0
  478. package/lib/ocaml/listLabels.cmi +0 -0
  479. package/lib/ocaml/listLabels.cmt +0 -0
  480. package/lib/ocaml/listLabels.cmti +0 -0
  481. package/lib/ocaml/listLabels.ml +485 -0
  482. package/lib/ocaml/listLabels.mli +353 -0
  483. package/lib/ocaml/map.cmi +0 -0
  484. package/lib/ocaml/map.cmt +0 -0
  485. package/lib/ocaml/map.cmti +0 -0
  486. package/lib/ocaml/map.cppo.ml +174 -0
  487. package/lib/ocaml/map.cppo.mli +191 -0
  488. package/lib/ocaml/map.ml +480 -0
  489. package/lib/ocaml/map.mli +315 -0
  490. package/lib/ocaml/mapLabels.cmi +0 -0
  491. package/lib/ocaml/mapLabels.cmt +0 -0
  492. package/lib/ocaml/mapLabels.ml +480 -0
  493. package/lib/ocaml/mapm.cppo.ml +177 -0
  494. package/lib/ocaml/mapm.cppo.mli +138 -0
  495. package/lib/ocaml/moreLabels.cmi +0 -0
  496. package/lib/ocaml/moreLabels.cmt +0 -0
  497. package/lib/ocaml/moreLabels.cmti +0 -0
  498. package/lib/ocaml/moreLabels.ml +22 -0
  499. package/lib/ocaml/moreLabels.mli +198 -0
  500. package/lib/ocaml/node.cmi +0 -0
  501. package/lib/ocaml/node.cmt +0 -0
  502. package/lib/ocaml/node.ml +84 -0
  503. package/lib/ocaml/node_buffer.cmi +0 -0
  504. package/lib/ocaml/node_buffer.cmt +0 -0
  505. package/lib/ocaml/node_buffer.ml +47 -0
  506. package/lib/ocaml/node_child_process.cmi +0 -0
  507. package/lib/ocaml/node_child_process.cmt +0 -0
  508. package/lib/ocaml/node_child_process.ml +50 -0
  509. package/lib/ocaml/node_fs.cmi +0 -0
  510. package/lib/ocaml/node_fs.cmt +0 -0
  511. package/lib/ocaml/node_fs.ml +153 -0
  512. package/lib/ocaml/node_module.cmi +0 -0
  513. package/lib/ocaml/node_module.cmt +0 -0
  514. package/lib/ocaml/node_module.ml +29 -0
  515. package/lib/ocaml/node_path.cmi +0 -0
  516. package/lib/ocaml/node_path.cmt +0 -0
  517. package/lib/ocaml/node_path.ml +71 -0
  518. package/lib/ocaml/node_process.cmi +0 -0
  519. package/lib/ocaml/node_process.cmt +0 -0
  520. package/lib/ocaml/node_process.cmti +0 -0
  521. package/lib/ocaml/node_process.ml +59 -0
  522. package/lib/ocaml/node_process.mli +48 -0
  523. package/lib/ocaml/obj.cmi +0 -0
  524. package/lib/ocaml/obj.cmt +0 -0
  525. package/lib/ocaml/obj.cmti +0 -0
  526. package/lib/ocaml/obj.ml +29 -0
  527. package/lib/ocaml/obj.mli +62 -0
  528. package/lib/ocaml/parsing.cmi +0 -0
  529. package/lib/ocaml/parsing.cmt +0 -0
  530. package/lib/ocaml/parsing.cmti +0 -0
  531. package/lib/ocaml/parsing.ml +212 -0
  532. package/lib/ocaml/parsing.mli +105 -0
  533. package/lib/ocaml/pervasives.cmi +0 -0
  534. package/lib/ocaml/pervasives.cmt +0 -0
  535. package/lib/ocaml/pervasives.cmti +0 -0
  536. package/lib/ocaml/pervasives.ml +297 -0
  537. package/lib/ocaml/pervasives.mli +771 -0
  538. package/lib/ocaml/printexc.cmi +0 -0
  539. package/lib/ocaml/printexc.cmt +0 -0
  540. package/lib/ocaml/printexc.cmti +0 -0
  541. package/lib/ocaml/printexc.ml +75 -0
  542. package/lib/ocaml/printexc.mli +57 -0
  543. package/lib/ocaml/queue.cmi +0 -0
  544. package/lib/ocaml/queue.cmt +0 -0
  545. package/lib/ocaml/queue.cmti +0 -0
  546. package/lib/ocaml/queue.ml +132 -0
  547. package/lib/ocaml/queue.mli +82 -0
  548. package/lib/ocaml/random.cmi +0 -0
  549. package/lib/ocaml/random.cmt +0 -0
  550. package/lib/ocaml/random.cmti +0 -0
  551. package/lib/ocaml/random.ml +273 -0
  552. package/lib/ocaml/random.mli +102 -0
  553. package/lib/ocaml/set.cmi +0 -0
  554. package/lib/ocaml/set.cmt +0 -0
  555. package/lib/ocaml/set.cmti +0 -0
  556. package/lib/ocaml/set.ml +526 -0
  557. package/lib/ocaml/set.mli +266 -0
  558. package/lib/ocaml/setLabels.cmi +0 -0
  559. package/lib/ocaml/setLabels.cmt +0 -0
  560. package/lib/ocaml/setLabels.ml +526 -0
  561. package/lib/ocaml/setm.cppo.ml +346 -0
  562. package/lib/ocaml/setm.cppo.mli +126 -0
  563. package/lib/ocaml/sort.cmi +0 -0
  564. package/lib/ocaml/sort.cmt +0 -0
  565. package/lib/ocaml/sort.cmti +0 -0
  566. package/lib/ocaml/sort.cppo.ml +267 -0
  567. package/lib/ocaml/sort.cppo.mli +96 -0
  568. package/lib/ocaml/sort.ml +99 -0
  569. package/lib/ocaml/sort.mli +44 -0
  570. package/lib/ocaml/stack.cmi +0 -0
  571. package/lib/ocaml/stack.cmt +0 -0
  572. package/lib/ocaml/stack.cmti +0 -0
  573. package/lib/ocaml/stack.ml +44 -0
  574. package/lib/ocaml/stack.mli +63 -0
  575. package/lib/ocaml/stdLabels.cmi +0 -0
  576. package/lib/ocaml/stdLabels.cmt +0 -0
  577. package/lib/ocaml/stdLabels.cmti +0 -0
  578. package/lib/ocaml/stdLabels.ml +24 -0
  579. package/lib/ocaml/stdLabels.mli +29 -0
  580. package/lib/ocaml/stream.cmi +0 -0
  581. package/lib/ocaml/stream.cmt +0 -0
  582. package/lib/ocaml/stream.cmti +0 -0
  583. package/lib/ocaml/stream.ml +213 -0
  584. package/lib/ocaml/stream.mli +108 -0
  585. package/lib/ocaml/string.cmi +0 -0
  586. package/lib/ocaml/string.cmt +0 -0
  587. package/lib/ocaml/string.cmti +0 -0
  588. package/lib/ocaml/string.ml +190 -0
  589. package/lib/ocaml/string.mli +286 -0
  590. package/lib/ocaml/stringLabels.cmi +0 -0
  591. package/lib/ocaml/stringLabels.cmt +0 -0
  592. package/lib/ocaml/stringLabels.cmti +0 -0
  593. package/lib/ocaml/stringLabels.ml +190 -0
  594. package/lib/ocaml/stringLabels.mli +241 -0
  595. package/lib/ocaml/sys.cmi +0 -0
  596. package/lib/ocaml/sys.cmt +0 -0
  597. package/lib/ocaml/sys.cmti +0 -0
  598. package/lib/ocaml/sys.ml +135 -0
  599. package/lib/ocaml/sys.mli +333 -0
  600. package/lib/ocaml/uchar.cmi +0 -0
  601. package/lib/ocaml/uchar.cmt +0 -0
  602. package/lib/ocaml/uchar.cmti +0 -0
  603. package/lib/ocaml/uchar.ml +58 -0
  604. package/lib/ocaml/uchar.mli +98 -0
  605. package/linux/bsb_helper.exe +0 -0
  606. package/linux/bsc.exe +0 -0
  607. package/linux/ninja.exe +0 -0
  608. package/linux/rescript.exe +0 -0
  609. package/ninja.COPYING +202 -0
  610. package/package.json +1 -1
  611. package/vendor/ninja.tar.gz +0 -0
  612. package/win32/bsb_helper.exe +0 -0
  613. package/win32/bsc.exe +0 -0
  614. package/win32/ninja.exe +0 -0
  615. package/win32/refmt.exe +0 -0
  616. package/win32/rescript.exe +0 -0
@@ -0,0 +1,206 @@
1
+ # 1 "others/hashmap.cppo.ml"
2
+ (***********************************************************************)
3
+ (* *)
4
+ (* OCaml *)
5
+ (* *)
6
+ (* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
7
+ (* *)
8
+ (* Copyright 1996 Institut National de Recherche en Informatique et *)
9
+ (* en Automatique. All rights reserved. This file is distributed *)
10
+ (* under the terms of the GNU Library General Public License, with *)
11
+ (* the special exception on linking described in file ../LICENSE. *)
12
+ (* *)
13
+ (***********************************************************************)
14
+ (** Adapted by Hongbo Zhang, Authors of ReScript 2017 *)
15
+
16
+ # 16 "others/hashmap.cppo.ml"
17
+ type key = string
18
+ type seed = int
19
+ external caml_hash_mix_string : seed -> string -> seed = "?hash_mix_string"
20
+ external final_mix : seed -> seed = "?hash_final_mix"
21
+ let hash (s : key) =
22
+ final_mix (caml_hash_mix_string 0 s )
23
+
24
+ # 33 "others/hashmap.cppo.ml"
25
+ module N = Belt_internalBuckets
26
+ module C = Belt_internalBucketsType
27
+ module A = Belt_Array
28
+
29
+
30
+ type 'b t = (unit, unit, key,'b) N.t
31
+
32
+
33
+ let rec copyBucketReHash ~h_buckets ~ndata_tail (old_bucket : _ N.bucket C.opt ) =
34
+ match C.toOpt old_bucket with
35
+ | None -> ()
36
+ | Some cell ->
37
+ let nidx = hash cell.key land (A.length h_buckets - 1) in
38
+ let v = C.return cell in
39
+ begin match C.toOpt (A.getUnsafe ndata_tail nidx) with
40
+ | None ->
41
+ A.setUnsafe h_buckets nidx v
42
+ | Some tail ->
43
+ tail.N.next <- v (* cell put at the end *)
44
+ end;
45
+ A.setUnsafe ndata_tail nidx v;
46
+ copyBucketReHash ~h_buckets ~ndata_tail cell.next
47
+
48
+
49
+ let resize h =
50
+ let odata = h.C.buckets in
51
+ let osize = A.length odata in
52
+ let nsize = osize * 2 in
53
+ if nsize >= osize then begin (* no overflow *)
54
+ let h_buckets = A.makeUninitialized nsize in
55
+ let ndata_tail = A.makeUninitialized nsize in (* keep track of tail *)
56
+ h.C.buckets <- h_buckets; (* so that indexfun sees the new bucket count *)
57
+ for i = 0 to osize - 1 do
58
+ copyBucketReHash ~h_buckets ~ndata_tail (A.getUnsafe odata i)
59
+ done;
60
+ for i = 0 to nsize - 1 do
61
+ match C.toOpt (A.getUnsafe ndata_tail i) with
62
+ | None -> ()
63
+ | Some tail -> tail.next <- C.emptyOpt
64
+ done
65
+ end
66
+
67
+
68
+ let rec replaceInBucket (key : key) info cell =
69
+ if cell.N.key = key
70
+ then
71
+ begin
72
+ cell.N.value <- info;
73
+ false
74
+ end
75
+ else
76
+ match C.toOpt cell.next with
77
+ | None -> true
78
+ | Some cell ->
79
+ replaceInBucket key info cell
80
+
81
+ let set h (key : key) value =
82
+ let h_buckets = h.C.buckets in
83
+ let buckets_len = A.length h_buckets in
84
+ let i = hash key land (buckets_len - 1) in
85
+ let l = A.getUnsafe h_buckets i in
86
+ (match C.toOpt l with
87
+ | None ->
88
+ A.setUnsafe h_buckets i (C.return {N.key; value; next = C.emptyOpt});
89
+ h.C.size <- (h.C.size + 1);
90
+ | Some bucket ->
91
+ if replaceInBucket key value bucket then begin
92
+ A.setUnsafe h_buckets i (C.return {N.key; value; next = l});
93
+ h.C.size <- (h.C.size + 1);
94
+ end
95
+ );
96
+ if h.C.size > buckets_len lsl 1 then resize h
97
+
98
+
99
+
100
+ let rec removeInBucket h h_buckets i (key : key) prec buckets =
101
+ match C.toOpt buckets with
102
+ | None -> ()
103
+ | Some cell ->
104
+ let cell_next = cell.N.next in
105
+ if cell.N.key = key
106
+ then
107
+ begin
108
+ prec.N.next <-cell_next;
109
+ h.C.size <- (h.C.size - 1);
110
+ end
111
+ else removeInBucket h h_buckets i key cell cell_next
112
+
113
+ let remove h key =
114
+ let h_buckets = h.C.buckets in
115
+ let i = hash key land (A.length h_buckets - 1) in
116
+ let bucket = (A.getUnsafe h_buckets i) in
117
+ match C.toOpt bucket with
118
+ | None -> ()
119
+ | Some cell ->
120
+ if cell.N.key = key then
121
+ begin
122
+ A.setUnsafe h_buckets i cell.next;
123
+ h.C.size <- (h.C.size - 1)
124
+ end
125
+ else
126
+ removeInBucket h h_buckets i key cell cell.next
127
+
128
+
129
+
130
+ let rec getAux (key : key) buckets =
131
+ match C.toOpt buckets with
132
+ | None ->
133
+ None
134
+ | Some cell ->
135
+ if key = cell.N.key then Some cell.N.value
136
+ else getAux key cell.next
137
+
138
+ let get h (key : key) =
139
+ let h_buckets = h.C.buckets in
140
+ let nid = hash key land (A.length h_buckets - 1) in
141
+ match C.toOpt (A.getUnsafe h_buckets nid) with
142
+ | None -> None
143
+ | Some cell1 ->
144
+ if key = cell1.N.key then Some cell1.N.value else
145
+ match C.toOpt cell1.N.next with
146
+ | None -> None
147
+ | Some cell2 ->
148
+ if key = cell2.N.key then Some cell2.N.value else
149
+ match C.toOpt cell2.N.next with
150
+ | None -> None
151
+ | Some cell3 ->
152
+ if key = cell3.N.key then Some cell3.N.value
153
+ else getAux key cell3.N.next
154
+
155
+
156
+ let rec memInBucket (key : key) cell =
157
+ cell.N.key = key ||
158
+ (match C.toOpt cell.next with
159
+ | None -> false
160
+ | Some nextCell -> memInBucket key nextCell
161
+ )
162
+
163
+ let has h key =
164
+ let h_buckets = h.C.buckets in
165
+ let nid = hash key land (A.length h_buckets - 1) in
166
+ let bucket = A.getUnsafe h_buckets nid in
167
+ match C.toOpt bucket with
168
+ | None -> false
169
+ | Some bucket ->
170
+ memInBucket key bucket
171
+
172
+
173
+ let make ~hintSize = C.make ~hintSize ~hash:() ~eq:()
174
+ let clear = C.clear
175
+ let size h = h.C.size
176
+ let forEachU = N.forEachU
177
+ let forEach = N.forEach
178
+ let reduceU = N.reduceU
179
+ let reduce = N.reduce
180
+ let logStats = N.logStats
181
+ let keepMapInPlaceU = N.keepMapInPlaceU
182
+ let keepMapInPlace = N.keepMapInPlace
183
+ let toArray = N.toArray
184
+ let copy = N.copy
185
+ let keysToArray = N.keysToArray
186
+ let valuesToArray = N.valuesToArray
187
+ let getBucketHistogram = N.getBucketHistogram
188
+ let isEmpty = C.isEmpty
189
+
190
+ let fromArray arr =
191
+ let len = A.length arr in
192
+ let v = make ~hintSize:len in
193
+ for i = 0 to len - 1 do
194
+ let k,value = (A.getUnsafe arr i) in
195
+ set v k value
196
+ done ;
197
+ v
198
+
199
+ (* TOOD: optimize heuristics for resizing *)
200
+ let mergeMany h arr =
201
+ let len = A.length arr in
202
+ for i = 0 to len - 1 do
203
+ let k,v = (A.getUnsafe arr i) in
204
+ set h k v
205
+ done
206
+
@@ -0,0 +1,50 @@
1
+ # 2 "others/hashmap.cppo.mli"
2
+ type key = string
3
+
4
+
5
+ # 10 "others/hashmap.cppo.mli"
6
+ type 'b t
7
+
8
+
9
+ val make: hintSize:int -> 'b t
10
+
11
+ val clear: 'b t -> unit
12
+
13
+ val isEmpty: _ t -> bool
14
+
15
+ val set: 'a t -> key -> 'a -> unit
16
+ (**
17
+ `setDone tbl k v` if `k` does not exist,
18
+ add the binding `k,v`, otherwise, update the old value with the new
19
+ `v`
20
+ *)
21
+
22
+
23
+ val copy: 'a t -> 'a t
24
+ val get: 'a t -> key -> 'a option
25
+
26
+ val has: 'b t -> key -> bool
27
+
28
+ val remove: 'a t -> key -> unit
29
+
30
+ val forEachU: 'b t -> (key -> 'b -> unit [@bs]) -> unit
31
+ val forEach: 'b t -> (key -> 'b -> unit) -> unit
32
+
33
+ val reduceU: 'b t -> 'c -> ('c -> key -> 'b -> 'c [@bs]) -> 'c
34
+ val reduce: 'b t -> 'c -> ('c -> key -> 'b -> 'c) -> 'c
35
+
36
+ val keepMapInPlaceU: 'a t -> (key -> 'a -> 'a option [@bs]) -> unit
37
+ val keepMapInPlace: 'a t -> (key -> 'a -> 'a option) -> unit
38
+
39
+
40
+ val size: _ t -> int
41
+
42
+
43
+ val toArray: 'a t -> (key * 'a) array
44
+ val keysToArray: 'a t -> key array
45
+ val valuesToArray: 'a t -> 'a array
46
+ val fromArray: (key * 'a) array -> 'a t
47
+ val mergeMany: 'a t -> (key * 'a) array -> unit
48
+ val getBucketHistogram: _ t -> int array
49
+ val logStats: _ t -> unit
50
+
Binary file
Binary file
Binary file
@@ -0,0 +1,196 @@
1
+ (* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript
2
+ *
3
+ * This program is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU Lesser General Public License as published by
5
+ * the Free Software Foundation, either version 3 of the License, or
6
+ * (at your option) any later version.
7
+ *
8
+ * In addition to the permissions granted to you by the LGPL, you may combine
9
+ * or link a "work that uses the Library" with a publicly distributed version
10
+ * of this file to produce a combined library or application, then distribute
11
+ * that combined work under the terms of your choosing, with no requirement
12
+ * to comply with the obligations normally placed on you by section 4 of the
13
+ * LGPL version 3 (or the corresponding section of a later version of the LGPL
14
+ * should you choose to use a later version).
15
+ *
16
+ * This program is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * along with this program; if not, write to the Free Software
23
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
24
+
25
+ module Int = Belt_HashSetInt
26
+
27
+ module String = Belt_HashSetString
28
+
29
+
30
+ module N = Belt_internalSetBuckets
31
+ module C = Belt_internalBucketsType
32
+ module A = Belt_Array
33
+
34
+ type ('a, 'id) eq = ('a, 'id) Belt_Id.eq
35
+ type ('a, 'id) hash = ('a, 'id) Belt_Id.hash
36
+ type ('a, 'id) id = ('a, 'id) Belt_Id.hashable
37
+
38
+ type ('a,'id) t = ( ('a, 'id) hash, ('a, 'id) eq, 'a) N.t
39
+
40
+
41
+
42
+ let rec copyBucket ~hash ~h_buckets ~ndata_tail old_bucket =
43
+ match C.toOpt old_bucket with
44
+ | None -> ()
45
+ | Some cell ->
46
+ let nidx = (Belt_Id.getHashInternal hash) cell.N.key [@bs] land (A.length h_buckets - 1) in
47
+ let v = C.return cell in
48
+ begin match C.toOpt (A.getUnsafe ndata_tail nidx) with
49
+ | None ->
50
+ A.setUnsafe h_buckets nidx v
51
+ | Some tail ->
52
+ tail.N.next <- v (* cell put at the end *)
53
+ end;
54
+ A.setUnsafe ndata_tail nidx v;
55
+ copyBucket ~hash ~h_buckets ~ndata_tail cell.N.next
56
+
57
+
58
+ let tryDoubleResize ~hash h =
59
+ let odata = h.C.buckets in
60
+ let osize = A.length odata in
61
+ let nsize = osize * 2 in
62
+ if nsize >= osize then begin (* no overflow *)
63
+ let h_buckets = A.makeUninitialized nsize in
64
+ let ndata_tail = A.makeUninitialized nsize in (* keep track of tail *)
65
+ h.buckets <- h_buckets; (* so that indexfun sees the new bucket count *)
66
+ for i = 0 to osize - 1 do
67
+ copyBucket ~hash ~h_buckets ~ndata_tail (A.getUnsafe odata i)
68
+ done;
69
+ for i = 0 to nsize - 1 do
70
+ match C.toOpt (A.getUnsafe ndata_tail i) with
71
+ | None -> ()
72
+ | Some tail -> tail.N.next <- C.emptyOpt
73
+ done
74
+ end
75
+
76
+
77
+
78
+ let rec removeBucket ~eq h h_buckets i key prec cell =
79
+ let cell_next = cell.N.next in
80
+ if (Belt_Id.getEqInternal eq) cell.N.key key [@bs]
81
+ then
82
+ begin
83
+ prec.N.next <- cell_next;
84
+ h.C.size <- (h.C.size - 1);
85
+ end
86
+ else
87
+ match C.toOpt cell_next with
88
+ | None ->
89
+ ()
90
+ | Some cell_next ->
91
+ removeBucket ~eq h h_buckets i key cell cell_next
92
+
93
+ let remove h key =
94
+ let eq = h.C.eq in
95
+ let h_buckets = h.C.buckets in
96
+ let i = (Belt_Id.getHashInternal h.C.hash) key [@bs] land (A.length h_buckets - 1) in
97
+ let l = A.getUnsafe h_buckets i in
98
+ match C.toOpt l with
99
+ | None -> ()
100
+ | Some cell ->
101
+ let next_cell = cell.N.next in
102
+ if (Belt_Id.getEqInternal eq) cell.N.key key [@bs] then
103
+ begin
104
+ h.C.size <- (h.C.size - 1) ;
105
+ A.setUnsafe h_buckets i next_cell
106
+ end
107
+ else
108
+ match C.toOpt next_cell with
109
+ | None -> ()
110
+ | Some next_cell ->
111
+ removeBucket ~eq h h_buckets i key cell next_cell
112
+
113
+
114
+
115
+ let rec addBucket h key cell ~eq =
116
+ if not ((Belt_Id.getEqInternal eq) cell.N.key key [@bs]) then
117
+ let n = cell.N.next in
118
+ match C.toOpt n with
119
+ | None ->
120
+ h.C.size <- (h.C.size + 1);
121
+ cell.N.next <- C.return { N.key; next = C.emptyOpt}
122
+ | Some n -> addBucket ~eq h key n
123
+
124
+ let add0 h key ~hash ~eq =
125
+ let h_buckets = h.C.buckets in
126
+ let buckets_len = A.length h_buckets in
127
+ let i = (Belt_Id.getHashInternal hash) key [@bs] land (buckets_len - 1) in
128
+ let l = A.getUnsafe h_buckets i in
129
+ (match C.toOpt l with
130
+ | None ->
131
+ h.C.size <- (h.C.size+ 1);
132
+ A.setUnsafe h_buckets i
133
+ (C.return { N.key; next = C.emptyOpt})
134
+ | Some cell ->
135
+ addBucket ~eq h key cell);
136
+ if h.C.size > buckets_len lsl 1 then tryDoubleResize ~hash h
137
+
138
+ let add h key =
139
+ add0 ~hash:h.C.hash ~eq:h.C.eq h key
140
+
141
+ let rec memInBucket ~eq key cell =
142
+ (Belt_Id.getEqInternal eq)
143
+ cell.N.key key [@bs] ||
144
+ (match C.toOpt cell.N.next with
145
+ | None -> false
146
+ | Some nextCell ->
147
+ memInBucket ~eq key nextCell)
148
+
149
+
150
+
151
+ let has h key =
152
+ let eq, h_buckets = h.C.eq, h.C.buckets in
153
+ let nid = (Belt_Id.getHashInternal h.C.hash) key [@bs] land (A.length h_buckets - 1) in
154
+ let bucket = A.getUnsafe h_buckets nid in
155
+ match C.toOpt bucket with
156
+ | None -> false
157
+ | Some bucket ->
158
+ memInBucket ~eq key bucket
159
+
160
+
161
+
162
+
163
+ let make (type value) (type identity) ~hintSize ~(id: (value, identity) id)=
164
+ let module M = (val id) in
165
+ C.make ~hintSize ~hash:M.hash ~eq:M.eq
166
+
167
+ let clear = C.clear
168
+ let size h = h.C.size
169
+ let forEachU = N.forEachU
170
+ let forEach = N.forEach
171
+ let reduceU = N.reduceU
172
+ let reduce = N.reduce
173
+ let logStats = N.logStats
174
+ let toArray = N.toArray
175
+ let copy = N.copy
176
+ let getBucketHistogram = N.getBucketHistogram
177
+ let isEmpty = C.isEmpty
178
+
179
+ let fromArray (type a identity) arr ~(id:(a,identity) id) =
180
+ let module M = (val id) in
181
+ let eq, hash = M.eq , M.hash in
182
+ let len = A.length arr in
183
+ let v = C.make ~hintSize:len ~hash ~eq in
184
+ for i = 0 to len - 1 do
185
+ add0 ~eq ~hash v (A.getUnsafe arr i)
186
+ done ;
187
+ v
188
+
189
+ let mergeMany h arr =
190
+ let eq, hash = h.C.eq, h.hash in
191
+ let len = A.length arr in
192
+ for i = 0 to len - 1 do
193
+ add0 h ~eq ~hash (A.getUnsafe arr i)
194
+ done
195
+
196
+
@@ -0,0 +1,125 @@
1
+ (* Copyright (C) 2018 Authors of ReScript
2
+ *
3
+ * This program is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU Lesser General Public License as published by
5
+ * the Free Software Foundation, either version 3 of the License, or
6
+ * (at your option) any later version.
7
+ *
8
+ * In addition to the permissions granted to you by the LGPL, you may combine
9
+ * or link a "work that uses the Library" with a publicly distributed version
10
+ * of this file to produce a combined library or application, then distribute
11
+ * that combined work under the terms of your choosing, with no requirement
12
+ * to comply with the obligations normally placed on you by section 4 of the
13
+ * LGPL version 3 (or the corresponding section of a later version of the LGPL
14
+ * should you choose to use a later version).
15
+ *
16
+ * This program is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * along with this program; if not, write to the Free Software
23
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
24
+
25
+ (**
26
+ A **mutable** Hash set which allows customized `hash` behavior.
27
+
28
+ All data are parameterized by not its only type but also a unique identity in
29
+ the time of initialization, so that two _HashSets of ints_ initialized with
30
+ different _hash_ functions will have different type.
31
+
32
+ For example:
33
+
34
+ ```res prelude
35
+ module I0 = unpack(
36
+ Belt.Id.hashableU(
37
+ ~hash=(. a: int) => land(a, 65535),
38
+ ~eq=(. a, b) => a == b,
39
+ )
40
+ )
41
+
42
+ let s0 = Belt.HashSet.make(~id=module(I0), ~hintSize=40)
43
+
44
+ module I1 = unpack(
45
+ Belt.Id.hashableU(
46
+ ~hash=(. a: int) => land(a, 255),
47
+ ~eq=(. a, b) => a == b,
48
+ )
49
+ )
50
+
51
+ let s1 = Belt.HashSet.make(~id=module(I1), ~hintSize=40)
52
+
53
+ Belt.HashSet.add(s1, 0)
54
+ Belt.HashSet.add(s1, 1)
55
+ ```
56
+
57
+ The invariant must be held: for two elements who are equal, their hashed
58
+ value should be the same.
59
+
60
+ Here the compiler would infer `s0` and `s1` having different type so that it
61
+ would not mix.
62
+
63
+ ```res sig
64
+ let s0: Belt.HashSet.t<int, I0.identity>
65
+ let s1: Belt.HashSet.t<int, I1.identity>
66
+ ```
67
+
68
+ We can add elements to the collection (see last two lines in the example
69
+ above). Since this is an mutable data structure, `s1` will contain two pairs.
70
+ *)
71
+
72
+
73
+ (** Specalized when key type is `int`, more efficient
74
+ than the generic type *)
75
+ module Int = Belt_HashSetInt
76
+
77
+ (** Specalized when key type is `string`, more efficient
78
+ than the generic type *)
79
+ module String = Belt_HashSetString
80
+
81
+ (* TODO: add a poly module
82
+ module Poly = Belt_HashSetPoly
83
+ challenge:
84
+ - generic equal handles JS data structure
85
+ - eq/hash consistent
86
+ *)
87
+
88
+ type ('a, 'id) t
89
+
90
+ (** The type of hash tables from type `'a` to type `'b`. *)
91
+ type ('a, 'id) id = ('a, 'id) Belt_Id.hashable
92
+
93
+ val make: hintSize:int -> id:('a,'id) id -> ('a, 'id) t
94
+ val clear: ('a, 'id) t -> unit
95
+ val isEmpty: _ t -> bool
96
+
97
+ val add: ('a, 'id) t -> 'a -> unit
98
+
99
+ val copy: ('a, 'id) t -> ('a, 'id) t
100
+
101
+ val has: ('a, 'id) t -> 'a -> bool
102
+
103
+ val remove: ('a, 'id) t -> 'a -> unit
104
+
105
+ val forEachU: ('a, 'id) t -> ('a -> unit [@bs]) -> unit
106
+ val forEach: ('a, 'id) t -> ('a -> unit) -> unit
107
+ (** Order unspecified. *)
108
+
109
+ val reduceU: ('a, 'id) t -> 'c -> ('c -> 'a -> 'c [@bs]) -> 'c
110
+ val reduce: ('a, 'id) t -> 'c -> ('c -> 'a -> 'c) -> 'c
111
+ (** Order unspecified. *)
112
+
113
+ val size: ('a, 'id) t -> int
114
+
115
+ val logStats: _ t -> unit
116
+
117
+ val toArray: ('a,'id) t -> 'a array
118
+
119
+ val fromArray: 'a array -> id:('a,'id) id -> ('a,'id) t
120
+
121
+ val mergeMany: ('a,'id) t -> 'a array -> unit
122
+
123
+ val getBucketHistogram: _ t -> int array
124
+
125
+
Binary file
Binary file
Binary file