rubico 2.1.0 → 2.2.0

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 (499) hide show
  1. package/README.md +2 -0
  2. package/_internal/genericTransform.js +30 -28
  3. package/dist/Transducer.es.js +1 -1
  4. package/dist/Transducer.es.min.js +1 -1
  5. package/dist/Transducer.js +1 -1
  6. package/dist/Transducer.min.js +1 -1
  7. package/dist/Transducer.mjs +1 -1
  8. package/dist/__.es.js +1 -1
  9. package/dist/__.es.min.js +1 -1
  10. package/dist/__.js +1 -1
  11. package/dist/__.min.js +1 -1
  12. package/dist/__.mjs +1 -1
  13. package/dist/all.es.js +1 -1
  14. package/dist/all.es.min.js +1 -1
  15. package/dist/all.js +1 -1
  16. package/dist/all.min.js +1 -1
  17. package/dist/all.mjs +1 -1
  18. package/dist/always.es.js +1 -1
  19. package/dist/always.es.min.js +1 -1
  20. package/dist/always.js +1 -1
  21. package/dist/always.min.js +1 -1
  22. package/dist/always.mjs +1 -1
  23. package/dist/and.es.js +1 -1
  24. package/dist/and.es.min.js +1 -1
  25. package/dist/and.js +1 -1
  26. package/dist/and.min.js +1 -1
  27. package/dist/and.mjs +1 -1
  28. package/dist/assign.es.js +1 -1
  29. package/dist/assign.es.min.js +1 -1
  30. package/dist/assign.js +1 -1
  31. package/dist/assign.min.js +1 -1
  32. package/dist/assign.mjs +1 -1
  33. package/dist/compose.es.js +1 -1
  34. package/dist/compose.es.min.js +1 -1
  35. package/dist/compose.js +1 -1
  36. package/dist/compose.min.js +1 -1
  37. package/dist/compose.mjs +1 -1
  38. package/dist/curry.es.js +1 -1
  39. package/dist/curry.es.min.js +1 -1
  40. package/dist/curry.js +1 -1
  41. package/dist/curry.min.js +1 -1
  42. package/dist/curry.mjs +1 -1
  43. package/dist/eq.es.js +1 -1
  44. package/dist/eq.es.min.js +1 -1
  45. package/dist/eq.js +1 -1
  46. package/dist/eq.min.js +1 -1
  47. package/dist/eq.mjs +1 -1
  48. package/dist/every.es.js +1 -1
  49. package/dist/every.es.min.js +1 -1
  50. package/dist/every.js +1 -1
  51. package/dist/every.min.js +1 -1
  52. package/dist/every.mjs +1 -1
  53. package/dist/filter.es.js +1 -1
  54. package/dist/filter.es.min.js +1 -1
  55. package/dist/filter.js +1 -1
  56. package/dist/filter.min.js +1 -1
  57. package/dist/filter.mjs +1 -1
  58. package/dist/flatMap.es.js +1 -1
  59. package/dist/flatMap.es.min.js +1 -1
  60. package/dist/flatMap.js +1 -1
  61. package/dist/flatMap.min.js +1 -1
  62. package/dist/flatMap.mjs +1 -1
  63. package/dist/forEach.es.js +1 -1
  64. package/dist/forEach.es.min.js +1 -1
  65. package/dist/forEach.js +1 -1
  66. package/dist/forEach.min.js +1 -1
  67. package/dist/forEach.mjs +1 -1
  68. package/dist/get.es.js +1 -1
  69. package/dist/get.es.min.js +1 -1
  70. package/dist/get.js +1 -1
  71. package/dist/get.min.js +1 -1
  72. package/dist/get.mjs +1 -1
  73. package/dist/gt.es.js +1 -1
  74. package/dist/gt.es.min.js +1 -1
  75. package/dist/gt.js +1 -1
  76. package/dist/gt.min.js +1 -1
  77. package/dist/gt.mjs +1 -1
  78. package/dist/gte.es.js +1 -1
  79. package/dist/gte.es.min.js +1 -1
  80. package/dist/gte.js +1 -1
  81. package/dist/gte.min.js +1 -1
  82. package/dist/gte.mjs +1 -1
  83. package/dist/lt.es.js +1 -1
  84. package/dist/lt.es.min.js +1 -1
  85. package/dist/lt.js +1 -1
  86. package/dist/lt.min.js +1 -1
  87. package/dist/lt.mjs +1 -1
  88. package/dist/lte.es.js +1 -1
  89. package/dist/lte.es.min.js +1 -1
  90. package/dist/lte.js +1 -1
  91. package/dist/lte.min.js +1 -1
  92. package/dist/lte.mjs +1 -1
  93. package/dist/map.es.js +1 -1
  94. package/dist/map.es.min.js +1 -1
  95. package/dist/map.js +1 -1
  96. package/dist/map.min.js +1 -1
  97. package/dist/map.mjs +1 -1
  98. package/dist/not.es.js +1 -1
  99. package/dist/not.es.min.js +1 -1
  100. package/dist/not.js +1 -1
  101. package/dist/not.min.js +1 -1
  102. package/dist/not.mjs +1 -1
  103. package/dist/omit.es.js +1 -1
  104. package/dist/omit.es.min.js +1 -1
  105. package/dist/omit.js +1 -1
  106. package/dist/omit.min.js +1 -1
  107. package/dist/omit.mjs +1 -1
  108. package/dist/or.es.js +1 -1
  109. package/dist/or.es.min.js +1 -1
  110. package/dist/or.js +1 -1
  111. package/dist/or.min.js +1 -1
  112. package/dist/or.mjs +1 -1
  113. package/dist/pick.es.js +1 -1
  114. package/dist/pick.es.min.js +1 -1
  115. package/dist/pick.js +1 -1
  116. package/dist/pick.min.js +1 -1
  117. package/dist/pick.mjs +1 -1
  118. package/dist/pipe.es.js +1 -1
  119. package/dist/pipe.es.min.js +1 -1
  120. package/dist/pipe.js +1 -1
  121. package/dist/pipe.min.js +1 -1
  122. package/dist/pipe.mjs +1 -1
  123. package/dist/reduce.es.js +1 -1
  124. package/dist/reduce.es.min.js +1 -1
  125. package/dist/reduce.js +1 -1
  126. package/dist/reduce.min.js +1 -1
  127. package/dist/reduce.mjs +1 -1
  128. package/dist/rubico.es.js +57 -46
  129. package/dist/rubico.es.min.js +2 -2
  130. package/dist/rubico.global.js +57 -46
  131. package/dist/rubico.global.min.js +2 -2
  132. package/dist/rubico.js +57 -46
  133. package/dist/rubico.min.js +2 -2
  134. package/dist/rubico.mjs +57 -46
  135. package/dist/set.es.js +1 -1
  136. package/dist/set.es.min.js +1 -1
  137. package/dist/set.js +1 -1
  138. package/dist/set.min.js +1 -1
  139. package/dist/set.mjs +1 -1
  140. package/dist/some.es.js +1 -1
  141. package/dist/some.es.min.js +1 -1
  142. package/dist/some.js +1 -1
  143. package/dist/some.min.js +1 -1
  144. package/dist/some.mjs +1 -1
  145. package/dist/switchCase.es.js +1 -1
  146. package/dist/switchCase.es.min.js +1 -1
  147. package/dist/switchCase.js +1 -1
  148. package/dist/switchCase.min.js +1 -1
  149. package/dist/switchCase.mjs +1 -1
  150. package/dist/tap.es.js +32 -2
  151. package/dist/tap.es.min.js +2 -2
  152. package/dist/tap.js +32 -2
  153. package/dist/tap.min.js +2 -2
  154. package/dist/tap.mjs +32 -2
  155. package/dist/thunkify.es.js +1 -1
  156. package/dist/thunkify.es.min.js +1 -1
  157. package/dist/thunkify.js +1 -1
  158. package/dist/thunkify.min.js +1 -1
  159. package/dist/thunkify.mjs +1 -1
  160. package/dist/transform.es.js +26 -24
  161. package/dist/transform.es.min.js +2 -2
  162. package/dist/transform.js +26 -24
  163. package/dist/transform.min.js +2 -2
  164. package/dist/transform.mjs +26 -24
  165. package/dist/tryCatch.es.js +1 -1
  166. package/dist/tryCatch.es.min.js +1 -1
  167. package/dist/tryCatch.js +1 -1
  168. package/dist/tryCatch.min.js +1 -1
  169. package/dist/tryCatch.mjs +1 -1
  170. package/dist/x/append.es.js +1 -1
  171. package/dist/x/append.es.min.js +1 -1
  172. package/dist/x/append.js +1 -1
  173. package/dist/x/append.min.js +1 -1
  174. package/dist/x/append.mjs +1 -1
  175. package/dist/x/callProp.es.js +1 -1
  176. package/dist/x/callProp.es.min.js +1 -1
  177. package/dist/x/callProp.js +1 -1
  178. package/dist/x/callProp.min.js +1 -1
  179. package/dist/x/callProp.mjs +1 -1
  180. package/dist/x/defaultsDeep.es.js +1 -1
  181. package/dist/x/defaultsDeep.es.min.js +1 -1
  182. package/dist/x/defaultsDeep.js +1 -1
  183. package/dist/x/defaultsDeep.min.js +1 -1
  184. package/dist/x/defaultsDeep.mjs +1 -1
  185. package/dist/x/differenceWith.es.js +1 -1
  186. package/dist/x/differenceWith.es.min.js +1 -1
  187. package/dist/x/differenceWith.js +1 -1
  188. package/dist/x/differenceWith.min.js +1 -1
  189. package/dist/x/differenceWith.mjs +1 -1
  190. package/dist/x/filterOut.es.js +1 -1
  191. package/dist/x/filterOut.es.min.js +1 -1
  192. package/dist/x/filterOut.js +1 -1
  193. package/dist/x/filterOut.min.js +1 -1
  194. package/dist/x/filterOut.mjs +1 -1
  195. package/dist/x/find.es.js +1 -1
  196. package/dist/x/find.es.min.js +1 -1
  197. package/dist/x/find.js +1 -1
  198. package/dist/x/find.min.js +1 -1
  199. package/dist/x/find.mjs +1 -1
  200. package/dist/x/findIndex.es.js +1 -1
  201. package/dist/x/findIndex.es.min.js +1 -1
  202. package/dist/x/findIndex.js +1 -1
  203. package/dist/x/findIndex.min.js +1 -1
  204. package/dist/x/findIndex.mjs +1 -1
  205. package/dist/x/first.es.js +1 -1
  206. package/dist/x/first.es.min.js +1 -1
  207. package/dist/x/first.js +1 -1
  208. package/dist/x/first.min.js +1 -1
  209. package/dist/x/first.mjs +1 -1
  210. package/dist/x/flatten.es.js +1 -1
  211. package/dist/x/flatten.es.min.js +1 -1
  212. package/dist/x/flatten.js +1 -1
  213. package/dist/x/flatten.min.js +1 -1
  214. package/dist/x/flatten.mjs +1 -1
  215. package/dist/x/groupBy.es.js +1 -1
  216. package/dist/x/groupBy.es.min.js +1 -1
  217. package/dist/x/groupBy.js +1 -1
  218. package/dist/x/groupBy.min.js +1 -1
  219. package/dist/x/groupBy.mjs +1 -1
  220. package/dist/x/has.es.js +1 -1
  221. package/dist/x/has.es.min.js +1 -1
  222. package/dist/x/has.js +1 -1
  223. package/dist/x/has.min.js +1 -1
  224. package/dist/x/has.mjs +1 -1
  225. package/dist/x/identity.es.js +1 -1
  226. package/dist/x/identity.es.min.js +1 -1
  227. package/dist/x/identity.js +1 -1
  228. package/dist/x/identity.min.js +1 -1
  229. package/dist/x/identity.mjs +1 -1
  230. package/dist/x/includes.es.js +1 -1
  231. package/dist/x/includes.es.min.js +1 -1
  232. package/dist/x/includes.js +1 -1
  233. package/dist/x/includes.min.js +1 -1
  234. package/dist/x/includes.mjs +1 -1
  235. package/dist/x/isDeepEqual.es.js +1 -1
  236. package/dist/x/isDeepEqual.es.min.js +1 -1
  237. package/dist/x/isDeepEqual.js +1 -1
  238. package/dist/x/isDeepEqual.min.js +1 -1
  239. package/dist/x/isDeepEqual.mjs +1 -1
  240. package/dist/x/isEmpty.es.js +1 -1
  241. package/dist/x/isEmpty.es.min.js +1 -1
  242. package/dist/x/isEmpty.js +1 -1
  243. package/dist/x/isEmpty.min.js +1 -1
  244. package/dist/x/isEmpty.mjs +1 -1
  245. package/dist/x/isEqual.es.js +1 -1
  246. package/dist/x/isEqual.es.min.js +1 -1
  247. package/dist/x/isEqual.js +1 -1
  248. package/dist/x/isEqual.min.js +1 -1
  249. package/dist/x/isEqual.mjs +1 -1
  250. package/dist/x/isFunction.es.js +1 -1
  251. package/dist/x/isFunction.es.min.js +1 -1
  252. package/dist/x/isFunction.js +1 -1
  253. package/dist/x/isFunction.min.js +1 -1
  254. package/dist/x/isFunction.mjs +1 -1
  255. package/dist/x/isIn.es.js +1 -1
  256. package/dist/x/isIn.es.min.js +1 -1
  257. package/dist/x/isIn.js +1 -1
  258. package/dist/x/isIn.min.js +1 -1
  259. package/dist/x/isIn.mjs +1 -1
  260. package/dist/x/isObject.es.js +1 -1
  261. package/dist/x/isObject.es.min.js +1 -1
  262. package/dist/x/isObject.js +1 -1
  263. package/dist/x/isObject.min.js +1 -1
  264. package/dist/x/isObject.mjs +1 -1
  265. package/dist/x/isString.es.js +1 -1
  266. package/dist/x/isString.es.min.js +1 -1
  267. package/dist/x/isString.js +1 -1
  268. package/dist/x/isString.min.js +1 -1
  269. package/dist/x/isString.mjs +1 -1
  270. package/dist/x/keys.es.js +1 -1
  271. package/dist/x/keys.es.min.js +1 -1
  272. package/dist/x/keys.js +1 -1
  273. package/dist/x/keys.min.js +1 -1
  274. package/dist/x/keys.mjs +1 -1
  275. package/dist/x/last.es.js +1 -1
  276. package/dist/x/last.es.min.js +1 -1
  277. package/dist/x/last.js +1 -1
  278. package/dist/x/last.min.js +1 -1
  279. package/dist/x/last.mjs +1 -1
  280. package/dist/x/maxBy.es.js +1 -1
  281. package/dist/x/maxBy.es.min.js +1 -1
  282. package/dist/x/maxBy.js +1 -1
  283. package/dist/x/maxBy.min.js +1 -1
  284. package/dist/x/maxBy.mjs +1 -1
  285. package/dist/x/noop.es.js +1 -1
  286. package/dist/x/noop.es.min.js +1 -1
  287. package/dist/x/noop.js +1 -1
  288. package/dist/x/noop.min.js +1 -1
  289. package/dist/x/noop.mjs +1 -1
  290. package/dist/x/pluck.es.js +1 -1
  291. package/dist/x/pluck.es.min.js +1 -1
  292. package/dist/x/pluck.js +1 -1
  293. package/dist/x/pluck.min.js +1 -1
  294. package/dist/x/pluck.mjs +1 -1
  295. package/dist/x/prepend.es.js +1 -1
  296. package/dist/x/prepend.es.min.js +1 -1
  297. package/dist/x/prepend.js +1 -1
  298. package/dist/x/prepend.min.js +1 -1
  299. package/dist/x/prepend.mjs +1 -1
  300. package/dist/x/size.es.js +1 -1
  301. package/dist/x/size.es.min.js +1 -1
  302. package/dist/x/size.js +1 -1
  303. package/dist/x/size.min.js +1 -1
  304. package/dist/x/size.mjs +1 -1
  305. package/dist/x/trace.es.js +32 -2
  306. package/dist/x/trace.es.min.js +2 -2
  307. package/dist/x/trace.js +32 -2
  308. package/dist/x/trace.min.js +2 -2
  309. package/dist/x/trace.mjs +32 -2
  310. package/dist/x/unionWith.es.js +1 -1
  311. package/dist/x/unionWith.es.min.js +1 -1
  312. package/dist/x/unionWith.js +1 -1
  313. package/dist/x/unionWith.min.js +1 -1
  314. package/dist/x/unionWith.mjs +1 -1
  315. package/dist/x/uniq.es.js +1 -1
  316. package/dist/x/uniq.es.min.js +1 -1
  317. package/dist/x/uniq.js +1 -1
  318. package/dist/x/uniq.min.js +1 -1
  319. package/dist/x/uniq.mjs +1 -1
  320. package/dist/x/unless.es.js +1 -1
  321. package/dist/x/unless.es.min.js +1 -1
  322. package/dist/x/unless.js +1 -1
  323. package/dist/x/unless.min.js +1 -1
  324. package/dist/x/unless.mjs +1 -1
  325. package/dist/x/values.es.js +1 -1
  326. package/dist/x/values.es.min.js +1 -1
  327. package/dist/x/values.js +1 -1
  328. package/dist/x/values.min.js +1 -1
  329. package/dist/x/values.mjs +1 -1
  330. package/dist/x/when.es.js +1 -1
  331. package/dist/x/when.es.min.js +1 -1
  332. package/dist/x/when.js +1 -1
  333. package/dist/x/when.min.js +1 -1
  334. package/dist/x/when.mjs +1 -1
  335. package/es.js +57 -46
  336. package/index.js +57 -46
  337. package/package.json +43 -2
  338. package/tap.js +15 -4
  339. package/.eslintignore +0 -5
  340. package/.eslintrc.js +0 -330
  341. package/.github/workflows/nodejs.yml +0 -27
  342. package/.vscode/launch.json +0 -25
  343. package/AggregateReducer.test.js +0 -82
  344. package/CHANGELOG.md +0 -310
  345. package/CNAME +0 -1
  346. package/CODE_OF_CONDUCT.md +0 -128
  347. package/CONTRIBUTING.md +0 -4
  348. package/Transducer.test.js +0 -154
  349. package/_config.yml +0 -1
  350. package/_internal/improvedGenericTransform.js +0 -93
  351. package/archive/FlatMappingIterator-2020-09-28.js +0 -68
  352. package/archive/_Promise-2023-05-29.js +0 -93
  353. package/archive/arrayMap2-2023-05-29.js +0 -73
  354. package/archive/benchmarks-v1.9.7/all.js +0 -34
  355. package/archive/benchmarks-v1.9.7/and.js +0 -24
  356. package/archive/benchmarks-v1.9.7/any.js +0 -32
  357. package/archive/benchmarks-v1.9.7/assign.js +0 -174
  358. package/archive/benchmarks-v1.9.7/curry.js +0 -55
  359. package/archive/benchmarks-v1.9.7/eq.js +0 -25
  360. package/archive/benchmarks-v1.9.7/filter.js +0 -1322
  361. package/archive/benchmarks-v1.9.7/flatMap.js +0 -48
  362. package/archive/benchmarks-v1.9.7/forEach.js +0 -33
  363. package/archive/benchmarks-v1.9.7/fork.js +0 -123
  364. package/archive/benchmarks-v1.9.7/get.js +0 -44
  365. package/archive/benchmarks-v1.9.7/gt.js +0 -25
  366. package/archive/benchmarks-v1.9.7/gte.js +0 -25
  367. package/archive/benchmarks-v1.9.7/integration.js +0 -88
  368. package/archive/benchmarks-v1.9.7/lt.js +0 -25
  369. package/archive/benchmarks-v1.9.7/lte.js +0 -25
  370. package/archive/benchmarks-v1.9.7/map.js +0 -892
  371. package/archive/benchmarks-v1.9.7/misc.js +0 -470
  372. package/archive/benchmarks-v1.9.7/omit.js +0 -28
  373. package/archive/benchmarks-v1.9.7/or.js +0 -51
  374. package/archive/benchmarks-v1.9.7/pick.js +0 -24
  375. package/archive/benchmarks-v1.9.7/pipe.js +0 -152
  376. package/archive/benchmarks-v1.9.7/reduce.js +0 -739
  377. package/archive/benchmarks-v1.9.7/switchCase.js +0 -256
  378. package/archive/benchmarks-v1.9.7/tap.js +0 -90
  379. package/archive/benchmarks-v1.9.7/transform.js +0 -218
  380. package/archive/benchmarks-v1.9.7/tryCatch.js +0 -108
  381. package/archive/curry.js +0 -13
  382. package/archive/examples-v1.6.11/browserModule.html +0 -31
  383. package/archive/examples-v1.6.11/browserScript.html +0 -32
  384. package/archive/examples-v1.6.11/coolTransformToConsole.js +0 -1
  385. package/archive/examples-v1.6.11/denoLargeGasMap.js +0 -85
  386. package/archive/examples-v1.6.11/denoServer.js +0 -9
  387. package/archive/examples-v1.6.11/denoServerWithMiddleware.js +0 -55
  388. package/archive/examples-v1.6.11/logTodosRange.js +0 -21
  389. package/archive/examples-v1.6.11/makeARequest.html +0 -46
  390. package/archive/examples-v1.6.11/nodeComplexTransformation.js +0 -106
  391. package/archive/examples-v1.6.11/nodeConditionallyExtractIDs.js +0 -50
  392. package/archive/examples-v1.6.11/nodeFloatingPoint.js +0 -55
  393. package/archive/examples-v1.6.11/nodeGetAllJiraBoards.js +0 -45
  394. package/archive/examples-v1.6.11/nodeGetSocketIOClientsTotalCount.js +0 -34
  395. package/archive/examples-v1.6.11/nodeKafkaConsumer.js +0 -63
  396. package/archive/examples-v1.6.11/nodeMakeMultipleRequests.js +0 -55
  397. package/archive/examples-v1.6.11/nodeOnRecordAddTask.js +0 -34
  398. package/archive/examples-v1.6.11/nodePostRequestWithAuth.js +0 -36
  399. package/archive/examples-v1.6.11/nodeSpeedbackMatchmakingAlgorithm.js +0 -96
  400. package/archive/examples-v1.6.11/nodeTireData.js +0 -36
  401. package/archive/examples-v1.6.11/nodeTripleMap.js +0 -85
  402. package/archive/examples-v1.6.11/squaredOdds.ts +0 -16
  403. package/archive/examples-v1.6.11/transducerMaxBuyer.js +0 -67
  404. package/archive/examples-v1.6.11/transformLogTodosRange.js +0 -31
  405. package/archive/examples-v1.6.11/transformStreamRandomInts.js +0 -19
  406. package/archive/genericReduceConcurrent.js +0 -277
  407. package/archive/index.v0.2.9.js +0 -1685
  408. package/archive/objectValuesGenerator.js +0 -13
  409. package/archive/test.v0.2.9.js +0 -2334
  410. package/bench +0 -65
  411. package/benchmark-output/v1.9.7 +0 -268
  412. package/benchmarks/all.async.js +0 -43
  413. package/benchmarks/all.js +0 -43
  414. package/benchmarks/always.js +0 -15
  415. package/benchmarks/and.async.js +0 -25
  416. package/benchmarks/and.js +0 -25
  417. package/benchmarks/assign.async.js +0 -27
  418. package/benchmarks/assign.js +0 -27
  419. package/benchmarks/curry.js +0 -35
  420. package/benchmarks/eq.async.js +0 -23
  421. package/benchmarks/eq.js +0 -23
  422. package/benchmarks/every.async.js +0 -19
  423. package/benchmarks/every.js +0 -19
  424. package/benchmarks/filter.async.js +0 -32
  425. package/benchmarks/filter.js +0 -38
  426. package/benchmarks/flatMap.async.js +0 -26
  427. package/benchmarks/flatMap.js +0 -38
  428. package/benchmarks/get.async.js +0 -19
  429. package/benchmarks/get.js +0 -39
  430. package/benchmarks/gt.async.js +0 -23
  431. package/benchmarks/gt.js +0 -23
  432. package/benchmarks/gte.async.js +0 -23
  433. package/benchmarks/gte.js +0 -23
  434. package/benchmarks/lt.async.js +0 -23
  435. package/benchmarks/lt.js +0 -23
  436. package/benchmarks/lte.async.js +0 -23
  437. package/benchmarks/lte.js +0 -23
  438. package/benchmarks/map.async.js +0 -43
  439. package/benchmarks/map.js +0 -40
  440. package/benchmarks/misc/Promise.js +0 -26
  441. package/benchmarks/misc/isPromise.js +0 -30
  442. package/benchmarks/misc/promiseAll.js +0 -36
  443. package/benchmarks/not.js +0 -23
  444. package/benchmarks/omit.js +0 -38
  445. package/benchmarks/or.async.js +0 -25
  446. package/benchmarks/or.js +0 -25
  447. package/benchmarks/pick.js +0 -38
  448. package/benchmarks/pipe.async.js +0 -47
  449. package/benchmarks/pipe.js +0 -47
  450. package/benchmarks/reduce.async.js +0 -32
  451. package/benchmarks/reduce.js +0 -38
  452. package/benchmarks/set.async.js +0 -19
  453. package/benchmarks/set.js +0 -41
  454. package/benchmarks/some.async.js +0 -19
  455. package/benchmarks/some.js +0 -19
  456. package/benchmarks/switchCase.async.js +0 -27
  457. package/benchmarks/switchCase.js +0 -55
  458. package/benchmarks/tap.js +0 -15
  459. package/benchmarks/thunkify.js +0 -15
  460. package/benchmarks/transform.async.js +0 -27
  461. package/benchmarks/transform.js +0 -40
  462. package/benchmarks/tryCatch.async.js +0 -25
  463. package/benchmarks/tryCatch.js +0 -32
  464. package/build +0 -472
  465. package/dist-test.js +0 -37
  466. package/examples/type-to-search-wiki/README.md +0 -19
  467. package/examples/type-to-search-wiki/package.json +0 -13
  468. package/examples/type-to-search-wiki/src/app.js +0 -46
  469. package/examples/type-to-search-wiki/src/index.html +0 -18
  470. package/import-test.html +0 -73
  471. package/memory-usage/reduce.js +0 -40
  472. package/monad/AsyncPool.js +0 -0
  473. package/monad/BrokenPromise.js +0 -63
  474. package/monad/BrokenPromise.test.js +0 -22
  475. package/monad/Cancellable.js +0 -84
  476. package/monad/Cancellable.memoryUsage.js +0 -60
  477. package/monad/Cancellable.test.js +0 -20
  478. package/monad/Function.js +0 -0
  479. package/monad/Instance.benchmark.js +0 -378
  480. package/monad/Instance.js +0 -351
  481. package/monad/Instance.test.js +0 -445
  482. package/monad/Mux.benchmark.js +0 -29
  483. package/monad/Mux.js +0 -589
  484. package/monad/Mux.test.js +0 -512
  485. package/monad/PossiblePromise.benchmark.js +0 -87
  486. package/monad/PossiblePromise.js +0 -144
  487. package/monad/PossiblePromise.test.js +0 -89
  488. package/monad/README.md +0 -75
  489. package/monad/Reducer.js +0 -0
  490. package/monad/Sequence.benchmark.js +0 -42
  491. package/monad/Sequence.js +0 -36
  492. package/monad/SpecScript.js +0 -0
  493. package/monad/Stack.js +0 -0
  494. package/monad/Struct.benchmark.js +0 -154
  495. package/monad/Struct.js +0 -249
  496. package/monad/Struct.test.js +0 -237
  497. package/rubico.js +0 -66
  498. package/test.js +0 -4242
  499. package/tmp.js +0 -1
@@ -1,68 +0,0 @@
1
- /**
2
- * @name FlatMappingIterator
3
- *
4
- * @synopsis
5
- * ```coffeescript [specscript]
6
- * Stream<T> = { read: ()=>T, write: T=>() }
7
- * Monad<T> = Array<T>|String<T>|Set<T>
8
- * |TypedArray<T>|Stream<T>|Iterator<Promise|T>
9
- * |{ chain: T=>Monad<T> }|{ flatMap: T=>Monad<T> }|Object<T>
10
- * Reducer<T> = (any, T)=>Promise|any
11
- * Foldable<T> = Iterable<T>|AsyncIterable<T>
12
- * |{ reduce: Reducer<T>=>any }|Object<T>
13
- *
14
- * FlatMappingIterator<T>(
15
- * iterator Iterator<Promise|T>
16
- * flatMapper T=>Promise|Monad<T>|Foldable<T>|T,
17
- * ) -> Iterator<Promise|T>
18
- * ```
19
- */
20
- const FlatMappingIterator = function (iterator, flatMapper) {
21
- const buffer = [], promises = [],
22
- bufferPush = curry3(callPropUnary, buffer, 'push', __),
23
- bufferPushReducer = funcConcatSync(getArg1, bufferPush),
24
- flattenIntoBuffer = curry3(genericReduce, __, bufferPushReducer, null),
25
- loadIntoBuffer = funcConcatSync(flattenIntoBuffer, tapSync(bufferLoading => {
26
- if (isPromise(bufferLoading)) {
27
- const promise = bufferLoading.then(() => promises.delete(promise))
28
- promises.add(promise)
29
- }
30
- }))
31
- let bufferIndex = Infinity
32
- return {
33
- [symbolAsyncIterator]() {
34
- return this
35
- },
36
- [symbolIterator]() {
37
- return this
38
- },
39
-
40
- _iterationStep(iteration) {
41
- if (iteration.done) {
42
- if (promises.size == 0) {
43
- return iteration
44
- }
45
- return promiseRace(promises).then(this.next.bind(this))
46
- }
47
- const monad = flatMapper(iteration.value),
48
- loadIntoBufferThenNext = funcConcatSync(
49
- loadIntoBuffer, this.next.bind(this))
50
- return isPromise(monad)
51
- ? monad.then(loadIntoBufferThenNext)
52
- : loadIntoBufferThenNext(monad)
53
- },
54
-
55
- next() {
56
- if (bufferIndex < buffer.length) {
57
- const value = buffer[bufferIndex]
58
- delete buffer[bufferIndex]
59
- bufferIndex += 1
60
- return { value, done: false }
61
- }
62
- const iteration = iterator.next()
63
- return isPromise(iteration)
64
- ? iteration.then(this._iterationStep.bind(this))
65
- : this._iterationStep(iteration)
66
- },
67
- }
68
- }
@@ -1,93 +0,0 @@
1
- const isPromise = require('./isPromise')
2
-
3
- /**
4
- * @name _Promise
5
- *
6
- * @synopsis
7
- * ```coffeescript [specscript]
8
- * new _Promise() -> _Promise
9
- * ```
10
- *
11
- * @description
12
- * Internal _Promise. Does not conform to spec.
13
- */
14
- const _Promise = function () {
15
- this.onFulfilledCallbacks = []
16
- this.onRejectedCallbacks = []
17
- this.value = null
18
- this.error = null
19
- this.status = 'pending'
20
- }
21
-
22
- _Promise.prototype._fulfill = function (value) {
23
- if (this.status == 'pending') {
24
- this.status = 'fulfilled'
25
- this.value = value
26
- this.onFulfilledCallbacks.forEach(cb => cb(value)) // TODO optimize
27
- }
28
- }
29
-
30
- _Promise.prototype._reject = function (error) {
31
- if (this.status == 'pending') {
32
- this.status = 'rejected'
33
- this.error = error
34
- this.onRejectedCallbacks.forEach(cb => cb(error)) // TODO optimize
35
- }
36
- }
37
-
38
- _Promise.prototype.then = function (onFulfilled, onRejected) {
39
- return new Promise((resolve, reject) => {
40
- if (this.status == 'pending') {
41
- this.onFulfilledCallbacks.push(() => {
42
- try {
43
- const ret = onFulfilled(this.value)
44
- if (isPromise(ret)) {
45
- ret.then(resolve, reject)
46
- } else {
47
- resolve(ret)
48
- }
49
- } catch (error) {
50
- reject(error)
51
- }
52
- })
53
- this.onRejectedCallbacks.push(() => {
54
- try {
55
- const ret = onRejected(this.error)
56
- if (isPromise(ret)) {
57
- ret.then(resolve, reject)
58
- } else {
59
- reject(ret)
60
- }
61
- } catch (error) {
62
- reject(error)
63
- }
64
- })
65
- }
66
- else if (this.status == 'fulfilled') {
67
- try {
68
- const ret = onFulfilled(this.value)
69
- if (isPromise(ret)) {
70
- ret.then(resolve, reject)
71
- } else {
72
- resolve(ret)
73
- }
74
- } catch (error) {
75
- reject(error)
76
- }
77
- }
78
- else {
79
- try {
80
- const ret = onRejected(this.error)
81
- if (isPromise(ret)) {
82
- ret.then(resolve, reject)
83
- } else {
84
- reject(ret)
85
- }
86
- } catch (error) {
87
- reject(error)
88
- }
89
- }
90
- })
91
- }
92
-
93
- module.exports = _Promise
@@ -1,73 +0,0 @@
1
- const funcCall = require('./funcCall')
2
- const thunkify4 = require('./thunkify4')
3
- const __ = require('./placeholder')
4
- const curry2 = require('./curry2')
5
- const curry3 = require('./curry3')
6
- const curry4 = require('./curry4')
7
- const isPromise = require('./isPromise')
8
- const promiseAll = require('./promiseAll')
9
- const _Promise = require('./_Promise')
10
-
11
- /**
12
- * @name arrayMap
13
- *
14
- * @synopsis
15
- * ```coffeescript [specscript]
16
- * arrayMap(
17
- * array Array,
18
- * mapper (item any, index number, array Array)=>Promise|any,
19
- * ) -> Promise|Array
20
- * ```
21
- *
22
- * @description
23
- * Apply a mapper to each item of an array, returning an array. Mapper may be asynchronous.
24
- */
25
-
26
- const arrayMapHandlePromise = function (
27
- result, promise, index, promiseCounts, _promise
28
- ) {
29
- promiseCounts.pending += 1
30
- promise.then(value => {
31
- result[index] = value
32
- promiseCounts.resolved += 1
33
- if (promiseCounts.resolved == promiseCounts.pending) {
34
- _promise._fulfill(result)
35
- }
36
- }, error => {
37
- _promise.reject(error)
38
- })
39
- }
40
-
41
- const arrayMap2 = function (array, mapper) {
42
- const length = array.length
43
- const result = Array(length)
44
- const promiseCounts = { pending: 0, resolved: 0 }
45
-
46
- let index = -1
47
- let _promise = new _Promise()
48
-
49
- while (++index < length) {
50
- const ret = mapper(array[index], index, array)
51
- if (isPromise(ret)) {
52
- arrayMapHandlePromise(result, ret, index, promiseCounts, _promise)
53
- } else {
54
- result[index] = ret
55
- }
56
- }
57
-
58
- if (promiseCounts.pending == 0) {
59
- return result
60
- }
61
-
62
- return _promise
63
- }
64
-
65
- if (process.argv[1] == __filename) {
66
- const timeInLoopAsync = require('./timeInLoopAsync')
67
-
68
- timeInLoopAsync('arrayMap2', 1e6, async () => {
69
- await arrayMap2([1, 2, 3, 4, 5], async value => value + 1)
70
- })
71
- }
72
-
73
- module.exports = arrayMap2
@@ -1,34 +0,0 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('..')
3
- const _ = require('lodash')
4
- const R = require('ramda')
5
-
6
- const isOdd = number => number % 2 == 1
7
-
8
- const isEven = number => number % 2 == 0
9
-
10
- /**
11
- * @name allRace
12
- *
13
- * @benchmark
14
- * _.every: 1e+6: 20.984ms
15
- * R.all: 1e+6: 368.142ms
16
- * rubico.all: 1e+6: 24.772ms
17
- *
18
- * @remarks
19
- * promise check
20
- */
21
-
22
- {
23
- const evenNumbers = [2, 4, 6, 8, 10]
24
-
25
- // console.log(_.every(evenNumbers, isEven))
26
- // console.log(R.all(isEven)(evenNumbers))
27
- // console.log(rubico.all(isEven)(evenNumbers))
28
-
29
- // timeInLoop('_.every', 1e6, () => _.every(evenNumbers, isEven))
30
-
31
- // timeInLoop('R.all', 1e6, () => R.all(isEven)(evenNumbers))
32
-
33
- // timeInLoop('rubico.all', 1e6, () => rubico.all(isEven)(evenNumbers))
34
- }
@@ -1,24 +0,0 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('..')
3
-
4
- const { and } = rubico
5
-
6
- const isOdd = x => x % 2 == 1
7
-
8
- const threeOddChecks = number => isOdd(number) && isOdd(number) && isOdd(number)
9
-
10
- const threeIsOdd = and([isOdd, isOdd, isOdd])
11
-
12
- /**
13
- * @name or
14
- *
15
- * @benchmark
16
- * isOdd(value) && isOdd(value) && isOdd(value): 1e+6: 6.664ms
17
- * and([isOdd, isOdd, isOdd]): 1e+6: 16.842ms
18
- */
19
-
20
- {
21
- // timeInLoop('isOdd(value) && isOdd(value) && isOdd(value)', 1e6, () => threeOddChecks(1))
22
-
23
- // timeInLoop('and([isOdd, isOdd, isOdd])', 1e6, () => threeIsOdd(1))
24
- }
@@ -1,32 +0,0 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('..')
3
- const _ = require('lodash')
4
- const R = require('ramda')
5
-
6
- const isOdd = number => number % 2 == 1
7
-
8
- /**
9
- * @name anyRace
10
- *
11
- * @benchmark
12
- * _.some: 1e+6: 22.635ms
13
- * R.any: 1e+6: 374.329ms
14
- * rubico.any: 1e+6: 26.815ms
15
- *
16
- * @remarks
17
- * promise check
18
- */
19
-
20
- {
21
- const evenNumbers = [2, 4, 6, 8, 10]
22
-
23
- // console.log(_.some(evenNumbers, isOdd))
24
- // console.log(R.any(isOdd)(evenNumbers))
25
- // console.log(rubico.any(isOdd)(evenNumbers))
26
-
27
- // timeInLoop('_.some', 1e6, () => _.some(evenNumbers, isOdd))
28
-
29
- // timeInLoop('R.any', 1e6, () => R.any(isOdd)(evenNumbers))
30
-
31
- // timeInLoop('rubico.any', 1e6, () => rubico.any(isOdd)(evenNumbers))
32
- }
@@ -1,174 +0,0 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const { assign } = require('..')
3
-
4
- const isPromise = value => value != null && typeof value.then == 'function'
5
-
6
- const promiseAll = Promise.all.bind(Promise)
7
-
8
- const funcObjectAll1 = funcs => function objectAllFuncs(...args) {
9
- const output = {}, promises = []
10
- for (const key in funcs) {
11
- const outputItem = funcs[key].apply(null, args)
12
- if (isPromise(outputItem)) {
13
- promises.push(outputItem.then(res => {
14
- output[key] = res
15
- }))
16
- } else {
17
- output[key] = outputItem
18
- }
19
- }
20
- return promises.length == 0 ? output : promiseAll(promises).then(() => output)
21
- }
22
-
23
- const funcObjectAll2 = funcs => function objectAllFuncs(...args) {
24
- const output = {}, promises = []
25
- for (const key in funcs) {
26
- const outputItem = funcs[key](...args)
27
- if (isPromise(outputItem)) {
28
- promises.push(outputItem.then(res => {
29
- output[key] = res
30
- }))
31
- } else {
32
- output[key] = outputItem
33
- }
34
- }
35
- return promises.length == 0 ? output : promiseAll(promises).then(() => output)
36
- }
37
-
38
- const funcObjectAll3 = funcs => function objectAllFuncs(...args) {
39
- const result = {}
40
- let isAsync = false
41
- for (const key in funcs) {
42
- const resultItem = funcs[key](...args)
43
- if (isPromise(resultItem)) isAsync = true
44
- result[key] = resultItem
45
- }
46
- return isAsync ? promiseObjectAll(result) : result
47
- }
48
-
49
-
50
- const vanilla1 = ({ number }) => ({
51
- number,
52
- a: number + 1,
53
- b: number + 2,
54
- c: number + 3,
55
- })
56
-
57
- const funcs = {
58
- a: ({ number }) => number + 1,
59
- b: ({ number }) => number + 2,
60
- c: ({ number }) => number + 3,
61
- }
62
-
63
- const vanilla2 = function (obj) {
64
- const output = { ...obj }
65
- for (const key in funcs) {
66
- output[key] = funcs[key](obj)
67
- }
68
- return output
69
- }
70
-
71
- const assign1 = function (funcs) {
72
- const allFuncs = funcObjectAll1.call(null, funcs)
73
- return function assignment(input) {
74
- const output = allFuncs.call(null, input)
75
- return isPromise(output)
76
- ? output.then(res => ({ ...input, ...res }))
77
- : ({ ...input, ...output })
78
- }
79
- }
80
-
81
- const assign2 = function (funcs) {
82
- const allFuncs = funcObjectAll2(funcs)
83
- return function assignment(input) {
84
- const output = allFuncs(input)
85
- return isPromise(output)
86
- ? output.then(res => ({ ...input, ...res }))
87
- : ({ ...input, ...output })
88
- }
89
- }
90
-
91
- const assign3 = function (funcs) {
92
- const allFuncs = funcObjectAll3(funcs)
93
- return function assignment(input) {
94
- const output = allFuncs(input)
95
- return isPromise(output)
96
- ? output.then(res => ({ ...input, ...res }))
97
- : ({ ...input, ...output })
98
- }
99
- }
100
-
101
- // argument resolver for curry2
102
- const curry2ResolveArg0 = (
103
- baseFunc, arg1,
104
- ) => function arg0Resolver(arg0) {
105
- return baseFunc(arg0, arg1)
106
- }
107
-
108
- // argument resolver for curry2
109
- const curry2ResolveArg1 = (
110
- baseFunc, arg0,
111
- ) => function arg1Resolver(arg1) {
112
- return baseFunc(arg0, arg1)
113
- }
114
-
115
- /**
116
- * @name curry2
117
- *
118
- * @synopsis
119
- * __ = Symbol('placeholder')
120
- *
121
- * curry2(
122
- * baseFunc function,
123
- * arg0 __|any,
124
- * arg1 __|any,
125
- * ) -> function
126
- */
127
- const curry2 = function (baseFunc, arg0, arg1) {
128
- return arg0 == __
129
- ? curry2ResolveArg0(baseFunc, arg1)
130
- : curry2ResolveArg1(baseFunc, arg0)
131
- }
132
-
133
- // const objectAssign = Object.assign
134
-
135
- const objectAssign = (objA, objB) => ({ ...objA, ...objB })
136
-
137
- const assign5 = function (funcs) {
138
- const allFuncs = funcObjectAll3(funcs)
139
- return function assignment(object) {
140
- const result = allFuncs(object)
141
- return isPromise(result)
142
- ? result.then(curry2(objectAssign, object, __))
143
- : ({ ...object, ...result })
144
- }
145
- }
146
-
147
- /**
148
- * @name assign
149
- *
150
- * @benchmark
151
- * assign1: 1e+5: 67.168ms
152
- * assign2: 1e+5: 60.779ms
153
- * assign3: 1e+5: 58.094ms
154
- * assign5: 1e+5: 59.132ms
155
- *
156
- * @remarks
157
- * currying is slower here
158
- */
159
-
160
- {
161
-
162
- // console.log('assign1', assign1(funcs)({ number: 2 }))
163
- // console.log('assign2', assign2(funcs)({ number: 2 }))
164
- // console.log('assign3', assign3(funcs)({ number: 2 }))
165
- // console.log('assign5', assign5(funcs)({ number: 2 }))
166
-
167
- // timeInLoop('assign1', 1e5, () => assign1(funcs)({ number: 2 }))
168
-
169
- // timeInLoop('assign2', 1e5, () => assign2(funcs)({ number: 2 }))
170
-
171
- // timeInLoop('assign3', 1e5, () => assign3(funcs)({ number: 2 }))
172
-
173
- // timeInLoop('assign5', 1e5, () => assign5(funcs)({ number: 2 }))
174
- }
@@ -1,55 +0,0 @@
1
- const rubico = require('..')
2
- const timeInLoop = require('../x/timeInLoop')
3
- const R = require('ramda')
4
- const curry1 = require('../_internal/curry1')
5
- const curry2 = require('../_internal/curry2')
6
- const curry3 = require('../_internal/curry3')
7
- const curry4 = require('../_internal/curry4')
8
-
9
- const { __ } = rubico
10
-
11
- /**
12
- * @name curryRace
13
- *
14
- * @benchmark
15
- * rubico.curry: 1e+5: 60.554ms
16
- * R.curry: 1e+5: 106.163ms
17
- */
18
- const add6 = (a, b, c, d, e, f) => a + b + c + d + e + f
19
-
20
- // console.log(rubico.curry(add6)(1, 2)(3)(4, 5, 6)) // 21
21
- // console.log(R.curry(add6)(1, 2)(3)(4, 5, 6)) // 21
22
-
23
- // timeInLoop('rubico.curry', 1e5, () => rubico.curry(add6)(1, 2)(3)(4, 5, 6))
24
- // timeInLoop('R.curry', 1e5, () => R.curry(add6)(1, 2)(3)(4, 5, 6))
25
-
26
- /**
27
- * @name curryPlaceholderRace
28
- *
29
- * @benchmark
30
- * rubico.curry: 1e+5: 98.834ms
31
- * R.curry: 1e+5: 147.693ms
32
- */
33
- // console.log(rubico.curry(add6)(1, 2, rubico.__)(3)(4, rubico.__, 6)(5)) // 21
34
- // console.log(R.curry(add6)(1, 2, R.__)(3)(4, R.__, 6)(5)) // 21
35
-
36
- // timeInLoop('rubico.curry', 1e5, () => rubico.curry(add6)(1, 2, rubico.__)(3)(4, rubico.__, 6)(5))
37
- // timeInLoop('R.curry', 1e5, () => R.curry(add6)(1, 2, R.__)(3)(4, R.__, 6)(5))
38
-
39
- /**
40
- * @name curryRaceUnary
41
- *
42
- * @benchmark
43
- * rubico.curry: 1e+5: 60.554ms
44
- * R.curry: 1e+5: 106.163ms
45
- *
46
- * rubico.curry: 1e+5: 45.475ms
47
- * R.curry: 1e+5: 66.493ms
48
- */
49
- const identity = value => value
50
-
51
- // console.log(rubico.curry(identity)(__)(1)) // 1
52
- // console.log(R.curry(identity)(R.__)(1)) // 1
53
-
54
- // timeInLoop('rubico.curry', 1e5, () => rubico.curry(identity)(__)(1))
55
- // timeInLoop('R.curry', 1e5, () => R.curry(identity)(R.__)(1))
@@ -1,25 +0,0 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('..')
3
- const _ = require('lodash')
4
- const R = require('ramda')
5
-
6
- /**
7
- * @name eq
8
- *
9
- * @benchmark
10
- * rubico.eq(0, 0): 1e+7: 12.499ms
11
- * _.eq(0, 0): 1e+7: 12.585ms
12
- * R.equals(0, 0): 1e+7: 196.767ms
13
- */
14
-
15
- const rubicoEq = rubico.eq(0, 0)
16
-
17
- // console.log(rubicoEq())
18
- // console.log(_.eq(0, 0))
19
- // console.log(R.equals(0, 0))
20
-
21
- // timeInLoop('rubico.eq(0, 0)', 1e7, () => rubicoEq())
22
-
23
- // timeInLoop('_.eq(0, 0)', 1e7, () => _.eq(0, 0))
24
-
25
- // timeInLoop('R.equals(0, 0)', 1e7, () => R.equals(0, 0))