rubico 2.2.0 → 2.2.2

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 (376) hide show
  1. package/README.md +1 -3
  2. package/dist/Transducer.es.js +1 -1
  3. package/dist/Transducer.es.min.js +1 -1
  4. package/dist/Transducer.js +1 -1
  5. package/dist/Transducer.min.js +1 -1
  6. package/dist/Transducer.mjs +1 -1
  7. package/dist/__.es.js +1 -1
  8. package/dist/__.es.min.js +1 -1
  9. package/dist/__.js +1 -1
  10. package/dist/__.min.js +1 -1
  11. package/dist/__.mjs +1 -1
  12. package/dist/all.es.js +1 -1
  13. package/dist/all.es.min.js +1 -1
  14. package/dist/all.js +1 -1
  15. package/dist/all.min.js +1 -1
  16. package/dist/all.mjs +1 -1
  17. package/dist/always.es.js +1 -1
  18. package/dist/always.es.min.js +1 -1
  19. package/dist/always.js +1 -1
  20. package/dist/always.min.js +1 -1
  21. package/dist/always.mjs +1 -1
  22. package/dist/and.es.js +1 -1
  23. package/dist/and.es.min.js +1 -1
  24. package/dist/and.js +1 -1
  25. package/dist/and.min.js +1 -1
  26. package/dist/and.mjs +1 -1
  27. package/dist/assign.es.js +1 -1
  28. package/dist/assign.es.min.js +1 -1
  29. package/dist/assign.js +1 -1
  30. package/dist/assign.min.js +1 -1
  31. package/dist/assign.mjs +1 -1
  32. package/dist/compose.es.js +1 -1
  33. package/dist/compose.es.min.js +1 -1
  34. package/dist/compose.js +1 -1
  35. package/dist/compose.min.js +1 -1
  36. package/dist/compose.mjs +1 -1
  37. package/dist/curry.es.js +1 -1
  38. package/dist/curry.es.min.js +1 -1
  39. package/dist/curry.js +1 -1
  40. package/dist/curry.min.js +1 -1
  41. package/dist/curry.mjs +1 -1
  42. package/dist/eq.es.js +1 -1
  43. package/dist/eq.es.min.js +1 -1
  44. package/dist/eq.js +1 -1
  45. package/dist/eq.min.js +1 -1
  46. package/dist/eq.mjs +1 -1
  47. package/dist/every.es.js +1 -1
  48. package/dist/every.es.min.js +1 -1
  49. package/dist/every.js +1 -1
  50. package/dist/every.min.js +1 -1
  51. package/dist/every.mjs +1 -1
  52. package/dist/filter.es.js +1 -1
  53. package/dist/filter.es.min.js +1 -1
  54. package/dist/filter.js +1 -1
  55. package/dist/filter.min.js +1 -1
  56. package/dist/filter.mjs +1 -1
  57. package/dist/flatMap.es.js +1 -1
  58. package/dist/flatMap.es.min.js +1 -1
  59. package/dist/flatMap.js +1 -1
  60. package/dist/flatMap.min.js +1 -1
  61. package/dist/flatMap.mjs +1 -1
  62. package/dist/forEach.es.js +1 -1
  63. package/dist/forEach.es.min.js +1 -1
  64. package/dist/forEach.js +1 -1
  65. package/dist/forEach.min.js +1 -1
  66. package/dist/forEach.mjs +1 -1
  67. package/dist/get.es.js +1 -1
  68. package/dist/get.es.min.js +1 -1
  69. package/dist/get.js +1 -1
  70. package/dist/get.min.js +1 -1
  71. package/dist/get.mjs +1 -1
  72. package/dist/gt.es.js +1 -1
  73. package/dist/gt.es.min.js +1 -1
  74. package/dist/gt.js +1 -1
  75. package/dist/gt.min.js +1 -1
  76. package/dist/gt.mjs +1 -1
  77. package/dist/gte.es.js +1 -1
  78. package/dist/gte.es.min.js +1 -1
  79. package/dist/gte.js +1 -1
  80. package/dist/gte.min.js +1 -1
  81. package/dist/gte.mjs +1 -1
  82. package/dist/lt.es.js +1 -1
  83. package/dist/lt.es.min.js +1 -1
  84. package/dist/lt.js +1 -1
  85. package/dist/lt.min.js +1 -1
  86. package/dist/lt.mjs +1 -1
  87. package/dist/lte.es.js +1 -1
  88. package/dist/lte.es.min.js +1 -1
  89. package/dist/lte.js +1 -1
  90. package/dist/lte.min.js +1 -1
  91. package/dist/lte.mjs +1 -1
  92. package/dist/map.es.js +1 -1
  93. package/dist/map.es.min.js +1 -1
  94. package/dist/map.js +1 -1
  95. package/dist/map.min.js +1 -1
  96. package/dist/map.mjs +1 -1
  97. package/dist/not.es.js +1 -1
  98. package/dist/not.es.min.js +1 -1
  99. package/dist/not.js +1 -1
  100. package/dist/not.min.js +1 -1
  101. package/dist/not.mjs +1 -1
  102. package/dist/omit.es.js +1 -1
  103. package/dist/omit.es.min.js +1 -1
  104. package/dist/omit.js +1 -1
  105. package/dist/omit.min.js +1 -1
  106. package/dist/omit.mjs +1 -1
  107. package/dist/or.es.js +1 -1
  108. package/dist/or.es.min.js +1 -1
  109. package/dist/or.js +1 -1
  110. package/dist/or.min.js +1 -1
  111. package/dist/or.mjs +1 -1
  112. package/dist/pick.es.js +1 -1
  113. package/dist/pick.es.min.js +1 -1
  114. package/dist/pick.js +1 -1
  115. package/dist/pick.min.js +1 -1
  116. package/dist/pick.mjs +1 -1
  117. package/dist/pipe.es.js +1 -1
  118. package/dist/pipe.es.min.js +1 -1
  119. package/dist/pipe.js +1 -1
  120. package/dist/pipe.min.js +1 -1
  121. package/dist/pipe.mjs +1 -1
  122. package/dist/reduce.es.js +1 -1
  123. package/dist/reduce.es.min.js +1 -1
  124. package/dist/reduce.js +1 -1
  125. package/dist/reduce.min.js +1 -1
  126. package/dist/reduce.mjs +1 -1
  127. package/dist/rubico.es.js +1 -1
  128. package/dist/rubico.es.min.js +1 -1
  129. package/dist/rubico.global.js +1 -1
  130. package/dist/rubico.global.min.js +1 -1
  131. package/dist/rubico.js +1 -1
  132. package/dist/rubico.min.js +1 -1
  133. package/dist/rubico.mjs +1 -1
  134. package/dist/set.es.js +1 -1
  135. package/dist/set.es.min.js +1 -1
  136. package/dist/set.js +1 -1
  137. package/dist/set.min.js +1 -1
  138. package/dist/set.mjs +1 -1
  139. package/dist/some.es.js +1 -1
  140. package/dist/some.es.min.js +1 -1
  141. package/dist/some.js +1 -1
  142. package/dist/some.min.js +1 -1
  143. package/dist/some.mjs +1 -1
  144. package/dist/switchCase.es.js +1 -1
  145. package/dist/switchCase.es.min.js +1 -1
  146. package/dist/switchCase.js +1 -1
  147. package/dist/switchCase.min.js +1 -1
  148. package/dist/switchCase.mjs +1 -1
  149. package/dist/tap.es.js +1 -1
  150. package/dist/tap.es.min.js +1 -1
  151. package/dist/tap.js +1 -1
  152. package/dist/tap.min.js +1 -1
  153. package/dist/tap.mjs +1 -1
  154. package/dist/thunkify.es.js +1 -1
  155. package/dist/thunkify.es.min.js +1 -1
  156. package/dist/thunkify.js +1 -1
  157. package/dist/thunkify.min.js +1 -1
  158. package/dist/thunkify.mjs +1 -1
  159. package/dist/transform.es.js +1 -1
  160. package/dist/transform.es.min.js +1 -1
  161. package/dist/transform.js +1 -1
  162. package/dist/transform.min.js +1 -1
  163. package/dist/transform.mjs +1 -1
  164. package/dist/tryCatch.es.js +1 -1
  165. package/dist/tryCatch.es.min.js +1 -1
  166. package/dist/tryCatch.js +1 -1
  167. package/dist/tryCatch.min.js +1 -1
  168. package/dist/tryCatch.mjs +1 -1
  169. package/dist/x/append.es.js +1 -1
  170. package/dist/x/append.es.min.js +1 -1
  171. package/dist/x/append.js +1 -1
  172. package/dist/x/append.min.js +1 -1
  173. package/dist/x/append.mjs +1 -1
  174. package/dist/x/callProp.es.js +1 -1
  175. package/dist/x/callProp.es.min.js +1 -1
  176. package/dist/x/callProp.js +1 -1
  177. package/dist/x/callProp.min.js +1 -1
  178. package/dist/x/callProp.mjs +1 -1
  179. package/dist/x/defaultsDeep.es.js +1 -1
  180. package/dist/x/defaultsDeep.es.min.js +1 -1
  181. package/dist/x/defaultsDeep.js +1 -1
  182. package/dist/x/defaultsDeep.min.js +1 -1
  183. package/dist/x/defaultsDeep.mjs +1 -1
  184. package/dist/x/differenceWith.es.js +1 -1
  185. package/dist/x/differenceWith.es.min.js +1 -1
  186. package/dist/x/differenceWith.js +1 -1
  187. package/dist/x/differenceWith.min.js +1 -1
  188. package/dist/x/differenceWith.mjs +1 -1
  189. package/dist/x/filterOut.es.js +1 -1
  190. package/dist/x/filterOut.es.min.js +1 -1
  191. package/dist/x/filterOut.js +1 -1
  192. package/dist/x/filterOut.min.js +1 -1
  193. package/dist/x/filterOut.mjs +1 -1
  194. package/dist/x/find.es.js +1 -1
  195. package/dist/x/find.es.min.js +1 -1
  196. package/dist/x/find.js +1 -1
  197. package/dist/x/find.min.js +1 -1
  198. package/dist/x/find.mjs +1 -1
  199. package/dist/x/findIndex.es.js +1 -1
  200. package/dist/x/findIndex.es.min.js +1 -1
  201. package/dist/x/findIndex.js +1 -1
  202. package/dist/x/findIndex.min.js +1 -1
  203. package/dist/x/findIndex.mjs +1 -1
  204. package/dist/x/first.es.js +1 -1
  205. package/dist/x/first.es.min.js +1 -1
  206. package/dist/x/first.js +1 -1
  207. package/dist/x/first.min.js +1 -1
  208. package/dist/x/first.mjs +1 -1
  209. package/dist/x/flatten.es.js +1 -1
  210. package/dist/x/flatten.es.min.js +1 -1
  211. package/dist/x/flatten.js +1 -1
  212. package/dist/x/flatten.min.js +1 -1
  213. package/dist/x/flatten.mjs +1 -1
  214. package/dist/x/groupBy.es.js +1 -1
  215. package/dist/x/groupBy.es.min.js +1 -1
  216. package/dist/x/groupBy.js +1 -1
  217. package/dist/x/groupBy.min.js +1 -1
  218. package/dist/x/groupBy.mjs +1 -1
  219. package/dist/x/has.es.js +1 -1
  220. package/dist/x/has.es.min.js +1 -1
  221. package/dist/x/has.js +1 -1
  222. package/dist/x/has.min.js +1 -1
  223. package/dist/x/has.mjs +1 -1
  224. package/dist/x/identity.es.js +1 -1
  225. package/dist/x/identity.es.min.js +1 -1
  226. package/dist/x/identity.js +1 -1
  227. package/dist/x/identity.min.js +1 -1
  228. package/dist/x/identity.mjs +1 -1
  229. package/dist/x/includes.es.js +1 -1
  230. package/dist/x/includes.es.min.js +1 -1
  231. package/dist/x/includes.js +1 -1
  232. package/dist/x/includes.min.js +1 -1
  233. package/dist/x/includes.mjs +1 -1
  234. package/dist/x/isDeepEqual.es.js +1 -1
  235. package/dist/x/isDeepEqual.es.min.js +1 -1
  236. package/dist/x/isDeepEqual.js +1 -1
  237. package/dist/x/isDeepEqual.min.js +1 -1
  238. package/dist/x/isDeepEqual.mjs +1 -1
  239. package/dist/x/isEmpty.es.js +1 -1
  240. package/dist/x/isEmpty.es.min.js +1 -1
  241. package/dist/x/isEmpty.js +1 -1
  242. package/dist/x/isEmpty.min.js +1 -1
  243. package/dist/x/isEmpty.mjs +1 -1
  244. package/dist/x/isEqual.es.js +1 -1
  245. package/dist/x/isEqual.es.min.js +1 -1
  246. package/dist/x/isEqual.js +1 -1
  247. package/dist/x/isEqual.min.js +1 -1
  248. package/dist/x/isEqual.mjs +1 -1
  249. package/dist/x/isFunction.es.js +1 -1
  250. package/dist/x/isFunction.es.min.js +1 -1
  251. package/dist/x/isFunction.js +1 -1
  252. package/dist/x/isFunction.min.js +1 -1
  253. package/dist/x/isFunction.mjs +1 -1
  254. package/dist/x/isIn.es.js +1 -1
  255. package/dist/x/isIn.es.min.js +1 -1
  256. package/dist/x/isIn.js +1 -1
  257. package/dist/x/isIn.min.js +1 -1
  258. package/dist/x/isIn.mjs +1 -1
  259. package/dist/x/isObject.es.js +1 -1
  260. package/dist/x/isObject.es.min.js +1 -1
  261. package/dist/x/isObject.js +1 -1
  262. package/dist/x/isObject.min.js +1 -1
  263. package/dist/x/isObject.mjs +1 -1
  264. package/dist/x/isString.es.js +1 -1
  265. package/dist/x/isString.es.min.js +1 -1
  266. package/dist/x/isString.js +1 -1
  267. package/dist/x/isString.min.js +1 -1
  268. package/dist/x/isString.mjs +1 -1
  269. package/dist/x/keys.es.js +1 -1
  270. package/dist/x/keys.es.min.js +1 -1
  271. package/dist/x/keys.js +1 -1
  272. package/dist/x/keys.min.js +1 -1
  273. package/dist/x/keys.mjs +1 -1
  274. package/dist/x/last.es.js +1 -1
  275. package/dist/x/last.es.min.js +1 -1
  276. package/dist/x/last.js +1 -1
  277. package/dist/x/last.min.js +1 -1
  278. package/dist/x/last.mjs +1 -1
  279. package/dist/x/maxBy.es.js +1 -1
  280. package/dist/x/maxBy.es.min.js +1 -1
  281. package/dist/x/maxBy.js +1 -1
  282. package/dist/x/maxBy.min.js +1 -1
  283. package/dist/x/maxBy.mjs +1 -1
  284. package/dist/x/noop.es.js +1 -1
  285. package/dist/x/noop.es.min.js +1 -1
  286. package/dist/x/noop.js +1 -1
  287. package/dist/x/noop.min.js +1 -1
  288. package/dist/x/noop.mjs +1 -1
  289. package/dist/x/pluck.es.js +1 -1
  290. package/dist/x/pluck.es.min.js +1 -1
  291. package/dist/x/pluck.js +1 -1
  292. package/dist/x/pluck.min.js +1 -1
  293. package/dist/x/pluck.mjs +1 -1
  294. package/dist/x/prepend.es.js +1 -1
  295. package/dist/x/prepend.es.min.js +1 -1
  296. package/dist/x/prepend.js +1 -1
  297. package/dist/x/prepend.min.js +1 -1
  298. package/dist/x/prepend.mjs +1 -1
  299. package/dist/x/size.es.js +1 -1
  300. package/dist/x/size.es.min.js +1 -1
  301. package/dist/x/size.js +1 -1
  302. package/dist/x/size.min.js +1 -1
  303. package/dist/x/size.mjs +1 -1
  304. package/dist/x/trace.es.js +1 -1
  305. package/dist/x/trace.es.min.js +1 -1
  306. package/dist/x/trace.js +1 -1
  307. package/dist/x/trace.min.js +1 -1
  308. package/dist/x/trace.mjs +1 -1
  309. package/dist/x/unionWith.es.js +1 -1
  310. package/dist/x/unionWith.es.min.js +1 -1
  311. package/dist/x/unionWith.js +1 -1
  312. package/dist/x/unionWith.min.js +1 -1
  313. package/dist/x/unionWith.mjs +1 -1
  314. package/dist/x/uniq.es.js +1 -1
  315. package/dist/x/uniq.es.min.js +1 -1
  316. package/dist/x/uniq.js +1 -1
  317. package/dist/x/uniq.min.js +1 -1
  318. package/dist/x/uniq.mjs +1 -1
  319. package/dist/x/unless.es.js +1 -1
  320. package/dist/x/unless.es.min.js +1 -1
  321. package/dist/x/unless.js +1 -1
  322. package/dist/x/unless.min.js +1 -1
  323. package/dist/x/unless.mjs +1 -1
  324. package/dist/x/values.es.js +1 -1
  325. package/dist/x/values.es.min.js +1 -1
  326. package/dist/x/values.js +1 -1
  327. package/dist/x/values.min.js +1 -1
  328. package/dist/x/values.mjs +1 -1
  329. package/dist/x/when.es.js +1 -1
  330. package/dist/x/when.es.min.js +1 -1
  331. package/dist/x/when.js +1 -1
  332. package/dist/x/when.min.js +1 -1
  333. package/dist/x/when.mjs +1 -1
  334. package/eq.js +9 -0
  335. package/es.js +1 -1
  336. package/every.js +12 -3
  337. package/filter.js +3 -7
  338. package/flatMap.js +8 -7
  339. package/get.js +16 -0
  340. package/gt.js +9 -0
  341. package/gte.js +9 -0
  342. package/index.js +1 -1
  343. package/lt.js +9 -0
  344. package/lte.js +9 -0
  345. package/map.js +7 -14
  346. package/monad/AsyncPool.js +0 -0
  347. package/monad/BrokenPromise.js +63 -0
  348. package/monad/BrokenPromise.test.js +22 -0
  349. package/monad/Cancellable.js +84 -0
  350. package/monad/Cancellable.memoryUsage.js +60 -0
  351. package/monad/Cancellable.test.js +20 -0
  352. package/monad/Function.js +0 -0
  353. package/monad/Instance.benchmark.js +378 -0
  354. package/monad/Instance.js +351 -0
  355. package/monad/Instance.test.js +445 -0
  356. package/monad/Mux.benchmark.js +29 -0
  357. package/monad/Mux.js +589 -0
  358. package/monad/Mux.test.js +512 -0
  359. package/monad/PossiblePromise.benchmark.js +87 -0
  360. package/monad/PossiblePromise.js +144 -0
  361. package/monad/PossiblePromise.test.js +89 -0
  362. package/monad/README.md +75 -0
  363. package/monad/Reducer.js +0 -0
  364. package/monad/Sequence.benchmark.js +42 -0
  365. package/monad/Sequence.js +36 -0
  366. package/monad/SpecScript.js +0 -0
  367. package/monad/Stack.js +0 -0
  368. package/monad/Struct.benchmark.js +154 -0
  369. package/monad/Struct.js +249 -0
  370. package/monad/Struct.test.js +237 -0
  371. package/package.json +2 -1
  372. package/reduce.js +1 -0
  373. package/set.js +13 -4
  374. package/some.js +15 -4
  375. package/switchCase.js +21 -2
  376. package/transform.js +8 -8
@@ -0,0 +1,445 @@
1
+ const assert = require('assert')
2
+ const Instance = require('./Instance')
3
+
4
+ describe('Instance', () => {
5
+ describe('new Instance(x any) -> Instance', () => {
6
+ it('x 1; Instance<1>', async () => {
7
+ assert.strictEqual(new Instance(1).constructor.name, 'Instance')
8
+ assert(new Instance(1).value === 1)
9
+ })
10
+ it('x null; Instance<null>', async () => {
11
+ assert.strictEqual(new Instance(null).constructor.name, 'Instance')
12
+ assert(new Instance(null).value === null)
13
+ })
14
+ it('x undefined; Instance<undefined>', async () => {
15
+ assert.strictEqual(new Instance(undefined).constructor.name, 'Instance')
16
+ assert(new Instance(undefined).value === undefined)
17
+ })
18
+ })
19
+
20
+ describe('<A any, B any>new Instance(x A).chain(f A=>Instance<B>) -> Instance<B>', () => {
21
+ it('x 1; f x=>x; 1', async () => {
22
+ assert.strictEqual(new Instance(1).chain(x => x), 1)
23
+ })
24
+ it('x 1; f x=>Instance(x + 1); Instance { 2 }', async () => {
25
+ assert.deepEqual(new Instance(1).chain(x => new Instance(x + 1)), new Instance(2))
26
+ })
27
+ })
28
+
29
+ describe('Instance.isInstance(x any) -> boolean', () => {
30
+ it('x 1; true', async () => {
31
+ assert.strictEqual(Instance.isInstance(1), true)
32
+ })
33
+ it('x null; false', async () => {
34
+ assert.strictEqual(Instance.isInstance(null), false)
35
+ })
36
+ it('x undefined; false', async () => {
37
+ assert.strictEqual(Instance.isInstance(undefined), false)
38
+ })
39
+ })
40
+
41
+ describe('Instance.is(x any, constructor function) -> boolean', () => {
42
+ it('x 1, constructor Number; true', async () => {
43
+ assert.strictEqual(Instance.is(1, Number), true)
44
+ })
45
+ it('x 1, constructor String; false', async () => {
46
+ assert.strictEqual(Instance.is(1, String), false)
47
+ })
48
+ it('x null; false', async () => {
49
+ assert.strictEqual(Instance.is(null, Object), false)
50
+ })
51
+ it('x undefined; false', async () => {
52
+ assert.strictEqual(Instance.is(undefined, Object), false)
53
+ })
54
+ })
55
+
56
+ describe('new Instance(x any).is(constructor function) -> boolean', () => {
57
+ it('x 1, constructor Number; true', async () => {
58
+ assert.strictEqual(new Instance(1).is(Number), true)
59
+ })
60
+ it('x 1, constructor String; false', async () => {
61
+ assert.strictEqual(new Instance(1).is(String), false)
62
+ })
63
+ })
64
+
65
+ describe('Instance.isString(x any) -> boolean', () => {
66
+ it('x \'hey\'; true', async () => {
67
+ assert.strictEqual(Instance.isString('hey'), true)
68
+ })
69
+ it('x 3; false', async () => {
70
+ assert.strictEqual(Instance.isString(3), false)
71
+ })
72
+ it('x null; false', async () => {
73
+ assert.strictEqual(Instance.isString(null), false)
74
+ })
75
+ it('x undefined; false', async () => {
76
+ assert.strictEqual(Instance.isString(undefined), false)
77
+ })
78
+ })
79
+
80
+ describe('new Instance(x any).isString() -> boolean', () => {
81
+ it('x \'hey\'; true', async () => {
82
+ assert.strictEqual(new Instance('hey').isString(), true)
83
+ })
84
+ it('x 3; false', async () => {
85
+ assert.strictEqual(new Instance(3).isString(), false)
86
+ })
87
+ })
88
+
89
+ describe('Instance.isNumber(x any) -> boolean', () => {
90
+ it('x 3; true', async () => {
91
+ assert.strictEqual(Instance.isNumber(3), true)
92
+ })
93
+ it('x true; false', async () => {
94
+ assert.strictEqual(Instance.isNumber(true), false)
95
+ })
96
+ it('x null; false', async () => {
97
+ assert.strictEqual(Instance.isNumber(null), false)
98
+ })
99
+ it('x undefined; false', async () => {
100
+ assert.strictEqual(Instance.isNumber(undefined), false)
101
+ })
102
+ })
103
+
104
+ describe('new Instance(x any).isNumber() -> boolean', () => {
105
+ it('x 3; true', async () => {
106
+ assert.strictEqual(new Instance(3).isNumber(), true)
107
+ })
108
+ it('x true; false', async () => {
109
+ assert.strictEqual(new Instance(false).isNumber(), false)
110
+ })
111
+ })
112
+
113
+ describe('Instance.isArray(x any) -> boolean', () => {
114
+ it('x [1, 2, 3]; true', async () => {
115
+ assert.strictEqual(Instance.isArray([1, 2, 3]), true)
116
+ })
117
+ it('x 1; false', async () => {
118
+ assert.strictEqual(Instance.isArray(1), false)
119
+ })
120
+ it('x null; false', async () => {
121
+ assert.strictEqual(Instance.isArray(null), false)
122
+ })
123
+ it('x undefined; false', async () => {
124
+ assert.strictEqual(Instance.isArray(undefined), false)
125
+ })
126
+ })
127
+
128
+ describe('new Instance(x any).isArray() -> boolean', () => {
129
+ it('x [1, 2, 3]; true', async () => {
130
+ assert.strictEqual(new Instance([1, 2, 3]).isArray(), true)
131
+ })
132
+ it('x 1; false', async () => {
133
+ assert.strictEqual(new Instance(1).isArray(), false)
134
+ })
135
+ })
136
+
137
+ describe('Instance.isObject(x any) -> boolean', () => {
138
+ it('x { a: 1, b: 2, c: 3 }; true', async () => {
139
+ assert.strictEqual(Instance.isObject({ a: 1, b: 2, c: 3 }), true)
140
+ })
141
+ it('x []; false', async () => {
142
+ assert.strictEqual(Instance.isObject([]), false)
143
+ })
144
+ it('x null; false', async () => {
145
+ assert.strictEqual(Instance.isObject(null), false)
146
+ })
147
+ it('x undefined; false', async () => {
148
+ assert.strictEqual(Instance.isObject(undefined), false)
149
+ })
150
+ })
151
+
152
+ describe('new Instance(x any).isObject() -> boolean', () => {
153
+ it('x { a: 1, b: 2, c: 3 }; true', async () => {
154
+ assert.strictEqual(new Instance({ a: 1, b: 2, c: 3 }).isObject(), true)
155
+ })
156
+ it('x []; false', async () => {
157
+ assert.strictEqual(new Instance([]).isObject(), false)
158
+ })
159
+ })
160
+
161
+ describe('Instance.isSet(x any) -> boolean', () => {
162
+ it('x Set<[1, 2, 3]>; true', async () => {
163
+ assert.strictEqual(Instance.isSet(new Set([1, 2, 3])), true)
164
+ })
165
+ it('x [1, 2, 3]; false', async () => {
166
+ assert.strictEqual(Instance.isSet([1, 2, 3]), false)
167
+ })
168
+ it('x null; false', async () => {
169
+ assert.strictEqual(Instance.isSet(null), false)
170
+ })
171
+ it('x undefined; false', async () => {
172
+ assert.strictEqual(Instance.isSet(undefined), false)
173
+ })
174
+ })
175
+
176
+ describe('new Instance(x any).isSet() -> boolean', () => {
177
+ it('x Set<[1, 2, 3]>; true', async () => {
178
+ assert.strictEqual(new Instance(new Set([1, 2, 3])).isSet(), true)
179
+ })
180
+ it('x [1, 2, 3]; false', async () => {
181
+ assert.strictEqual(new Instance([1, 2, 3]).isSet(), false)
182
+ })
183
+ })
184
+
185
+ describe('Instance.isMap(x any) -> boolean', () => {
186
+ it('x Map<[[1, true], [2, false], [3, true]]>; true', async () => {
187
+ const m = new Map([[1, true], [2, false], [3, true]])
188
+ assert.strictEqual(Instance.isMap(m), true)
189
+ })
190
+ it('x { a: 1, b: 2, c: 3 }; false', async () => {
191
+ assert.strictEqual(Instance.isMap({ a: 1, b: 2, c: 3 }), false)
192
+ })
193
+ it('x null; false', async () => {
194
+ assert.strictEqual(Instance.isMap(null), false)
195
+ })
196
+ it('x undefined; false', async () => {
197
+ assert.strictEqual(Instance.isMap(undefined), false)
198
+ })
199
+ })
200
+
201
+ describe('new Instance(x any).isMap() -> boolean', () => {
202
+ it('x Map<[[1, true], [2, false], [3, true]]>; true', async () => {
203
+ const m = new Map([[1, true], [2, false], [3, true]])
204
+ assert.strictEqual(new Instance(m).isMap(), true)
205
+ })
206
+ it('x { a: 1, b: 2, c: 3 }; false', async () => {
207
+ assert.strictEqual(new Instance({ a: 1, b: 2, c: 3 }).isMap(), false)
208
+ })
209
+ })
210
+
211
+ describe('Instance.isIterable(x any) -> boolean', () => {
212
+ it('x [1, 2, 3]; true', async () => {
213
+ assert.strictEqual(Instance.isIterable([1, 2, 3]), true)
214
+ })
215
+ it('x { a: 1, b: 2, c: 3 }; false', async () => {
216
+ assert.strictEqual(Instance.isIterable({ a: 1, b: 2, c: 3 }), false)
217
+ })
218
+ it('x null; false', async () => {
219
+ assert.strictEqual(Instance.isIterable(null), false)
220
+ })
221
+ it('x undefined; false', async () => {
222
+ assert.strictEqual(Instance.isIterable(undefined), false)
223
+ })
224
+ })
225
+
226
+ describe('new Instance(x any).isIterable() -> boolean', () => {
227
+ it('x [1, 2, 3]; true', async () => {
228
+ assert.strictEqual(new Instance([1, 2, 3]).isIterable(), true)
229
+ })
230
+ it('x { a: 1, b: 2, c: 3 }; false', async () => {
231
+ assert.strictEqual(new Instance({ a: 1, b: 2, c: 3 }).isIterable(), false)
232
+ })
233
+ })
234
+
235
+ describe('Instance.isAsyncIterable(x any) -> boolean', () => {
236
+ const createAsyncIterable123 = async function*() {
237
+ yield 1; yield 2; yield 3
238
+ }
239
+ it('x AsyncIterable<[1, 2, 3]>; true', async () => {
240
+ assert.strictEqual(Instance.isAsyncIterable(createAsyncIterable123()), true)
241
+ })
242
+ it('x [1, 2, 3]; false', async () => {
243
+ assert.strictEqual(Instance.isAsyncIterable([1, 2, 3]), false)
244
+ })
245
+ it('x null; false', async () => {
246
+ assert.strictEqual(Instance.isAsyncIterable(null), false)
247
+ })
248
+ it('x undefined; false', async () => {
249
+ assert.strictEqual(Instance.isAsyncIterable(undefined), false)
250
+ })
251
+ })
252
+
253
+ describe('new Instance(x any).isAsyncIterable() -> boolean', () => {
254
+ const createAsyncIterable123 = async function*() {
255
+ yield 1; yield 2; yield 3
256
+ }
257
+ it('x AsyncIterable<[1, 2, 3]>; true', async () => {
258
+ assert.strictEqual(new Instance(createAsyncIterable123()).isAsyncIterable(), true)
259
+ })
260
+ it('x [1, 2, 3]; false', async () => {
261
+ assert.strictEqual(new Instance([1, 2, 3]).isAsyncIterable(), false)
262
+ })
263
+ })
264
+
265
+ describe('Instance.isFunction(x any) -> boolean', () => {
266
+ it('x function; true', async () => {
267
+ assert.strictEqual(Instance.isFunction(function(){}), true)
268
+ })
269
+ it('x AsyncFunction; true', async () => {
270
+ assert.strictEqual(Instance.isFunction(async function(){}), true)
271
+ })
272
+ it('x ()=>{}; true', async () => {
273
+ assert.strictEqual(Instance.isFunction(() => {}), true)
274
+ })
275
+ it('x async ()=>{}; true', async () => {
276
+ assert.strictEqual(Instance.isFunction(async () => {}), true)
277
+ })
278
+ it('x GeneratorFunction; true', async () => {
279
+ assert.strictEqual(Instance.isFunction(function*(){}), true)
280
+ })
281
+ it('x AsyncGeneratorFunction; true', async () => {
282
+ assert.strictEqual(Instance.isFunction(async function*(){}), true)
283
+ })
284
+ it('x 1; false', async () => {
285
+ assert.strictEqual(Instance.isFunction(1), false)
286
+ })
287
+ it('x null; false', async () => {
288
+ assert.strictEqual(Instance.isFunction(null), false)
289
+ })
290
+ it('x undefined; false', async () => {
291
+ assert.strictEqual(Instance.isFunction(undefined), false)
292
+ })
293
+ })
294
+
295
+ describe('new Instance(x any).isFunction() -> boolean', () => {
296
+ it('x function; true', async () => {
297
+ assert.strictEqual(new Instance(function(){}).isFunction(), true)
298
+ })
299
+ it('x AsyncFunction; true', async () => {
300
+ assert.strictEqual(new Instance(async function(){}).isFunction(), true)
301
+ })
302
+ it('x ()=>{}; true', async () => {
303
+ assert.strictEqual(new Instance(() => {}).isFunction(), true)
304
+ })
305
+ it('x async ()=>{}; true', async () => {
306
+ assert.strictEqual(new Instance(async () => {}).isFunction(), true)
307
+ })
308
+ it('x GeneratorFunction; true', async () => {
309
+ assert.strictEqual(new Instance(function*(){}).isFunction(), true)
310
+ })
311
+ it('x AsyncGeneratorFunction; true', async () => {
312
+ assert.strictEqual(new Instance(async function*(){}).isFunction(), true)
313
+ })
314
+ it('x 1; false', async () => {
315
+ assert.strictEqual(new Instance(1).isFunction(), false)
316
+ })
317
+ })
318
+
319
+ describe('Instance.isReadable(x any) -> boolean', () => {
320
+ it('x { read: function }; true', async () => {
321
+ assert.strictEqual(Instance.isReadable({ read: function(){} }), true)
322
+ })
323
+ it('x function; false', async () => {
324
+ assert.strictEqual(Instance.isReadable(function(){}), false)
325
+ })
326
+ it('x null; false', async () => {
327
+ assert.strictEqual(Instance.isReadable(null), false)
328
+ })
329
+ it('x undefined; false', async () => {
330
+ assert.strictEqual(Instance.isReadable(undefined), false)
331
+ })
332
+ })
333
+
334
+ describe('new Instance(x any).isReadable() -> boolean', () => {
335
+ it('x { read: function }; true', async () => {
336
+ assert.strictEqual(new Instance({ read: function(){} }).isReadable(), true)
337
+ })
338
+ it('x function; false', async () => {
339
+ assert.strictEqual(new Instance(function(){}).isReadable(), false)
340
+ })
341
+ })
342
+
343
+ describe('Instance.isWritable(x any) -> boolean', () => {
344
+ it('x { write: function }; true', async () => {
345
+ assert.strictEqual(Instance.isWritable({ write: function(){} }), true)
346
+ })
347
+ it('x function; false', async () => {
348
+ assert.strictEqual(Instance.isWritable(function(){}), false)
349
+ })
350
+ it('x null; false', async () => {
351
+ assert.strictEqual(Instance.isWritable(null), false)
352
+ })
353
+ it('x undefined; false', async () => {
354
+ assert.strictEqual(Instance.isWritable(undefined), false)
355
+ })
356
+ })
357
+
358
+ describe('new Instance(x any).isWritable() -> boolean', () => {
359
+ it('x { write: function }; true', async () => {
360
+ assert.strictEqual(new Instance({ write: function(){} }).isWritable(), true)
361
+ })
362
+ it('x function; false', async () => {
363
+ assert.strictEqual(new Instance(function(){}).isWritable(), false)
364
+ })
365
+ })
366
+
367
+ describe('Instance.isPromise(x any) -> boolean', () => {
368
+ it('x { then: function }; true', async () => {
369
+ assert.strictEqual(Instance.isPromise({ then: function(){} }), true)
370
+ })
371
+ it('x Promise.resolve(); true', async () => {
372
+ assert.strictEqual(Instance.isPromise(Promise.resolve()), true)
373
+ })
374
+ it('x function; false', async () => {
375
+ assert.strictEqual(Instance.isPromise(function(){}), false)
376
+ })
377
+ it('x null; false', async () => {
378
+ assert.strictEqual(Instance.isPromise(null), false)
379
+ })
380
+ it('x undefined; false', async () => {
381
+ assert.strictEqual(Instance.isPromise(undefined), false)
382
+ })
383
+ })
384
+
385
+ describe('new Instance(x any).isPromise() -> boolean', () => {
386
+ it('x { then: function }; true', async () => {
387
+ assert.strictEqual(new Instance({ then: function(){} }).isPromise(), true)
388
+ })
389
+ it('x Promise.resolve(); true', async () => {
390
+ assert.strictEqual(new Instance(Promise.resolve()).isPromise(), true)
391
+ })
392
+ it('x function; false', async () => {
393
+ assert.strictEqual(new Instance(function(){}).isPromise(), false)
394
+ })
395
+ })
396
+
397
+ describe('Instance.isTypedArray(x any) -> boolean', () => {
398
+ it('x TypedArray<[1, 2, 3]>; true', async () => {
399
+ assert.strictEqual(Instance.isTypedArray(new Uint8Array([1, 2, 3])), true)
400
+ assert.strictEqual(Instance.isTypedArray(new Int8Array([1, 2, 3])), true)
401
+ assert.strictEqual(Instance.isTypedArray(new Uint16Array([1, 2, 3])), true)
402
+ assert.strictEqual(Instance.isTypedArray(new Int16Array([1, 2, 3])), true)
403
+ assert.strictEqual(Instance.isTypedArray(new Uint32Array([1, 2, 3])), true)
404
+ assert.strictEqual(Instance.isTypedArray(new Int32Array([1, 2, 3])), true)
405
+ assert.strictEqual(Instance.isTypedArray(new Float32Array([1, 2, 3])), true)
406
+ assert.strictEqual(Instance.isTypedArray(new Float64Array([1, 2, 3])), true)
407
+ assert.strictEqual(Instance.isTypedArray(new BigUint64Array([1n, 2n, 3n])), true)
408
+ assert.strictEqual(Instance.isTypedArray(new BigInt64Array([1n, 2n, 3n])), true)
409
+ })
410
+ it('x [1, 2, 3]; false', async () => {
411
+ assert.strictEqual(Instance.isTypedArray([1, 2, 3]), false)
412
+ })
413
+ it('x ArrayBuffer; false', async () => {
414
+ assert.strictEqual(Instance.isTypedArray(new ArrayBuffer()), false)
415
+ })
416
+ it('x null; false', async () => {
417
+ assert.strictEqual(Instance.isTypedArray(null), false)
418
+ })
419
+ it('x undefined; false', async () => {
420
+ assert.strictEqual(Instance.isTypedArray(undefined), false)
421
+ })
422
+ })
423
+
424
+ describe('new Instance(x any).isTypedArray() -> boolean', () => {
425
+ it('x Uint8Array<[1, 2, 3]>; true', async () => {
426
+ assert.strictEqual(new Instance(new Uint8Array([1, 2, 3])).isTypedArray(), true)
427
+ assert.strictEqual(new Instance(new Uint8Array([1, 2, 3])).isTypedArray(), true)
428
+ assert.strictEqual(new Instance(new Int8Array([1, 2, 3])).isTypedArray(), true)
429
+ assert.strictEqual(new Instance(new Uint16Array([1, 2, 3])).isTypedArray(), true)
430
+ assert.strictEqual(new Instance(new Int16Array([1, 2, 3])).isTypedArray(), true)
431
+ assert.strictEqual(new Instance(new Uint32Array([1, 2, 3])).isTypedArray(), true)
432
+ assert.strictEqual(new Instance(new Int32Array([1, 2, 3])).isTypedArray(), true)
433
+ assert.strictEqual(new Instance(new Float32Array([1, 2, 3])).isTypedArray(), true)
434
+ assert.strictEqual(new Instance(new Float64Array([1, 2, 3])).isTypedArray(), true)
435
+ assert.strictEqual(new Instance(new BigUint64Array([1n, 2n, 3n])).isTypedArray(), true)
436
+ assert.strictEqual(new Instance(new BigInt64Array([1n, 2n, 3n])).isTypedArray(), true)
437
+ })
438
+ it('x [1, 2, 3]; false', async () => {
439
+ assert.strictEqual(new Instance([1, 2, 3]).isTypedArray(), false)
440
+ })
441
+ it('x ArrayBuffer; false', () => {
442
+ assert.strictEqual(new Instance(new ArrayBuffer()).isTypedArray(), false)
443
+ })
444
+ })
445
+ })
@@ -0,0 +1,29 @@
1
+ const timeInLoop = require('../x/timeInLoop')
2
+ const Mux = require('./Mux')
3
+ const _ = require('lodash')
4
+
5
+ /**
6
+ * @name Mux.flatten
7
+ *
8
+ * @benchmark
9
+ * Mux.flatten(nested): 1e+5: 25.588ms
10
+ * _.flatten(nested): 1e+5: 28.935ms
11
+ */
12
+
13
+ const muxConcat = Mux.concat
14
+
15
+ const nested = [[1], 2, [[3]]]
16
+
17
+ const muxConcatFlatten = arr => {
18
+ const y = []
19
+ for (const item of muxConcat(arr)) y.push(item)
20
+ return y
21
+ }
22
+
23
+ const muxFlatten = Mux.flatten
24
+
25
+ const _flatten = _.flatten
26
+
27
+ // timeInLoop('Mux.flatten(nested)', 1e5, () => { muxFlatten(nested) })
28
+
29
+ // timeInLoop('_.flatten(nested)', 1e5, () => { _flatten(nested) })