rubico 2.0.1 → 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 (501) hide show
  1. package/README.md +10 -8
  2. package/Transducer.js +28 -0
  3. package/_internal/genericTransform.js +30 -28
  4. package/_internal/reducerTryCatch.js +55 -0
  5. package/dist/Transducer.es.js +28 -1
  6. package/dist/Transducer.es.min.js +2 -2
  7. package/dist/Transducer.js +28 -1
  8. package/dist/Transducer.min.js +2 -2
  9. package/dist/Transducer.mjs +28 -1
  10. package/dist/__.es.js +1 -1
  11. package/dist/__.es.min.js +1 -1
  12. package/dist/__.js +1 -1
  13. package/dist/__.min.js +1 -1
  14. package/dist/__.mjs +1 -1
  15. package/dist/all.es.js +1 -1
  16. package/dist/all.es.min.js +1 -1
  17. package/dist/all.js +1 -1
  18. package/dist/all.min.js +1 -1
  19. package/dist/all.mjs +1 -1
  20. package/dist/always.es.js +1 -1
  21. package/dist/always.es.min.js +1 -1
  22. package/dist/always.js +1 -1
  23. package/dist/always.min.js +1 -1
  24. package/dist/always.mjs +1 -1
  25. package/dist/and.es.js +1 -1
  26. package/dist/and.es.min.js +1 -1
  27. package/dist/and.js +1 -1
  28. package/dist/and.min.js +1 -1
  29. package/dist/and.mjs +1 -1
  30. package/dist/assign.es.js +1 -1
  31. package/dist/assign.es.min.js +1 -1
  32. package/dist/assign.js +1 -1
  33. package/dist/assign.min.js +1 -1
  34. package/dist/assign.mjs +1 -1
  35. package/dist/compose.es.js +1 -1
  36. package/dist/compose.es.min.js +1 -1
  37. package/dist/compose.js +1 -1
  38. package/dist/compose.min.js +1 -1
  39. package/dist/compose.mjs +1 -1
  40. package/dist/curry.es.js +1 -1
  41. package/dist/curry.es.min.js +1 -1
  42. package/dist/curry.js +1 -1
  43. package/dist/curry.min.js +1 -1
  44. package/dist/curry.mjs +1 -1
  45. package/dist/eq.es.js +1 -1
  46. package/dist/eq.es.min.js +1 -1
  47. package/dist/eq.js +1 -1
  48. package/dist/eq.min.js +1 -1
  49. package/dist/eq.mjs +1 -1
  50. package/dist/every.es.js +1 -1
  51. package/dist/every.es.min.js +1 -1
  52. package/dist/every.js +1 -1
  53. package/dist/every.min.js +1 -1
  54. package/dist/every.mjs +1 -1
  55. package/dist/filter.es.js +1 -1
  56. package/dist/filter.es.min.js +1 -1
  57. package/dist/filter.js +1 -1
  58. package/dist/filter.min.js +1 -1
  59. package/dist/filter.mjs +1 -1
  60. package/dist/flatMap.es.js +1 -1
  61. package/dist/flatMap.es.min.js +1 -1
  62. package/dist/flatMap.js +1 -1
  63. package/dist/flatMap.min.js +1 -1
  64. package/dist/flatMap.mjs +1 -1
  65. package/dist/forEach.es.js +1 -1
  66. package/dist/forEach.es.min.js +1 -1
  67. package/dist/forEach.js +1 -1
  68. package/dist/forEach.min.js +1 -1
  69. package/dist/forEach.mjs +1 -1
  70. package/dist/get.es.js +1 -1
  71. package/dist/get.es.min.js +1 -1
  72. package/dist/get.js +1 -1
  73. package/dist/get.min.js +1 -1
  74. package/dist/get.mjs +1 -1
  75. package/dist/gt.es.js +1 -1
  76. package/dist/gt.es.min.js +1 -1
  77. package/dist/gt.js +1 -1
  78. package/dist/gt.min.js +1 -1
  79. package/dist/gt.mjs +1 -1
  80. package/dist/gte.es.js +1 -1
  81. package/dist/gte.es.min.js +1 -1
  82. package/dist/gte.js +1 -1
  83. package/dist/gte.min.js +1 -1
  84. package/dist/gte.mjs +1 -1
  85. package/dist/lt.es.js +1 -1
  86. package/dist/lt.es.min.js +1 -1
  87. package/dist/lt.js +1 -1
  88. package/dist/lt.min.js +1 -1
  89. package/dist/lt.mjs +1 -1
  90. package/dist/lte.es.js +1 -1
  91. package/dist/lte.es.min.js +1 -1
  92. package/dist/lte.js +1 -1
  93. package/dist/lte.min.js +1 -1
  94. package/dist/lte.mjs +1 -1
  95. package/dist/map.es.js +1 -1
  96. package/dist/map.es.min.js +1 -1
  97. package/dist/map.js +1 -1
  98. package/dist/map.min.js +1 -1
  99. package/dist/map.mjs +1 -1
  100. package/dist/not.es.js +1 -1
  101. package/dist/not.es.min.js +1 -1
  102. package/dist/not.js +1 -1
  103. package/dist/not.min.js +1 -1
  104. package/dist/not.mjs +1 -1
  105. package/dist/omit.es.js +1 -1
  106. package/dist/omit.es.min.js +1 -1
  107. package/dist/omit.js +1 -1
  108. package/dist/omit.min.js +1 -1
  109. package/dist/omit.mjs +1 -1
  110. package/dist/or.es.js +1 -1
  111. package/dist/or.es.min.js +1 -1
  112. package/dist/or.js +1 -1
  113. package/dist/or.min.js +1 -1
  114. package/dist/or.mjs +1 -1
  115. package/dist/pick.es.js +1 -1
  116. package/dist/pick.es.min.js +1 -1
  117. package/dist/pick.js +1 -1
  118. package/dist/pick.min.js +1 -1
  119. package/dist/pick.mjs +1 -1
  120. package/dist/pipe.es.js +1 -1
  121. package/dist/pipe.es.min.js +1 -1
  122. package/dist/pipe.js +1 -1
  123. package/dist/pipe.min.js +1 -1
  124. package/dist/pipe.mjs +1 -1
  125. package/dist/reduce.es.js +1 -1
  126. package/dist/reduce.es.min.js +1 -1
  127. package/dist/reduce.js +1 -1
  128. package/dist/reduce.min.js +1 -1
  129. package/dist/reduce.mjs +1 -1
  130. package/dist/rubico.es.js +57 -46
  131. package/dist/rubico.es.min.js +2 -2
  132. package/dist/rubico.global.js +57 -46
  133. package/dist/rubico.global.min.js +2 -2
  134. package/dist/rubico.js +57 -46
  135. package/dist/rubico.min.js +2 -2
  136. package/dist/rubico.mjs +57 -46
  137. package/dist/set.es.js +1 -1
  138. package/dist/set.es.min.js +1 -1
  139. package/dist/set.js +1 -1
  140. package/dist/set.min.js +1 -1
  141. package/dist/set.mjs +1 -1
  142. package/dist/some.es.js +1 -1
  143. package/dist/some.es.min.js +1 -1
  144. package/dist/some.js +1 -1
  145. package/dist/some.min.js +1 -1
  146. package/dist/some.mjs +1 -1
  147. package/dist/switchCase.es.js +1 -1
  148. package/dist/switchCase.es.min.js +1 -1
  149. package/dist/switchCase.js +1 -1
  150. package/dist/switchCase.min.js +1 -1
  151. package/dist/switchCase.mjs +1 -1
  152. package/dist/tap.es.js +32 -2
  153. package/dist/tap.es.min.js +2 -2
  154. package/dist/tap.js +32 -2
  155. package/dist/tap.min.js +2 -2
  156. package/dist/tap.mjs +32 -2
  157. package/dist/thunkify.es.js +1 -1
  158. package/dist/thunkify.es.min.js +1 -1
  159. package/dist/thunkify.js +1 -1
  160. package/dist/thunkify.min.js +1 -1
  161. package/dist/thunkify.mjs +1 -1
  162. package/dist/transform.es.js +26 -24
  163. package/dist/transform.es.min.js +2 -2
  164. package/dist/transform.js +26 -24
  165. package/dist/transform.min.js +2 -2
  166. package/dist/transform.mjs +26 -24
  167. package/dist/tryCatch.es.js +1 -1
  168. package/dist/tryCatch.es.min.js +1 -1
  169. package/dist/tryCatch.js +1 -1
  170. package/dist/tryCatch.min.js +1 -1
  171. package/dist/tryCatch.mjs +1 -1
  172. package/dist/x/append.es.js +1 -1
  173. package/dist/x/append.es.min.js +1 -1
  174. package/dist/x/append.js +1 -1
  175. package/dist/x/append.min.js +1 -1
  176. package/dist/x/append.mjs +1 -1
  177. package/dist/x/callProp.es.js +1 -1
  178. package/dist/x/callProp.es.min.js +1 -1
  179. package/dist/x/callProp.js +1 -1
  180. package/dist/x/callProp.min.js +1 -1
  181. package/dist/x/callProp.mjs +1 -1
  182. package/dist/x/defaultsDeep.es.js +1 -1
  183. package/dist/x/defaultsDeep.es.min.js +1 -1
  184. package/dist/x/defaultsDeep.js +1 -1
  185. package/dist/x/defaultsDeep.min.js +1 -1
  186. package/dist/x/defaultsDeep.mjs +1 -1
  187. package/dist/x/differenceWith.es.js +1 -1
  188. package/dist/x/differenceWith.es.min.js +1 -1
  189. package/dist/x/differenceWith.js +1 -1
  190. package/dist/x/differenceWith.min.js +1 -1
  191. package/dist/x/differenceWith.mjs +1 -1
  192. package/dist/x/filterOut.es.js +1 -1
  193. package/dist/x/filterOut.es.min.js +1 -1
  194. package/dist/x/filterOut.js +1 -1
  195. package/dist/x/filterOut.min.js +1 -1
  196. package/dist/x/filterOut.mjs +1 -1
  197. package/dist/x/find.es.js +1 -1
  198. package/dist/x/find.es.min.js +1 -1
  199. package/dist/x/find.js +1 -1
  200. package/dist/x/find.min.js +1 -1
  201. package/dist/x/find.mjs +1 -1
  202. package/dist/x/findIndex.es.js +1 -1
  203. package/dist/x/findIndex.es.min.js +1 -1
  204. package/dist/x/findIndex.js +1 -1
  205. package/dist/x/findIndex.min.js +1 -1
  206. package/dist/x/findIndex.mjs +1 -1
  207. package/dist/x/first.es.js +1 -1
  208. package/dist/x/first.es.min.js +1 -1
  209. package/dist/x/first.js +1 -1
  210. package/dist/x/first.min.js +1 -1
  211. package/dist/x/first.mjs +1 -1
  212. package/dist/x/flatten.es.js +1 -1
  213. package/dist/x/flatten.es.min.js +1 -1
  214. package/dist/x/flatten.js +1 -1
  215. package/dist/x/flatten.min.js +1 -1
  216. package/dist/x/flatten.mjs +1 -1
  217. package/dist/x/groupBy.es.js +1 -1
  218. package/dist/x/groupBy.es.min.js +1 -1
  219. package/dist/x/groupBy.js +1 -1
  220. package/dist/x/groupBy.min.js +1 -1
  221. package/dist/x/groupBy.mjs +1 -1
  222. package/dist/x/has.es.js +1 -1
  223. package/dist/x/has.es.min.js +1 -1
  224. package/dist/x/has.js +1 -1
  225. package/dist/x/has.min.js +1 -1
  226. package/dist/x/has.mjs +1 -1
  227. package/dist/x/identity.es.js +1 -1
  228. package/dist/x/identity.es.min.js +1 -1
  229. package/dist/x/identity.js +1 -1
  230. package/dist/x/identity.min.js +1 -1
  231. package/dist/x/identity.mjs +1 -1
  232. package/dist/x/includes.es.js +1 -1
  233. package/dist/x/includes.es.min.js +1 -1
  234. package/dist/x/includes.js +1 -1
  235. package/dist/x/includes.min.js +1 -1
  236. package/dist/x/includes.mjs +1 -1
  237. package/dist/x/isDeepEqual.es.js +1 -1
  238. package/dist/x/isDeepEqual.es.min.js +1 -1
  239. package/dist/x/isDeepEqual.js +1 -1
  240. package/dist/x/isDeepEqual.min.js +1 -1
  241. package/dist/x/isDeepEqual.mjs +1 -1
  242. package/dist/x/isEmpty.es.js +1 -1
  243. package/dist/x/isEmpty.es.min.js +1 -1
  244. package/dist/x/isEmpty.js +1 -1
  245. package/dist/x/isEmpty.min.js +1 -1
  246. package/dist/x/isEmpty.mjs +1 -1
  247. package/dist/x/isEqual.es.js +1 -1
  248. package/dist/x/isEqual.es.min.js +1 -1
  249. package/dist/x/isEqual.js +1 -1
  250. package/dist/x/isEqual.min.js +1 -1
  251. package/dist/x/isEqual.mjs +1 -1
  252. package/dist/x/isFunction.es.js +1 -1
  253. package/dist/x/isFunction.es.min.js +1 -1
  254. package/dist/x/isFunction.js +1 -1
  255. package/dist/x/isFunction.min.js +1 -1
  256. package/dist/x/isFunction.mjs +1 -1
  257. package/dist/x/isIn.es.js +1 -1
  258. package/dist/x/isIn.es.min.js +1 -1
  259. package/dist/x/isIn.js +1 -1
  260. package/dist/x/isIn.min.js +1 -1
  261. package/dist/x/isIn.mjs +1 -1
  262. package/dist/x/isObject.es.js +1 -1
  263. package/dist/x/isObject.es.min.js +1 -1
  264. package/dist/x/isObject.js +1 -1
  265. package/dist/x/isObject.min.js +1 -1
  266. package/dist/x/isObject.mjs +1 -1
  267. package/dist/x/isString.es.js +1 -1
  268. package/dist/x/isString.es.min.js +1 -1
  269. package/dist/x/isString.js +1 -1
  270. package/dist/x/isString.min.js +1 -1
  271. package/dist/x/isString.mjs +1 -1
  272. package/dist/x/keys.es.js +1 -1
  273. package/dist/x/keys.es.min.js +1 -1
  274. package/dist/x/keys.js +1 -1
  275. package/dist/x/keys.min.js +1 -1
  276. package/dist/x/keys.mjs +1 -1
  277. package/dist/x/last.es.js +1 -1
  278. package/dist/x/last.es.min.js +1 -1
  279. package/dist/x/last.js +1 -1
  280. package/dist/x/last.min.js +1 -1
  281. package/dist/x/last.mjs +1 -1
  282. package/dist/x/maxBy.es.js +1 -1
  283. package/dist/x/maxBy.es.min.js +1 -1
  284. package/dist/x/maxBy.js +1 -1
  285. package/dist/x/maxBy.min.js +1 -1
  286. package/dist/x/maxBy.mjs +1 -1
  287. package/dist/x/noop.es.js +1 -1
  288. package/dist/x/noop.es.min.js +1 -1
  289. package/dist/x/noop.js +1 -1
  290. package/dist/x/noop.min.js +1 -1
  291. package/dist/x/noop.mjs +1 -1
  292. package/dist/x/pluck.es.js +1 -1
  293. package/dist/x/pluck.es.min.js +1 -1
  294. package/dist/x/pluck.js +1 -1
  295. package/dist/x/pluck.min.js +1 -1
  296. package/dist/x/pluck.mjs +1 -1
  297. package/dist/x/prepend.es.js +1 -1
  298. package/dist/x/prepend.es.min.js +1 -1
  299. package/dist/x/prepend.js +1 -1
  300. package/dist/x/prepend.min.js +1 -1
  301. package/dist/x/prepend.mjs +1 -1
  302. package/dist/x/size.es.js +1 -1
  303. package/dist/x/size.es.min.js +1 -1
  304. package/dist/x/size.js +1 -1
  305. package/dist/x/size.min.js +1 -1
  306. package/dist/x/size.mjs +1 -1
  307. package/dist/x/trace.es.js +32 -2
  308. package/dist/x/trace.es.min.js +2 -2
  309. package/dist/x/trace.js +32 -2
  310. package/dist/x/trace.min.js +2 -2
  311. package/dist/x/trace.mjs +32 -2
  312. package/dist/x/unionWith.es.js +1 -1
  313. package/dist/x/unionWith.es.min.js +1 -1
  314. package/dist/x/unionWith.js +1 -1
  315. package/dist/x/unionWith.min.js +1 -1
  316. package/dist/x/unionWith.mjs +1 -1
  317. package/dist/x/uniq.es.js +1 -1
  318. package/dist/x/uniq.es.min.js +1 -1
  319. package/dist/x/uniq.js +1 -1
  320. package/dist/x/uniq.min.js +1 -1
  321. package/dist/x/uniq.mjs +1 -1
  322. package/dist/x/unless.es.js +1 -1
  323. package/dist/x/unless.es.min.js +1 -1
  324. package/dist/x/unless.js +1 -1
  325. package/dist/x/unless.min.js +1 -1
  326. package/dist/x/unless.mjs +1 -1
  327. package/dist/x/values.es.js +1 -1
  328. package/dist/x/values.es.min.js +1 -1
  329. package/dist/x/values.js +1 -1
  330. package/dist/x/values.min.js +1 -1
  331. package/dist/x/values.mjs +1 -1
  332. package/dist/x/when.es.js +1 -1
  333. package/dist/x/when.es.min.js +1 -1
  334. package/dist/x/when.js +1 -1
  335. package/dist/x/when.min.js +1 -1
  336. package/dist/x/when.mjs +1 -1
  337. package/es.js +57 -46
  338. package/index.js +57 -46
  339. package/package.json +43 -2
  340. package/tap.js +15 -4
  341. package/.eslintignore +0 -5
  342. package/.eslintrc.js +0 -330
  343. package/.github/workflows/nodejs.yml +0 -27
  344. package/.vscode/launch.json +0 -25
  345. package/AggregateReducer.test.js +0 -82
  346. package/CHANGELOG.md +0 -310
  347. package/CNAME +0 -1
  348. package/CODE_OF_CONDUCT.md +0 -128
  349. package/CONTRIBUTING.md +0 -4
  350. package/Transducer.test.js +0 -117
  351. package/_config.yml +0 -1
  352. package/_internal/improvedGenericTransform.js +0 -93
  353. package/archive/FlatMappingIterator-2020-09-28.js +0 -68
  354. package/archive/_Promise-2023-05-29.js +0 -93
  355. package/archive/arrayMap2-2023-05-29.js +0 -73
  356. package/archive/benchmarks-v1.9.7/all.js +0 -34
  357. package/archive/benchmarks-v1.9.7/and.js +0 -24
  358. package/archive/benchmarks-v1.9.7/any.js +0 -32
  359. package/archive/benchmarks-v1.9.7/assign.js +0 -174
  360. package/archive/benchmarks-v1.9.7/curry.js +0 -55
  361. package/archive/benchmarks-v1.9.7/eq.js +0 -25
  362. package/archive/benchmarks-v1.9.7/filter.js +0 -1322
  363. package/archive/benchmarks-v1.9.7/flatMap.js +0 -48
  364. package/archive/benchmarks-v1.9.7/forEach.js +0 -33
  365. package/archive/benchmarks-v1.9.7/fork.js +0 -123
  366. package/archive/benchmarks-v1.9.7/get.js +0 -44
  367. package/archive/benchmarks-v1.9.7/gt.js +0 -25
  368. package/archive/benchmarks-v1.9.7/gte.js +0 -25
  369. package/archive/benchmarks-v1.9.7/integration.js +0 -88
  370. package/archive/benchmarks-v1.9.7/lt.js +0 -25
  371. package/archive/benchmarks-v1.9.7/lte.js +0 -25
  372. package/archive/benchmarks-v1.9.7/map.js +0 -892
  373. package/archive/benchmarks-v1.9.7/misc.js +0 -470
  374. package/archive/benchmarks-v1.9.7/omit.js +0 -28
  375. package/archive/benchmarks-v1.9.7/or.js +0 -51
  376. package/archive/benchmarks-v1.9.7/pick.js +0 -24
  377. package/archive/benchmarks-v1.9.7/pipe.js +0 -152
  378. package/archive/benchmarks-v1.9.7/reduce.js +0 -739
  379. package/archive/benchmarks-v1.9.7/switchCase.js +0 -256
  380. package/archive/benchmarks-v1.9.7/tap.js +0 -90
  381. package/archive/benchmarks-v1.9.7/transform.js +0 -218
  382. package/archive/benchmarks-v1.9.7/tryCatch.js +0 -108
  383. package/archive/curry.js +0 -13
  384. package/archive/examples-v1.6.11/browserModule.html +0 -31
  385. package/archive/examples-v1.6.11/browserScript.html +0 -32
  386. package/archive/examples-v1.6.11/coolTransformToConsole.js +0 -1
  387. package/archive/examples-v1.6.11/denoLargeGasMap.js +0 -85
  388. package/archive/examples-v1.6.11/denoServer.js +0 -9
  389. package/archive/examples-v1.6.11/denoServerWithMiddleware.js +0 -55
  390. package/archive/examples-v1.6.11/logTodosRange.js +0 -21
  391. package/archive/examples-v1.6.11/makeARequest.html +0 -46
  392. package/archive/examples-v1.6.11/nodeComplexTransformation.js +0 -106
  393. package/archive/examples-v1.6.11/nodeConditionallyExtractIDs.js +0 -50
  394. package/archive/examples-v1.6.11/nodeFloatingPoint.js +0 -55
  395. package/archive/examples-v1.6.11/nodeGetAllJiraBoards.js +0 -45
  396. package/archive/examples-v1.6.11/nodeGetSocketIOClientsTotalCount.js +0 -34
  397. package/archive/examples-v1.6.11/nodeKafkaConsumer.js +0 -63
  398. package/archive/examples-v1.6.11/nodeMakeMultipleRequests.js +0 -55
  399. package/archive/examples-v1.6.11/nodeOnRecordAddTask.js +0 -34
  400. package/archive/examples-v1.6.11/nodePostRequestWithAuth.js +0 -36
  401. package/archive/examples-v1.6.11/nodeSpeedbackMatchmakingAlgorithm.js +0 -96
  402. package/archive/examples-v1.6.11/nodeTireData.js +0 -36
  403. package/archive/examples-v1.6.11/nodeTripleMap.js +0 -85
  404. package/archive/examples-v1.6.11/squaredOdds.ts +0 -16
  405. package/archive/examples-v1.6.11/transducerMaxBuyer.js +0 -67
  406. package/archive/examples-v1.6.11/transformLogTodosRange.js +0 -31
  407. package/archive/examples-v1.6.11/transformStreamRandomInts.js +0 -19
  408. package/archive/genericReduceConcurrent.js +0 -277
  409. package/archive/index.v0.2.9.js +0 -1685
  410. package/archive/objectValuesGenerator.js +0 -13
  411. package/archive/test.v0.2.9.js +0 -2334
  412. package/bench +0 -65
  413. package/benchmark-output/v1.9.7 +0 -268
  414. package/benchmarks/all.async.js +0 -43
  415. package/benchmarks/all.js +0 -43
  416. package/benchmarks/always.js +0 -15
  417. package/benchmarks/and.async.js +0 -25
  418. package/benchmarks/and.js +0 -25
  419. package/benchmarks/assign.async.js +0 -27
  420. package/benchmarks/assign.js +0 -27
  421. package/benchmarks/curry.js +0 -35
  422. package/benchmarks/eq.async.js +0 -23
  423. package/benchmarks/eq.js +0 -23
  424. package/benchmarks/every.async.js +0 -19
  425. package/benchmarks/every.js +0 -19
  426. package/benchmarks/filter.async.js +0 -32
  427. package/benchmarks/filter.js +0 -38
  428. package/benchmarks/flatMap.async.js +0 -26
  429. package/benchmarks/flatMap.js +0 -38
  430. package/benchmarks/get.async.js +0 -19
  431. package/benchmarks/get.js +0 -39
  432. package/benchmarks/gt.async.js +0 -23
  433. package/benchmarks/gt.js +0 -23
  434. package/benchmarks/gte.async.js +0 -23
  435. package/benchmarks/gte.js +0 -23
  436. package/benchmarks/lt.async.js +0 -23
  437. package/benchmarks/lt.js +0 -23
  438. package/benchmarks/lte.async.js +0 -23
  439. package/benchmarks/lte.js +0 -23
  440. package/benchmarks/map.async.js +0 -43
  441. package/benchmarks/map.js +0 -40
  442. package/benchmarks/misc/Promise.js +0 -26
  443. package/benchmarks/misc/isPromise.js +0 -30
  444. package/benchmarks/misc/promiseAll.js +0 -36
  445. package/benchmarks/not.js +0 -23
  446. package/benchmarks/omit.js +0 -38
  447. package/benchmarks/or.async.js +0 -25
  448. package/benchmarks/or.js +0 -25
  449. package/benchmarks/pick.js +0 -38
  450. package/benchmarks/pipe.async.js +0 -47
  451. package/benchmarks/pipe.js +0 -47
  452. package/benchmarks/reduce.async.js +0 -32
  453. package/benchmarks/reduce.js +0 -38
  454. package/benchmarks/set.async.js +0 -19
  455. package/benchmarks/set.js +0 -41
  456. package/benchmarks/some.async.js +0 -19
  457. package/benchmarks/some.js +0 -19
  458. package/benchmarks/switchCase.async.js +0 -27
  459. package/benchmarks/switchCase.js +0 -55
  460. package/benchmarks/tap.js +0 -15
  461. package/benchmarks/thunkify.js +0 -15
  462. package/benchmarks/transform.async.js +0 -27
  463. package/benchmarks/transform.js +0 -40
  464. package/benchmarks/tryCatch.async.js +0 -25
  465. package/benchmarks/tryCatch.js +0 -32
  466. package/build +0 -472
  467. package/dist-test.js +0 -37
  468. package/examples/type-to-search-wiki/README.md +0 -19
  469. package/examples/type-to-search-wiki/package.json +0 -13
  470. package/examples/type-to-search-wiki/src/app.js +0 -46
  471. package/examples/type-to-search-wiki/src/index.html +0 -18
  472. package/import-test.html +0 -73
  473. package/memory-usage/reduce.js +0 -40
  474. package/monad/AsyncPool.js +0 -0
  475. package/monad/BrokenPromise.js +0 -63
  476. package/monad/BrokenPromise.test.js +0 -22
  477. package/monad/Cancellable.js +0 -84
  478. package/monad/Cancellable.memoryUsage.js +0 -60
  479. package/monad/Cancellable.test.js +0 -20
  480. package/monad/Function.js +0 -0
  481. package/monad/Instance.benchmark.js +0 -378
  482. package/monad/Instance.js +0 -351
  483. package/monad/Instance.test.js +0 -445
  484. package/monad/Mux.benchmark.js +0 -29
  485. package/monad/Mux.js +0 -589
  486. package/monad/Mux.test.js +0 -512
  487. package/monad/PossiblePromise.benchmark.js +0 -87
  488. package/monad/PossiblePromise.js +0 -144
  489. package/monad/PossiblePromise.test.js +0 -89
  490. package/monad/README.md +0 -75
  491. package/monad/Reducer.js +0 -0
  492. package/monad/Sequence.benchmark.js +0 -42
  493. package/monad/Sequence.js +0 -36
  494. package/monad/SpecScript.js +0 -0
  495. package/monad/Stack.js +0 -0
  496. package/monad/Struct.benchmark.js +0 -154
  497. package/monad/Struct.js +0 -249
  498. package/monad/Struct.test.js +0 -237
  499. package/rubico.js +0 -66
  500. package/test.js +0 -4242
  501. package/tmp.js +0 -1
package/monad/Struct.js DELETED
@@ -1,249 +0,0 @@
1
- /* rubico v1.5.0
2
- * https://github.com/a-synchronous/rubico
3
- * (c) 2019-2020 Richard Tong
4
- * rubico may be freely distributed under the MIT license.
5
- */
6
-
7
- 'use strict'
8
-
9
- const Instance = require('./Instance')
10
-
11
- const { isArray, isObject, isSet, isMap } = Instance
12
-
13
- /**
14
- * @synopsis
15
- * isStruct(x any) -> boolean
16
- */
17
- const isStruct = x => isArray(x) || isObject(x) || isSet(x) || isMap(x)
18
-
19
- /**
20
- * @name Struct
21
- *
22
- * @synopsis
23
- * new Struct(x Array|Object|Set|Map) -> Struct
24
- *
25
- * @catchphrase
26
- * Finite data structure
27
- */
28
- const Struct = function(x) {
29
- if (!isStruct(x)) {
30
- throw new TypeError(`cannot convert ${x} to Struct`)
31
- }
32
- this.value = x
33
- }
34
-
35
- /**
36
- * @name Struct.isStruct
37
- *
38
- * @synopsis
39
- * Struct.isStruct(x any) -> boolean
40
- *
41
- * @catchphrase
42
- * Tell if struct
43
- */
44
- Struct.isStruct = isStruct
45
-
46
- /**
47
- * @synopsis
48
- * <T>objectEntriesGenerator(x Object<T>) -> Iterator<[key string, T]>
49
- */
50
- const objectEntriesGenerator = function*(x) {
51
- for (const k in x) {
52
- yield [k, x[k]]
53
- }
54
- }
55
-
56
- /**
57
- * @name Struct.entries
58
- *
59
- * @synopsis
60
- * <T any>Struct.entries(x Array<T>) -> Iterator<[index number, T]>
61
- *
62
- * <T any>Struct.entries(x Object<T>) -> Iterator<[key string, T]>
63
- *
64
- * <T any>Struct.entries(x Set<T>) -> Iterator<[T, T]>
65
- *
66
- * <A any, B any>Struct.entries(x Map<A, B>) -> Iterator<[A, B]>
67
- *
68
- * @catchphrase
69
- * Get an iterator of key value pairs
70
- */
71
- Struct.entries = x => isObject(x) ? objectEntriesGenerator(x) : x.entries()
72
-
73
- /**
74
- * @synopsis
75
- * <T>objectValuesGenerator(x Object<T>) -> Iterator<T>
76
- */
77
- const objectValuesGenerator = function*(x) {
78
- for (const k in x) {
79
- yield x[k]
80
- }
81
- }
82
-
83
- /**
84
- * @name Struct.values
85
- *
86
- * @synopsis
87
- * <T any>Struct.values(
88
- * x Array<T>|Object<T>|Set<T>|Map<any, T>
89
- * ) -> Iterator<T>
90
- *
91
- * @catchphrase
92
- * Get an iterator of values
93
- */
94
- Struct.values = x => isObject(x) ? objectValuesGenerator(x) : x.values()
95
-
96
- /**
97
- * @name Struct.get
98
- *
99
- * @synopsis
100
- * <T any>Struct.get(x Array<T>, index number) -> T|undefined
101
- *
102
- * <T any>Struct.get(x Object<T>, index string) -> T|undefined
103
- *
104
- * <T any>Struct.get(x Set<T>, index T) -> T|undefined
105
- *
106
- * <A any, B any>Struct.get(x Map<A, B>, index A) -> B|undefined
107
- *
108
- * @catchphrase
109
- * Get an item by index
110
- */
111
- Struct.get = (x, index) => {
112
- if (typeof x.get == 'function') return x.get(index)
113
- if (typeof x.has == 'function') return x.has(index) ? index : undefined
114
- return x[index]
115
- }
116
-
117
- /*
118
- Struct.get.ternary = (x, index) => (typeof x.get == 'function'
119
- ? x.get(index) : typeof x.has == 'function'
120
- ? x.has(index) ? index : undefined : x[index])
121
- */
122
-
123
- /**
124
- * @name Struct.set
125
- *
126
- * @synopsis
127
- * Struct.set(x Array, value any, index number) -> mutated Array
128
- *
129
- * Struct.set(x Object, value any, index string) -> mutated Object
130
- *
131
- * Struct.set(x Set, value any) -> mutated Set
132
- *
133
- * Struct.set(x Map, value any, index any) -> mutated Map
134
- *
135
- * @catchphrase
136
- * Set a value
137
- */
138
- Struct.set = (x, value, index) => {
139
- if (typeof x.set == 'function') return x.set(index, value)
140
- if (typeof x.add == 'function') return x.add(value)
141
- x[index] = value
142
- return x
143
- }
144
-
145
- /**
146
- * @synopsis
147
- * objectKeysCount(obj object) -> ct number
148
- */
149
- const objectKeysCount = obj => {
150
- let ct = 0
151
- for (const _ in obj) ct += 1
152
- return ct
153
- }
154
-
155
- /**
156
- * @name Struct.size
157
- *
158
- * @synopsis
159
- * Struct.size(x Array|Object|Set|Map) -> number
160
- *
161
- * @catchphrase
162
- * Count values
163
- */
164
- Struct.size = x => {
165
- if (isObject(x)) return objectKeysCount(x)
166
- return 'size' in x ? x.size : x.length
167
- }
168
-
169
- /*
170
- Struct.size.objectKeys = x => {
171
- if (isObject(x)) return Object.keys(x).length
172
- return 'size' in x ? x.size : x.length
173
- }
174
- */
175
-
176
- /**
177
- * @synopsis
178
- * copySet(x Set) -> y Set
179
- */
180
- const copySet = x => {
181
- const y = new Set()
182
- for (const item of x) y.add(item)
183
- return y
184
- }
185
-
186
-
187
- /**
188
- * @synopsis
189
- * copyMap(x Map) -> y Map
190
- */
191
- const copyMap = x => {
192
- const y = new Map()
193
- for (const entry of x) y.set(...entry)
194
- return y
195
- }
196
-
197
- /**
198
- * @name Struct.copy
199
- *
200
- * @synopsis
201
- * Struct.copy(x Array) -> copied Array
202
- *
203
- * Struct.copy(x Object) -> copied Object
204
- *
205
- * Struct.copy(x Set) -> copied Set
206
- *
207
- * Struct.copy(x Map) -> copied Map
208
- *
209
- * @catchphrase
210
- * Shallow copy a struct
211
- */
212
- Struct.copy = x => {
213
- if (isArray(x)) return x.slice()
214
- if (isObject(x)) return { ...x }
215
- return isSet(x) ? copySet(x) : copyMap(x)
216
- }
217
-
218
- const { entries: structEntries, set: structSet } = Struct
219
-
220
- /**
221
- * @name Struct.copyDeep
222
- *
223
- * @synopsis
224
- * Struct.copyDeep(x Array) -> deeplyCopied Array
225
- *
226
- * Struct.copyDeep(x Object) -> deeplyCopied Object
227
- *
228
- * Struct.copyDeep(x Set) -> deeplyCopied Set
229
- *
230
- * Struct.copyDeep(x Map) -> deeplyCopied Map
231
- *
232
- * @catchphrase
233
- * Deep copy a struct
234
- */
235
- const structCopyDeep = x => {
236
- const y = new x.constructor()
237
- for (const [index, value] of structEntries(x)) {
238
- structSet(
239
- y,
240
- isStruct(value) ? structCopyDeep(value) : value,
241
- index,
242
- )
243
- }
244
- return y
245
- }
246
-
247
- Struct.copyDeep = structCopyDeep
248
-
249
- module.exports = Struct
@@ -1,237 +0,0 @@
1
- const assert = require('assert')
2
- const Struct = require('./Struct')
3
-
4
- describe('Struct', () => {
5
- describe('new Struct(x Array|Object|Set|Map) -> Struct', () => {
6
- it('x Array; Struct', async () => {
7
- assert.equal(new Struct([1, 2, 3]).constructor, Struct)
8
- })
9
- it('x Object; Struct', async () => {
10
- assert.equal(new Struct({ a: 1, b: 2, c: 3 }).constructor, Struct)
11
- })
12
- it('x Set; Struct', async () => {
13
- assert.equal(new Struct(new Set([1, 2, 3])).constructor, Struct)
14
- })
15
- it('x Map; Struct', async () => {
16
- assert.equal(new Struct(new Map([['a', 1], ['b', 2], ['c', 3]])).constructor, Struct)
17
- })
18
- it('x string; TypeError', async () => {
19
- assert.throws(
20
- () => new Struct('hey'),
21
- new TypeError('cannot convert hey to Struct')
22
- )
23
- })
24
- it('x null; TypeError', async () => {
25
- assert.throws(
26
- () => new Struct(null),
27
- new TypeError('cannot convert null to Struct')
28
- )
29
- })
30
- it('x undefined; TypeError', async () => {
31
- assert.throws(
32
- () => new Struct(undefined),
33
- new TypeError('cannot convert undefined to Struct')
34
- )
35
- })
36
- })
37
-
38
- describe('Struct.isStruct(x any) -> boolean', () => {
39
- it('x Array; true', async () => {
40
- assert.equal(Struct.isStruct([]), true)
41
- })
42
- it('x Object; true', async () => {
43
- assert.equal(Struct.isStruct({}), true)
44
- })
45
- it('x Set; true', async () => {
46
- assert.equal(Struct.isStruct(new Set()), true)
47
- })
48
- it('x Map; true', async () => {
49
- assert.equal(Struct.isStruct(new Map()), true)
50
- })
51
- it('x ArrayBuffer; false', async () => {
52
- assert.equal(Struct.isStruct(new ArrayBuffer()), false)
53
- })
54
- it('x Number; false', async () => {
55
- assert.equal(Struct.isStruct(1), false)
56
- })
57
- it('x String; false', async () => {
58
- assert.equal(Struct.isStruct('hey'), false)
59
- })
60
- })
61
-
62
- const nativeObjectToString = Object.prototype.toString
63
-
64
- const objectToString = x => nativeObjectToString.call(x)
65
-
66
- it('<T any>Struct.entries(x Array<T>) -> Iterator<[index number, T]>', async () => {
67
- assert.equal(objectToString(Struct.entries([1, 2, 3])), '[object Array Iterator]')
68
- assert.deepEqual([...Struct.entries([1, 2, 3])], [[0, 1], [1, 2], [2, 3]])
69
- })
70
-
71
- it('<T any>Struct.entries(x Object<T>) -> Iterator<[key string, T]>', async () => {
72
- assert.equal(objectToString(Struct.entries({ a: 1, b: 2, c: 3 })), '[object Generator]')
73
- assert.deepEqual([...Struct.entries({ a: 1, b: 2, c: 3 })], [['a', 1], ['b', 2], ['c', 3]])
74
- })
75
-
76
- it('<T any>Struct.entries(x Set<T>) -> Iterator<[T, T]>', async () => {
77
- assert.equal(objectToString(Struct.entries(new Set([1, 2, 3]))), '[object Set Iterator]')
78
- assert.deepEqual([...Struct.entries(new Set([1, 2, 3]))], [[1, 1], [2, 2], [3, 3]])
79
- })
80
-
81
- it('<A any, B any>Struct.entries(x Map<A, B>) -> Iterator<[A, B]>', async () => {
82
- assert.equal(objectToString(Struct.entries(new Map([[1, 'a'], [2, 'b'], [3, 'c']]))), '[object Map Iterator]')
83
- assert.deepEqual([...Struct.entries(new Map([[1, 'a'], [2, 'b'], [3, 'c']]))], [[1, 'a'], [2, 'b'], [3, 'c']])
84
- })
85
-
86
- describe('<T any>Struct.values(x Array<T>|Object<T>|Set<T>|Map<any, T>) -> Iterator<T>', () => {
87
- it('x Array<T>; Iterator<T>', async () => {
88
- assert.equal(objectToString(Struct.values([1, 2, 3])), '[object Array Iterator]')
89
- assert.deepEqual([...Struct.values([1, 2, 3])], [1, 2, 3])
90
- })
91
- it('x Object<T>; Iterator<T>', async () => {
92
- assert.equal(objectToString(Struct.values({ a: 1, b: 2, c: 3 })), '[object Generator]')
93
- assert.deepEqual([...Struct.values({ a: 1, b: 2, c: 3 })], [1, 2, 3])
94
- })
95
- it('x Set<T>; Iterator<T>', async () => {
96
- assert.equal(objectToString(Struct.values(new Set([1, 2, 3]))), '[object Set Iterator]')
97
- assert.deepEqual([...Struct.values(new Set([1, 2, 3]))], [1, 2, 3])
98
- })
99
- it('x Map<T>; Iterator<T>', async () => {
100
- assert.equal(objectToString(Struct.values(new Map([[1, 'a'], [2, 'b'], [3, 'c']]))), '[object Map Iterator]')
101
- assert.deepEqual([...Struct.values(new Map([[1, 'a'], [2, 'b'], [3, 'c']]))], ['a', 'b', 'c'])
102
- })
103
- })
104
-
105
- it('<T any>Struct.get(x Array<T>, index number) -> T|undefined', async () => {
106
- assert.equal(Struct.get([1, 2, 3], 0), 1)
107
- assert.strictEqual(Struct.get([1, 2, 3], 4), undefined)
108
- })
109
-
110
- it('<T any>Struct.get(x Object<T>, index string) -> T|undefined', async () => {
111
- assert.equal(Struct.get({ a: 1, b: 2, c: 3 }, 'a'), 1)
112
- assert.strictEqual(Struct.get({ a: 1, b: 2, c: 3 }, 'e'), undefined)
113
- })
114
-
115
- it('<T any>Struct.get(x Set<T>, index T) -> T|undefined', async () => {
116
- assert.equal(Struct.get(new Set([1, 2, 3]), 1), 1)
117
- assert.strictEqual(Struct.get(new Set([1, 2, 3]), 5), undefined)
118
- })
119
-
120
- it('<A any, B any>Struct.get(x Map<A, B>, index A) -> B|undefined', async () => {
121
- const m = new Map([[1, 'a'], [2, 'b'], [3, 'c']])
122
- assert.equal(Struct.get(m, 1), 'a')
123
- assert.strictEqual(Struct.get(m, 5), undefined)
124
- })
125
-
126
- it('Struct.set(x Array, value any, index number) -> mutated Array', async () => {
127
- const arr = [1, 2]
128
- assert.deepEqual(Struct.set(arr, 3, 2), [1, 2, 3])
129
- })
130
-
131
- it('Struct.set(x Object, value any, index string) -> mutated Object', async () => {
132
- const obj = { a: 1, b: 2 }
133
- assert.deepEqual(Struct.set(obj, 3, 'c'), { a: 1, b: 2, c: 3 })
134
- })
135
-
136
- it('Struct.set(x Set, value any) -> mutated Set', async () => {
137
- const set = new Set([1, 2])
138
- assert.deepEqual(Struct.set(set, 3), new Set([1, 2, 3]))
139
- })
140
-
141
- it('Struct.set(x Map, value any, index any) -> mutated Map', async () => {
142
- const map = new Map([['a', 1], ['b', 2]])
143
- assert.deepEqual(Struct.set(map, 3, 'c'), new Map([['a', 1], ['b', 2], ['c', 3]]))
144
- })
145
-
146
- describe('Struct.size(x Array|Object|Set|Map) -> y number', () => {
147
- it('x [1, 2, 3]; y 3', async () => {
148
- assert.strictEqual(Struct.size([1, 2, 3]), 3)
149
- })
150
- it('x []; y 0', async () => {
151
- assert.strictEqual(Struct.size([]), 0)
152
- })
153
- it('x { a: 1, b: 2, c: 3 }; y 3', async () => {
154
- assert.strictEqual(Struct.size({ a: 1, b: 2, c: 3 }), 3)
155
- })
156
- it('x {}; y 0', async () => {
157
- assert.strictEqual(Struct.size({}), 0)
158
- })
159
- it('x Set<[1, 2, 3]>; y 3', async () => {
160
- assert.strictEqual(Struct.size(new Set([1, 2, 3])), 3)
161
- })
162
- it('x Set<[]>; y 0', async () => {
163
- assert.strictEqual(Struct.size(new Set()), 0)
164
- })
165
- it('x Map<[[\'a\', 1], [\'b\', 2], [\'c\', 3]]>; y 3', async () => {
166
- assert.strictEqual(Struct.size(new Map([['a', 1], ['b', 2], ['c', 3]])), 3)
167
- })
168
- it('x Map<[]>; y 0', async () => {
169
- assert.strictEqual(Struct.size(new Map()), 0)
170
- })
171
- })
172
-
173
- it('Struct.copy(x Array) -> copied Array', async () => {
174
- const arr = [1, 2, 3]
175
- const copied = Struct.copy(arr)
176
- assert(copied !== arr)
177
- assert.deepEqual(arr, copied)
178
- })
179
-
180
- it('Struct.copy(x Object) -> copied Object', async () => {
181
- const obj = { a: 1, b: 2, c: 3 }
182
- const copied = Struct.copy(obj)
183
- assert(copied !== obj)
184
- assert.deepEqual(obj, copied)
185
- })
186
-
187
- it('Struct.copy(x Set) -> copied Set', async () => {
188
- const set = new Set([1, 2, 3])
189
- const copied = Struct.copy(set)
190
- assert(copied !== set)
191
- assert.deepEqual(set, copied)
192
- })
193
-
194
- it('Struct.copy(x Map) -> copied Map', async () => {
195
- const map = new Map([['a', 1], ['b', 2], ['c', 3]])
196
- const copied = Struct.copy(map)
197
- assert(copied !== map)
198
- assert.deepEqual(map, copied)
199
- })
200
-
201
- it('Struct.copyDeep(x Array) -> deeplyCopied Array', async () => {
202
- const arr = [1, [2], [[3], 'hey', new Uint8Array([1, 2, 3])]]
203
- const copied = Struct.copyDeep(arr)
204
- assert(copied !== arr)
205
- assert.deepEqual(arr, copied)
206
- })
207
-
208
- it('Struct.copyDeep(x Object) -> deeplyCopied Object', async () => {
209
- const obj = { a: 1, b: [2], c: [[3]], d: new Set([NaN, 'hey', { a: null }]) }
210
- const copied = Struct.copy(obj)
211
- assert(copied !== obj)
212
- assert.deepEqual(obj, copied)
213
- })
214
-
215
- it('Struct.copyDeep(x Set) -> deeplyCopied Set', async () => {
216
- const set = new Set([1, [2], [[[[3]]]], {}, [], undefined])
217
- const copied = Struct.copy(set)
218
- assert(copied !== set)
219
- assert.deepEqual(set, copied)
220
- })
221
-
222
- it('Struct.copyDeep(x Map) -> deeplyCopied Map', async () => {
223
- const map = new Map([
224
- ['a', 1], ['b', 2], ['c', 3],
225
- [Symbol.for('ayo'), {}], ['hey', {
226
- a: [1, [2], [[3]]],
227
- b: new Set([undefined, null, {}, [], new RegExp()]),
228
- c: { d: { e: new BigInt64Array([1n, 2n, 3n]) } },
229
- }],
230
- ])
231
- const copied = Struct.copy(map)
232
- assert(copied !== map)
233
- assert.deepEqual(map, copied)
234
- assert.strictEqual(map.get('hey').c.d.e, copied.get('hey').c.d.e)
235
- // anything not a struct is a reference. This is good for performance but could be dangerous
236
- })
237
- })
package/rubico.js DELETED
@@ -1,66 +0,0 @@
1
- const pipe = require('./pipe')
2
- const compose = require('./compose')
3
- const tap = require('./tap')
4
- const all = require('./all')
5
- const assign = require('./assign')
6
- const tryCatch = require('./tryCatch')
7
- const switchCase = require('./switchCase')
8
- const map = require('./map')
9
- const filter = require('./filter')
10
- const reduce = require('./reduce')
11
- const transform = require('./transform')
12
- const flatMap = require('./flatMap')
13
- const forEach = require('./forEach')
14
- const some = require('./some')
15
- const every = require('./every')
16
- const and = require('./and')
17
- const or = require('./or')
18
- const not = require('./not')
19
- const eq = require('./eq')
20
- const gt = require('./gt')
21
- const lt = require('./lt')
22
- const gte = require('./gte')
23
- const lte = require('./lte')
24
- const get = require('./get')
25
- const set = require('./set')
26
- const pick = require('./pick')
27
- const omit = require('./omit')
28
- const thunkify = require('./thunkify')
29
- const always = require('./always')
30
- const curry = require('./curry')
31
- const __ = require('./__')
32
-
33
- /**
34
- * design principles
35
- *
36
- * rubico is a module, not a grab bag
37
- * functional code should not care about async
38
- * exported methods are time and space optimal
39
- * memory used by exported methods is properly garbage collected
40
- * no special types; use built-in types
41
- * avoid variadic functions; use lists
42
- * avoid anonymous function creation; use names and factory functions
43
- * avoid creating functions inside functions
44
- */
45
-
46
- const rubico = {
47
- pipe, compose,
48
-
49
- tap, forEach,
50
-
51
- switchCase,
52
-
53
- tryCatch,
54
-
55
- all, assign, get, set, pick, omit,
56
-
57
- map, filter, flatMap, reduce, transform,
58
-
59
- and, or, not, some, every,
60
-
61
- eq, gt, lt, gte, lte,
62
-
63
- thunkify, always, curry, __,
64
- }
65
-
66
- module.exports = rubico