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
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))