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/Mux.test.js DELETED
@@ -1,512 +0,0 @@
1
- const assert = require('assert')
2
- const Mux = require('./Mux')
3
-
4
- const asyncIteratorToArray = async x => {
5
- const y = []
6
- for await (const xi of x) y.push(xi)
7
- return y
8
- }
9
-
10
- describe('Mux', () => {
11
- describe('new Mux(x Array|Set) -> Mux', () => {
12
- it('x [1, 2, 3]', async () => {
13
- assert.deepEqual(new Mux([1, 2, 3]).value, [1, 2, 3])
14
- assert.deepEqual(new Mux([1, 2, 3]).constructor.name, 'Mux')
15
- })
16
- it('x Set<[1, 2, 3]>', async () => {
17
- assert.deepEqual(new Mux(new Set([1, 2, 3])).value, new Set([1, 2, 3]))
18
- assert.deepEqual(new Mux(new Set([1, 2, 3])).constructor.name, 'Mux')
19
- })
20
- it('x 1; TypeError', async () => {
21
- assert.throws(
22
- () => new Mux(1),
23
- new TypeError('1 is not a Sequence'),
24
- )
25
- })
26
- it('x null; TypeError', async () => {
27
- assert.throws(
28
- () => new Mux(null),
29
- new TypeError('null is not a Sequence'),
30
- )
31
- })
32
- it('x undefined; TypeError', async () => {
33
- assert.throws(
34
- () => new Mux(undefined),
35
- new TypeError('undefined is not a Sequence'),
36
- )
37
- })
38
- })
39
-
40
- describe('Mux.isSequence(x any) -> boolean', () => {
41
- it('x [1, 2, 3]; true', async () => {
42
- assert.strictEqual(Mux.isSequence([1, 2, 3]), true)
43
- })
44
- it('x Set<[1, 2, 3]>; true', async () => {
45
- assert.strictEqual(Mux.isSequence(new Set([1, 2, 3])), true)
46
- })
47
- it('x Generator; true', async () => {
48
- assert.strictEqual(Mux.isSequence((function*(){})()), true)
49
- })
50
- it('x GeneratorFunction; true', async () => {
51
- assert.strictEqual(Mux.isSequence(function*(){}), true)
52
- })
53
- it('x AsyncGenerator; true', async () => {
54
- assert.strictEqual(Mux.isSequence((async function*(){})()), true)
55
- })
56
- it('x AsyncGeneratorFunction; true', async () => {
57
- assert.strictEqual(Mux.isSequence(async function*(){}), true)
58
- })
59
- it('x 1; false', async () => {
60
- assert.strictEqual(Mux.isSequence(1), false)
61
- })
62
- it('x null; false', async () => {
63
- assert.strictEqual(Mux.isSequence(null), false)
64
- })
65
- it('x undefined; false', async () => {
66
- assert.strictEqual(Mux.isSequence(undefined), false)
67
- })
68
- })
69
-
70
- describe('<T any>Mux.zip(x Sequence<Sequence<T>|T>T) -> y Iterator<Array<T|undefined>>', () => {
71
- it('Mux.zip(1)', async () => {
72
- const iter = Mux.zip(1)
73
- const arr = [...iter]
74
- assert.deepEqual(arr, [[1]])
75
- })
76
- it('Mux.zip(<T any>x Array<Array<T>>) -> y Iterator<Array<T>>', async () => {
77
- const iter = Mux.zip([
78
- [1, 2, 3],
79
- ['a', 'b', 'c'],
80
- ])
81
- const transposed = [...iter]
82
- assert.deepEqual(transposed, [
83
- [1, 'a'],
84
- [2, 'b'],
85
- [3, 'c'],
86
- ])
87
- })
88
- it('Mux.zip(<T any>x Array<Iterator<T>>) -> y Iterator<Array<T>>', async () => {
89
- const generate123 = function*() { yield 1; yield 2; yield 3 }
90
- const generateABC = function*() { yield 'a'; yield 'b'; yield 'c' }
91
- const iter = Mux.zip([
92
- generate123(),
93
- generateABC(),
94
- ])
95
- const transposed = [...iter]
96
- assert.deepEqual(transposed, [
97
- [1, 'a'],
98
- [2, 'b'],
99
- [3, 'c'],
100
- ])
101
- })
102
- it('Mux.zip(<T any>x GeneratorFunction<Array<T>|T>) -> y Iterator<Array<T>>', async () => {
103
- {
104
- const iter = Mux.zip(function*() { yield [1]; yield [2]; yield [3]; yield [4]; yield [5]; yield [6] })
105
- const transposed = [...iter]
106
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
107
- }
108
- {
109
- const iter = Mux.zip(function*() { yield [1]; yield 2; yield [3]; yield 4; yield [5]; yield 6 })
110
- const transposed = [...iter]
111
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
112
- }
113
- {
114
- const iter = Mux.zip(function*() { yield 1; yield 2; yield 3; yield 4; yield 5; yield 6 })
115
- const transposed = [...iter]
116
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
117
- }
118
- })
119
- it('WARNING: potentially unexpected behavior - Mux.zip(<T any>x Iterator<Array<T>|T>) -> y Iterator<[]>', async () => {
120
- {
121
- const iter = Mux.zip((function*() { yield [1]; yield [2]; yield [3]; yield [4]; yield [5]; yield [6] })())
122
- const transposed = [...iter]
123
- assert.deepEqual(transposed, [])
124
- }
125
- {
126
- const iter = Mux.zip((function*() { yield [1]; yield 2; yield [3]; yield 4; yield [5]; yield 6 })())
127
- const transposed = [...iter]
128
- assert.deepEqual(transposed, [])
129
- }
130
- {
131
- const iter = Mux.zip((function*() { yield 1; yield 2; yield 3; yield 4; yield 5; yield 6 })())
132
- const transposed = [...iter]
133
- assert.deepEqual(transposed, [])
134
- }
135
- })
136
- it('Mux.zip(<T any>x AsyncGeneratorFunction<Array<T>|T>) -> y AsyncIterator<Array<T>>', async () => {
137
- const generate123 = async function*() { yield 1; yield 2; yield 3 }
138
- const generateABC = async function*() { yield 'a'; yield 'b'; yield 'c' }
139
- {
140
- const iter = Mux.zip(async function*() { yield [1]; yield [2]; yield [3]; yield [4]; yield [5]; yield [6] })
141
- const transposed = await asyncIteratorToArray(iter)
142
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
143
- }
144
- {
145
- const iter = Mux.zip(async function*() { yield [1]; yield 2; yield [3]; yield 4; yield [5]; yield 6 })
146
- const transposed = await asyncIteratorToArray(iter)
147
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
148
- }
149
- {
150
- const iter = Mux.zip(async function*() { yield 1; yield 2; yield 3; yield 4; yield 5; yield 6 })
151
- const transposed = await asyncIteratorToArray(iter)
152
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
153
- }
154
- })
155
- it('Mux.zip(<T any>x AsyncIterator<Array<T>|T>) -> y AsyncIterator<Array<T>>', async () => {
156
- {
157
- const iter = Mux.zip((async function*() { yield [1]; yield [2]; yield [3]; yield [4]; yield [5]; yield [6] })())
158
- const transposed = await asyncIteratorToArray(iter)
159
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
160
- }
161
- {
162
- const iter = Mux.zip(async function*() { yield [1]; yield 2; yield [3]; yield 4; yield [5]; yield 6 })
163
- const transposed = await asyncIteratorToArray(iter)
164
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
165
- }
166
- {
167
- const iter = Mux.zip(async function*() { yield 1; yield 2; yield 3; yield 4; yield 5; yield 6 })
168
- const transposed = await asyncIteratorToArray(iter)
169
- assert.deepEqual(transposed, [[1, 2, 3, 4, 5, 6]])
170
- }
171
- })
172
- it('Mux.zip(<T any>x Array<AsyncGenerator<T>|T>) -> y AsyncIterator<Array<T>>', async () => {
173
- const generate123 = async function*() { yield 1; yield 2; yield 3 }
174
- const generateABC = async function*() { yield 'a'; yield 'b'; yield 'c' }
175
- {
176
- const iter = Mux.zip([
177
- generate123,
178
- generateABC,
179
- ])
180
- const transposed = await asyncIteratorToArray(iter)
181
- assert.deepEqual(transposed, [
182
- [1, 'a'],
183
- [2, 'b'],
184
- [3, 'c'],
185
- ])
186
- }
187
- })
188
- it('Mux.zip(<T any>x Array<AsyncIterator<T>|T>) -> y AsyncIterator<Array<T>>', async () => {
189
- const generate123 = async function*() { yield 1; yield 2; yield 3 }
190
- const generateABC = async function*() { yield 'a'; yield 'b'; yield 'c' }
191
- {
192
- const iter = Mux.zip([
193
- generate123(),
194
- generateABC(),
195
- ])
196
- const transposed = await asyncIteratorToArray(iter)
197
- assert.deepEqual(transposed, [
198
- [1, 'a'],
199
- [2, 'b'],
200
- [3, 'c'],
201
- ])
202
- }
203
- })
204
- })
205
-
206
- describe('Mux.concat', () => {
207
- describe('<T any>Mux.concat(x SyncSequence<SyncSequence<T>|T>|T) -> Iterator<T>', () => {
208
- it('<T any>x Array<Array<T>|T>', async () => {
209
- const iter = Mux.concat([[1, 2, 3], [1, 2, 3], [1, 2, 3], 5, 6])
210
- const flattened = [...iter]
211
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6])
212
- })
213
- it('<T any>x Array<Iterator<T>|T>', async () => {
214
- const generate123 = function*() { yield 1; yield 2; yield 3 }
215
- const iter = Mux.concat([generate123(), generate123(), generate123(), 5, 6])
216
- const flattened = [...iter]
217
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6])
218
- })
219
- it('WARNING: potentially unexpected behavior - x Iterator<Array>', async () => {
220
- const generate123 = function*() { yield 1; yield 2; yield 3 }
221
- const iter = Mux.concat(generate123())
222
- const flattened = [...iter]
223
- assert.deepEqual(flattened, [])
224
- })
225
- it('x GeneratorFunction<Array>', async () => {
226
- const generateArrays123 = function*() { yield [1]; yield [2]; yield [3] }
227
- const iter = Mux.concat(generateArrays123)
228
- const flattened = [...iter]
229
- assert.deepEqual(flattened, [1, 2, 3])
230
- })
231
- it('<T any>x GeneratorFunction<T>', async () => {
232
- const generate123 = function*() { yield 1; yield 2; yield 3 }
233
- const generate123123123 = function*() { yield* generate123(); yield* generate123(); yield* generate123() }
234
- const iter = Mux.concat(generate123123123)
235
- const flattened = [...iter]
236
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
237
- })
238
- it('x GeneratorFunction<GeneratorFunction>', async () => {
239
- const generate123 = function*() { yield 1; yield 2; yield 3 }
240
- const generateGeneratorFuncs = function*() { yield generate123; yield generate123; yield generate123 }
241
- const iter = Mux.concat(generateGeneratorFuncs)
242
- const flattened = [...iter]
243
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
244
- })
245
- it('x Array<GeneratorFunction>', async () => {
246
- const generate123 = function*() { yield 1; yield 2; yield 3 }
247
- const iter = Mux.concat([generate123, generate123, generate123])
248
- const flattened = [...iter]
249
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
250
- })
251
- })
252
-
253
- describe('<T any>Mux.concat(x Sequence<Sequence<T>|T>|T) -> AsyncIterator<T>', () => {
254
- it('<T any>x AsyncGeneratorFunction<Array<T>|T>', async () => {
255
- const asyncGenerate123456WithArrays = async function*() { yield [1]; yield 2; yield [3]; yield 4; yield [5]; yield 6 }
256
- const iter = Mux.concat(asyncGenerate123456WithArrays)
257
- const flattened = await asyncIteratorToArray(iter)
258
- assert.deepEqual(flattened, [1, 2, 3, 4, 5, 6])
259
- })
260
- it('x AsyncGeneratorFunction<Array>', async () => {
261
- const asyncGenerate123Array = async function*() { yield [1]; yield [2]; yield [3] }
262
- const iter = Mux.concat(asyncGenerate123Array)
263
- const flattened = await asyncIteratorToArray(iter)
264
- assert.deepEqual(flattened, [1, 2, 3])
265
- })
266
- it('x Array<AsyncGeneratorFunction>', async () => {
267
- const asyncGenerate123 = async function*() { yield 1; yield 2; yield 3 }
268
- const iter = Mux.concat([asyncGenerate123, asyncGenerate123, asyncGenerate123])
269
- const flattened = await asyncIteratorToArray(iter)
270
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
271
- })
272
- it('x AsyncGeneratorFunction<AsyncGeneratorFunction>', async () => {
273
- const asyncGenerate123 = async function*() { yield 1; yield 2; yield 3 }
274
- const asyncGenerateFuncs = async function*() { yield asyncGenerate123; yield asyncGenerate123; yield asyncGenerate123 }
275
- const iter = Mux.concat(asyncGenerateFuncs)
276
- const flattened = await asyncIteratorToArray(iter)
277
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
278
- })
279
- it('x AsyncIterator<Array>', async () => {
280
- const asyncGenerateFuncs = async function*() { yield [1, 2, 3]; yield [1, 2, 3]; yield [1, 2, 3] }
281
- const iter = Mux.concat(asyncGenerateFuncs())
282
- const flattened = await asyncIteratorToArray(iter)
283
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
284
- })
285
- it('x AsyncIterator<AsyncIterator>', async () => {
286
- const asyncGenerate123 = async function*() { yield 1; yield 2; yield 3 }
287
- const asyncGenerateFuncs = async function*() { yield asyncGenerate123(); yield asyncGenerate123(); yield asyncGenerate123() }
288
- const iter = Mux.concat(asyncGenerateFuncs())
289
- const flattened = await asyncIteratorToArray(iter)
290
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
291
- })
292
- })
293
- })
294
-
295
- describe('Mux.switch', () => {
296
- describe('<T any>Mux.switch(x SyncSequence<SyncSequence<T>|T>|T) -> Iterator<T>', () => {
297
- it('<T any>x Array<Array<T>|T>', async () => {
298
- const iter = Mux.switch([[1, 2, 3], [1, 2, 3], [1, 2, 3], 5, 6])
299
- const flattened = [...iter]
300
- assert.deepEqual(flattened, [1, 1, 1, 5, 6, 2, 2, 2, 3, 3, 3])
301
- })
302
- it('<T any>x Array<Iterator<T>|T>', async () => {
303
- const generate123 = function*() { yield 1; yield 2; yield 3 }
304
- const iter = Mux.switch([generate123(), generate123(), generate123(), 5, 6])
305
- const flattened = [...iter]
306
- assert.deepEqual(flattened, [1, 1, 1, 5, 6, 2, 2, 2, 3, 3, 3])
307
- })
308
- it('WARNING: potentially unexpected behavior - x Iterator<Array>', async () => {
309
- const generate123 = function*() { yield 1; yield 2; yield 3 }
310
- const iter = Mux.switch(generate123())
311
- const flattened = [...iter]
312
- assert.deepEqual(flattened, [])
313
- })
314
- it('x GeneratorFunction<Array>', async () => {
315
- const generateArrays123 = function*() { yield [1]; yield [2]; yield [3] }
316
- const iter = Mux.switch(generateArrays123)
317
- const flattened = [...iter]
318
- assert.deepEqual(flattened, [1, 2, 3])
319
- })
320
- it('<T any>x GeneratorFunction<T> - switch must abide by the top level Sequence\'s order', async () => {
321
- const generate123 = function*() { yield 1; yield 2; yield 3 }
322
- const generate123123123 = function*() { yield* generate123(); yield* generate123(); yield* generate123() }
323
- const iter = Mux.switch(generate123123123)
324
- const flattened = [...iter]
325
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
326
- })
327
- it('x GeneratorFunction<GeneratorFunction>', async () => {
328
- const generate123 = function*() { yield 1; yield 2; yield 3 }
329
- const generateGeneratorFuncs = function*() { yield generate123; yield generate123; yield generate123 }
330
- const iter = Mux.switch(generateGeneratorFuncs)
331
- const flattened = [...iter]
332
- assert.deepEqual(flattened, [1, 1, 1, 2, 2, 2, 3, 3, 3])
333
- })
334
- it('x Array<GeneratorFunction>', async () => {
335
- const generate123 = function*() { yield 1; yield 2; yield 3 }
336
- const iter = Mux.switch([generate123, generate123, generate123])
337
- const flattened = [...iter]
338
- assert.deepEqual(flattened, [1, 1, 1, 2, 2, 2, 3, 3, 3])
339
- })
340
- })
341
-
342
- describe('<T any>Mux.switch(x Sequence<Sequence<T>|T>|T) -> AsyncIterator<T>', () => {
343
- it('<T any>x AsyncGeneratorFunction<Array<T>|T>', async () => {
344
- const asyncGenerate123456WithArrays = async function*() { yield [1, 10]; yield 2; yield [3, 30]; yield 4; yield [5, 50]; yield 6 }
345
- const iter = Mux.switch(asyncGenerate123456WithArrays)
346
- const flattened = await asyncIteratorToArray(iter)
347
- assert.deepEqual(flattened, [1, 2, 3, 4, 5, 6, 10, 30, 50])
348
- })
349
- it('x AsyncGeneratorFunction<Array>', async () => {
350
- const asyncGenerate123Array = async function*() { yield [1, 1]; yield [2, 2]; yield [3, 3] }
351
- const iter = Mux.switch(asyncGenerate123Array)
352
- const flattened = await asyncIteratorToArray(iter)
353
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3])
354
- })
355
- it('x Array<AsyncGeneratorFunction>', async () => {
356
- const asyncGenerate123 = async function*() { yield 1; yield 2; yield 3 }
357
- const iter = Mux.switch([asyncGenerate123, asyncGenerate123, asyncGenerate123])
358
- const flattened = await asyncIteratorToArray(iter)
359
- assert.deepEqual(flattened, [1, 1, 1, 2, 2, 2, 3, 3, 3])
360
- })
361
- it('x AsyncGeneratorFunction<AsyncGeneratorFunction>', async () => {
362
- const asyncGenerate123 = async function*() { yield 1; yield 2; yield 3 }
363
- const asyncGenerateFuncs = async function*() { yield asyncGenerate123; yield asyncGenerate123; yield asyncGenerate123 }
364
- const iter = Mux.switch(asyncGenerateFuncs)
365
- const flattened = await asyncIteratorToArray(iter)
366
- assert.deepEqual(flattened, [1, 1, 1, 2, 2, 2, 3, 3, 3])
367
- })
368
- it('x AsyncIterator<Array>', async () => {
369
- const asyncGenerateFuncs = async function*() { yield [1, 2, 3]; yield [1, 2, 3]; yield [1, 2, 3] }
370
- const iter = Mux.switch(asyncGenerateFuncs())
371
- const flattened = await asyncIteratorToArray(iter)
372
- assert.deepEqual(flattened, [1, 1, 1, 2, 2, 2, 3, 3, 3])
373
- })
374
- it('x AsyncIterator<AsyncIterator>', async () => {
375
- const asyncGenerate123 = async function*() { yield 1; yield 2; yield 3 }
376
- const asyncGenerateFuncs = async function*() { yield asyncGenerate123(); yield asyncGenerate123(); yield asyncGenerate123() }
377
- const iter = Mux.switch(asyncGenerateFuncs())
378
- const flattened = await asyncIteratorToArray(iter)
379
- assert.deepEqual(flattened, [1, 1, 1, 2, 2, 2, 3, 3, 3])
380
- })
381
- })
382
- })
383
-
384
- describe('Mux.race', () => {
385
- describe('<T any>Mux.race(x SyncSequence<SyncSequence<T>|T>|T) -> Iterator<T>', () => {
386
- it('<T any>x Array<Array<T>|T>', async () => {
387
- const iter = Mux.race([[1, 2, 3], [1, 2, 3], [1, 2, 3], 5, 6])
388
- const flattened = [...iter]
389
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6])
390
- })
391
- it('<T any>x Array<Iterator<T>|T>', async () => {
392
- const generate123 = function*() { yield 1; yield 2; yield 3 }
393
- const iter = Mux.race([generate123(), generate123(), generate123(), 5, 6])
394
- const flattened = [...iter]
395
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3, 5, 6])
396
- })
397
- it('WARNING: potentially unexpected behavior - x Iterator<Array>', async () => {
398
- const generate123 = function*() { yield 1; yield 2; yield 3 }
399
- const iter = Mux.race(generate123())
400
- const flattened = [...iter]
401
- assert.deepEqual(flattened, [])
402
- })
403
- it('x GeneratorFunction<Array>', async () => {
404
- const generateArrays123 = function*() { yield [1]; yield [2]; yield [3] }
405
- const iter = Mux.race(generateArrays123)
406
- const flattened = [...iter]
407
- assert.deepEqual(flattened, [1, 2, 3])
408
- })
409
- it('<T any>x GeneratorFunction<T>', async () => {
410
- const generate123 = function*() { yield 1; yield 2; yield 3 }
411
- const generate123123123 = function*() { yield* generate123(); yield* generate123(); yield* generate123() }
412
- const iter = Mux.race(generate123123123)
413
- const flattened = [...iter]
414
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
415
- })
416
- it('x GeneratorFunction<GeneratorFunction>', async () => {
417
- const generate123 = function*() { yield 1; yield 2; yield 3 }
418
- const generateGeneratorFuncs = function*() { yield generate123; yield generate123; yield generate123 }
419
- const iter = Mux.race(generateGeneratorFuncs)
420
- const flattened = [...iter]
421
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
422
- })
423
- it('x Array<GeneratorFunction>', async () => {
424
- const generate123 = function*() { yield 1; yield 2; yield 3 }
425
- const iter = Mux.race([generate123, generate123, generate123])
426
- const flattened = [...iter]
427
- assert.deepEqual(flattened, [1, 2, 3, 1, 2, 3, 1, 2, 3])
428
- })
429
- })
430
-
431
- const delay = ms => new Promise(resolve => { setTimeout(resolve, ms) })
432
-
433
- describe('<T any>Mux.race(x Sequence<Sequence<T>|T>|T) -> AsyncIterator<T>', () => {
434
- it('x Array<AsyncGeneratorFunction>', async () => {
435
- const f = async function*() { await delay(5); yield 10; yield 20 }
436
- const g = async function*() { yield 1; yield 2; yield 3; await delay(10); yield 30 }
437
- const iter = Mux.race([f, g])
438
- const muxedArr = await asyncIteratorToArray(iter)
439
- assert.deepEqual(muxedArr, [1, 2, 3, 10, 20, 30])
440
- })
441
- it('x AsyncGeneratorFunction<AsyncGeneratorFunction>', async () => {
442
- const f = async function*() { await delay(5); yield 10; yield 20 }
443
- const g = async function*() { yield 1; yield 2; yield 3; await delay(10); yield 30 }
444
- const iter = Mux.race(async function*() { yield f; yield g })
445
- const muxedArr = await asyncIteratorToArray(iter)
446
- assert.deepEqual(muxedArr, [1, 2, 3, 10, 20, 30])
447
- })
448
- it('x AsyncIterator<AsyncIterator>', async () => {
449
- const f = async function*() { await delay(5); yield 10; yield 20 }
450
- const g = async function*() { yield 1; yield 2; yield 3; await delay(10); yield 30 }
451
- const iter = Mux.race((async function*() { yield f(); yield g() })())
452
- const muxedArr = await asyncIteratorToArray(iter)
453
- assert.deepEqual(muxedArr, [1, 2, 3, 10, 20, 30])
454
- })
455
- it('x AsyncIterator<AsyncIterator> - regular yield*', async () => {
456
- const f = async function*() { await delay(5); yield 10; yield 20 }
457
- const g = async function*() { yield 1; yield 2; yield 3; await delay(10); yield 30 }
458
- const iter = Mux.race((async function*() { yield* f(); yield* g() })())
459
- const muxedArr = await asyncIteratorToArray(iter)
460
- assert.deepEqual(muxedArr, [10, 20, 1, 2, 3, 30])
461
- })
462
- })
463
- })
464
-
465
- describe('<T any>Mux.flatten(x (Array|Set)<Iterable<T>|T>) -> (Array|Set)<T>', () => {
466
- describe('<T any>Mux.flatten(x Array<Iterable<T>|T>) -> Array<T>', () => {
467
- it('x [[1], 2, [[3]]]; [1, 2, [3]]', async () => {
468
- const nested = [[1], 2, [[3]]]
469
- assert.deepEqual(Mux.flatten(nested), [1, 2, [3]])
470
- })
471
- it('x [1, 2, 3]; [1, 2, 3]', async () => {
472
- assert.deepEqual(Mux.flatten([1, 2, 3]), [1, 2, 3])
473
- })
474
- })
475
-
476
- describe('<T any>Mux.flatten(x Set<Iterable<T>|T>) -> Set<T>', () => {
477
- it('x new Set([[1], 2, [[3]]]); new Set([1, 2, [3]])', async () => {
478
- const nested = new Set([[1], 2, [[3]]])
479
- assert.deepEqual(Mux.flatten(nested), new Set([1, 2, [3]]))
480
- })
481
- it('x Set<[1, 2, 3]>; Set<[1, 2, 3]>', async () => {
482
- assert.deepEqual(Mux.flatten(new Set([1, 2, 3])), new Set([1, 2, 3]))
483
- })
484
- })
485
-
486
- it('x \'hey\'; \'hey\' - strings are Iterable, doesn\'t make too much sense to flatten them, this is here for correctness', async () => {
487
- const iter = Mux.flatten('hey')
488
- const s = [...iter].join('')
489
- assert.strictEqual(s, 'hey')
490
- })
491
-
492
- it('x 1; Iterator<1>', async () => {
493
- const iter = Mux.flatten(1)
494
- const flattened = [...iter]
495
- assert.deepEqual(flattened, [1])
496
- })
497
-
498
- it('x undefined; TypeError', async () => {
499
- assert.throws(
500
- () => Mux.flatten(undefined),
501
- { name: 'TypeError' },
502
- )
503
- })
504
-
505
- it('x null; TypeError', async () => {
506
- assert.throws(
507
- () => Mux.flatten(null),
508
- { name: 'TypeError' },
509
- )
510
- })
511
- })
512
- })
@@ -1,87 +0,0 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const PossiblePromise = require('./PossiblePromise')
3
-
4
- /**
5
- * @name PossiblePromise.then
6
- *
7
- * @benchmark
8
- * square(3): 1e+7: 13.162ms
9
- * square_PossiblePromiseThen(3): 1e+7: 15.374ms
10
- *
11
- * square_promiseThen: 1e+5: 27.686ms
12
- * square_PossiblePromiseThen(p5): 1e+5: 28.596ms
13
- */
14
-
15
- const square = x => x ** 2
16
-
17
- // timeInLoop('square(3)', 1e7, () => square(3))
18
-
19
- const square_PossiblePromiseThen = p => PossiblePromise.then(p, square)
20
-
21
- // timeInLoop('square_PossiblePromiseThen(3)', 1e7, () => square_PossiblePromiseThen(3))
22
-
23
- const p5 = Promise.resolve(5)
24
-
25
- const square_promiseThen = () => p5.then(square)
26
-
27
- // timeInLoop('square_promiseThen', 1e5, () => square_promiseThen(p5))
28
-
29
- // timeInLoop('square_PossiblePromiseThen(p5)', 1e5, () => square_PossiblePromiseThen(p5))
30
-
31
- /**
32
- * @name PossiblePromise.all
33
- *
34
- * @benchmark
35
- * promiseAll([resolvedPromise]): 1e+5: 150.068ms
36
- * possiblePromiseAll([resolvedPromise]): 1e+5: 154.41ms
37
- *
38
- * sum([1, 2, 3]): 1e+6: 11.096ms
39
- * possiblePromiseAll([1, 2, 3]).then([sum]): 1e+6: 17.291ms
40
- */
41
-
42
- const promiseAll = Promise.all.bind(Promise)
43
-
44
- const resolvedPromise = Promise.resolve()
45
-
46
- const possiblePromiseAll = PossiblePromise.all
47
-
48
- const sum = ([a, b, c]) => a + b + c
49
-
50
- // timeInLoop('promiseAll([resolvedPromise])', 1e5, () => promiseAll([resolvedPromise]))
51
-
52
- // timeInLoop('possiblePromiseAll([resolvedPromise])', 1e5, () => possiblePromiseAll([resolvedPromise]))
53
-
54
- // timeInLoop('sum([1, 2, 3])', 1e6, () => sum([1, 2, 3]))
55
-
56
- // timeInLoop('possiblePromiseAll([1, 2, 3]).then([sum])', 1e6, () => possiblePromiseAll([1, 2, 3]).then(sum))
57
-
58
- /**
59
- * @name PossiblePromise.args
60
- *
61
- * @benchmark
62
- * add(1, 2): 1e+6: 4.012ms
63
- * PossiblePromise.argsSome(add)(1, 2): 1e+6: 11.062ms
64
- * PossiblePromise.argsSomeApply(add)(1, 2): 1e+6: 11.33ms
65
- * PossiblePromise.argumentsLoop(add)(1, 2): 1e+6: 17.076ms
66
- * PossiblePromise.argsLoop(add)(1, 2): 1e+6: 47.844ms
67
- */
68
-
69
- const add = (a, b) => a + b
70
-
71
- // timeInLoop('add(1, 2)', 1e6, () => add(1, 2))
72
-
73
- // const possiblePromiseArgsSomeAdd = PossiblePromise.args(add)
74
-
75
- // timeInLoop('PossiblePromise.argsSome(add)(1, 2)', 1e6, () => possiblePromiseArgsSomeAdd(1, 2))
76
-
77
- // const possiblePromiseArgsSomeApplyAdd = PossiblePromise.argsSomeApply(add)
78
-
79
- // timeInLoop('PossiblePromise.argsSomeApply(add)(1, 2)', 1e6, () => possiblePromiseArgsSomeApplyAdd(1, 2))
80
-
81
- // const possiblePromiseArgumentsLoopAdd = PossiblePromise.argumentsLoop(add)
82
-
83
- // timeInLoop('PossiblePromise.argumentsLoop(add)(1, 2)', 1e6, () => possiblePromiseArgumentsLoopAdd(1, 2))
84
-
85
- // const possiblePromiseArgsLoopAdd = PossiblePromise.argsLoop(add)
86
-
87
- // timeInLoop('PossiblePromise.argsLoop(add)(1, 2)', 1e6, () => possiblePromiseArgsLoopAdd(1, 2))