@tellahq/rescript 10.1.0-alpha.2 → 10.1.4-republish-2

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 (668) hide show
  1. package/CHANGELOG.md +204 -2
  2. package/README.md +1 -1
  3. package/darwinarm64/bsb_helper.exe +0 -0
  4. package/darwinarm64/bsc.exe +0 -0
  5. package/darwinarm64/ninja.exe +0 -0
  6. package/darwinarm64/rescript.exe +0 -0
  7. package/docs/docson/build-schema.json +497 -516
  8. package/lib/4.06.1/bsb_helper.ml +6 -1
  9. package/lib/4.06.1/rescript.ml +1414 -1191
  10. package/lib/4.06.1/whole_compiler.ml +69844 -69069
  11. package/lib/es6/belt_internalBuckets.js +13 -13
  12. package/lib/es6/caml_float.js +5 -5
  13. package/lib/es6/caml_format.js +1 -1
  14. package/lib/es6/caml_int64.js +1 -1
  15. package/lib/es6/caml_obj.js +26 -6
  16. package/lib/es6/complex.js +4 -4
  17. package/lib/es6/js.js +3 -0
  18. package/lib/es6/js_promise2.js +16 -0
  19. package/lib/es6/jsxPPXReactSupport.js +26 -0
  20. package/lib/js/belt_internalBuckets.js +13 -13
  21. package/lib/js/caml_float.js +5 -5
  22. package/lib/js/caml_format.js +1 -1
  23. package/lib/js/caml_int64.js +1 -1
  24. package/lib/js/caml_obj.js +26 -6
  25. package/lib/js/complex.js +4 -4
  26. package/lib/js/js.js +3 -0
  27. package/lib/js/js_promise2.js +14 -0
  28. package/lib/js/jsxPPXReactSupport.js +24 -0
  29. package/package.json +2 -1
  30. package/scripts/buildNinjaBinary.js +29 -0
  31. package/scripts/install.js +7 -3
  32. package/scripts/installUtils.js +9 -1
  33. package/scripts/rescript_arg.js +2 -4
  34. package/scripts/rescript_format.js +73 -39
  35. package/win32/refmt.exe +0 -0
  36. package/darwin/bsb_helper.exe +0 -0
  37. package/darwin/bsc.exe +0 -0
  38. package/darwin/ninja.COPYING +0 -202
  39. package/darwin/ninja.exe +0 -0
  40. package/darwin/rescript.exe +0 -0
  41. package/darwinarm64/ninja.COPYING +0 -202
  42. package/freebsd/ninja.COPYING +0 -202
  43. package/lib/ocaml/arg.cmi +0 -0
  44. package/lib/ocaml/arg.cmt +0 -0
  45. package/lib/ocaml/arg.cmti +0 -0
  46. package/lib/ocaml/arg.ml +0 -359
  47. package/lib/ocaml/arg.mli +0 -185
  48. package/lib/ocaml/array.cmi +0 -0
  49. package/lib/ocaml/array.cmt +0 -0
  50. package/lib/ocaml/array.cmti +0 -0
  51. package/lib/ocaml/array.ml +0 -307
  52. package/lib/ocaml/array.mli +0 -275
  53. package/lib/ocaml/arrayLabels.cmi +0 -0
  54. package/lib/ocaml/arrayLabels.cmt +0 -0
  55. package/lib/ocaml/arrayLabels.cmti +0 -0
  56. package/lib/ocaml/arrayLabels.ml +0 -307
  57. package/lib/ocaml/arrayLabels.mli +0 -276
  58. package/lib/ocaml/belt.cmi +0 -0
  59. package/lib/ocaml/belt.cmt +0 -0
  60. package/lib/ocaml/belt.ml +0 -352
  61. package/lib/ocaml/belt_Array.cmi +0 -0
  62. package/lib/ocaml/belt_Array.cmt +0 -0
  63. package/lib/ocaml/belt_Array.cmti +0 -0
  64. package/lib/ocaml/belt_Array.ml +0 -525
  65. package/lib/ocaml/belt_Array.mli +0 -707
  66. package/lib/ocaml/belt_Float.cmi +0 -0
  67. package/lib/ocaml/belt_Float.cmt +0 -0
  68. package/lib/ocaml/belt_Float.cmti +0 -0
  69. package/lib/ocaml/belt_Float.ml +0 -50
  70. package/lib/ocaml/belt_Float.mli +0 -106
  71. package/lib/ocaml/belt_HashMap.cmi +0 -0
  72. package/lib/ocaml/belt_HashMap.cmt +0 -0
  73. package/lib/ocaml/belt_HashMap.cmti +0 -0
  74. package/lib/ocaml/belt_HashMap.ml +0 -226
  75. package/lib/ocaml/belt_HashMap.mli +0 -436
  76. package/lib/ocaml/belt_HashMapInt.cmi +0 -0
  77. package/lib/ocaml/belt_HashMapInt.cmt +0 -0
  78. package/lib/ocaml/belt_HashMapInt.cmti +0 -0
  79. package/lib/ocaml/belt_HashMapInt.ml +0 -206
  80. package/lib/ocaml/belt_HashMapInt.mli +0 -50
  81. package/lib/ocaml/belt_HashMapString.cmi +0 -0
  82. package/lib/ocaml/belt_HashMapString.cmt +0 -0
  83. package/lib/ocaml/belt_HashMapString.cmti +0 -0
  84. package/lib/ocaml/belt_HashMapString.ml +0 -206
  85. package/lib/ocaml/belt_HashMapString.mli +0 -50
  86. package/lib/ocaml/belt_HashSet.cmi +0 -0
  87. package/lib/ocaml/belt_HashSet.cmt +0 -0
  88. package/lib/ocaml/belt_HashSet.cmti +0 -0
  89. package/lib/ocaml/belt_HashSet.ml +0 -196
  90. package/lib/ocaml/belt_HashSet.mli +0 -125
  91. package/lib/ocaml/belt_HashSetInt.cmi +0 -0
  92. package/lib/ocaml/belt_HashSetInt.cmt +0 -0
  93. package/lib/ocaml/belt_HashSetInt.cmti +0 -0
  94. package/lib/ocaml/belt_HashSetInt.ml +0 -155
  95. package/lib/ocaml/belt_HashSetInt.mli +0 -74
  96. package/lib/ocaml/belt_HashSetString.cmi +0 -0
  97. package/lib/ocaml/belt_HashSetString.cmt +0 -0
  98. package/lib/ocaml/belt_HashSetString.cmti +0 -0
  99. package/lib/ocaml/belt_HashSetString.ml +0 -156
  100. package/lib/ocaml/belt_HashSetString.mli +0 -74
  101. package/lib/ocaml/belt_Id.cmi +0 -0
  102. package/lib/ocaml/belt_Id.cmt +0 -0
  103. package/lib/ocaml/belt_Id.cmti +0 -0
  104. package/lib/ocaml/belt_Id.ml +0 -133
  105. package/lib/ocaml/belt_Id.mli +0 -171
  106. package/lib/ocaml/belt_Int.cmi +0 -0
  107. package/lib/ocaml/belt_Int.cmt +0 -0
  108. package/lib/ocaml/belt_Int.cmti +0 -0
  109. package/lib/ocaml/belt_Int.ml +0 -50
  110. package/lib/ocaml/belt_Int.mli +0 -103
  111. package/lib/ocaml/belt_List.cmi +0 -0
  112. package/lib/ocaml/belt_List.cmt +0 -0
  113. package/lib/ocaml/belt_List.cmti +0 -0
  114. package/lib/ocaml/belt_List.ml +0 -803
  115. package/lib/ocaml/belt_List.mli +0 -844
  116. package/lib/ocaml/belt_Map.cmi +0 -0
  117. package/lib/ocaml/belt_Map.cmt +0 -0
  118. package/lib/ocaml/belt_Map.cmti +0 -0
  119. package/lib/ocaml/belt_Map.ml +0 -170
  120. package/lib/ocaml/belt_Map.mli +0 -496
  121. package/lib/ocaml/belt_MapDict.cmi +0 -0
  122. package/lib/ocaml/belt_MapDict.cmt +0 -0
  123. package/lib/ocaml/belt_MapDict.cmti +0 -0
  124. package/lib/ocaml/belt_MapDict.ml +0 -278
  125. package/lib/ocaml/belt_MapDict.mli +0 -268
  126. package/lib/ocaml/belt_MapInt.cmi +0 -0
  127. package/lib/ocaml/belt_MapInt.cmt +0 -0
  128. package/lib/ocaml/belt_MapInt.cmti +0 -0
  129. package/lib/ocaml/belt_MapInt.ml +0 -169
  130. package/lib/ocaml/belt_MapInt.mli +0 -187
  131. package/lib/ocaml/belt_MapString.cmi +0 -0
  132. package/lib/ocaml/belt_MapString.cmt +0 -0
  133. package/lib/ocaml/belt_MapString.cmti +0 -0
  134. package/lib/ocaml/belt_MapString.ml +0 -169
  135. package/lib/ocaml/belt_MapString.mli +0 -187
  136. package/lib/ocaml/belt_MutableMap.cmi +0 -0
  137. package/lib/ocaml/belt_MutableMap.cmt +0 -0
  138. package/lib/ocaml/belt_MutableMap.cmti +0 -0
  139. package/lib/ocaml/belt_MutableMap.ml +0 -241
  140. package/lib/ocaml/belt_MutableMap.mli +0 -145
  141. package/lib/ocaml/belt_MutableMapInt.cmi +0 -0
  142. package/lib/ocaml/belt_MutableMapInt.cmt +0 -0
  143. package/lib/ocaml/belt_MutableMapInt.cmti +0 -0
  144. package/lib/ocaml/belt_MutableMapInt.ml +0 -172
  145. package/lib/ocaml/belt_MutableMapInt.mli +0 -135
  146. package/lib/ocaml/belt_MutableMapString.cmi +0 -0
  147. package/lib/ocaml/belt_MutableMapString.cmt +0 -0
  148. package/lib/ocaml/belt_MutableMapString.cmti +0 -0
  149. package/lib/ocaml/belt_MutableMapString.ml +0 -172
  150. package/lib/ocaml/belt_MutableMapString.mli +0 -135
  151. package/lib/ocaml/belt_MutableQueue.cmi +0 -0
  152. package/lib/ocaml/belt_MutableQueue.cmt +0 -0
  153. package/lib/ocaml/belt_MutableQueue.cmti +0 -0
  154. package/lib/ocaml/belt_MutableQueue.ml +0 -222
  155. package/lib/ocaml/belt_MutableQueue.mli +0 -116
  156. package/lib/ocaml/belt_MutableSet.cmi +0 -0
  157. package/lib/ocaml/belt_MutableSet.cmt +0 -0
  158. package/lib/ocaml/belt_MutableSet.cmti +0 -0
  159. package/lib/ocaml/belt_MutableSet.ml +0 -371
  160. package/lib/ocaml/belt_MutableSet.mli +0 -617
  161. package/lib/ocaml/belt_MutableSetInt.cmi +0 -0
  162. package/lib/ocaml/belt_MutableSetInt.cmt +0 -0
  163. package/lib/ocaml/belt_MutableSetInt.cmti +0 -0
  164. package/lib/ocaml/belt_MutableSetInt.ml +0 -342
  165. package/lib/ocaml/belt_MutableSetInt.mli +0 -124
  166. package/lib/ocaml/belt_MutableSetString.cmi +0 -0
  167. package/lib/ocaml/belt_MutableSetString.cmt +0 -0
  168. package/lib/ocaml/belt_MutableSetString.cmti +0 -0
  169. package/lib/ocaml/belt_MutableSetString.ml +0 -342
  170. package/lib/ocaml/belt_MutableSetString.mli +0 -124
  171. package/lib/ocaml/belt_MutableStack.cmi +0 -0
  172. package/lib/ocaml/belt_MutableStack.cmt +0 -0
  173. package/lib/ocaml/belt_MutableStack.cmti +0 -0
  174. package/lib/ocaml/belt_MutableStack.ml +0 -106
  175. package/lib/ocaml/belt_MutableStack.mli +0 -63
  176. package/lib/ocaml/belt_Option.cmi +0 -0
  177. package/lib/ocaml/belt_Option.cmt +0 -0
  178. package/lib/ocaml/belt_Option.cmti +0 -0
  179. package/lib/ocaml/belt_Option.ml +0 -93
  180. package/lib/ocaml/belt_Option.mli +0 -270
  181. package/lib/ocaml/belt_Range.cmi +0 -0
  182. package/lib/ocaml/belt_Range.cmt +0 -0
  183. package/lib/ocaml/belt_Range.cmti +0 -0
  184. package/lib/ocaml/belt_Range.ml +0 -76
  185. package/lib/ocaml/belt_Range.mli +0 -114
  186. package/lib/ocaml/belt_Result.cmi +0 -0
  187. package/lib/ocaml/belt_Result.cmt +0 -0
  188. package/lib/ocaml/belt_Result.cmti +0 -0
  189. package/lib/ocaml/belt_Result.ml +0 -75
  190. package/lib/ocaml/belt_Result.mli +0 -205
  191. package/lib/ocaml/belt_Set.cmi +0 -0
  192. package/lib/ocaml/belt_Set.cmt +0 -0
  193. package/lib/ocaml/belt_Set.cmti +0 -0
  194. package/lib/ocaml/belt_Set.cppo.ml +0 -205
  195. package/lib/ocaml/belt_Set.cppo.mli +0 -153
  196. package/lib/ocaml/belt_Set.ml +0 -164
  197. package/lib/ocaml/belt_Set.mli +0 -523
  198. package/lib/ocaml/belt_SetDict.cmi +0 -0
  199. package/lib/ocaml/belt_SetDict.cmt +0 -0
  200. package/lib/ocaml/belt_SetDict.cmti +0 -0
  201. package/lib/ocaml/belt_SetDict.ml +0 -237
  202. package/lib/ocaml/belt_SetDict.mli +0 -567
  203. package/lib/ocaml/belt_SetInt.cmi +0 -0
  204. package/lib/ocaml/belt_SetInt.cmt +0 -0
  205. package/lib/ocaml/belt_SetInt.cmti +0 -0
  206. package/lib/ocaml/belt_SetInt.ml +0 -201
  207. package/lib/ocaml/belt_SetInt.mli +0 -151
  208. package/lib/ocaml/belt_SetString.cmi +0 -0
  209. package/lib/ocaml/belt_SetString.cmt +0 -0
  210. package/lib/ocaml/belt_SetString.cmti +0 -0
  211. package/lib/ocaml/belt_SetString.ml +0 -201
  212. package/lib/ocaml/belt_SetString.mli +0 -151
  213. package/lib/ocaml/belt_SortArray.cmi +0 -0
  214. package/lib/ocaml/belt_SortArray.cmt +0 -0
  215. package/lib/ocaml/belt_SortArray.cmti +0 -0
  216. package/lib/ocaml/belt_SortArray.ml +0 -322
  217. package/lib/ocaml/belt_SortArray.mli +0 -146
  218. package/lib/ocaml/belt_SortArrayInt.cmi +0 -0
  219. package/lib/ocaml/belt_SortArrayInt.cmt +0 -0
  220. package/lib/ocaml/belt_SortArrayInt.cmti +0 -0
  221. package/lib/ocaml/belt_SortArrayInt.ml +0 -263
  222. package/lib/ocaml/belt_SortArrayInt.mli +0 -93
  223. package/lib/ocaml/belt_SortArrayString.cmi +0 -0
  224. package/lib/ocaml/belt_SortArrayString.cmt +0 -0
  225. package/lib/ocaml/belt_SortArrayString.cmti +0 -0
  226. package/lib/ocaml/belt_SortArrayString.ml +0 -263
  227. package/lib/ocaml/belt_SortArrayString.mli +0 -93
  228. package/lib/ocaml/belt_internalAVLset.cmt +0 -0
  229. package/lib/ocaml/belt_internalAVLset.cmti +0 -0
  230. package/lib/ocaml/belt_internalAVLset.ml +0 -665
  231. package/lib/ocaml/belt_internalAVLset.mli +0 -124
  232. package/lib/ocaml/belt_internalAVLtree.cmt +0 -0
  233. package/lib/ocaml/belt_internalAVLtree.cmti +0 -0
  234. package/lib/ocaml/belt_internalAVLtree.ml +0 -762
  235. package/lib/ocaml/belt_internalAVLtree.mli +0 -215
  236. package/lib/ocaml/belt_internalBuckets.cmt +0 -0
  237. package/lib/ocaml/belt_internalBuckets.cmti +0 -0
  238. package/lib/ocaml/belt_internalBuckets.ml +0 -218
  239. package/lib/ocaml/belt_internalBuckets.mli +0 -57
  240. package/lib/ocaml/belt_internalBucketsType.cmt +0 -0
  241. package/lib/ocaml/belt_internalBucketsType.cmti +0 -0
  242. package/lib/ocaml/belt_internalBucketsType.ml +0 -59
  243. package/lib/ocaml/belt_internalBucketsType.mli +0 -46
  244. package/lib/ocaml/belt_internalMapInt.cmt +0 -0
  245. package/lib/ocaml/belt_internalMapInt.ml +0 -227
  246. package/lib/ocaml/belt_internalMapString.cmt +0 -0
  247. package/lib/ocaml/belt_internalMapString.ml +0 -227
  248. package/lib/ocaml/belt_internalSetBuckets.cmt +0 -0
  249. package/lib/ocaml/belt_internalSetBuckets.cmti +0 -0
  250. package/lib/ocaml/belt_internalSetBuckets.ml +0 -157
  251. package/lib/ocaml/belt_internalSetBuckets.mli +0 -47
  252. package/lib/ocaml/belt_internalSetInt.cmt +0 -0
  253. package/lib/ocaml/belt_internalSetInt.ml +0 -129
  254. package/lib/ocaml/belt_internalSetString.cmt +0 -0
  255. package/lib/ocaml/belt_internalSetString.ml +0 -129
  256. package/lib/ocaml/belt_internals.cmti +0 -0
  257. package/lib/ocaml/belt_internals.mli +0 -79
  258. package/lib/ocaml/buffer.cmi +0 -0
  259. package/lib/ocaml/buffer.cmt +0 -0
  260. package/lib/ocaml/buffer.cmti +0 -0
  261. package/lib/ocaml/buffer.ml +0 -250
  262. package/lib/ocaml/buffer.mli +0 -149
  263. package/lib/ocaml/bytes.cmi +0 -0
  264. package/lib/ocaml/bytes.cmt +0 -0
  265. package/lib/ocaml/bytes.cmti +0 -0
  266. package/lib/ocaml/bytes.ml +0 -431
  267. package/lib/ocaml/bytes.mli +0 -430
  268. package/lib/ocaml/bytesLabels.cmi +0 -0
  269. package/lib/ocaml/bytesLabels.cmt +0 -0
  270. package/lib/ocaml/bytesLabels.cmti +0 -0
  271. package/lib/ocaml/bytesLabels.ml +0 -428
  272. package/lib/ocaml/bytesLabels.mli +0 -276
  273. package/lib/ocaml/callback.cmi +0 -0
  274. package/lib/ocaml/callback.cmt +0 -0
  275. package/lib/ocaml/callback.cmti +0 -0
  276. package/lib/ocaml/callback.ml +0 -20
  277. package/lib/ocaml/callback.mli +0 -34
  278. package/lib/ocaml/camlinternalLazy.cmi +0 -0
  279. package/lib/ocaml/camlinternalLazy.cmt +0 -0
  280. package/lib/ocaml/camlinternalLazy.cmti +0 -0
  281. package/lib/ocaml/camlinternalLazy.ml +0 -89
  282. package/lib/ocaml/camlinternalLazy.mli +0 -27
  283. package/lib/ocaml/camlinternalMod.cmi +0 -0
  284. package/lib/ocaml/camlinternalMod.cmt +0 -0
  285. package/lib/ocaml/camlinternalMod.cmti +0 -0
  286. package/lib/ocaml/camlinternalMod.ml +0 -21
  287. package/lib/ocaml/camlinternalMod.mli +0 -25
  288. package/lib/ocaml/char.cmi +0 -0
  289. package/lib/ocaml/char.cmt +0 -0
  290. package/lib/ocaml/char.cmti +0 -0
  291. package/lib/ocaml/char.ml +0 -76
  292. package/lib/ocaml/char.mli +0 -72
  293. package/lib/ocaml/complex.cmi +0 -0
  294. package/lib/ocaml/complex.cmt +0 -0
  295. package/lib/ocaml/complex.cmti +0 -0
  296. package/lib/ocaml/complex.ml +0 -87
  297. package/lib/ocaml/complex.mli +0 -86
  298. package/lib/ocaml/digest.cmi +0 -0
  299. package/lib/ocaml/digest.cmt +0 -0
  300. package/lib/ocaml/digest.cmti +0 -0
  301. package/lib/ocaml/digest.ml +0 -66
  302. package/lib/ocaml/digest.mli +0 -68
  303. package/lib/ocaml/dom.cmi +0 -0
  304. package/lib/ocaml/dom.cmt +0 -0
  305. package/lib/ocaml/dom.ml +0 -296
  306. package/lib/ocaml/dom_storage.cmi +0 -0
  307. package/lib/ocaml/dom_storage.cmt +0 -0
  308. package/lib/ocaml/dom_storage.ml +0 -22
  309. package/lib/ocaml/dom_storage2.cmi +0 -0
  310. package/lib/ocaml/dom_storage2.cmt +0 -0
  311. package/lib/ocaml/dom_storage2.ml +0 -11
  312. package/lib/ocaml/filename.cmi +0 -0
  313. package/lib/ocaml/filename.cmt +0 -0
  314. package/lib/ocaml/filename.cmti +0 -0
  315. package/lib/ocaml/filename.ml +0 -233
  316. package/lib/ocaml/filename.mli +0 -134
  317. package/lib/ocaml/genlex.cmi +0 -0
  318. package/lib/ocaml/genlex.cmt +0 -0
  319. package/lib/ocaml/genlex.cmti +0 -0
  320. package/lib/ocaml/genlex.ml +0 -201
  321. package/lib/ocaml/genlex.mli +0 -73
  322. package/lib/ocaml/hashmap.cppo.ml +0 -214
  323. package/lib/ocaml/hashmap.cppo.mli +0 -54
  324. package/lib/ocaml/hashset.cppo.ml +0 -165
  325. package/lib/ocaml/hashset.cppo.mli +0 -77
  326. package/lib/ocaml/hashtbl.cmi +0 -0
  327. package/lib/ocaml/hashtbl.cmt +0 -0
  328. package/lib/ocaml/hashtbl.cmti +0 -0
  329. package/lib/ocaml/hashtbl.ml +0 -541
  330. package/lib/ocaml/hashtbl.mli +0 -411
  331. package/lib/ocaml/hashtblLabels.cmi +0 -0
  332. package/lib/ocaml/hashtblLabels.cmt +0 -0
  333. package/lib/ocaml/hashtblLabels.ml +0 -130
  334. package/lib/ocaml/int32.cmi +0 -0
  335. package/lib/ocaml/int32.cmt +0 -0
  336. package/lib/ocaml/int32.cmti +0 -0
  337. package/lib/ocaml/int32.ml +0 -64
  338. package/lib/ocaml/int32.mli +0 -186
  339. package/lib/ocaml/int64.cmi +0 -0
  340. package/lib/ocaml/int64.cmt +0 -0
  341. package/lib/ocaml/int64.cmti +0 -0
  342. package/lib/ocaml/int64.ml +0 -72
  343. package/lib/ocaml/int64.mli +0 -197
  344. package/lib/ocaml/internal_map.cppo.ml +0 -230
  345. package/lib/ocaml/internal_set.cppo.ml +0 -134
  346. package/lib/ocaml/js.cmi +0 -0
  347. package/lib/ocaml/js.cmt +0 -0
  348. package/lib/ocaml/js.ml +0 -313
  349. package/lib/ocaml/js_OO.cmi +0 -0
  350. package/lib/ocaml/js_OO.cmt +0 -0
  351. package/lib/ocaml/js_OO.ml +0 -180
  352. package/lib/ocaml/js_array.cmi +0 -0
  353. package/lib/ocaml/js_array.cmt +0 -0
  354. package/lib/ocaml/js_array.ml +0 -970
  355. package/lib/ocaml/js_array2.cmi +0 -0
  356. package/lib/ocaml/js_array2.cmt +0 -0
  357. package/lib/ocaml/js_array2.ml +0 -1065
  358. package/lib/ocaml/js_bigint.cmi +0 -0
  359. package/lib/ocaml/js_bigint.cmt +0 -0
  360. package/lib/ocaml/js_bigint.ml +0 -3
  361. package/lib/ocaml/js_cast.cmi +0 -0
  362. package/lib/ocaml/js_cast.cmt +0 -0
  363. package/lib/ocaml/js_cast.cmti +0 -0
  364. package/lib/ocaml/js_cast.ml +0 -29
  365. package/lib/ocaml/js_cast.mli +0 -45
  366. package/lib/ocaml/js_console.cmi +0 -0
  367. package/lib/ocaml/js_console.cmt +0 -0
  368. package/lib/ocaml/js_console.ml +0 -51
  369. package/lib/ocaml/js_date.cmi +0 -0
  370. package/lib/ocaml/js_date.cmt +0 -0
  371. package/lib/ocaml/js_date.ml +0 -1263
  372. package/lib/ocaml/js_dict.cmi +0 -0
  373. package/lib/ocaml/js_dict.cmt +0 -0
  374. package/lib/ocaml/js_dict.cmti +0 -0
  375. package/lib/ocaml/js_dict.ml +0 -114
  376. package/lib/ocaml/js_dict.mli +0 -152
  377. package/lib/ocaml/js_exn.cmi +0 -0
  378. package/lib/ocaml/js_exn.cmt +0 -0
  379. package/lib/ocaml/js_exn.cmti +0 -0
  380. package/lib/ocaml/js_exn.ml +0 -102
  381. package/lib/ocaml/js_exn.mli +0 -79
  382. package/lib/ocaml/js_float.cmi +0 -0
  383. package/lib/ocaml/js_float.cmt +0 -0
  384. package/lib/ocaml/js_float.ml +0 -294
  385. package/lib/ocaml/js_global.cmi +0 -0
  386. package/lib/ocaml/js_global.cmt +0 -0
  387. package/lib/ocaml/js_global.ml +0 -185
  388. package/lib/ocaml/js_int.cmi +0 -0
  389. package/lib/ocaml/js_int.cmt +0 -0
  390. package/lib/ocaml/js_int.ml +0 -158
  391. package/lib/ocaml/js_json.cmi +0 -0
  392. package/lib/ocaml/js_json.cmt +0 -0
  393. package/lib/ocaml/js_json.cmti +0 -0
  394. package/lib/ocaml/js_json.ml +0 -195
  395. package/lib/ocaml/js_json.mli +0 -244
  396. package/lib/ocaml/js_list.cmi +0 -0
  397. package/lib/ocaml/js_list.cmt +0 -0
  398. package/lib/ocaml/js_list.cmti +0 -0
  399. package/lib/ocaml/js_list.ml +0 -174
  400. package/lib/ocaml/js_list.mli +0 -72
  401. package/lib/ocaml/js_map.cmi +0 -0
  402. package/lib/ocaml/js_map.cmt +0 -0
  403. package/lib/ocaml/js_map.ml +0 -3
  404. package/lib/ocaml/js_mapperRt.cmi +0 -0
  405. package/lib/ocaml/js_mapperRt.cmt +0 -0
  406. package/lib/ocaml/js_mapperRt.cmti +0 -0
  407. package/lib/ocaml/js_mapperRt.ml +0 -50
  408. package/lib/ocaml/js_mapperRt.mli +0 -44
  409. package/lib/ocaml/js_math.cmi +0 -0
  410. package/lib/ocaml/js_math.cmt +0 -0
  411. package/lib/ocaml/js_math.ml +0 -626
  412. package/lib/ocaml/js_null.cmi +0 -0
  413. package/lib/ocaml/js_null.cmt +0 -0
  414. package/lib/ocaml/js_null.cmti +0 -0
  415. package/lib/ocaml/js_null.ml +0 -57
  416. package/lib/ocaml/js_null.mli +0 -87
  417. package/lib/ocaml/js_null_undefined.cmi +0 -0
  418. package/lib/ocaml/js_null_undefined.cmt +0 -0
  419. package/lib/ocaml/js_null_undefined.cmti +0 -0
  420. package/lib/ocaml/js_null_undefined.ml +0 -50
  421. package/lib/ocaml/js_null_undefined.mli +0 -85
  422. package/lib/ocaml/js_obj.cmi +0 -0
  423. package/lib/ocaml/js_obj.cmt +0 -0
  424. package/lib/ocaml/js_obj.ml +0 -100
  425. package/lib/ocaml/js_option.cmi +0 -0
  426. package/lib/ocaml/js_option.cmt +0 -0
  427. package/lib/ocaml/js_option.cmti +0 -0
  428. package/lib/ocaml/js_option.ml +0 -203
  429. package/lib/ocaml/js_option.mli +0 -52
  430. package/lib/ocaml/js_promise.cmi +0 -0
  431. package/lib/ocaml/js_promise.cmt +0 -0
  432. package/lib/ocaml/js_promise.ml +0 -100
  433. package/lib/ocaml/js_re.cmi +0 -0
  434. package/lib/ocaml/js_re.cmt +0 -0
  435. package/lib/ocaml/js_re.ml +0 -184
  436. package/lib/ocaml/js_result.cmi +0 -0
  437. package/lib/ocaml/js_result.cmt +0 -0
  438. package/lib/ocaml/js_result.cmti +0 -0
  439. package/lib/ocaml/js_result.ml +0 -28
  440. package/lib/ocaml/js_result.mli +0 -28
  441. package/lib/ocaml/js_set.cmi +0 -0
  442. package/lib/ocaml/js_set.cmt +0 -0
  443. package/lib/ocaml/js_set.ml +0 -3
  444. package/lib/ocaml/js_string.cmi +0 -0
  445. package/lib/ocaml/js_string.cmt +0 -0
  446. package/lib/ocaml/js_string.ml +0 -914
  447. package/lib/ocaml/js_string2.cmi +0 -0
  448. package/lib/ocaml/js_string2.cmt +0 -0
  449. package/lib/ocaml/js_string2.ml +0 -912
  450. package/lib/ocaml/js_typed_array.cmi +0 -0
  451. package/lib/ocaml/js_typed_array.cmt +0 -0
  452. package/lib/ocaml/js_typed_array.cppo.ml +0 -429
  453. package/lib/ocaml/js_typed_array.ml +0 -1405
  454. package/lib/ocaml/js_typed_array2.cmi +0 -0
  455. package/lib/ocaml/js_typed_array2.cmt +0 -0
  456. package/lib/ocaml/js_typed_array2.cppo.ml +0 -296
  457. package/lib/ocaml/js_typed_array2.ml +0 -1269
  458. package/lib/ocaml/js_types.cmi +0 -0
  459. package/lib/ocaml/js_types.cmt +0 -0
  460. package/lib/ocaml/js_types.cmti +0 -0
  461. package/lib/ocaml/js_types.ml +0 -118
  462. package/lib/ocaml/js_types.mli +0 -78
  463. package/lib/ocaml/js_undefined.cmi +0 -0
  464. package/lib/ocaml/js_undefined.cmt +0 -0
  465. package/lib/ocaml/js_undefined.cmti +0 -0
  466. package/lib/ocaml/js_undefined.ml +0 -59
  467. package/lib/ocaml/js_undefined.mli +0 -92
  468. package/lib/ocaml/js_vector.cmi +0 -0
  469. package/lib/ocaml/js_vector.cmt +0 -0
  470. package/lib/ocaml/js_vector.cmti +0 -0
  471. package/lib/ocaml/js_vector.ml +0 -143
  472. package/lib/ocaml/js_vector.mli +0 -92
  473. package/lib/ocaml/js_weakmap.cmi +0 -0
  474. package/lib/ocaml/js_weakmap.cmt +0 -0
  475. package/lib/ocaml/js_weakmap.ml +0 -3
  476. package/lib/ocaml/js_weakset.cmi +0 -0
  477. package/lib/ocaml/js_weakset.cmt +0 -0
  478. package/lib/ocaml/js_weakset.ml +0 -3
  479. package/lib/ocaml/jsx.cmi +0 -0
  480. package/lib/ocaml/jsx.cmt +0 -0
  481. package/lib/ocaml/jsx.ml +0 -39
  482. package/lib/ocaml/jsxDOM.cmi +0 -0
  483. package/lib/ocaml/jsxDOM.cmt +0 -0
  484. package/lib/ocaml/jsxDOM.ml +0 -2087
  485. package/lib/ocaml/jsxDOMStyle.cmi +0 -0
  486. package/lib/ocaml/jsxDOMStyle.cmt +0 -0
  487. package/lib/ocaml/jsxDOMStyle.ml +0 -777
  488. package/lib/ocaml/jsxEvent.cmi +0 -0
  489. package/lib/ocaml/jsxEvent.cmt +0 -0
  490. package/lib/ocaml/jsxEvent.ml +0 -358
  491. package/lib/ocaml/lazy.cmi +0 -0
  492. package/lib/ocaml/lazy.cmt +0 -0
  493. package/lib/ocaml/lazy.cmti +0 -0
  494. package/lib/ocaml/lazy.ml +0 -70
  495. package/lib/ocaml/lazy.mli +0 -95
  496. package/lib/ocaml/lexing.cmi +0 -0
  497. package/lib/ocaml/lexing.cmt +0 -0
  498. package/lib/ocaml/lexing.cmti +0 -0
  499. package/lib/ocaml/lexing.ml +0 -230
  500. package/lib/ocaml/lexing.mli +0 -172
  501. package/lib/ocaml/list.cmi +0 -0
  502. package/lib/ocaml/list.cmt +0 -0
  503. package/lib/ocaml/list.cmti +0 -0
  504. package/lib/ocaml/list.ml +0 -485
  505. package/lib/ocaml/list.mli +0 -347
  506. package/lib/ocaml/listLabels.cmi +0 -0
  507. package/lib/ocaml/listLabels.cmt +0 -0
  508. package/lib/ocaml/listLabels.cmti +0 -0
  509. package/lib/ocaml/listLabels.ml +0 -485
  510. package/lib/ocaml/listLabels.mli +0 -353
  511. package/lib/ocaml/map.cmi +0 -0
  512. package/lib/ocaml/map.cmt +0 -0
  513. package/lib/ocaml/map.cmti +0 -0
  514. package/lib/ocaml/map.cppo.ml +0 -174
  515. package/lib/ocaml/map.cppo.mli +0 -191
  516. package/lib/ocaml/map.ml +0 -480
  517. package/lib/ocaml/map.mli +0 -315
  518. package/lib/ocaml/mapLabels.cmi +0 -0
  519. package/lib/ocaml/mapLabels.cmt +0 -0
  520. package/lib/ocaml/mapLabels.ml +0 -480
  521. package/lib/ocaml/mapm.cppo.ml +0 -177
  522. package/lib/ocaml/mapm.cppo.mli +0 -138
  523. package/lib/ocaml/moreLabels.cmi +0 -0
  524. package/lib/ocaml/moreLabels.cmt +0 -0
  525. package/lib/ocaml/moreLabels.cmti +0 -0
  526. package/lib/ocaml/moreLabels.ml +0 -22
  527. package/lib/ocaml/moreLabels.mli +0 -198
  528. package/lib/ocaml/node.cmi +0 -0
  529. package/lib/ocaml/node.cmt +0 -0
  530. package/lib/ocaml/node.ml +0 -84
  531. package/lib/ocaml/node_buffer.cmi +0 -0
  532. package/lib/ocaml/node_buffer.cmt +0 -0
  533. package/lib/ocaml/node_buffer.ml +0 -47
  534. package/lib/ocaml/node_child_process.cmi +0 -0
  535. package/lib/ocaml/node_child_process.cmt +0 -0
  536. package/lib/ocaml/node_child_process.ml +0 -50
  537. package/lib/ocaml/node_fs.cmi +0 -0
  538. package/lib/ocaml/node_fs.cmt +0 -0
  539. package/lib/ocaml/node_fs.ml +0 -153
  540. package/lib/ocaml/node_module.cmi +0 -0
  541. package/lib/ocaml/node_module.cmt +0 -0
  542. package/lib/ocaml/node_module.ml +0 -29
  543. package/lib/ocaml/node_path.cmi +0 -0
  544. package/lib/ocaml/node_path.cmt +0 -0
  545. package/lib/ocaml/node_path.ml +0 -71
  546. package/lib/ocaml/node_process.cmi +0 -0
  547. package/lib/ocaml/node_process.cmt +0 -0
  548. package/lib/ocaml/node_process.cmti +0 -0
  549. package/lib/ocaml/node_process.ml +0 -59
  550. package/lib/ocaml/node_process.mli +0 -48
  551. package/lib/ocaml/obj.cmi +0 -0
  552. package/lib/ocaml/obj.cmt +0 -0
  553. package/lib/ocaml/obj.cmti +0 -0
  554. package/lib/ocaml/obj.ml +0 -29
  555. package/lib/ocaml/obj.mli +0 -62
  556. package/lib/ocaml/parsing.cmi +0 -0
  557. package/lib/ocaml/parsing.cmt +0 -0
  558. package/lib/ocaml/parsing.cmti +0 -0
  559. package/lib/ocaml/parsing.ml +0 -212
  560. package/lib/ocaml/parsing.mli +0 -105
  561. package/lib/ocaml/pervasives.cmi +0 -0
  562. package/lib/ocaml/pervasives.cmt +0 -0
  563. package/lib/ocaml/pervasives.cmti +0 -0
  564. package/lib/ocaml/pervasives.ml +0 -297
  565. package/lib/ocaml/pervasives.mli +0 -771
  566. package/lib/ocaml/printexc.cmi +0 -0
  567. package/lib/ocaml/printexc.cmt +0 -0
  568. package/lib/ocaml/printexc.cmti +0 -0
  569. package/lib/ocaml/printexc.ml +0 -79
  570. package/lib/ocaml/printexc.mli +0 -57
  571. package/lib/ocaml/queue.cmi +0 -0
  572. package/lib/ocaml/queue.cmt +0 -0
  573. package/lib/ocaml/queue.cmti +0 -0
  574. package/lib/ocaml/queue.ml +0 -132
  575. package/lib/ocaml/queue.mli +0 -82
  576. package/lib/ocaml/random.cmi +0 -0
  577. package/lib/ocaml/random.cmt +0 -0
  578. package/lib/ocaml/random.cmti +0 -0
  579. package/lib/ocaml/random.ml +0 -273
  580. package/lib/ocaml/random.mli +0 -102
  581. package/lib/ocaml/set.cmi +0 -0
  582. package/lib/ocaml/set.cmt +0 -0
  583. package/lib/ocaml/set.cmti +0 -0
  584. package/lib/ocaml/set.ml +0 -526
  585. package/lib/ocaml/set.mli +0 -266
  586. package/lib/ocaml/setLabels.cmi +0 -0
  587. package/lib/ocaml/setLabels.cmt +0 -0
  588. package/lib/ocaml/setLabels.ml +0 -526
  589. package/lib/ocaml/setm.cppo.ml +0 -346
  590. package/lib/ocaml/setm.cppo.mli +0 -126
  591. package/lib/ocaml/sort.cmi +0 -0
  592. package/lib/ocaml/sort.cmt +0 -0
  593. package/lib/ocaml/sort.cmti +0 -0
  594. package/lib/ocaml/sort.cppo.ml +0 -267
  595. package/lib/ocaml/sort.cppo.mli +0 -96
  596. package/lib/ocaml/sort.ml +0 -99
  597. package/lib/ocaml/sort.mli +0 -44
  598. package/lib/ocaml/stack.cmi +0 -0
  599. package/lib/ocaml/stack.cmt +0 -0
  600. package/lib/ocaml/stack.cmti +0 -0
  601. package/lib/ocaml/stack.ml +0 -44
  602. package/lib/ocaml/stack.mli +0 -63
  603. package/lib/ocaml/stdLabels.cmi +0 -0
  604. package/lib/ocaml/stdLabels.cmt +0 -0
  605. package/lib/ocaml/stdLabels.cmti +0 -0
  606. package/lib/ocaml/stdLabels.ml +0 -24
  607. package/lib/ocaml/stdLabels.mli +0 -29
  608. package/lib/ocaml/stream.cmi +0 -0
  609. package/lib/ocaml/stream.cmt +0 -0
  610. package/lib/ocaml/stream.cmti +0 -0
  611. package/lib/ocaml/stream.ml +0 -213
  612. package/lib/ocaml/stream.mli +0 -108
  613. package/lib/ocaml/string.cmi +0 -0
  614. package/lib/ocaml/string.cmt +0 -0
  615. package/lib/ocaml/string.cmti +0 -0
  616. package/lib/ocaml/string.ml +0 -190
  617. package/lib/ocaml/string.mli +0 -286
  618. package/lib/ocaml/stringLabels.cmi +0 -0
  619. package/lib/ocaml/stringLabels.cmt +0 -0
  620. package/lib/ocaml/stringLabels.cmti +0 -0
  621. package/lib/ocaml/stringLabels.ml +0 -190
  622. package/lib/ocaml/stringLabels.mli +0 -241
  623. package/lib/ocaml/sys.cmi +0 -0
  624. package/lib/ocaml/sys.cmt +0 -0
  625. package/lib/ocaml/sys.cmti +0 -0
  626. package/lib/ocaml/sys.ml +0 -135
  627. package/lib/ocaml/sys.mli +0 -333
  628. package/lib/ocaml/uchar.cmi +0 -0
  629. package/lib/ocaml/uchar.cmt +0 -0
  630. package/lib/ocaml/uchar.cmti +0 -0
  631. package/lib/ocaml/uchar.ml +0 -58
  632. package/lib/ocaml/uchar.mli +0 -98
  633. package/linux/bsb_helper.exe +0 -0
  634. package/linux/bsc.exe +0 -0
  635. package/linux/ninja.COPYING +0 -202
  636. package/linux/ninja.exe +0 -0
  637. package/linux/rescript.exe +0 -0
  638. package/openbsd/.keep +0 -0
  639. package/scripts/LICENSE.ml +0 -27
  640. package/scripts/buckle_lto.js +0 -55
  641. package/scripts/build_sorted.ml +0 -233
  642. package/scripts/caml_oo_curry_gen.ml +0 -71
  643. package/scripts/checkUnused.js +0 -63
  644. package/scripts/ciTest.js +0 -172
  645. package/scripts/cover.sh +0 -3
  646. package/scripts/curry_gen.ml +0 -167
  647. package/scripts/dbg +0 -13
  648. package/scripts/dedupe.js +0 -44
  649. package/scripts/doc_gen.js +0 -117
  650. package/scripts/js_internal_gen.js +0 -135
  651. package/scripts/jsconfig.json +0 -12
  652. package/scripts/littlecase.js +0 -21
  653. package/scripts/ninja.js +0 -1980
  654. package/scripts/pack.js +0 -107
  655. package/scripts/prebuilt.js +0 -99
  656. package/scripts/release.js +0 -41
  657. package/scripts/repl.js +0 -151
  658. package/scripts/shake.js +0 -138
  659. package/scripts/tasks.js +0 -149
  660. package/scripts/test.sh +0 -3
  661. package/scripts/tmp.js +0 -98
  662. package/scripts/validate.js +0 -41
  663. package/vendor/ninja.tar.gz +0 -0
  664. package/win32/bsb_helper.exe +0 -0
  665. package/win32/bsc.exe +0 -0
  666. package/win32/ninja.COPYING +0 -202
  667. package/win32/ninja.exe +0 -0
  668. package/win32/rescript.exe +0 -0
@@ -1,762 +0,0 @@
1
- (***********************************************************************)
2
- (* *)
3
- (* OCaml *)
4
- (* *)
5
- (* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
6
- (* *)
7
- (* Copyright 1996 Institut National de Recherche en Informatique et *)
8
- (* en Automatique. All rights reserved. This file is distributed *)
9
- (* under the terms of the GNU Library General Public License, with *)
10
- (* the special exception on linking described in file ../LICENSE. *)
11
- (* *)
12
- (***********************************************************************)
13
- (** Almost rewritten by authors of ReScript *)
14
-
15
- [@@@bs.config {flags = [|"-bs-noassertfalse" |] }]
16
- type ('k, 'v) node = {
17
- mutable key : 'k; [@bs.as "k"]
18
- mutable value : 'v; [@bs.as "v"]
19
- mutable height : int; [@bs.as "h"]
20
- mutable left : ('k,'v) t; [@bs.as "l"]
21
- mutable right : ('k,'v) t [@bs.as "r"]
22
- }
23
- and ('key, 'a) t = ('key, 'a) node option
24
-
25
-
26
- type ('k, 'id) cmp = ('k, 'id) Belt_Id.cmp
27
-
28
- module A = Belt_Array
29
- module S = Belt_SortArray
30
-
31
-
32
- let treeHeight (n : _ t) =
33
- match n with
34
- None -> 0
35
- | Some n -> n.height
36
-
37
- let rec copy n =
38
- match n with
39
- | None -> n
40
- | Some n ->
41
- Some { n with left = copy n.left; right = copy n.right}
42
-
43
- let create l x d r =
44
- let hl, hr = treeHeight l, treeHeight r in
45
- Some { left = l ; key = x ; value = d ; right = r ; height = (if hl >= hr then hl + 1 else hr + 1)}
46
-
47
- let singleton x d =
48
- Some { left = None; key = x; value = d; right = None; height = 1}
49
-
50
- let heightGe l r =
51
- match l, r with
52
- | _, None -> true
53
- | Some hl, Some hr -> hl.height >= hr.height
54
- | None, Some _ -> false
55
-
56
- let updateValue n newValue =
57
- if n.value == newValue then n
58
- else
59
- { left = n.left;
60
- right = n.right;
61
- key = n.key;
62
- value = newValue;
63
- height = n.height }
64
-
65
- let bal l x d r =
66
- let hl = match l with None -> 0 | Some n -> n.height in
67
- let hr = match r with None -> 0 | Some n -> n.height in
68
- if hl > hr + 2 then
69
- match l with None -> assert false | Some ({left = ll; right = lr} as l) ->
70
- if treeHeight ll >= treeHeight lr then
71
- create ll l.key l.value (create lr x d r)
72
- else
73
- match lr with None -> assert false | Some lr ->
74
- create (create ll l.key l.value lr.left) lr.key lr.value (create lr.right x d r)
75
- else if hr > hl + 2 then
76
- match r with None -> assert false | Some ({left = rl; right = rr} as r) ->
77
- if treeHeight rr >= treeHeight rl then
78
- create (create l x d rl) r.key r.value rr
79
- else
80
- match rl with None -> assert false | Some rl ->
81
- create (create l x d rl.left) rl.key rl.value (create rl.right r.key r.value rr)
82
- else
83
- Some { left = l; key = x ; value = d ; right = r ; height = (if hl >= hr then hl + 1 else hr + 1)}
84
-
85
-
86
- let rec minKey0Aux n =
87
- match n.left with
88
- | None -> n.key
89
- | Some n -> minKey0Aux n
90
-
91
- let minKey n =
92
- match n with
93
- | None -> None
94
- | Some n -> Some (minKey0Aux n)
95
-
96
- let minKeyUndefined n =
97
- match n with
98
- | None -> Js.undefined
99
- | Some n -> Js.Undefined.return (minKey0Aux n)
100
-
101
- let rec maxKey0Aux n =
102
- match n.right with
103
- | None -> n.key
104
- | Some n -> maxKey0Aux n
105
-
106
- let maxKey n =
107
- match n with
108
- | None -> None
109
- | Some n -> Some (maxKey0Aux n)
110
-
111
- let maxKeyUndefined n =
112
- match n with
113
- | None -> Js.undefined
114
- | Some n -> Js.Undefined.return (maxKey0Aux n)
115
-
116
- let rec minKV0Aux n =
117
- match n.left with
118
- | None -> n.key , n.value
119
- | Some n -> minKV0Aux n
120
-
121
- let minimum n =
122
- match n with
123
- None -> None
124
- | Some n -> Some (minKV0Aux n)
125
-
126
- let minUndefined n =
127
- match n with
128
- | None -> Js.undefined
129
- | Some n -> Js.Undefined.return (minKV0Aux n)
130
-
131
- let rec maxKV0Aux n =
132
- match n.right with
133
- | None -> n.key , n.value
134
- | Some n -> maxKV0Aux n
135
-
136
- let maximum n =
137
- match n with
138
- | None -> None
139
- | Some n -> Some (maxKV0Aux n)
140
-
141
- let maxUndefined n =
142
- match n with
143
- | None -> Js.undefined
144
- | Some n -> Js.Undefined.return (maxKV0Aux n)
145
-
146
- (* TODO: use kv ref *)
147
- let rec removeMinAuxWithRef n kr vr =
148
- match n.left with
149
- | None -> kr .contents<- n.key; vr.contents<- n.value; n.right
150
- | Some ln -> bal (removeMinAuxWithRef ln kr vr) n.key n.value n.right
151
-
152
-
153
-
154
- let isEmpty x = match x with None -> true | Some _ -> false
155
-
156
- let rec stackAllLeft v s =
157
- match v with
158
- | None -> s
159
- | Some x -> stackAllLeft x.left (x::s)
160
-
161
- let rec findFirstByU n p =
162
- match n with
163
- | None -> None
164
- | Some n ->
165
- let left = findFirstByU n.left p in
166
- if left <> None then left
167
- else
168
- let {key = v; value = d} = n in
169
- let pvd = p v d [@bs] in
170
- if pvd then Some(v, d)
171
- else
172
- let right = findFirstByU n.right p in
173
- if right <> None then right else None
174
-
175
- let findFirstBy n p = findFirstByU n (fun [@bs] a b -> p a b)
176
-
177
- let rec forEachU n f =
178
- match n with
179
- | None -> ()
180
- | Some n ->
181
- forEachU n.left f ;
182
- f n.key n.value [@bs];
183
- forEachU n.right f
184
-
185
- let forEach n f = forEachU n (fun [@bs] a b -> f a b)
186
-
187
- let rec mapU n f =
188
- match n with
189
- None ->
190
- None
191
- | Some n ->
192
- let newLeft = mapU n.left f in
193
- let newD = f n.value [@bs] in
194
- let newRight = mapU n.right f in
195
- Some { left = newLeft; key = n.key; value = newD; right = newRight; height = n.height}
196
-
197
- let map n f = mapU n (fun[@bs] a -> f a)
198
-
199
- let rec mapWithKeyU n f =
200
- match n with
201
- None ->
202
- None
203
- | Some n ->
204
- let key = n.key in
205
- let newLeft = mapWithKeyU n.left f in
206
- let newD = f key n.value [@bs] in
207
- let newRight = mapWithKeyU n.right f in
208
- Some { left = newLeft; key; value = newD; right = newRight; height = n.height}
209
-
210
- let mapWithKey n f = mapWithKeyU n (fun [@bs] a b -> f a b)
211
-
212
- let rec reduceU m accu f =
213
- match m with
214
- None -> accu
215
- | Some n ->
216
- let {left = l; key = v; value = d; right = r} = n in
217
- reduceU
218
- r
219
- (f (reduceU l accu f) v d [@bs]) f
220
-
221
- let reduce m accu f = reduceU m accu (fun [@bs] a b c -> f a b c)
222
-
223
- let rec everyU n p =
224
- match n with
225
- None -> true
226
- | Some n ->
227
- p n.key n.value [@bs] &&
228
- everyU n.left p &&
229
- everyU n.right p
230
- let every n p = everyU n (fun [@bs] a b -> p a b)
231
-
232
- let rec someU n p =
233
- match n with
234
- None -> false
235
- | Some n ->
236
- p n.key n.value [@bs] ||
237
- someU n.left p ||
238
- someU n.right p
239
- let some n p = someU n (fun[@bs] a b -> p a b)
240
- (* Beware: those two functions assume that the added k is *strictly*
241
- smaller (or bigger) than all the present keys in the tree; it
242
- does not test for equality with the current min (or max) key.
243
-
244
- Indeed, they are only used during the "join" operation which
245
- respects this precondition.
246
- *)
247
-
248
- let rec addMinElement n k v =
249
- match n with
250
- | None -> singleton k v
251
- | Some n
252
- ->
253
- bal (addMinElement n.left k v ) n.key n.value n.right
254
-
255
- let rec addMaxElement n k v =
256
- match n with
257
- | None -> singleton k v
258
- | Some n
259
- ->
260
- bal n.left n.key n.value (addMaxElement n.right k v )
261
-
262
- (* Same as create and bal, but no assumptions are made on the
263
- relative heights of l and r. *)
264
-
265
- let rec join ln v d rn =
266
- match ( ln, rn) with
267
- (None, _) -> addMinElement rn v d
268
- | (_, None) -> addMaxElement ln v d
269
- | Some l, Some r ->
270
- let {left = ll; key = lv; value = ld; right = lr; height = lh} = l in
271
- let {left = rl; key = rv; value = rd; right = rr; height = rh} = r in
272
- if lh > rh + 2 then bal ll lv ld (join lr v d rn) else
273
- if rh > lh + 2 then bal (join ln v d rl) rv rd rr else
274
- create ln v d rn
275
-
276
- (* Merge two trees l and r into one.
277
- All elements of l must precede the elements of r.
278
- No assumption on the heights of l and r. *)
279
-
280
- let concat t1 t2 =
281
- match ( t1, t2) with
282
- (None, _) -> t2
283
- | (_, None) -> t1
284
- | (_, Some t2n) ->
285
- let kr, vr = ref t2n.key, ref t2n.value in
286
- let t2r = removeMinAuxWithRef t2n kr vr in
287
- join t1 kr.contents vr.contents t2r
288
-
289
- let concatOrJoin t1 v d t2 =
290
- match d with
291
- | Some d -> join t1 v d t2
292
- | None -> concat t1 t2
293
-
294
- let rec keepSharedU n p =
295
- match n with
296
- None -> None
297
- | Some n ->
298
- (* call `p` in the expected left-to-right order *)
299
- let {key = v; value = d} = n in
300
- let newLeft = keepSharedU n.left p in
301
- let pvd = p v d [@bs] in
302
- let newRight = keepSharedU n.right p in
303
- if pvd then join newLeft v d newRight else concat newLeft newRight
304
-
305
- let keepShared n p = keepSharedU n (fun [@bs] a b -> p a b)
306
-
307
- let rec keepMapU n p =
308
- match n with
309
- None -> None
310
- | Some n ->
311
- (* call `p` in the expected left-to-right order *)
312
- let {key = v; value = d} = n in
313
- let newLeft = keepMapU n.left p in
314
- let pvd = p v d [@bs] in
315
- let newRight = keepMapU n.right p in
316
- match pvd with
317
- | None -> concat newLeft newRight
318
- | Some d -> join newLeft v d newRight
319
-
320
- let keepMap n p = keepMapU n (fun[@bs] a b -> p a b)
321
-
322
- let rec partitionSharedU n p =
323
- match n with
324
- None -> (None, None)
325
- | Some n ->
326
- let {key; value } = n in
327
- (* call `p` in the expected left-to-right order *)
328
- let (lt, lf) = partitionSharedU n.left p in
329
- let pvd = p key value [@bs] in
330
- let (rt, rf) = partitionSharedU n.right p in
331
- if pvd
332
- then (join lt key value rt, concat lf rf)
333
- else (concat lt rt, join lf key value rf)
334
-
335
- let partitionShared n p = partitionSharedU n (fun [@bs] a b -> p a b)
336
-
337
- let rec lengthNode n =
338
- let {left = l; right = r } = n in
339
- let sizeL =
340
- match l with
341
- | None -> 0
342
- | Some l ->
343
- lengthNode l in
344
- let sizeR =
345
- match r with
346
- | None -> 0
347
- | Some r -> lengthNode r in
348
- 1 + sizeL + sizeR
349
-
350
- let size n =
351
- match n with
352
- | None -> 0
353
- | Some n ->
354
- lengthNode n
355
-
356
- let rec toListAux n accu =
357
- match n with
358
- | None -> accu
359
- | Some n ->
360
- let {left = l; right = r ; key = k; value = v} = n in
361
- toListAux l ((k, v) :: (toListAux r accu ))
362
-
363
- let toList s =
364
- toListAux s []
365
-
366
-
367
- let rec checkInvariantInternal (v : _ t) =
368
- match v with
369
- | None -> ()
370
- | Some n ->
371
- let l,r = n.left , n.right in
372
- let diff = treeHeight l - treeHeight r in
373
- assert (diff <=2 && diff >= -2 );
374
- checkInvariantInternal l;
375
- checkInvariantInternal r
376
-
377
-
378
- let rec fillArrayKey n i arr =
379
- let {left = l; key = v; right = r} = n in
380
- let next =
381
- match l with
382
- | None -> i
383
- | Some l ->
384
- fillArrayKey l i arr in
385
- A.setUnsafe arr next v;
386
- let rnext = next + 1 in
387
- match r with
388
- | None -> rnext
389
- | Some r ->
390
- fillArrayKey r rnext arr
391
-
392
- let rec fillArrayValue n i arr =
393
- let l,r = n.left, n.right in
394
- let next =
395
- match l with
396
- | None -> i
397
- | Some l ->
398
- fillArrayValue l i arr in
399
- A.setUnsafe arr next n.value;
400
- let rnext = next + 1 in
401
- match r with
402
- | None -> rnext
403
- | Some r ->
404
- fillArrayValue r rnext arr
405
-
406
- let rec fillArray n i arr =
407
- let l,v,r = n.left, n.key , n.right in
408
- let next =
409
- match l with
410
- | None -> i
411
- | Some l ->
412
- fillArray l i arr in
413
- A.setUnsafe arr next (v, n.value) ;
414
- let rnext = next + 1 in
415
- match r with
416
- | None -> rnext
417
- | Some r ->
418
- fillArray r rnext arr
419
-
420
-
421
-
422
- (* let rec fillArrayWithPartition n cursor arr p =
423
- let l,v,r = n.left, n.key , n.right in
424
- (match l with
425
- | None -> ()
426
- | Some l ->
427
- fillArrayWithPartition l cursor arr p);
428
- (if p v [@bs] then begin
429
- let c = forwardGet cursor in
430
- A.setUnsafe arr c (v,n.value);
431
- forwardSet cursor (c + 1)
432
- end
433
- else begin
434
- let c = backwardGet cursor in
435
- A.setUnsafe arr c (v, n.value);
436
- backwardSet cursor (c - 1)
437
- end);
438
- match r with
439
- | None -> ()
440
- | Some r ->
441
- fillArrayWithPartition r cursor arr p
442
-
443
- let rec fillArrayWithFilter n i arr p =
444
- let l,v,r = n.left, n.key , n.right in
445
- let next =
446
- match l with
447
- | None -> i
448
- | Some l ->
449
- fillArrayWithFilter l i arr p in
450
- let rnext =
451
- if p v [@bs] then
452
- (A.setUnsafe arr next (v, n.value);
453
- next + 1
454
- )
455
- else next in
456
- match r with
457
- | None -> rnext
458
- | Some r ->
459
- fillArrayWithFilter r rnext arr p
460
- *)
461
-
462
- let toArray n =
463
- match n with
464
- | None -> [||]
465
- | Some n ->
466
- let size = lengthNode n in
467
- let v = A.makeUninitializedUnsafe size in
468
- ignore (fillArray n 0 v : int); (* may add assertion *)
469
- v
470
-
471
- let keysToArray n =
472
- match n with
473
- | None -> [||]
474
- | Some n ->
475
- let size = lengthNode n in
476
- let v = A.makeUninitializedUnsafe size in
477
- ignore (fillArrayKey n 0 v : int); (* may add assertion *)
478
- v
479
-
480
- let valuesToArray n =
481
- match n with
482
- | None -> [||]
483
- | Some n ->
484
- let size = lengthNode n in
485
- let v = A.makeUninitializedUnsafe size in
486
- ignore (fillArrayValue n 0 v : int); (* may add assertion *)
487
- v
488
-
489
- let rec fromSortedArrayRevAux arr off len =
490
- match len with
491
- | 0 -> None
492
- | 1 -> let k, v = (A.getUnsafe arr off) in singleton k v
493
- | 2 ->
494
- let (x0,y0),(x1,y1) = A.(getUnsafe arr off, getUnsafe arr (off - 1) )
495
- in
496
- Some { left = (singleton x0 y0); key = x1; value = y1; height = 2; right = None}
497
- | 3 ->
498
- let (x0,y0),(x1,y1),(x2,y2) =
499
- A.(getUnsafe arr off,
500
- getUnsafe arr (off - 1),
501
- getUnsafe arr (off - 2)) in
502
- Some { left = (singleton x0 y0);
503
- right = (singleton x2 y2);
504
- key = x1;
505
- value = y1;
506
- height = 2 }
507
- | _ ->
508
- let nl = len / 2 in
509
- let left = fromSortedArrayRevAux arr off nl in
510
- let midK,midV = A.getUnsafe arr (off - nl) in
511
- let right =
512
- fromSortedArrayRevAux arr (off - nl - 1) (len - nl - 1) in
513
- create left midK midV right
514
-
515
-
516
- let rec fromSortedArrayAux arr off len =
517
- match len with
518
- | 0 -> None
519
- | 1 -> let k, v = (A.getUnsafe arr off) in singleton k v
520
- | 2 ->
521
- let (x0,y0),(x1,y1) = A.(getUnsafe arr off, getUnsafe arr (off + 1) )
522
- in
523
- Some {left = (singleton x0 y0); key = x1 ; value = y1; height = 2; right = None}
524
- | 3 ->
525
- let (x0,y0),(x1,y1),(x2,y2) =
526
- A.(getUnsafe arr off,
527
- getUnsafe arr (off + 1),
528
- getUnsafe arr (off + 2)) in
529
- Some { left = (singleton x0 y0);
530
- right = (singleton x2 y2);
531
- key = x1; value = y1;
532
- height = 2}
533
- | _ ->
534
- let nl = len / 2 in
535
- let left = fromSortedArrayAux arr off nl in
536
- let midK, midV = A.getUnsafe arr (off + nl) in
537
- let right =
538
- fromSortedArrayAux arr (off + nl + 1) (len - nl - 1) in
539
- create left midK midV right
540
-
541
- let fromSortedArrayUnsafe arr =
542
- fromSortedArrayAux arr 0 (A.length arr)
543
-
544
- let rec compareAux e1 e2 ~kcmp ~vcmp =
545
- match e1,e2 with
546
- | h1::t1, h2::t2 ->
547
- let c = (Belt_Id.getCmpInternal kcmp) h1.key h2.key [@bs] in
548
- if c = 0 then
549
- let cx = vcmp h1.value h2.value [@bs] in
550
- if cx = 0 then
551
- compareAux ~kcmp ~vcmp
552
- (stackAllLeft h1.right t1 )
553
- (stackAllLeft h2.right t2)
554
- else cx
555
- else c
556
- | _, _ -> 0
557
-
558
- let rec eqAux e1 e2 ~kcmp ~veq =
559
- match e1,e2 with
560
- | h1::t1, h2::t2 ->
561
- if (Belt_Id.getCmpInternal kcmp) h1.key h2.key [@bs] = 0 &&
562
- veq h1.value h2.value [@bs] then
563
- eqAux ~kcmp ~veq (
564
- stackAllLeft h1.right t1 ) (stackAllLeft h2.right t2)
565
- else false
566
- | _, _ -> true
567
-
568
- let cmpU s1 s2 ~kcmp ~vcmp =
569
- let len1,len2 = size s1, size s2 in
570
- if len1 = len2 then
571
- compareAux (stackAllLeft s1 []) (stackAllLeft s2 []) ~kcmp ~vcmp
572
- else if len1 < len2 then -1 else 1
573
-
574
- let cmp s1 s2 ~kcmp ~vcmp =
575
- cmpU s1 s2 ~kcmp ~vcmp:(fun[@bs] a b -> vcmp a b)
576
-
577
- let eqU s1 s2 ~kcmp ~veq =
578
- let len1, len2 = size s1, size s2 in
579
- if len1 = len2 then
580
- eqAux (stackAllLeft s1 []) (stackAllLeft s2 []) ~kcmp ~veq
581
- else false
582
-
583
- let eq s1 s2 ~kcmp ~veq =
584
- eqU s1 s2 ~kcmp ~veq:(fun [@bs] a b -> veq a b)
585
-
586
- let rec get n x ~cmp =
587
- match n with
588
- None -> None
589
- | Some n (* Node(l, v, d, r, _) *) ->
590
- let v = n.key in
591
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
592
- if c = 0 then Some n.value
593
- else get ~cmp (if c < 0 then n.left else n.right) x
594
-
595
- let rec getUndefined n x ~cmp =
596
- match n with
597
- | None -> Js.undefined
598
- | Some n ->
599
- let v = n.key in
600
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
601
- if c = 0 then Js.Undefined.return (n.value )
602
- else getUndefined ~cmp (if c < 0 then n.left else n.right) x
603
-
604
- let rec getExn n x ~cmp =
605
- match n with
606
- None ->
607
- raise Not_found
608
- | Some n (* Node(l, v, d, r, _)*) ->
609
- let v = n.key in
610
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
611
- if c = 0 then n.value
612
- else getExn ~cmp (if c < 0 then n.left else n.right) x
613
-
614
- let rec getWithDefault n x def ~cmp =
615
- match n with
616
- None ->
617
- def
618
- | Some n (* Node(l, v, d, r, _)*) ->
619
- let v = n.key in
620
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
621
- if c = 0 then n.value
622
- else getWithDefault ~cmp (if c < 0 then n.left else n.right) x def
623
-
624
- let rec has n x ~cmp =
625
- match n with
626
- None ->
627
- false
628
- | Some n (* Node(l, v, d, r, _) *) ->
629
- let v = n.key in
630
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
631
- c = 0 || has ~cmp (if c < 0 then n.left else n.right) x
632
-
633
-
634
- (******************************************************************)
635
-
636
- (*
637
- L rotation, Some root node
638
- *)
639
- let rotateWithLeftChild k2 =
640
- match k2.left with None -> assert false
641
- | Some k1 ->
642
- (k2.left <- k1.right);
643
- (k1.right <- (Some k2 ));
644
- let hlk2, hrk2 = (treeHeight k2.left, (treeHeight k2.right)) in
645
- (k2.height <-
646
- (Pervasives.max hlk2 hrk2 + 1));
647
- let hlk1, hk2 = (treeHeight k1.left, k2.height) in
648
- (k1.height <- (Pervasives.max hlk1 hk2 + 1));
649
- k1
650
- (* right rotation *)
651
- let rotateWithRightChild k1 =
652
- match k1.right with None -> assert false
653
- | Some k2 ->
654
- (k1.right <- k2.left);
655
- (k2.left <- (Some k1));
656
- let hlk1, hrk1 = ((treeHeight k1.left), (treeHeight k1.right)) in
657
- (k1.height <- (Pervasives.max hlk1 hrk1 + 1));
658
- let hrk2, hk1 = (treeHeight k2.right, k1.height) in
659
- (k2.height <- (Pervasives.max hrk2 hk1 + 1));
660
- k2
661
-
662
- (*
663
- double l rotation
664
- *)
665
- let doubleWithLeftChild k3 =
666
- let k3l = match k3.left with None -> assert false | Some x -> x in
667
- let v = rotateWithRightChild k3l in
668
- (k3.left <- (Some v ));
669
- rotateWithLeftChild k3
670
-
671
- let doubleWithRightChild k2 =
672
- let k2r = match k2.right with None -> assert false | Some x -> x in
673
- let v = rotateWithLeftChild k2r in
674
- (k2.right <- (Some v));
675
- rotateWithRightChild k2
676
-
677
- let heightUpdateMutate t =
678
- let hlt, hrt = (treeHeight t.left,(treeHeight t.right)) in
679
- t.height <- (Pervasives.max hlt hrt + 1);
680
- t
681
-
682
- let balMutate nt =
683
- let l, r = (nt.left, nt.right) in
684
- let hl, hr = (treeHeight l, treeHeight r) in
685
- if hl > 2 + hr then
686
- match l with None -> assert false
687
- | Some {left = ll; right = lr} ->
688
- (if heightGe ll lr then
689
- heightUpdateMutate (rotateWithLeftChild nt)
690
- else
691
- heightUpdateMutate (doubleWithLeftChild nt)
692
- )
693
- else
694
- if hr > 2 + hl then
695
- match r with None -> assert false
696
- | Some {left = rl; right = rr} ->
697
- (if heightGe rr rl then
698
- heightUpdateMutate (rotateWithRightChild nt)
699
- else
700
- heightUpdateMutate (doubleWithRightChild nt)
701
- )
702
- else
703
- begin
704
- nt.height <- (Pervasives.max hl hr + 1);
705
- nt
706
- end
707
-
708
- let rec updateMutate (t : _ t) x data ~cmp =
709
- match t with
710
- | None -> singleton x data
711
- | Some nt ->
712
- let k = nt.key in
713
- let c = (Belt_Id.getCmpInternal cmp) x k [@bs] in
714
- if c = 0 then begin
715
- nt.value <- data;
716
- Some nt
717
- end
718
- else
719
- let l, r = (nt.left, nt.right) in
720
- (if c < 0 then
721
- let ll = updateMutate ~cmp l x data in
722
- nt.left <- ll
723
- else
724
- nt.right <- (updateMutate ~cmp r x data);
725
- );
726
- Some (balMutate nt)
727
-
728
- let fromArray (xs : _ array) ~cmp =
729
- let len = A.length xs in
730
- if len = 0 then None
731
- else
732
- let next =
733
- ref (S.strictlySortedLengthU xs
734
- (fun[@bs] (x0,_) (y0,_) ->
735
- (Belt_Id.getCmpInternal cmp) x0 y0 [@bs] < 0
736
- ))
737
- in
738
- let result = ref (
739
- if next.contents >= 0 then
740
- fromSortedArrayAux xs 0 next.contents
741
- else begin
742
- next .contents<- - next.contents;
743
- fromSortedArrayRevAux xs (next.contents - 1) (next.contents)
744
- end
745
- ) in
746
- for i = next.contents to len - 1 do
747
- let k, v = (A.getUnsafe xs i) in
748
- result .contents<- updateMutate ~cmp result.contents k v
749
- done ;
750
- result.contents
751
-
752
-
753
- let rec removeMinAuxWithRootMutate nt n =
754
- let rn, ln = n.right, n.left in
755
- match ln with
756
- | None ->
757
- nt.key <- n.key;
758
- nt.value <- n.value;
759
- rn
760
- | Some ln ->
761
- n.left <- (removeMinAuxWithRootMutate nt ln);
762
- Some (balMutate n)