@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,665 +0,0 @@
1
-
2
- (* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript
3
- *
4
- * This program is free software: you can redistribute it and/or modify
5
- * it under the terms of the GNU Lesser General Public License as published by
6
- * the Free Software Foundation, either version 3 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * In addition to the permissions granted to you by the LGPL, you may combine
10
- * or link a "work that uses the Library" with a publicly distributed version
11
- * of this file to produce a combined library or application, then distribute
12
- * that combined work under the terms of your choosing, with no requirement
13
- * to comply with the obligations normally placed on you by section 4 of the
14
- * LGPL version 3 (or the corresponding section of a later version of the LGPL
15
- * should you choose to use a later version).
16
- *
17
- * This program is distributed in the hope that it will be useful,
18
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
- * GNU Lesser General Public License for more details.
21
- *
22
- * You should have received a copy of the GNU Lesser General Public License
23
- * along with this program; if not, write to the Free Software
24
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
25
- [@@@bs.config {flags = [|"-bs-noassertfalse" |] }]
26
- type 'value node = {
27
- mutable value : 'value; [@bs.as "v"]
28
- mutable height : int; [@bs.as "h"]
29
- mutable left : 'value t; [@bs.as "l"]
30
- mutable right : 'value t; [@bs.as "r"]
31
- }
32
- and 'value t = 'value node option
33
-
34
-
35
- module A = Belt_Array
36
- module S = Belt_SortArray
37
-
38
- type ('a, 'b) cmp = ('a, 'b) Belt_Id.cmp
39
-
40
- (* Sets are represented by balanced binary trees (the heights of the
41
- children differ by at most 2 *)
42
-
43
-
44
- let [@inline] height (n : _ t) =
45
- match n with
46
- | None -> 0
47
- | Some n -> n.height
48
-
49
- let rec copy n =
50
- match n with
51
- | None -> n
52
- | Some n ->
53
- Some { left = copy n.left ; right = copy n.right;
54
- value = n.value; height = n.height}
55
-
56
- (* Creates a new node with leftGet son l, value v and right son r.
57
- We must have all elements of l < v < all elements of r.
58
- l and r must be balanced and | treeHeight l - treeHeight r | <= 2.
59
- Inline expansion of treeHeight for better speed. *)
60
-
61
- let [@inline] calcHeight (hl : int) hr =
62
- (if hl >= hr then hl else hr) + 1
63
-
64
- let create (l : _ t) v (r : _ t) =
65
- let hl = height l in
66
- let hr = height r in
67
- Some { left = l; value = v; right = r; height = calcHeight hl hr}
68
-
69
-
70
- let singleton x = Some { left = None; value = x; right = None; height = 1}
71
-
72
- let heightGe l r =
73
- match l, r with
74
- | _ , None -> true
75
- | Some hl, Some hr -> hl.height >= hr.height
76
- | None, Some _ -> false
77
- (* Same as create, but performs one step of rebalancing if necessary.
78
- Assumes l and r balanced and | treeHeight l - treeHeight r | <= 3.
79
- Inline expansion of create for better speed in the most frequent case
80
- where no rebalancing is required. *)
81
- (* TODO: inline all `create` operation, save duplicated `heightGet` calcuation *)
82
- let bal l v r =
83
- let hl,hr = height l, height r in
84
- if hl > hr + 2 then begin
85
- match l with None -> assert false | Some ({left = ll; right = lr} as l) ->
86
- if heightGe ll lr then
87
- create ll l.value (create lr v r)
88
- else
89
- match lr with None -> assert false | Some lr ->
90
- create (create ll l.value lr.left) lr.value (create lr.right v r)
91
- end else if hr > hl + 2 then
92
- match r with None -> assert false | Some ({left = rl; right = rr} as r) ->
93
- if heightGe rr rl then
94
- create (create l v rl) r.value rr
95
- else
96
- match rl with None -> assert false | Some rl ->
97
- create (create l v rl.left) rl.value (create rl.right r.value rr)
98
- else
99
- Some {left = l ; value = v ; right = r; height = calcHeight hl hr}
100
-
101
-
102
-
103
-
104
- let rec min0Aux n =
105
- match n.left with
106
- | None -> n.value
107
- | Some n -> min0Aux n
108
-
109
- let minimum n =
110
- match n with
111
- None -> None
112
- | Some n -> Some (min0Aux n)
113
-
114
- let minUndefined n =
115
- match n with
116
- | None -> Js.undefined
117
- | Some n -> Js.Undefined.return (min0Aux n)
118
-
119
- let rec max0Aux n =
120
- match n.right with
121
- | None -> n.value
122
- | Some n -> max0Aux n
123
-
124
- let maximum n =
125
- match n with
126
- | None -> None
127
- | Some n -> Some (max0Aux n)
128
-
129
- let maxUndefined n =
130
- match n with
131
- | None -> Js.undefined
132
- | Some n -> Js.Undefined.return (max0Aux n)
133
-
134
- let rec removeMinAuxWithRef n v =
135
- match n.left with
136
- | None -> v.contents<- n.value ; n.right
137
- | Some ln -> bal (removeMinAuxWithRef ln v) n.value n.right
138
-
139
-
140
-
141
-
142
- (* Implementation of the set operations *)
143
-
144
-
145
-
146
- let isEmpty n = match n with Some _ -> false | None -> true
147
-
148
- let rec stackAllLeft v s =
149
- match v with
150
- | None -> s
151
- | Some x -> stackAllLeft x.left (x::s)
152
-
153
-
154
- let rec forEachU n f =
155
- match n with
156
- | None -> ()
157
- | Some n ->
158
- forEachU n.left f; f (n.value) [@bs]; forEachU n.right f
159
-
160
- let forEach n f = forEachU n (fun [@bs] a -> f a)
161
-
162
- let rec reduceU s accu f =
163
- match s with
164
- | None -> accu
165
- | Some n ->
166
- reduceU
167
- n.right
168
- (f (reduceU n.left accu f) n.value [@bs]) f
169
-
170
- let reduce s accu f = reduceU s accu (fun [@bs] a b -> f a b)
171
-
172
- let rec everyU n p =
173
- match n with
174
- | None -> true
175
- | Some n ->
176
- p (n.value) [@bs] &&
177
- n.left |. everyU p &&
178
- n .right |. everyU p
179
-
180
- let every n p = everyU n (fun [@bs] a -> p a )
181
-
182
- let rec someU n p =
183
- match n with
184
- | None -> false
185
- | Some n ->
186
- p n.value [@bs] ||
187
- someU n.left p ||
188
- someU n.right p
189
-
190
- let some n p = someU n (fun[@bs] a -> p a )
191
- (* `addMinElement v n` and `addMaxElement v n`
192
- assume that the added v is *strictly*
193
- smaller (or bigger) than all the present elements in the tree.
194
- They are only used during the "join" operation which
195
- respects this precondition.
196
- *)
197
-
198
- let rec addMinElement n v =
199
- match n with
200
- | None -> singleton v
201
- | Some n ->
202
- bal (addMinElement n.left v) n.value n.right
203
-
204
- let rec addMaxElement n v =
205
- match n with
206
- | None -> singleton v
207
- | Some n ->
208
- bal n.left (n.value) (addMaxElement n.right v)
209
-
210
- (* `join ln v rn` Some a balanced tree simliar to `create ln v rn`
211
- bal, but no assumptions are made on the
212
- relative heights of `ln` and `rn`. *)
213
-
214
- let rec joinShared ln v rn =
215
- match (ln, rn) with
216
- (None, _) -> addMinElement rn v
217
- | (_, None) -> addMaxElement ln v
218
- | Some l, Some r ->
219
- let lh = l.height in
220
- let rh = r.height in
221
- if lh > rh + 2 then bal l.left l.value (joinShared l.right v rn) else
222
- if rh > lh + 2 then bal (joinShared ln v r.left) r.value r.right else
223
- create ln v rn
224
-
225
- (* `concat l r`
226
- No assumption on the heights of l and r. *)
227
-
228
- let concatShared t1 t2 =
229
- match (t1, t2) with
230
- (None, _) -> t2
231
- | (_, None) -> t1
232
- | (_, Some t2n) ->
233
- let v = ref t2n.value in
234
- let t2r = removeMinAuxWithRef t2n v in
235
- joinShared t1 v.contents t2r
236
-
237
-
238
-
239
- let rec partitionSharedU n p =
240
- match n with
241
- | None -> (None, None)
242
- | Some n ->
243
- let value = n.value in
244
- let (lt, lf) = partitionSharedU n.left p in
245
- let pv = p value [@bs] in
246
- let (rt, rf) = partitionSharedU n.right p in
247
- if pv
248
- then (joinShared lt value rt, concatShared lf rf)
249
- else (concatShared lt rt, joinShared lf value rf)
250
-
251
- let partitionShared n p = partitionSharedU n (fun [@bs] a -> p a)
252
-
253
- let rec lengthNode n =
254
- let {left = l; right = r} = n in
255
- let sizeL =
256
- match l with
257
- | None -> 0
258
- | Some l ->
259
- lengthNode l in
260
- let sizeR =
261
- match r with
262
- | None -> 0
263
- | Some r -> lengthNode r in
264
- 1 + sizeL + sizeR
265
-
266
- let size n =
267
- match n with
268
- | None -> 0
269
- | Some n ->
270
- lengthNode n
271
-
272
- let rec toListAux n accu =
273
- match n with
274
- | None -> accu
275
- | Some n ->
276
- toListAux
277
- n.left
278
- ((n.value) :: toListAux n.right accu)
279
-
280
-
281
- let toList s =
282
- toListAux s []
283
-
284
- let rec checkInvariantInternal (v : _ t) =
285
- match v with
286
- | None -> ()
287
- | Some n ->
288
- let {left = l; right = r} = n in
289
- let diff = height l - height r in
290
- assert (diff <=2 && diff >= -2);
291
- checkInvariantInternal l;
292
- checkInvariantInternal r
293
-
294
-
295
-
296
- let rec fillArray n i arr =
297
- let {left = l; value = v; right = r} = n in
298
- let next =
299
- match l with
300
- | None -> i
301
- | Some l ->
302
- fillArray l i arr in
303
- A.setUnsafe arr next v ;
304
- let rnext = next + 1 in
305
- match r with
306
- | None -> rnext
307
- | Some r ->
308
- fillArray r rnext arr
309
-
310
- type cursor =
311
- { mutable forward : int; mutable backward : int }
312
-
313
- let rec fillArrayWithPartition n cursor arr p =
314
- let {left = l; value = v; right = r} = n in
315
- (match l with
316
- | None -> ()
317
- | Some l ->
318
- fillArrayWithPartition l cursor arr p);
319
- (if p v [@bs] then begin
320
- let c = cursor.forward in
321
- A.setUnsafe arr c v;
322
- cursor.forward <- (c + 1)
323
- end
324
- else begin
325
- let c = cursor.backward in
326
- A.setUnsafe arr c v ;
327
- cursor.backward <- (c - 1)
328
- end);
329
- match r with
330
- | None -> ()
331
- | Some r ->
332
- fillArrayWithPartition r cursor arr p
333
-
334
- let rec fillArrayWithFilter n i arr p =
335
- let {left = l; value = v; right = r} = n in
336
- let next =
337
- match l with
338
- | None -> i
339
- | Some l ->
340
- fillArrayWithFilter l i arr p in
341
- let rnext =
342
- if p v [@bs] then
343
- (A.setUnsafe arr next v;
344
- next + 1
345
- )
346
- else next in
347
- match r with
348
- | None -> rnext
349
- | Some r ->
350
- fillArrayWithFilter r rnext arr p
351
-
352
-
353
- let toArray n =
354
- match n with
355
- | None -> [||]
356
- | Some n ->
357
- let size = lengthNode n in
358
- let v = A.makeUninitializedUnsafe size in
359
- ignore (fillArray n 0 v : int); (* may add assertion *)
360
- v
361
-
362
- let rec fromSortedArrayRevAux arr off len =
363
- match len with
364
- | 0 -> None
365
- | 1 -> singleton (A.getUnsafe arr off)
366
- | 2 ->
367
- let x0,x1 = A.(getUnsafe arr off, getUnsafe arr (off - 1) )
368
- in
369
- Some { left = (singleton x0) ; value = x1; height = 2; right = None}
370
- | 3 ->
371
- let x0,x1,x2 =
372
- A.(getUnsafe arr off,
373
- getUnsafe arr (off - 1),
374
- getUnsafe arr (off - 2)) in
375
- Some { left = (singleton x0);
376
- right = (singleton x2);
377
- value = x1;
378
- height = 2}
379
- | _ ->
380
- let nl = len / 2 in
381
- let left = fromSortedArrayRevAux arr off nl in
382
- let mid = A.getUnsafe arr (off - nl) in
383
- let right =
384
- fromSortedArrayRevAux arr (off - nl - 1) (len - nl - 1) in
385
- create left mid right
386
-
387
-
388
- let rec fromSortedArrayAux arr off len =
389
- match len with
390
- | 0 -> None
391
- | 1 -> singleton (A.getUnsafe arr off)
392
- | 2 ->
393
- let x0,x1 = A.(getUnsafe arr off, getUnsafe arr (off + 1) )
394
- in
395
- Some { left = (singleton x0); value = x1; height = 2; right = None}
396
- | 3 ->
397
- let x0,x1,x2 =
398
- A.(getUnsafe arr off,
399
- getUnsafe arr (off + 1),
400
- getUnsafe arr (off + 2)) in
401
- Some { left = (singleton x0);
402
- right = (singleton x2);
403
- value = x1;
404
- height = 2}
405
- | _ ->
406
- let nl = len / 2 in
407
- let left = fromSortedArrayAux arr off nl in
408
- let mid = A.getUnsafe arr (off + nl) in
409
- let right =
410
- fromSortedArrayAux arr (off + nl + 1) (len - nl - 1) in
411
- create left mid right
412
-
413
- let fromSortedArrayUnsafe arr =
414
- fromSortedArrayAux arr 0 (A.length arr)
415
-
416
- let rec keepSharedU n p =
417
- match n with
418
- | None -> None
419
- | Some n ->
420
- let {left = l; value = v; right = r} = n in
421
- let newL = keepSharedU l p in
422
- let pv = p v [@bs] in
423
- let newR = keepSharedU r p in
424
- if pv then
425
- (if l == newL && r == newR then
426
- Some n
427
- else joinShared newL v newR)
428
- else concatShared newL newR
429
-
430
- let keepShared n p = keepSharedU n (fun [@bs] a -> p a)
431
- (* ATT: functional methods in general can be shared with
432
- imperative methods, however, it does not apply when functional
433
- methods makes use of referential equality
434
- *)
435
-
436
- let keepCopyU n p : _ t =
437
- match n with
438
- | None -> None
439
- | Some n ->
440
- let size = lengthNode n in
441
- let v = A.makeUninitializedUnsafe size in
442
- let last =
443
- fillArrayWithFilter n 0 v p in
444
- fromSortedArrayAux v 0 last
445
-
446
- let keepCopy n p = keepCopyU n (fun [@bs] x -> p x)
447
-
448
- let partitionCopyU n p =
449
- match n with
450
- | None -> None, None
451
- | Some n ->
452
- let size = lengthNode n in
453
- let v = A.makeUninitializedUnsafe size in
454
- let backward = size - 1 in
455
- let cursor = { forward = 0; backward} in
456
- fillArrayWithPartition n cursor v p ;
457
- let forwardLen = cursor.forward in
458
- fromSortedArrayAux v 0 forwardLen,
459
- fromSortedArrayRevAux v backward (size - forwardLen)
460
-
461
- let partitionCopy n p = partitionCopyU n (fun[@bs] a -> p a)
462
-
463
- let rec has (t: _ t) x ~cmp =
464
- match t with
465
- | None -> false
466
- | Some n ->
467
- let v = n.value in
468
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
469
- c = 0 || has ~cmp (if c < 0 then n.left else n.right) x
470
-
471
-
472
- let rec compareAux e1 e2 ~cmp =
473
- match e1,e2 with
474
- | h1::t1, h2::t2 ->
475
- let c = (Belt_Id.getCmpInternal cmp) h1.value h2.value [@bs] in
476
- if c = 0 then
477
- compareAux ~cmp
478
- (h1 .right |. stackAllLeft t1)
479
- (h2 .right |. stackAllLeft t2)
480
- else c
481
- | _, _ -> 0
482
-
483
- let cmp s1 s2 ~cmp =
484
- let len1,len2 = size s1, size s2 in
485
- if len1 = len2 then
486
- compareAux ~cmp (stackAllLeft s1 []) (stackAllLeft s2 [])
487
- else if len1 < len2 then -1 else 1
488
-
489
-
490
- let eq s1 s2 ~cmp:c =
491
- cmp ~cmp:c s1 s2 = 0
492
-
493
-
494
- let rec subset (s1 : _ t) (s2 : _ t) ~cmp =
495
- match (s1, s2) with
496
- | None, _ -> true
497
- | _, None -> false
498
- | Some t1 , Some t2 ->
499
- let {left = l1; value = v1; right = r1} = t1 in
500
- let {left = l2; value = v2; right = r2} = t2 in
501
- let c = (Belt_Id.getCmpInternal cmp) v1 v2 [@bs] in
502
- if c = 0 then
503
- subset ~cmp l1 l2 && subset ~cmp r1 r2
504
- else if c < 0 then
505
- subset ~cmp (create l1 v1 None) l2 &&
506
- subset ~cmp r1 s2
507
- else
508
- subset ~cmp (create None v1 r1 ) r2 &&
509
- subset ~cmp l1 s2
510
-
511
- let rec get (n : _ t) x ~cmp =
512
- match n with
513
- None -> None
514
- | Some t (* Node(l, v, r, _) *) ->
515
- let v = t.value in
516
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
517
- if c = 0 then Some v
518
- else get ~cmp (if c < 0 then t.left else t.right) x
519
-
520
-
521
- let rec getUndefined (n : _ t) x ~cmp =
522
- match n with
523
- None -> Js.Undefined.empty
524
- | Some t (* Node(l, v, r, _) *) ->
525
- let v = t.value in
526
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
527
- if c = 0 then Js.Undefined.return v
528
- else getUndefined ~cmp (if c < 0 then t.left else t.right) x
529
-
530
- let rec getExn (n : _ t) x ~cmp =
531
- match n with
532
- None -> raise Not_found
533
- | Some t (* Node(l, v, r, _) *) ->
534
- let v = t.value in
535
- let c = (Belt_Id.getCmpInternal cmp) x v [@bs] in
536
- if c = 0 then v
537
- else getExn ~cmp (if c < 0 then t.left else t.right) x
538
-
539
-
540
- (******************************************************************)
541
-
542
- (*
543
- L rotation, Some root node
544
- *)
545
- let rotateWithLeftChild k2 =
546
- match k2 .left with
547
- | None -> assert false
548
- | Some k1 ->
549
- k2 .left <- k1 .right;
550
- k1 .right <- Some k2 ;
551
- let hlk2, hrk2 = k2 .left|. height , k2 .right |. height in
552
- k2 .height <- (Pervasives.max hlk2 hrk2 + 1);
553
- let hlk1, hk2 = k1 .left|. height , k2 .height in
554
- k1 .height <- (Pervasives.max hlk1 hk2 + 1);
555
- k1
556
- (* right rotation *)
557
- let rotateWithRightChild k1 =
558
- match k1 .right with None -> assert false
559
- | Some k2 ->
560
- k1 .right <- k2 .left;
561
- k2 .left <- Some k1;
562
- let hlk1, hrk1 = k1.left |. height, k1 .right |. height in
563
- k1 .height <- (Pervasives.max hlk1 hrk1 + 1);
564
- let hrk2, hk1 = k2 .right |. height, k1 .height in
565
- k2 .height <- (Pervasives.max hrk2 hk1 + 1);
566
- k2
567
-
568
- (*
569
- double l rotation
570
- *)
571
- let doubleWithLeftChild k3 =
572
- match k3.left with
573
- | None -> assert false
574
- | Some k3l ->
575
- let v = k3l |. rotateWithRightChild |. Some in
576
- k3 .left <- v;
577
- k3 |. rotateWithLeftChild
578
- (** *)
579
-
580
- let doubleWithRightChild k2 =
581
- match k2.right with
582
- | None -> assert false
583
- | Some k2r ->
584
- let v = k2r |. rotateWithLeftChild |. Some in
585
- k2 .right <- v;
586
- rotateWithRightChild k2
587
-
588
- let heightUpdateMutate t =
589
- let hlt, hrt = t .left|. height, t .right |. height in
590
- t .height <- (Pervasives.max hlt hrt + 1);
591
- t
592
-
593
- let balMutate nt =
594
- let {left = l; right = r} = nt in
595
- let hl, hr = (height l, height r) in
596
- if hl > 2 + hr then
597
- match l with None -> assert false
598
- | Some {left = ll; right = lr} ->
599
- (if heightGe ll lr then
600
- heightUpdateMutate (rotateWithLeftChild nt)
601
- else
602
- heightUpdateMutate (doubleWithLeftChild nt)
603
- )
604
- else
605
- if hr > 2 + hl then
606
- match r with None -> assert false
607
- | Some {left = rl; right = rr} ->
608
- (if heightGe rr rl then
609
- heightUpdateMutate (rotateWithRightChild nt)
610
- else
611
- heightUpdateMutate (doubleWithRightChild nt)
612
- )
613
- else
614
- begin
615
- nt.height <- (Pervasives.max hl hr + 1);
616
- nt
617
- end
618
-
619
- let rec addMutate ~cmp (t : _ t) x =
620
- match t with
621
- | None -> singleton x
622
- | Some nt ->
623
- let k = nt.value in
624
- let c = (Belt_Id.getCmpInternal cmp) x k [@bs] in
625
- if c = 0 then t
626
- else
627
- let {left = l; right = r} = nt in
628
- (if c < 0 then
629
- let ll = addMutate ~cmp l x in
630
- nt.left <- ll
631
- else
632
- nt.right <- (addMutate ~cmp r x);
633
- );
634
- Some (balMutate nt)
635
-
636
-
637
- let fromArray (xs : _ array) ~cmp =
638
- let len = A.length xs in
639
- if len = 0 then None
640
- else
641
- let next = ref (S.strictlySortedLengthU xs
642
- (fun [@bs] x y -> (Belt_Id.getCmpInternal cmp) x y [@bs] < 0)) in
643
- let result =
644
- ref (if next.contents >= 0 then
645
- fromSortedArrayAux xs 0 next.contents
646
- else begin
647
- next .contents<- - next.contents ;
648
- fromSortedArrayRevAux xs (next.contents - 1) next.contents
649
- end) in
650
- for i = next.contents to len - 1 do
651
- result .contents<- addMutate ~cmp result.contents (A.getUnsafe xs i)
652
- done ;
653
- result.contents
654
-
655
- let rec removeMinAuxWithRootMutate nt n =
656
- let {right = rn; left = ln} = n in
657
- match ln with
658
- | None ->
659
- nt.value <- (n.value);
660
- rn
661
- | Some ln ->
662
- n.left <- (removeMinAuxWithRootMutate nt ln);
663
- Some (balMutate n)
664
-
665
-