rubico 2.8.5 → 2.10.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 (382) hide show
  1. package/README.md +2 -1
  2. package/_internal/FlatMappingAsyncIterator.js +41 -30
  3. package/_internal/LinkedList.js +54 -0
  4. package/_internal/LinkedList.test.js +34 -0
  5. package/_internal/MappingAsyncIterator.js +65 -15
  6. package/_internal/SerialMappingAsyncIterator.js +79 -0
  7. package/_internal/curryArity.js +3 -3
  8. package/_internal/iteratorFind.js +0 -2
  9. package/_internal/iteratorForEachSeries.js +1 -1
  10. package/_internal/objectFlatten.js +4 -1
  11. package/all.js +33 -59
  12. package/and.js +1 -1
  13. package/assign.js +14 -16
  14. package/compose.js +12 -13
  15. package/curry.js +1 -1
  16. package/dist/Transducer.es.js +1 -1
  17. package/dist/Transducer.es.min.js +1 -1
  18. package/dist/Transducer.js +1 -1
  19. package/dist/Transducer.min.js +1 -1
  20. package/dist/Transducer.mjs +1 -1
  21. package/dist/__.es.js +1 -1
  22. package/dist/__.es.min.js +1 -1
  23. package/dist/__.js +1 -1
  24. package/dist/__.min.js +1 -1
  25. package/dist/__.mjs +1 -1
  26. package/dist/all.es.js +1 -1
  27. package/dist/all.es.min.js +1 -1
  28. package/dist/all.js +1 -1
  29. package/dist/all.min.js +1 -1
  30. package/dist/all.mjs +1 -1
  31. package/dist/always.es.js +1 -1
  32. package/dist/always.es.min.js +1 -1
  33. package/dist/always.js +1 -1
  34. package/dist/always.min.js +1 -1
  35. package/dist/always.mjs +1 -1
  36. package/dist/and.es.js +1 -1
  37. package/dist/and.es.min.js +1 -1
  38. package/dist/and.js +1 -1
  39. package/dist/and.min.js +1 -1
  40. package/dist/and.mjs +1 -1
  41. package/dist/assign.es.js +1 -1
  42. package/dist/assign.es.min.js +1 -1
  43. package/dist/assign.js +1 -1
  44. package/dist/assign.min.js +1 -1
  45. package/dist/assign.mjs +1 -1
  46. package/dist/compose.es.js +1 -1
  47. package/dist/compose.es.min.js +1 -1
  48. package/dist/compose.js +1 -1
  49. package/dist/compose.min.js +1 -1
  50. package/dist/compose.mjs +1 -1
  51. package/dist/curry.es.js +4 -4
  52. package/dist/curry.es.min.js +2 -2
  53. package/dist/curry.js +4 -4
  54. package/dist/curry.min.js +2 -2
  55. package/dist/curry.mjs +4 -4
  56. package/dist/eq.es.js +1 -1
  57. package/dist/eq.es.min.js +1 -1
  58. package/dist/eq.js +1 -1
  59. package/dist/eq.min.js +1 -1
  60. package/dist/eq.mjs +1 -1
  61. package/dist/every.es.js +1 -1
  62. package/dist/every.es.min.js +1 -1
  63. package/dist/every.js +1 -1
  64. package/dist/every.min.js +1 -1
  65. package/dist/every.mjs +1 -1
  66. package/dist/filter.es.js +4 -4
  67. package/dist/filter.es.min.js +2 -2
  68. package/dist/filter.js +4 -4
  69. package/dist/filter.min.js +2 -2
  70. package/dist/filter.mjs +4 -4
  71. package/dist/flatMap.es.js +44 -28
  72. package/dist/flatMap.es.min.js +2 -2
  73. package/dist/flatMap.js +44 -28
  74. package/dist/flatMap.min.js +2 -2
  75. package/dist/flatMap.mjs +44 -28
  76. package/dist/forEach.es.js +6 -6
  77. package/dist/forEach.es.min.js +2 -2
  78. package/dist/forEach.js +6 -6
  79. package/dist/forEach.min.js +2 -2
  80. package/dist/forEach.mjs +6 -6
  81. package/dist/get.es.js +27 -3
  82. package/dist/get.es.min.js +2 -2
  83. package/dist/get.js +27 -3
  84. package/dist/get.min.js +2 -2
  85. package/dist/get.mjs +27 -3
  86. package/dist/gt.es.js +1 -1
  87. package/dist/gt.es.min.js +1 -1
  88. package/dist/gt.js +1 -1
  89. package/dist/gt.min.js +1 -1
  90. package/dist/gt.mjs +1 -1
  91. package/dist/gte.es.js +1 -1
  92. package/dist/gte.es.min.js +1 -1
  93. package/dist/gte.js +1 -1
  94. package/dist/gte.min.js +1 -1
  95. package/dist/gte.mjs +1 -1
  96. package/dist/lt.es.js +1 -1
  97. package/dist/lt.es.min.js +1 -1
  98. package/dist/lt.js +1 -1
  99. package/dist/lt.min.js +1 -1
  100. package/dist/lt.mjs +1 -1
  101. package/dist/lte.es.js +1 -1
  102. package/dist/lte.es.min.js +1 -1
  103. package/dist/lte.js +1 -1
  104. package/dist/lte.min.js +1 -1
  105. package/dist/lte.mjs +1 -1
  106. package/dist/map.es.js +190 -42
  107. package/dist/map.es.min.js +2 -2
  108. package/dist/map.js +190 -42
  109. package/dist/map.min.js +2 -2
  110. package/dist/map.mjs +190 -42
  111. package/dist/not.es.js +1 -1
  112. package/dist/not.es.min.js +1 -1
  113. package/dist/not.js +1 -1
  114. package/dist/not.min.js +1 -1
  115. package/dist/not.mjs +1 -1
  116. package/dist/omit.es.js +1 -1
  117. package/dist/omit.es.min.js +1 -1
  118. package/dist/omit.js +1 -1
  119. package/dist/omit.min.js +1 -1
  120. package/dist/omit.mjs +1 -1
  121. package/dist/or.es.js +1 -1
  122. package/dist/or.es.min.js +1 -1
  123. package/dist/or.js +1 -1
  124. package/dist/or.min.js +1 -1
  125. package/dist/or.mjs +1 -1
  126. package/dist/pick.es.js +1 -1
  127. package/dist/pick.es.min.js +1 -1
  128. package/dist/pick.js +1 -1
  129. package/dist/pick.min.js +1 -1
  130. package/dist/pick.mjs +1 -1
  131. package/dist/pipe.es.js +1 -1
  132. package/dist/pipe.es.min.js +1 -1
  133. package/dist/pipe.js +1 -1
  134. package/dist/pipe.min.js +1 -1
  135. package/dist/pipe.mjs +1 -1
  136. package/dist/reduce.es.js +1 -1
  137. package/dist/reduce.es.min.js +1 -1
  138. package/dist/reduce.js +1 -1
  139. package/dist/reduce.min.js +1 -1
  140. package/dist/reduce.mjs +1 -1
  141. package/dist/rubico.es.js +238 -83
  142. package/dist/rubico.es.min.js +2 -2
  143. package/dist/rubico.global.js +238 -83
  144. package/dist/rubico.global.min.js +2 -2
  145. package/dist/rubico.js +238 -83
  146. package/dist/rubico.min.js +2 -2
  147. package/dist/rubico.mjs +238 -83
  148. package/dist/set.es.js +1 -1
  149. package/dist/set.es.min.js +1 -1
  150. package/dist/set.js +1 -1
  151. package/dist/set.min.js +1 -1
  152. package/dist/set.mjs +1 -1
  153. package/dist/some.es.js +1 -1
  154. package/dist/some.es.min.js +1 -1
  155. package/dist/some.js +1 -1
  156. package/dist/some.min.js +1 -1
  157. package/dist/some.mjs +1 -1
  158. package/dist/switchCase.es.js +1 -1
  159. package/dist/switchCase.es.min.js +1 -1
  160. package/dist/switchCase.js +1 -1
  161. package/dist/switchCase.min.js +1 -1
  162. package/dist/switchCase.mjs +1 -1
  163. package/dist/tap.es.js +1 -1
  164. package/dist/tap.es.min.js +1 -1
  165. package/dist/tap.js +1 -1
  166. package/dist/tap.min.js +1 -1
  167. package/dist/tap.mjs +1 -1
  168. package/dist/thunkify.es.js +1 -1
  169. package/dist/thunkify.es.min.js +1 -1
  170. package/dist/thunkify.js +1 -1
  171. package/dist/thunkify.min.js +1 -1
  172. package/dist/thunkify.mjs +1 -1
  173. package/dist/transform.es.js +1 -1
  174. package/dist/transform.es.min.js +1 -1
  175. package/dist/transform.js +1 -1
  176. package/dist/transform.min.js +1 -1
  177. package/dist/transform.mjs +1 -1
  178. package/dist/tryCatch.es.js +1 -1
  179. package/dist/tryCatch.es.min.js +1 -1
  180. package/dist/tryCatch.js +1 -1
  181. package/dist/tryCatch.min.js +1 -1
  182. package/dist/tryCatch.mjs +1 -1
  183. package/dist/x/append.es.js +1 -1
  184. package/dist/x/append.es.min.js +1 -1
  185. package/dist/x/append.js +1 -1
  186. package/dist/x/append.min.js +1 -1
  187. package/dist/x/append.mjs +1 -1
  188. package/dist/x/callProp.es.js +1 -1
  189. package/dist/x/callProp.es.min.js +1 -1
  190. package/dist/x/callProp.js +1 -1
  191. package/dist/x/callProp.min.js +1 -1
  192. package/dist/x/callProp.mjs +1 -1
  193. package/dist/x/defaultsDeep.es.js +1 -1
  194. package/dist/x/defaultsDeep.es.min.js +1 -1
  195. package/dist/x/defaultsDeep.js +1 -1
  196. package/dist/x/defaultsDeep.min.js +1 -1
  197. package/dist/x/defaultsDeep.mjs +1 -1
  198. package/dist/x/differenceWith.es.js +1 -1
  199. package/dist/x/differenceWith.es.min.js +1 -1
  200. package/dist/x/differenceWith.js +1 -1
  201. package/dist/x/differenceWith.min.js +1 -1
  202. package/dist/x/differenceWith.mjs +1 -1
  203. package/dist/x/filterOut.es.js +4 -4
  204. package/dist/x/filterOut.es.min.js +2 -2
  205. package/dist/x/filterOut.js +4 -4
  206. package/dist/x/filterOut.min.js +2 -2
  207. package/dist/x/filterOut.mjs +4 -4
  208. package/dist/x/find.es.js +1 -3
  209. package/dist/x/find.es.min.js +1 -1
  210. package/dist/x/find.js +1 -3
  211. package/dist/x/find.min.js +1 -1
  212. package/dist/x/find.mjs +1 -3
  213. package/dist/x/findIndex.es.js +1 -1
  214. package/dist/x/findIndex.es.min.js +1 -1
  215. package/dist/x/findIndex.js +1 -1
  216. package/dist/x/findIndex.min.js +1 -1
  217. package/dist/x/findIndex.mjs +1 -1
  218. package/dist/x/first.es.js +1 -1
  219. package/dist/x/first.es.min.js +1 -1
  220. package/dist/x/first.js +1 -1
  221. package/dist/x/first.min.js +1 -1
  222. package/dist/x/first.mjs +1 -1
  223. package/dist/x/flatten.es.js +44 -28
  224. package/dist/x/flatten.es.min.js +2 -2
  225. package/dist/x/flatten.js +44 -28
  226. package/dist/x/flatten.min.js +2 -2
  227. package/dist/x/flatten.mjs +44 -28
  228. package/dist/x/groupBy.es.js +1 -1
  229. package/dist/x/groupBy.es.min.js +1 -1
  230. package/dist/x/groupBy.js +1 -1
  231. package/dist/x/groupBy.min.js +1 -1
  232. package/dist/x/groupBy.mjs +1 -1
  233. package/dist/x/has.es.js +1 -1
  234. package/dist/x/has.es.min.js +1 -1
  235. package/dist/x/has.js +1 -1
  236. package/dist/x/has.min.js +1 -1
  237. package/dist/x/has.mjs +1 -1
  238. package/dist/x/identity.es.js +1 -1
  239. package/dist/x/identity.es.min.js +1 -1
  240. package/dist/x/identity.js +1 -1
  241. package/dist/x/identity.min.js +1 -1
  242. package/dist/x/identity.mjs +1 -1
  243. package/dist/x/includes.es.js +1 -1
  244. package/dist/x/includes.es.min.js +1 -1
  245. package/dist/x/includes.js +1 -1
  246. package/dist/x/includes.min.js +1 -1
  247. package/dist/x/includes.mjs +1 -1
  248. package/dist/x/isDeepEqual.es.js +1 -1
  249. package/dist/x/isDeepEqual.es.min.js +1 -1
  250. package/dist/x/isDeepEqual.js +1 -1
  251. package/dist/x/isDeepEqual.min.js +1 -1
  252. package/dist/x/isDeepEqual.mjs +1 -1
  253. package/dist/x/isEmpty.es.js +1 -1
  254. package/dist/x/isEmpty.es.min.js +1 -1
  255. package/dist/x/isEmpty.js +1 -1
  256. package/dist/x/isEmpty.min.js +1 -1
  257. package/dist/x/isEmpty.mjs +1 -1
  258. package/dist/x/isEqual.es.js +1 -1
  259. package/dist/x/isEqual.es.min.js +1 -1
  260. package/dist/x/isEqual.js +1 -1
  261. package/dist/x/isEqual.min.js +1 -1
  262. package/dist/x/isEqual.mjs +1 -1
  263. package/dist/x/isFunction.es.js +1 -1
  264. package/dist/x/isFunction.es.min.js +1 -1
  265. package/dist/x/isFunction.js +1 -1
  266. package/dist/x/isFunction.min.js +1 -1
  267. package/dist/x/isFunction.mjs +1 -1
  268. package/dist/x/isIn.es.js +1 -1
  269. package/dist/x/isIn.es.min.js +1 -1
  270. package/dist/x/isIn.js +1 -1
  271. package/dist/x/isIn.min.js +1 -1
  272. package/dist/x/isIn.mjs +1 -1
  273. package/dist/x/isObject.es.js +1 -1
  274. package/dist/x/isObject.es.min.js +1 -1
  275. package/dist/x/isObject.js +1 -1
  276. package/dist/x/isObject.min.js +1 -1
  277. package/dist/x/isObject.mjs +1 -1
  278. package/dist/x/isString.es.js +1 -1
  279. package/dist/x/isString.es.min.js +1 -1
  280. package/dist/x/isString.js +1 -1
  281. package/dist/x/isString.min.js +1 -1
  282. package/dist/x/isString.mjs +1 -1
  283. package/dist/x/keys.es.js +1 -1
  284. package/dist/x/keys.es.min.js +1 -1
  285. package/dist/x/keys.js +1 -1
  286. package/dist/x/keys.min.js +1 -1
  287. package/dist/x/keys.mjs +1 -1
  288. package/dist/x/last.es.js +1 -1
  289. package/dist/x/last.es.min.js +1 -1
  290. package/dist/x/last.js +1 -1
  291. package/dist/x/last.min.js +1 -1
  292. package/dist/x/last.mjs +1 -1
  293. package/dist/x/maxBy.es.js +27 -23
  294. package/dist/x/maxBy.es.min.js +2 -2
  295. package/dist/x/maxBy.js +27 -23
  296. package/dist/x/maxBy.min.js +2 -2
  297. package/dist/x/maxBy.mjs +27 -23
  298. package/dist/x/noop.es.js +1 -1
  299. package/dist/x/noop.es.min.js +1 -1
  300. package/dist/x/noop.js +1 -1
  301. package/dist/x/noop.min.js +1 -1
  302. package/dist/x/noop.mjs +1 -1
  303. package/dist/x/pluck.es.js +194 -44
  304. package/dist/x/pluck.es.min.js +2 -2
  305. package/dist/x/pluck.js +194 -44
  306. package/dist/x/pluck.min.js +2 -2
  307. package/dist/x/pluck.mjs +194 -44
  308. package/dist/x/prepend.es.js +1 -1
  309. package/dist/x/prepend.es.min.js +1 -1
  310. package/dist/x/prepend.js +1 -1
  311. package/dist/x/prepend.min.js +1 -1
  312. package/dist/x/prepend.mjs +1 -1
  313. package/dist/x/size.es.js +1 -1
  314. package/dist/x/size.es.min.js +1 -1
  315. package/dist/x/size.js +1 -1
  316. package/dist/x/size.min.js +1 -1
  317. package/dist/x/size.mjs +1 -1
  318. package/dist/x/trace.es.js +1 -1
  319. package/dist/x/trace.es.min.js +1 -1
  320. package/dist/x/trace.js +1 -1
  321. package/dist/x/trace.min.js +1 -1
  322. package/dist/x/trace.mjs +1 -1
  323. package/dist/x/unionWith.es.js +1 -1
  324. package/dist/x/unionWith.es.min.js +1 -1
  325. package/dist/x/unionWith.js +1 -1
  326. package/dist/x/unionWith.min.js +1 -1
  327. package/dist/x/unionWith.mjs +1 -1
  328. package/dist/x/uniq.es.js +1 -1
  329. package/dist/x/uniq.es.min.js +1 -1
  330. package/dist/x/uniq.js +1 -1
  331. package/dist/x/uniq.min.js +1 -1
  332. package/dist/x/uniq.mjs +1 -1
  333. package/dist/x/unless.es.js +1 -1
  334. package/dist/x/unless.es.min.js +1 -1
  335. package/dist/x/unless.js +1 -1
  336. package/dist/x/unless.min.js +1 -1
  337. package/dist/x/unless.mjs +1 -1
  338. package/dist/x/values.es.js +1 -1
  339. package/dist/x/values.es.min.js +1 -1
  340. package/dist/x/values.js +1 -1
  341. package/dist/x/values.min.js +1 -1
  342. package/dist/x/values.mjs +1 -1
  343. package/dist/x/when.es.js +1 -1
  344. package/dist/x/when.es.min.js +1 -1
  345. package/dist/x/when.js +1 -1
  346. package/dist/x/when.min.js +1 -1
  347. package/dist/x/when.mjs +1 -1
  348. package/eq.js +2 -2
  349. package/es.js +238 -83
  350. package/every.js +2 -2
  351. package/filter.js +4 -4
  352. package/flatMap.js +61 -54
  353. package/forEach.js +33 -56
  354. package/get.js +49 -25
  355. package/gt.js +2 -2
  356. package/gte.js +2 -2
  357. package/index.js +238 -83
  358. package/lt.js +2 -2
  359. package/lte.js +2 -2
  360. package/map.js +115 -151
  361. package/monad/Mux.js +6 -4
  362. package/monad/PossiblePromise.js +6 -4
  363. package/monad/README.md +61 -40
  364. package/monad/Struct.js +6 -4
  365. package/not.js +1 -1
  366. package/omit.js +22 -19
  367. package/or.js +1 -1
  368. package/package.json +1 -1
  369. package/pick.js +14 -11
  370. package/pipe.js +18 -24
  371. package/reduce.js +1 -1
  372. package/set.js +17 -18
  373. package/some.js +2 -2
  374. package/switchCase.js +51 -43
  375. package/tap.js +17 -23
  376. package/transform.js +1 -1
  377. package/tryCatch.js +16 -24
  378. package/x/defaultsDeep.js +1 -1
  379. package/x/defaultsDeep.test.js +1 -1
  380. package/_internal/NextIteration.js +0 -12
  381. package/_internal/generatorFunctionFilter.js +0 -28
  382. package/_internal/iterationMap.js +0 -27
package/dist/x/pluck.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Rubico v2.8.5
2
+ * Rubico v2.10.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
@@ -39,25 +39,7 @@ const MappingIterator = (iterator, mapper) => ({
39
39
  },
40
40
  })
41
41
 
42
- const NextIteration = value => ({ value, done: false })
43
-
44
- const symbolAsyncIterator = Symbol.asyncIterator
45
-
46
- const MappingAsyncIterator = (asyncIterator, mapper) => ({
47
- [symbolAsyncIterator]() {
48
- return this
49
- },
50
- async next() {
51
- const iteration = await asyncIterator.next()
52
- if (iteration.done) {
53
- return iteration
54
- }
55
- const mapped = mapper(iteration.value)
56
- return isPromise(mapped)
57
- ? mapped.then(NextIteration)
58
- : { value: mapped, done: false }
59
- }
60
- })
42
+ const promiseRace = Promise.race.bind(Promise)
61
43
 
62
44
  const __ = Symbol.for('placeholder')
63
45
 
@@ -81,6 +63,165 @@ const curry2 = function (baseFunc, arg0, arg1) {
81
63
  : curry2ResolveArg1(baseFunc, arg0)
82
64
  }
83
65
 
66
+ class LinkedList {
67
+ constructor() {
68
+ this.first = null
69
+ this.last = null
70
+ this.length = 0
71
+ }
72
+
73
+ // popFirst() -> firstValue any
74
+ popFirst() {
75
+ const first = this.first
76
+
77
+ if (first == null) {
78
+ return undefined
79
+ }
80
+
81
+ if (first.next) {
82
+ this.first = first.next
83
+ } else {
84
+ this.first = null
85
+ }
86
+
87
+ this.length -= 1
88
+
89
+ return first.value
90
+ }
91
+
92
+ // append(value any) -> undefined
93
+ append(value) {
94
+ const node = { value }
95
+ if (this.first == null) {
96
+ this.first = node
97
+ }
98
+
99
+ if (this.last == null) {
100
+ this.last = node
101
+ } else {
102
+ this.last.next = node
103
+ this.last = node
104
+ }
105
+
106
+ this.length += 1
107
+ }
108
+
109
+ }
110
+
111
+ const symbolAsyncIterator = Symbol.asyncIterator
112
+
113
+ const arrayPush = function (array, value) {
114
+ array.push(value)
115
+ return array
116
+ }
117
+
118
+ const sleep = time => new Promise(resolve => {
119
+ setTimeout(resolve, time)
120
+ })
121
+
122
+ const MappingAsyncIterator = (asyncIterator, mapper) => {
123
+ const buffer = new LinkedList()
124
+
125
+ let index = -1
126
+ let consumingAsyncIterator = false
127
+ let isAsyncIteratorDone = false
128
+
129
+ return {
130
+ [symbolAsyncIterator]() {
131
+ return this
132
+ },
133
+
134
+ // _consumeAsyncIterator() -> Promise<>
135
+ async _consumeAsyncIterator() {
136
+ for await (const item of asyncIterator) {
137
+ index += 1
138
+ const mappedItem = mapper(item)
139
+ buffer.append(mappedItem)
140
+ }
141
+ isAsyncIteratorDone = true
142
+ },
143
+
144
+
145
+ async next() {
146
+ if (!consumingAsyncIterator) {
147
+ this._consumeAsyncIterator()
148
+ consumingAsyncIterator = true
149
+ }
150
+
151
+ while (!isAsyncIteratorDone) {
152
+ if (buffer.length > 0) {
153
+ let value = buffer.popFirst()
154
+ if (isPromise(value)) {
155
+ value = await value
156
+ }
157
+ return { value, done: false }
158
+ }
159
+ await sleep(10)
160
+ }
161
+
162
+ if (buffer.length > 0) {
163
+ let value = buffer.popFirst()
164
+ if (isPromise(value)) {
165
+ value = await value
166
+ }
167
+ return { value, done: false }
168
+ }
169
+
170
+ return { value: undefined, done: true }
171
+ },
172
+
173
+ }
174
+ }
175
+
176
+ const SerialMappingAsyncIterator = (asyncIterator, mapper) => {
177
+ const buffer = new LinkedList()
178
+
179
+ let index = -1
180
+ let consumingAsyncIterator = false
181
+ let isAsyncIteratorDone = false
182
+
183
+ return {
184
+ [symbolAsyncIterator]() {
185
+ return this
186
+ },
187
+
188
+ // _consumeAsyncIterator() -> Promise<>
189
+ async _consumeAsyncIterator() {
190
+ for await (const item of asyncIterator) {
191
+ index += 1
192
+ let mappedItem = mapper(item)
193
+ if (isPromise(mappedItem)) {
194
+ mappedItem = await mappedItem
195
+ }
196
+ buffer.append(mappedItem)
197
+ }
198
+ isAsyncIteratorDone = true
199
+ },
200
+
201
+
202
+ async next() {
203
+ if (!consumingAsyncIterator) {
204
+ this._consumeAsyncIterator()
205
+ consumingAsyncIterator = true
206
+ }
207
+
208
+ while (!isAsyncIteratorDone) {
209
+ if (buffer.length > 0) {
210
+ return { value: buffer.popFirst(), done: false }
211
+ }
212
+ await sleep(10)
213
+ }
214
+
215
+ if (buffer.length > 0) {
216
+ return { value: buffer.popFirst(), done: false }
217
+ }
218
+
219
+ return { value: undefined, done: true }
220
+ },
221
+
222
+ }
223
+ }
224
+
84
225
  // argument resolver for curry3
85
226
  const curry3ResolveArg0 = (
86
227
  baseFunc, arg1, arg2,
@@ -438,8 +579,6 @@ const tapSync = func => function tapping(...args) {
438
579
  return args[0]
439
580
  }
440
581
 
441
- const promiseRace = Promise.race.bind(Promise)
442
-
443
582
  const arrayMapPoolAsync = async function (
444
583
  array, f, concurrencyLimit, result, index, promises,
445
584
  ) {
@@ -667,7 +806,7 @@ const _curryArity = (arity, func, context, args) => function curried(...curriedA
667
806
  curriedArgsIndex = -1,
668
807
  numCurriedPlaceholders = 0
669
808
 
670
- while (++argsIndex < argsLength) {
809
+ while ((argsIndex += 1) < argsLength) {
671
810
  const arg = args[argsIndex]
672
811
  if (arg == __ && (curriedArgsIndex += 1) < curriedArgsLength) {
673
812
  const curriedArg = curriedArgs[curriedArgsIndex]
@@ -691,7 +830,7 @@ const _curryArity = (arity, func, context, args) => function curried(...curriedA
691
830
  }
692
831
  }
693
832
 
694
- while (++curriedArgsIndex < curriedArgsLength) {
833
+ while ((curriedArgsIndex += 1) < curriedArgsLength) {
695
834
  const curriedArg = curriedArgs[curriedArgsIndex]
696
835
  if (curriedArg == __) {
697
836
  numCurriedPlaceholders += 1
@@ -721,7 +860,7 @@ const curryArity = function (arity, func, context, args) {
721
860
  return _curryArity(arity, func, context, args)
722
861
  }
723
862
  let argsIndex = -1
724
- while (++argsIndex < argsLength) {
863
+ while ((argsIndex += 1) < argsLength) {
725
864
  const arg = args[argsIndex]
726
865
  if (arg == __) {
727
866
  return _curryArity(arity, func, context, args)
@@ -784,9 +923,6 @@ const _map = function (value, f) {
784
923
  if (typeof value.then == 'function') {
785
924
  return value.then(f)
786
925
  }
787
- if (typeof value.map == 'function') {
788
- return value.map(f)
789
- }
790
926
  if (typeof value == 'string' || value.constructor == String) {
791
927
  return stringMap(value, f)
792
928
  }
@@ -802,6 +938,9 @@ const _map = function (value, f) {
802
938
  if (typeof value[symbolAsyncIterator] == 'function') {
803
939
  return MappingAsyncIterator(value[symbolAsyncIterator](), f)
804
940
  }
941
+ if (typeof value.map == 'function') {
942
+ return value.map(f)
943
+ }
805
944
  if (value.constructor == Object) {
806
945
  return objectMap(value, f)
807
946
  }
@@ -840,27 +979,36 @@ map.entries = function mapEntries(arg0, arg1) {
840
979
  : _mapEntries(arg0, arg1)
841
980
  }
842
981
 
843
- const _mapSeries = function (collection, f) {
844
- if (isArray(collection)) {
845
- return arrayMapSeries(collection, f)
982
+ const _mapSeries = function (functor, f) {
983
+ if (isArray(functor)) {
984
+ return arrayMapSeries(functor, f)
846
985
  }
847
- if (collection == null) {
848
- throw new TypeError(`invalid collection ${collection}`)
986
+ if (functor == null) {
987
+ throw new TypeError(`invalid functor ${functor}`)
849
988
  }
850
989
 
851
- if (typeof collection == 'string' || collection.constructor == String) {
852
- return stringMapSeries(collection, f)
990
+ if (typeof functor == 'string' || functor.constructor == String) {
991
+ return stringMapSeries(functor, f)
853
992
  }
854
- if (collection.constructor == Set) {
855
- return setMapSeries(collection, f)
993
+ if (functor.constructor == Set) {
994
+ return setMapSeries(functor, f)
856
995
  }
857
- if (collection.constructor == Map) {
858
- return mapMapSeries(collection, f)
996
+ if (functor.constructor == Map) {
997
+ return mapMapSeries(functor, f)
859
998
  }
860
- if (collection.constructor == Object) {
861
- return objectMapSeries(collection, f)
999
+ if (typeof functor[symbolIterator] == 'function') {
1000
+ return MappingIterator(functor[symbolIterator](), f)
862
1001
  }
863
- throw new TypeError(`invalid collection ${collection}`)
1002
+ if (typeof functor[symbolAsyncIterator] == 'function') {
1003
+ return SerialMappingAsyncIterator(functor[symbolAsyncIterator](), f)
1004
+ }
1005
+ if (typeof functor.map == 'function') {
1006
+ return functor.map(f)
1007
+ }
1008
+ if (functor.constructor == Object) {
1009
+ return objectMapSeries(functor, f)
1010
+ }
1011
+ throw new TypeError(`invalid functor ${functor}`)
864
1012
  }
865
1013
 
866
1014
  map.series = function mapSeries(arg0, arg1) {
@@ -903,6 +1051,8 @@ map.pool = function mapPool(arg0, arg1, arg2) {
903
1051
  : _mapPool(arg0, arg1, arg2)
904
1052
  }
905
1053
 
1054
+ const funcApply = (func, args) => func(...args)
1055
+
906
1056
  const memoizeCappedUnary = function (func, cap) {
907
1057
  const cache = new Map(),
908
1058
  memoized = function memoized(arg0) {
@@ -973,8 +1123,8 @@ const get = function (arg0, arg1, arg2) {
973
1123
  if (typeof arg0 == 'string' || typeof arg0 == 'number' || isArray(arg0)) {
974
1124
  return curry3(_get, __, arg0, arg1)
975
1125
  }
976
- if (isPromise(arg0)) {
977
- return arg0.then(curry3(_get, __, arg1, arg2))
1126
+ if (isPromise(arg0) || isPromise(arg2)) {
1127
+ return promiseAll([arg0, arg1, arg2]).then(curry2(funcApply, _get, __))
978
1128
  }
979
1129
  return _get(arg0, arg1, arg2)
980
1130
  }
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Rubico v2.8.5
2
+ * Rubico v2.10.0
3
3
  * https://rubico.land/
4
4
  *
5
5
  * © Richard Yufei Tong, King of Software
6
6
  * Rubico may be freely distributed under the CFOSS license.
7
7
  */
8
8
 
9
- !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.pluck=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=(t,e)=>function(...r){const o=t(...r);return n(o)?o.then(e):e(o)},e=Symbol.iterator,r=(n,t)=>({toString:()=>"[object MappingIterator]",[e](){return this},next(){const e=n.next();return e.done?e:{value:t(e.value),done:!1}}}),o=n=>({value:n,done:!1}),u=Symbol.asyncIterator,c=(t,e)=>({[u](){return this},async next(){const r=await t.next();if(r.done)return r;const u=e(r.value);return n(u)?u.then(o):{value:u,done:!1}}}),i=Symbol.for("placeholder"),s=function(n,t,e){return t==i?((n,t)=>function(e){return n(e,t)})(n,e):((n,t)=>function(e){return n(t,e)})(n,t)},f=function(n,t,e,r){return t==i?((n,t,e)=>function(r){return n(r,t,e)})(n,e,r):e==i?((n,t,e)=>function(r){return n(t,r,e)})(n,t,r):((n,t,e)=>function(r){return n(t,e,r)})(n,t,e)},l=Array.isArray,a=Promise.all.bind(Promise),h=function(t,e){const r=t.length,o=Array(r);let u=-1,c=!1;for(;++u<r;){const r=e(t[u],u,t);n(r)&&(c=!0),o[u]=r}return c?a(o):o},d=(n,t,e)=>n[t](e),p=n=>function(){return n},y=function(n,t,e,r,o){return t==i?((n,t,e,r)=>function(o){return n(o,t,e,r)})(n,e,r,o):e==i?((n,t,e,r)=>function(o){return n(t,o,e,r)})(n,t,r,o):r==i?((n,t,e,r)=>function(o){return n(t,e,o,r)})(n,t,e,o):((n,t,e,r)=>function(o){return n(t,e,r,o)})(n,t,e,r)},w=(n,t,e,r)=>n[t](e,r),g=t=>new Promise((t=>function(e){const r={};let o=0;for(const u in t){const c=t[u];n(c)?(o+=1,c.then((n=>function(t){r[n]=t,o-=1,0==o&&e(r)})(u))):r[u]=c}0==o&&e(r)})(t)),v=function(n,t,e){return n[t]=e,n},x=async function(t,e,r,o){const u=t.length;for(;++o<u;){const u=e(t[o],o);r[o]=n(u)?await u:u}return r},b=function(e,r){const o=e.length,u=Array(o);let c=-1;for(;++c<o;){const o=r(e[c],c);if(n(o))return o.then(t(f(v,u,c,i),y(x,e,r,i,c)));u[c]=o}return u},S=(n,t,e,r,o)=>function(){return n(t,e,r,o)},j=async function(t,e,r,o){for(const u in t){if(u in o)continue;let c=e(t[u]);n(c)&&(c=await c),r[u]=c}return r},m=(n,t,e,r)=>function(){return n(t,e,r)},M=function(n,t){return n.add(t),n},z=async function(t,e,r){let o=t.next();for(;!o.done;){let u=e(o.value);n(u)&&(u=await u),r.add(u),o=t.next()}return r},T=function(n,t,e){return n.set(t,e)},E=async function(t,e,r){let o=t.next();for(;!o.done;){let u=e(o.value[1]);n(u)&&(u=await u),r.set(o.value[0],u),o=t.next()}return r},O=n=>function(...t){return n(...t),t[0]},A=Promise.race.bind(Promise),P=async function(t,e,r,o,u,c){const i=t.length;for(;++u<i;){c.size>=r&&await A(c);const i=e(t[u]);if(n(i)){const n=i.then(O((()=>c.delete(n))));c.add(n),o[u]=n}else o[u]=i}return a(o)},$=function(t,e,r){const o=t.length,u=Array(o);let c=-1;for(;++c<o;){const o=r(t[c]);if(n(o)){const n=new Set,i=o.then(O((()=>n.delete(i))));return n.add(i),u[c]=i,P(t,r,e,u,c,n)}u[c]=o}return u},I=async function(t,e,r,o,u,c){let i=e.next();for(;!i.done;){c.size>=r&&await A(c);const s=o(i.value,i.value,t);if(n(s)){const n=s.then((t=>{c.delete(n),u.add(t)}));c.add(n)}else u.add(s);i=e.next()}return c.size>0&&await a(c),u},k=async function(t,e,r,o,u,c){let i=e.next();for(;!i.done;){c.size>=r&&await A(c);const s=i.value[0],f=o(i.value[1],s,t);if(n(f)){u.set(s,f);const n=f.then((t=>{c.delete(n),u.set(s,t)}));c.add(n)}else u.set(s,f);i=e.next()}return c.size>0&&await a(c),u},q=async function(t,e,r,o,u,c){for(const i in t){if(i in u)continue;c.size>=e&&await A(c);const s=r(t[i],i,t);if(n(s)){o[i]=s;const n=s.then((t=>{c.delete(n),o[i]=t}));c.add(n)}else o[i]=s}return c.size>0&&await a(c),o},B=function(t){if(l(t)){const e=t.length;let r=-1;for(;++r<e;){const e=t[r];if(n(e))return!0}return!1}for(const e in t){const r=t[e];if(n(r))return!0}return!1},C=(n,t,e)=>n.apply(t,e),D=(n,t,e,r)=>function(...o){const u=r.length,c=o.length,s=[];let l=-1,h=-1,d=0;for(;++l<u;){const u=r[l];if(u==i&&(h+=1)<c){const n=o[h];n==i&&(d+=1),s.push(n)}else s.push(u);if(s.length==n)return B(s)?0==d?a(s).then(f(C,t,e,i)):a(s).then(y(F,n,t,e,i)):0==d?t.apply(e,s):F(n,t,e,s)}for(;++h<c;){const r=o[h];if(r==i&&(d+=1),s.push(r),s.length==n)return B(s)?0==d?a(s).then(f(C,t,e,i)):a(s).then(y(F,n,t,e,i)):0==d?t.apply(e,s):F(n,t,e,s)}return B(s)?a(s).then(y(F,n,t,e,i)):F(n,t,e,s)},F=function(n,t,e,r){const o=r.length;if(o<n)return D(n,t,e,r);let u=-1;for(;++u<o;){if(r[u]==i)return D(n,t,e,r)}return t.apply(e,r)},G=n=>function([t,e]){return n(t,e)},H=(t,e,r)=>function(o,u){const c=t([u,o]);n(c)?r.push(c.then(G(F(3,T,this,[e])))):e.set(c[0],c[1])},J=function(t,o){return l(t)?h(t,o):null==t?t:"function"==typeof t.then?t.then(o):"function"==typeof t.map?t.map(o):"string"==typeof t||t.constructor==String?function(t,e){const r=h(t,e);return n(r)?r.then(f(d,i,"join","")):r.join("")}(t,o):t.constructor==Set?function(t,e){const r=new Set,o=[];for(const u of t){const c=e(u,u,t);n(c)?o.push(c.then(f(d,r,"add",i))):r.add(c)}return 0==o.length?r:a(o).then(p(r))}(t,o):t.constructor==Map?function(t,e){const r=new Map,o=[];for(const[u,c]of t){const s=e(c,u,t);n(s)?o.push(s.then(y(w,r,"set",u,i))):r.set(u,s)}return 0==o.length?r:a(o).then(p(r))}(t,o):"function"==typeof t[e]?r(t[e](),o):"function"==typeof t[u]?c(t[u](),o):t.constructor==Object?function(t,e){const r={};let o=!1;for(const u in t){const c=e(t[u],u,t);n(c)&&(o=!0),r[u]=c}return o?g(r):r}(t,o):o(t)},K=function(t,e){return null==e?s(J,i,t):n(t)?t.then(s(J,i,e)):J(t,e)},L=(t,e)=>{if(null==t)throw new TypeError("value is not an Object or Map");if(t.constructor==Object)return function(t,e){const r={},o=[];for(const u in t){const c=e([u,t[u]]);n(c)?o.push(c.then(G(F(3,v,this,[r])))):r[c[0]]=c[1]}return 0==o.length?r:a(o).then(p(r))}(t,e);if(t.constructor==Map)return function(n,t){const e=new Map,r=[];return n.forEach(H(t,e,r)),0==r.length?e:a(r).then(p(e))}(t,e);throw new TypeError("value is not an Object or Map")};K.entries=function(t,e){return null==e?s(L,i,t):n(t)?t.then(s(L,i,e)):L(t,e)};const N=function(r,o){if(l(r))return b(r,o);if(null==r)throw new TypeError(`invalid collection ${r}`);if("string"==typeof r||r.constructor==String)return function(t,e){const r=b(t,e);return n(r)?r.then(f(d,i,"join","")):r.join("")}(r,o);if(r.constructor==Set)return function(r,o){const u=new Set,c=r[e]();let f=c.next();for(;!f.done;){const e=o(f.value);if(n(e))return e.then(t(s(M,u,i),m(z,c,o,u)));u.add(e),f=c.next()}return u}(r,o);if(r.constructor==Map)return function(r,o){const u=new Map,c=r[e]();let s=c.next();for(;!s.done;){const e=s.value[0],r=o(s.value[1]);if(n(r))return r.then(t(f(T,u,e,i),m(E,c,o,u)));u.set(e,r),s=c.next()}return u}(r,o);if(r.constructor==Object)return function(e,r){const o={},u={};for(const c in e){u[c]=!0;const s=r(e[c],c,e);if(n(s))return s.then(t(f(v,o,c,i),S(j,e,r,o,u)));o[c]=s}return o}(r,o);throw new TypeError(`invalid collection ${r}`)};K.series=function(t,e){return null==e?s(N,i,t):n(t)?t.then(s(N,i,e)):N(t,e)};const Q=function(t,r,o){if(l(t))return $(t,r,o);if(null==t)throw new TypeError(`invalid functor ${t}`);if("string"==typeof t||t.constructor==String)return function(t,e,r){const o=$(t,e,r);return n(o)?o.then(f(d,i,"join","")):o.join("")}(t,r,o);if(t.constructor==Set)return function(t,r,o){const u=new Set,c=t[e]();let i=c.next();for(;!i.done;){const e=o(i.value,i.value,t);if(n(e)){const n=new Set,i=e.then((t=>{n.delete(i),u.add(t)}));return n.add(i),I(t,c,r,o,u,n)}u.add(e),i=c.next()}return u}(t,r,o);if(t.constructor==Map)return function(t,r,o){const u=new Map,c=t[e]();let i=c.next();for(;!i.done;){const e=i.value[0],s=o(i.value[1],e,t);if(n(s)){const n=new Set;u.set(e,s);const i=s.then((t=>{n.delete(i),u.set(e,t)}));return n.add(i),k(t,c,r,o,u,n)}u.set(e,s),i=c.next()}return u}(t,r,o);if(t.constructor==Object)return function(t,e,r){const o={},u={};for(const c in t){u[c]=!0;const i=r(t[c],c,t);if(n(i)){const n=new Set;o[c]=i;const s=i.then((t=>{n.delete(s),o[c]=t}));return n.add(s),q(t,e,r,o,u,n)}o[c]=i}return o}(t,r,o);throw new TypeError(`invalid functor ${t}`)};K.pool=function(t,e,r){return null==r?f(Q,i,t,e):n(t)?t.then(f(Q,i,e,r)):Q(t,e,r)};const R=/[.|[|\]]+/,U=function(n,t){const e=new Map,r=function(r){if(e.has(r))return e.get(r);const o=n(r);return e.set(r,o),e.size>t&&e.clear(),o};return r.cache=e,r}((function(n){const t=n.length-1,e="["==n[0],r="]"==n[t];return e&&r?n.slice(1,t).split(R):e?n.slice(1).split(R):r?n.slice(0,t).split(R):n.split(R)}),500),V=function(n,t){const e=(n=>l(n)?n:"string"==typeof n?U(n):[n])(t),r=e.length;let o=-1,u=n;for(;++o<r;)if(u=u[e[o]],null==u)return;return u},W=function(n,t,e){const r=null==n?void 0:V(n,t);return void 0===r?"function"==typeof e?e(n):e:r};return function(...t){const e=t.pop(),r="string"==typeof(o=e)||"number"==typeof o||l(o)?f(W,i,o,u):n(o)?o.then(f(W,i,u,c)):W(o,u,c);var o,u,c;return 0==t.length?K(r):K(t[0],r)}}());
9
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.pluck=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=(t,e)=>function(...r){const o=t(...r);return n(o)?o.then(e):e(o)},e=Symbol.iterator,r=(n,t)=>({toString:()=>"[object MappingIterator]",[e](){return this},next(){const e=n.next();return e.done?e:{value:t(e.value),done:!1}}}),o=Promise.race.bind(Promise),u=Symbol.for("placeholder"),i=function(n,t,e){return t==u?((n,t)=>function(e){return n(e,t)})(n,e):((n,t)=>function(e){return n(t,e)})(n,t)};class c{constructor(){this.first=null,this.last=null,this.length=0}popFirst(){const n=this.first;if(null!=n)return n.next?this.first=n.next:this.first=null,this.length-=1,n.value}append(n){const t={value:n};null==this.first&&(this.first=t),null==this.last||(this.last.next=t),this.last=t,this.length+=1}}const s=Symbol.asyncIterator,f=n=>new Promise((t=>{setTimeout(t,n)})),l=(t,e)=>{const r=new c;let o=-1,u=!1,i=!1;return{[s](){return this},async _consumeAsyncIterator(){for await(const n of t){o+=1;const t=e(n);r.append(t)}i=!0},async next(){for(u||(this._consumeAsyncIterator(),u=!0);!i;){if(r.length>0){let t=r.popFirst();return n(t)&&(t=await t),{value:t,done:!1}}await f(10)}if(r.length>0){let t=r.popFirst();return n(t)&&(t=await t),{value:t,done:!1}}return{value:void 0,done:!0}}}},a=(t,e)=>{const r=new c;let o=-1,u=!1,i=!1;return{[s](){return this},async _consumeAsyncIterator(){for await(const u of t){o+=1;let t=e(u);n(t)&&(t=await t),r.append(t)}i=!0},async next(){for(u||(this._consumeAsyncIterator(),u=!0);!i;){if(r.length>0)return{value:r.popFirst(),done:!1};await f(10)}return r.length>0?{value:r.popFirst(),done:!1}:{value:void 0,done:!0}}}},h=function(n,t,e,r){return t==u?((n,t,e)=>function(r){return n(r,t,e)})(n,e,r):e==u?((n,t,e)=>function(r){return n(t,r,e)})(n,t,r):((n,t,e)=>function(r){return n(t,e,r)})(n,t,e)},p=Array.isArray,d=Promise.all.bind(Promise),y=function(t,e){const r=t.length,o=Array(r);let u=-1,i=!1;for(;++u<r;){const r=e(t[u],u,t);n(r)&&(i=!0),o[u]=r}return i?d(o):o},w=(n,t,e)=>n[t](e),g=n=>function(){return n},v=function(n,t,e,r,o){return t==u?((n,t,e,r)=>function(o){return n(o,t,e,r)})(n,e,r,o):e==u?((n,t,e,r)=>function(o){return n(t,o,e,r)})(n,t,r,o):r==u?((n,t,e,r)=>function(o){return n(t,e,o,r)})(n,t,e,o):((n,t,e,r)=>function(o){return n(t,e,r,o)})(n,t,e,r)},x=(n,t,e,r)=>n[t](e,r),m=t=>new Promise((t=>function(e){const r={};let o=0;for(const u in t){const i=t[u];n(i)?(o+=1,i.then((n=>function(t){r[n]=t,o-=1,0==o&&e(r)})(u))):r[u]=i}0==o&&e(r)})(t)),b=function(n,t,e){return n[t]=e,n},S=async function(t,e,r,o){const u=t.length;for(;++o<u;){const u=e(t[o],o);r[o]=n(u)?await u:u}return r},j=function(e,r){const o=e.length,i=Array(o);let c=-1;for(;++c<o;){const o=r(e[c],c);if(n(o))return o.then(t(h(b,i,c,u),v(S,e,r,u,c)));i[c]=o}return i},M=(n,t,e,r,o)=>function(){return n(t,e,r,o)},A=async function(t,e,r,o){for(const u in t){if(u in o)continue;let i=e(t[u]);n(i)&&(i=await i),r[u]=i}return r},T=(n,t,e,r)=>function(){return n(t,e,r)},z=function(n,t){return n.add(t),n},E=async function(t,e,r){let o=t.next();for(;!o.done;){let u=e(o.value);n(u)&&(u=await u),r.add(u),o=t.next()}return r},I=function(n,t,e){return n.set(t,e)},O=async function(t,e,r){let o=t.next();for(;!o.done;){let u=e(o.value[1]);n(u)&&(u=await u),r.set(o.value[0],u),o=t.next()}return r},P=n=>function(...t){return n(...t),t[0]},F=async function(t,e,r,u,i,c){const s=t.length;for(;++i<s;){c.size>=r&&await o(c);const s=e(t[i]);if(n(s)){const n=s.then(P((()=>c.delete(n))));c.add(n),u[i]=n}else u[i]=s}return d(u)},$=function(t,e,r){const o=t.length,u=Array(o);let i=-1;for(;++i<o;){const o=r(t[i]);if(n(o)){const n=new Set,c=o.then(P((()=>n.delete(c))));return n.add(c),u[i]=c,F(t,r,e,u,i,n)}u[i]=o}return u},_=async function(t,e,r,u,i,c){let s=e.next();for(;!s.done;){c.size>=r&&await o(c);const f=u(s.value,s.value,t);if(n(f)){const n=f.then((t=>{c.delete(n),i.add(t)}));c.add(n)}else i.add(f);s=e.next()}return c.size>0&&await d(c),i},k=async function(t,e,r,u,i,c){let s=e.next();for(;!s.done;){c.size>=r&&await o(c);const f=s.value[0],l=u(s.value[1],f,t);if(n(l)){i.set(f,l);const n=l.then((t=>{c.delete(n),i.set(f,t)}));c.add(n)}else i.set(f,l);s=e.next()}return c.size>0&&await d(c),i},q=async function(t,e,r,u,i,c){for(const s in t){if(s in i)continue;c.size>=e&&await o(c);const f=r(t[s],s,t);if(n(f)){u[s]=f;const n=f.then((t=>{c.delete(n),u[s]=t}));c.add(n)}else u[s]=f}return c.size>0&&await d(c),u},B=function(t){if(p(t)){const e=t.length;let r=-1;for(;++r<e;){const e=t[r];if(n(e))return!0}return!1}for(const e in t){const r=t[e];if(n(r))return!0}return!1},C=(n,t,e)=>n.apply(t,e),D=(n,t,e,r)=>function(...o){const i=r.length,c=o.length,s=[];let f=-1,l=-1,a=0;for(;(f+=1)<i;){const i=r[f];if(i==u&&(l+=1)<c){const n=o[l];n==u&&(a+=1),s.push(n)}else s.push(i);if(s.length==n)return B(s)?0==a?d(s).then(h(C,t,e,u)):d(s).then(v(G,n,t,e,u)):0==a?t.apply(e,s):G(n,t,e,s)}for(;(l+=1)<c;){const r=o[l];if(r==u&&(a+=1),s.push(r),s.length==n)return B(s)?0==a?d(s).then(h(C,t,e,u)):d(s).then(v(G,n,t,e,u)):0==a?t.apply(e,s):G(n,t,e,s)}return B(s)?d(s).then(v(G,n,t,e,u)):G(n,t,e,s)},G=function(n,t,e,r){const o=r.length;if(o<n)return D(n,t,e,r);let i=-1;for(;(i+=1)<o;){if(r[i]==u)return D(n,t,e,r)}return t.apply(e,r)},H=n=>function([t,e]){return n(t,e)},J=(t,e,r)=>function(o,u){const i=t([u,o]);n(i)?r.push(i.then(H(G(3,I,this,[e])))):e.set(i[0],i[1])},K=function(t,o){return p(t)?y(t,o):null==t?t:"function"==typeof t.then?t.then(o):"string"==typeof t||t.constructor==String?function(t,e){const r=y(t,e);return n(r)?r.then(h(w,u,"join","")):r.join("")}(t,o):t.constructor==Set?function(t,e){const r=new Set,o=[];for(const i of t){const c=e(i,i,t);n(c)?o.push(c.then(h(w,r,"add",u))):r.add(c)}return 0==o.length?r:d(o).then(g(r))}(t,o):t.constructor==Map?function(t,e){const r=new Map,o=[];for(const[i,c]of t){const s=e(c,i,t);n(s)?o.push(s.then(v(x,r,"set",i,u))):r.set(i,s)}return 0==o.length?r:d(o).then(g(r))}(t,o):"function"==typeof t[e]?r(t[e](),o):"function"==typeof t[s]?l(t[s](),o):"function"==typeof t.map?t.map(o):t.constructor==Object?function(t,e){const r={};let o=!1;for(const u in t){const i=e(t[u],u,t);n(i)&&(o=!0),r[u]=i}return o?m(r):r}(t,o):o(t)},L=function(t,e){return null==e?i(K,u,t):n(t)?t.then(i(K,u,e)):K(t,e)},N=(t,e)=>{if(null==t)throw new TypeError("value is not an Object or Map");if(t.constructor==Object)return function(t,e){const r={},o=[];for(const u in t){const i=e([u,t[u]]);n(i)?o.push(i.then(H(G(3,b,this,[r])))):r[i[0]]=i[1]}return 0==o.length?r:d(o).then(g(r))}(t,e);if(t.constructor==Map)return function(n,t){const e=new Map,r=[];return n.forEach(J(t,e,r)),0==r.length?e:d(r).then(g(e))}(t,e);throw new TypeError("value is not an Object or Map")};L.entries=function(t,e){return null==e?i(N,u,t):n(t)?t.then(i(N,u,e)):N(t,e)};const Q=function(o,c){if(p(o))return j(o,c);if(null==o)throw new TypeError(`invalid functor ${o}`);if("string"==typeof o||o.constructor==String)return function(t,e){const r=j(t,e);return n(r)?r.then(h(w,u,"join","")):r.join("")}(o,c);if(o.constructor==Set)return function(r,o){const c=new Set,s=r[e]();let f=s.next();for(;!f.done;){const e=o(f.value);if(n(e))return e.then(t(i(z,c,u),T(E,s,o,c)));c.add(e),f=s.next()}return c}(o,c);if(o.constructor==Map)return function(r,o){const i=new Map,c=r[e]();let s=c.next();for(;!s.done;){const e=s.value[0],r=o(s.value[1]);if(n(r))return r.then(t(h(I,i,e,u),T(O,c,o,i)));i.set(e,r),s=c.next()}return i}(o,c);if("function"==typeof o[e])return r(o[e](),c);if("function"==typeof o[s])return a(o[s](),c);if("function"==typeof o.map)return o.map(c);if(o.constructor==Object)return function(e,r){const o={},i={};for(const c in e){i[c]=!0;const s=r(e[c],c,e);if(n(s))return s.then(t(h(b,o,c,u),M(A,e,r,o,i)));o[c]=s}return o}(o,c);throw new TypeError(`invalid functor ${o}`)};L.series=function(t,e){return null==e?i(Q,u,t):n(t)?t.then(i(Q,u,e)):Q(t,e)};const R=function(t,r,o){if(p(t))return $(t,r,o);if(null==t)throw new TypeError(`invalid functor ${t}`);if("string"==typeof t||t.constructor==String)return function(t,e,r){const o=$(t,e,r);return n(o)?o.then(h(w,u,"join","")):o.join("")}(t,r,o);if(t.constructor==Set)return function(t,r,o){const u=new Set,i=t[e]();let c=i.next();for(;!c.done;){const e=o(c.value,c.value,t);if(n(e)){const n=new Set,c=e.then((t=>{n.delete(c),u.add(t)}));return n.add(c),_(t,i,r,o,u,n)}u.add(e),c=i.next()}return u}(t,r,o);if(t.constructor==Map)return function(t,r,o){const u=new Map,i=t[e]();let c=i.next();for(;!c.done;){const e=c.value[0],s=o(c.value[1],e,t);if(n(s)){const n=new Set;u.set(e,s);const c=s.then((t=>{n.delete(c),u.set(e,t)}));return n.add(c),k(t,i,r,o,u,n)}u.set(e,s),c=i.next()}return u}(t,r,o);if(t.constructor==Object)return function(t,e,r){const o={},u={};for(const i in t){u[i]=!0;const c=r(t[i],i,t);if(n(c)){const n=new Set;o[i]=c;const s=c.then((t=>{n.delete(s),o[i]=t}));return n.add(s),q(t,e,r,o,u,n)}o[i]=c}return o}(t,r,o);throw new TypeError(`invalid functor ${t}`)};L.pool=function(t,e,r){return null==r?h(R,u,t,e):n(t)?t.then(h(R,u,e,r)):R(t,e,r)};const U=(n,t)=>n(...t),V=/[.|[|\]]+/,W=function(n,t){const e=new Map,r=function(r){if(e.has(r))return e.get(r);const o=n(r);return e.set(r,o),e.size>t&&e.clear(),o};return r.cache=e,r}((function(n){const t=n.length-1,e="["==n[0],r="]"==n[t];return e&&r?n.slice(1,t).split(V):e?n.slice(1).split(V):r?n.slice(0,t).split(V):n.split(V)}),500),X=function(n,t){const e=(n=>p(n)?n:"string"==typeof n?W(n):[n])(t),r=e.length;let o=-1,u=n;for(;++o<r;)if(u=u[e[o]],null==u)return;return u},Y=function(n,t,e){const r=null==n?void 0:X(n,t);return void 0===r?"function"==typeof e?e(n):e:r};return function(...t){const e=t.pop(),r="string"==typeof(o=e)||"number"==typeof o||p(o)?h(Y,u,o,c):n(o)||n(s)?d([o,c,s]).then(i(U,Y,u)):Y(o,c,s);var o,c,s;return 0==t.length?L(r):L(t[0],r)}}());