@nejs/basic-extensions 2.21.5 → 2.22.6

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 (266) hide show
  1. package/README.md +78 -4
  2. package/dist/@nejs/basic-extensions.bundle.2.22.6.js +25 -0
  3. package/dist/@nejs/basic-extensions.bundle.2.22.6.js.map +7 -0
  4. package/dist/cjs/classes/index.cjs +11129 -0
  5. package/dist/cjs/classes/index.cjs.map +7 -0
  6. package/dist/cjs/index.cjs +15191 -0
  7. package/dist/cjs/index.cjs.map +7 -0
  8. package/dist/cjs/utils/index.cjs +3954 -0
  9. package/dist/cjs/utils/index.cjs.map +7 -0
  10. package/dist/esm/basic-extensions.mjs +25 -0
  11. package/dist/esm/basic-extensions.mjs.map +7 -0
  12. package/package.json +16 -22
  13. package/repl.bootstrap.js +4 -7
  14. package/repl.history +26 -26
  15. package/src/classes/enumeration.js +466 -0
  16. package/src/classes/index.js +5 -1
  17. package/src/index.js +3 -1
  18. package/src/regular.expression.extensions.js +0 -35
  19. package/src/utils/toolkit.js +699 -516
  20. package/tests/arrayextensions.test.js +3 -3
  21. package/tests/index.test.js +3 -1
  22. package/tests/newClasses/asyncIterable.test.js +3 -3
  23. package/tests/newClasses/deferred.test.js +3 -3
  24. package/tests/newClasses/descriptor.test.js +3 -3
  25. package/tests/newClasses/iterable.test.js +3 -3
  26. package/tests/newClasses/refmap.test.js +3 -3
  27. package/tests/newClasses/refset.test.js +3 -3
  28. package/tests/objectextensions.test.js +3 -3
  29. package/tests/setextensions.test.js +3 -3
  30. package/tests/stringextensions.test.js +3 -2
  31. package/tests/utils/descriptor.utils.test.js +1 -1
  32. package/tests/utils/toolkit.test.js +429 -163
  33. package/.esdoc.json +0 -9
  34. package/.vscode/settings.json +0 -5
  35. package/bin/build +0 -27
  36. package/bin/clean +0 -14
  37. package/bin/esbuild +0 -91
  38. package/bin/fixup +0 -13
  39. package/bin/repl.basics.js +0 -584
  40. package/bin/repl.signature.js +0 -63
  41. package/bin/version +0 -100
  42. package/dist/@nejs/basic-extensions.bundle.2.21.5.js +0 -25
  43. package/dist/@nejs/basic-extensions.bundle.2.21.5.js.map +0 -7
  44. package/dist/cjs/array.extensions.d.ts +0 -39
  45. package/dist/cjs/array.extensions.js +0 -477
  46. package/dist/cjs/array.extensions.js.map +0 -1
  47. package/dist/cjs/big.int.extension.d.ts +0 -31
  48. package/dist/cjs/big.int.extension.js +0 -273
  49. package/dist/cjs/big.int.extension.js.map +0 -1
  50. package/dist/cjs/classes/asyncIterable.d.ts +0 -126
  51. package/dist/cjs/classes/asyncIterable.js +0 -209
  52. package/dist/cjs/classes/asyncIterable.js.map +0 -1
  53. package/dist/cjs/classes/deferred.d.ts +0 -146
  54. package/dist/cjs/classes/deferred.js +0 -291
  55. package/dist/cjs/classes/deferred.js.map +0 -1
  56. package/dist/cjs/classes/descriptor.d.ts +0 -334
  57. package/dist/cjs/classes/descriptor.js +0 -537
  58. package/dist/cjs/classes/descriptor.js.map +0 -1
  59. package/dist/cjs/classes/enum.d.ts +0 -50
  60. package/dist/cjs/classes/enum.js +0 -405
  61. package/dist/cjs/classes/enum.js.map +0 -1
  62. package/dist/cjs/classes/index.d.ts +0 -15
  63. package/dist/cjs/classes/index.js +0 -63
  64. package/dist/cjs/classes/index.js.map +0 -1
  65. package/dist/cjs/classes/introspector.d.ts +0 -20
  66. package/dist/cjs/classes/introspector.js +0 -130
  67. package/dist/cjs/classes/introspector.js.map +0 -1
  68. package/dist/cjs/classes/iterable.d.ts +0 -169
  69. package/dist/cjs/classes/iterable.js +0 -268
  70. package/dist/cjs/classes/iterable.js.map +0 -1
  71. package/dist/cjs/classes/param.parser.d.ts +0 -221
  72. package/dist/cjs/classes/param.parser.js +0 -242
  73. package/dist/cjs/classes/param.parser.js.map +0 -1
  74. package/dist/cjs/classes/pluggable.proxy.d.ts +0 -153
  75. package/dist/cjs/classes/pluggable.proxy.js +0 -444
  76. package/dist/cjs/classes/pluggable.proxy.js.map +0 -1
  77. package/dist/cjs/classes/property.d.ts +0 -79
  78. package/dist/cjs/classes/property.js +0 -284
  79. package/dist/cjs/classes/property.js.map +0 -1
  80. package/dist/cjs/classes/refmap.d.ts +0 -238
  81. package/dist/cjs/classes/refmap.js +0 -421
  82. package/dist/cjs/classes/refmap.js.map +0 -1
  83. package/dist/cjs/classes/refset.d.ts +0 -186
  84. package/dist/cjs/classes/refset.js +0 -370
  85. package/dist/cjs/classes/refset.js.map +0 -1
  86. package/dist/cjs/classes/symkeys.d.ts +0 -349
  87. package/dist/cjs/classes/symkeys.js +0 -510
  88. package/dist/cjs/classes/symkeys.js.map +0 -1
  89. package/dist/cjs/classes/type.d.ts +0 -56
  90. package/dist/cjs/classes/type.js +0 -405
  91. package/dist/cjs/classes/type.js.map +0 -1
  92. package/dist/cjs/function.extensions.d.ts +0 -12
  93. package/dist/cjs/function.extensions.js +0 -758
  94. package/dist/cjs/function.extensions.js.map +0 -1
  95. package/dist/cjs/global.this.d.ts +0 -2
  96. package/dist/cjs/global.this.js +0 -300
  97. package/dist/cjs/global.this.js.map +0 -1
  98. package/dist/cjs/index.d.ts +0 -31
  99. package/dist/cjs/index.js +0 -228
  100. package/dist/cjs/index.js.map +0 -1
  101. package/dist/cjs/json.extensions.d.ts +0 -2
  102. package/dist/cjs/json.extensions.js +0 -109
  103. package/dist/cjs/json.extensions.js.map +0 -1
  104. package/dist/cjs/map.extensions.d.ts +0 -3
  105. package/dist/cjs/map.extensions.js +0 -143
  106. package/dist/cjs/map.extensions.js.map +0 -1
  107. package/dist/cjs/math.extension.d.ts +0 -14
  108. package/dist/cjs/math.extension.js +0 -71
  109. package/dist/cjs/math.extension.js.map +0 -1
  110. package/dist/cjs/number.extension.d.ts +0 -44
  111. package/dist/cjs/number.extension.js +0 -278
  112. package/dist/cjs/number.extension.js.map +0 -1
  113. package/dist/cjs/object.extensions.d.ts +0 -33
  114. package/dist/cjs/object.extensions.js +0 -1091
  115. package/dist/cjs/object.extensions.js.map +0 -1
  116. package/dist/cjs/package.json +0 -3
  117. package/dist/cjs/proxy.extensions.d.ts +0 -2
  118. package/dist/cjs/proxy.extensions.js +0 -207
  119. package/dist/cjs/proxy.extensions.js.map +0 -1
  120. package/dist/cjs/reflect.extensions.d.ts +0 -14
  121. package/dist/cjs/reflect.extensions.js +0 -316
  122. package/dist/cjs/reflect.extensions.js.map +0 -1
  123. package/dist/cjs/regular.expression.extensions.d.ts +0 -2
  124. package/dist/cjs/regular.expression.extensions.js +0 -423
  125. package/dist/cjs/regular.expression.extensions.js.map +0 -1
  126. package/dist/cjs/set.extensions.d.ts +0 -40
  127. package/dist/cjs/set.extensions.js +0 -355
  128. package/dist/cjs/set.extensions.js.map +0 -1
  129. package/dist/cjs/string.extensions.d.ts +0 -23
  130. package/dist/cjs/string.extensions.js +0 -704
  131. package/dist/cjs/string.extensions.js.map +0 -1
  132. package/dist/cjs/symbol.extensions.d.ts +0 -11
  133. package/dist/cjs/symbol.extensions.js +0 -735
  134. package/dist/cjs/symbol.extensions.js.map +0 -1
  135. package/dist/cjs/utils/copy.object.d.ts +0 -408
  136. package/dist/cjs/utils/copy.object.js +0 -720
  137. package/dist/cjs/utils/copy.object.js.map +0 -1
  138. package/dist/cjs/utils/descriptor.utils.d.ts +0 -298
  139. package/dist/cjs/utils/descriptor.utils.js +0 -889
  140. package/dist/cjs/utils/descriptor.utils.js.map +0 -1
  141. package/dist/cjs/utils/index.d.ts +0 -75
  142. package/dist/cjs/utils/index.js +0 -61
  143. package/dist/cjs/utils/index.js.map +0 -1
  144. package/dist/cjs/utils/stdout.d.ts +0 -742
  145. package/dist/cjs/utils/stdout.js +0 -1042
  146. package/dist/cjs/utils/stdout.js.map +0 -1
  147. package/dist/cjs/utils/toolkit.d.ts +0 -1898
  148. package/dist/cjs/utils/toolkit.js +0 -1378
  149. package/dist/cjs/utils/toolkit.js.map +0 -1
  150. package/dist/cjs/weakref.extensions.d.ts +0 -2
  151. package/dist/cjs/weakref.extensions.js +0 -19
  152. package/dist/cjs/weakref.extensions.js.map +0 -1
  153. package/dist/mjs/array.extensions.d.ts +0 -39
  154. package/dist/mjs/array.extensions.js +0 -474
  155. package/dist/mjs/array.extensions.js.map +0 -1
  156. package/dist/mjs/big.int.extension.d.ts +0 -31
  157. package/dist/mjs/big.int.extension.js +0 -270
  158. package/dist/mjs/big.int.extension.js.map +0 -1
  159. package/dist/mjs/classes/asyncIterable.d.ts +0 -126
  160. package/dist/mjs/classes/asyncIterable.js +0 -204
  161. package/dist/mjs/classes/asyncIterable.js.map +0 -1
  162. package/dist/mjs/classes/deferred.d.ts +0 -146
  163. package/dist/mjs/classes/deferred.js +0 -287
  164. package/dist/mjs/classes/deferred.js.map +0 -1
  165. package/dist/mjs/classes/descriptor.d.ts +0 -334
  166. package/dist/mjs/classes/descriptor.js +0 -533
  167. package/dist/mjs/classes/descriptor.js.map +0 -1
  168. package/dist/mjs/classes/enum.d.ts +0 -50
  169. package/dist/mjs/classes/enum.js +0 -400
  170. package/dist/mjs/classes/enum.js.map +0 -1
  171. package/dist/mjs/classes/index.d.ts +0 -15
  172. package/dist/mjs/classes/index.js +0 -46
  173. package/dist/mjs/classes/index.js.map +0 -1
  174. package/dist/mjs/classes/introspector.d.ts +0 -20
  175. package/dist/mjs/classes/introspector.js +0 -126
  176. package/dist/mjs/classes/introspector.js.map +0 -1
  177. package/dist/mjs/classes/iterable.d.ts +0 -169
  178. package/dist/mjs/classes/iterable.js +0 -263
  179. package/dist/mjs/classes/iterable.js.map +0 -1
  180. package/dist/mjs/classes/param.parser.d.ts +0 -221
  181. package/dist/mjs/classes/param.parser.js +0 -238
  182. package/dist/mjs/classes/param.parser.js.map +0 -1
  183. package/dist/mjs/classes/pluggable.proxy.d.ts +0 -153
  184. package/dist/mjs/classes/pluggable.proxy.js +0 -438
  185. package/dist/mjs/classes/pluggable.proxy.js.map +0 -1
  186. package/dist/mjs/classes/property.d.ts +0 -79
  187. package/dist/mjs/classes/property.js +0 -280
  188. package/dist/mjs/classes/property.js.map +0 -1
  189. package/dist/mjs/classes/refmap.d.ts +0 -238
  190. package/dist/mjs/classes/refmap.js +0 -417
  191. package/dist/mjs/classes/refmap.js.map +0 -1
  192. package/dist/mjs/classes/refset.d.ts +0 -186
  193. package/dist/mjs/classes/refset.js +0 -366
  194. package/dist/mjs/classes/refset.js.map +0 -1
  195. package/dist/mjs/classes/symkeys.d.ts +0 -349
  196. package/dist/mjs/classes/symkeys.js +0 -506
  197. package/dist/mjs/classes/symkeys.js.map +0 -1
  198. package/dist/mjs/classes/type.d.ts +0 -56
  199. package/dist/mjs/classes/type.js +0 -401
  200. package/dist/mjs/classes/type.js.map +0 -1
  201. package/dist/mjs/function.extensions.d.ts +0 -12
  202. package/dist/mjs/function.extensions.js +0 -755
  203. package/dist/mjs/function.extensions.js.map +0 -1
  204. package/dist/mjs/global.this.d.ts +0 -2
  205. package/dist/mjs/global.this.js +0 -264
  206. package/dist/mjs/global.this.js.map +0 -1
  207. package/dist/mjs/index.d.ts +0 -31
  208. package/dist/mjs/index.js +0 -206
  209. package/dist/mjs/index.js.map +0 -1
  210. package/dist/mjs/json.extensions.d.ts +0 -2
  211. package/dist/mjs/json.extensions.js +0 -106
  212. package/dist/mjs/json.extensions.js.map +0 -1
  213. package/dist/mjs/map.extensions.d.ts +0 -3
  214. package/dist/mjs/map.extensions.js +0 -140
  215. package/dist/mjs/map.extensions.js.map +0 -1
  216. package/dist/mjs/math.extension.d.ts +0 -14
  217. package/dist/mjs/math.extension.js +0 -68
  218. package/dist/mjs/math.extension.js.map +0 -1
  219. package/dist/mjs/number.extension.d.ts +0 -44
  220. package/dist/mjs/number.extension.js +0 -275
  221. package/dist/mjs/number.extension.js.map +0 -1
  222. package/dist/mjs/object.extensions.d.ts +0 -33
  223. package/dist/mjs/object.extensions.js +0 -1088
  224. package/dist/mjs/object.extensions.js.map +0 -1
  225. package/dist/mjs/package.json +0 -3
  226. package/dist/mjs/proxy.extensions.d.ts +0 -2
  227. package/dist/mjs/proxy.extensions.js +0 -204
  228. package/dist/mjs/proxy.extensions.js.map +0 -1
  229. package/dist/mjs/reflect.extensions.d.ts +0 -14
  230. package/dist/mjs/reflect.extensions.js +0 -313
  231. package/dist/mjs/reflect.extensions.js.map +0 -1
  232. package/dist/mjs/regular.expression.extensions.d.ts +0 -2
  233. package/dist/mjs/regular.expression.extensions.js +0 -420
  234. package/dist/mjs/regular.expression.extensions.js.map +0 -1
  235. package/dist/mjs/set.extensions.d.ts +0 -40
  236. package/dist/mjs/set.extensions.js +0 -352
  237. package/dist/mjs/set.extensions.js.map +0 -1
  238. package/dist/mjs/string.extensions.d.ts +0 -23
  239. package/dist/mjs/string.extensions.js +0 -701
  240. package/dist/mjs/string.extensions.js.map +0 -1
  241. package/dist/mjs/symbol.extensions.d.ts +0 -11
  242. package/dist/mjs/symbol.extensions.js +0 -732
  243. package/dist/mjs/symbol.extensions.js.map +0 -1
  244. package/dist/mjs/utils/copy.object.d.ts +0 -408
  245. package/dist/mjs/utils/copy.object.js +0 -702
  246. package/dist/mjs/utils/copy.object.js.map +0 -1
  247. package/dist/mjs/utils/descriptor.utils.d.ts +0 -298
  248. package/dist/mjs/utils/descriptor.utils.js +0 -875
  249. package/dist/mjs/utils/descriptor.utils.js.map +0 -1
  250. package/dist/mjs/utils/index.d.ts +0 -75
  251. package/dist/mjs/utils/index.js +0 -45
  252. package/dist/mjs/utils/index.js.map +0 -1
  253. package/dist/mjs/utils/stdout.d.ts +0 -742
  254. package/dist/mjs/utils/stdout.js +0 -1037
  255. package/dist/mjs/utils/stdout.js.map +0 -1
  256. package/dist/mjs/utils/toolkit.d.ts +0 -1898
  257. package/dist/mjs/utils/toolkit.js +0 -1373
  258. package/dist/mjs/utils/toolkit.js.map +0 -1
  259. package/dist/mjs/weakref.extensions.d.ts +0 -2
  260. package/dist/mjs/weakref.extensions.js +0 -16
  261. package/dist/mjs/weakref.extensions.js.map +0 -1
  262. package/jsdoc-config.json +0 -31
  263. package/tsconfig.base.json +0 -28
  264. package/tsconfig.cjs.json +0 -8
  265. package/tsconfig.esm.json +0 -8
  266. package/vitest.config.js +0 -7
@@ -1,223 +1,489 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { is, si, has, as } from '../../dist/cjs/index.js';
1
+ import { describe, it, expect } from 'vitest'
2
+ import { is, si, has, as } from '../../src/index.js'
3
3
 
4
4
  describe('is utility functions', () => {
5
- it('should correctly identify types', () => {
6
- expect(is.a(42, 'number')).toBe(true);
7
- expect(is.a(new Date(), Date)).toBe(true);
8
- expect(is.a('string', Number)).toBe(false);
9
- });
5
+ it('should correctly identify types via is.a', () => {
6
+ expect(is.a(42, 'number')).toBe(true)
7
+ expect(is.a(new Date(), Date)).toBe(true)
8
+ expect(is.a('string', Number)).toBe(false)
9
+ })
10
10
 
11
11
  it('should correctly identify accessor descriptors', () => {
12
- expect(is.accessorDescriptor({ get: () => 42, set: () => {} })).toBe(true);
13
- expect(is.accessorDescriptor({ value: 42, writable: true })).toBe(false);
14
- });
12
+ expect(is.accessorDescriptor({ get: () => 42, set: () => {} })).toBe(true)
13
+ expect(is.accessorDescriptor({ get: () => 42 })).toBe(true)
14
+ expect(is.accessorDescriptor({ value: 42, writable: true })).toBe(false)
15
+ expect(is.accessorDescriptor({ value: 42, get: () => 42 })).toBe(false)
16
+ expect(is.accessorDescriptor(null)).toBe(false)
17
+ })
15
18
 
16
19
  it('should correctly identify arrays', () => {
17
- expect(is.array([1, 2, 3])).toBe(true);
18
- expect(is.array('string')).toBe(false);
19
- });
20
+ expect(is.array([1, 2, 3])).toBe(true)
21
+ expect(is.array([])).toBe(true)
22
+ expect(is.array('string')).toBe(false)
23
+ expect(is.array(null)).toBe(false)
24
+ })
20
25
 
21
26
  it('should correctly identify bigints', () => {
22
- expect(is.bigint(123n)).toBe(true);
23
- expect(is.bigint(123)).toBe(false);
24
- });
27
+ expect(is.bigint(123n)).toBe(true)
28
+ expect(is.bigint(0n)).toBe(true)
29
+ expect(is.bigint(123)).toBe(false)
30
+ expect(is.bigint('123')).toBe(false)
31
+ })
25
32
 
26
33
  it('should correctly identify booleans', () => {
27
- expect(is.boolean(true)).toBe(true);
28
- expect(is.boolean(false)).toBe(true);
29
- expect(is.boolean(1)).toBe(false);
30
- });
34
+ expect(is.boolean(true)).toBe(true)
35
+ expect(is.boolean(false)).toBe(true)
36
+ expect(is.boolean(1)).toBe(false)
37
+ expect(is.boolean('true')).toBe(false)
38
+ expect(is.boolean(null)).toBe(false)
39
+ })
40
+
41
+ it('should correctly identify callables', () => {
42
+ expect(is.callable(function() {})).toBe(true)
43
+ expect(is.callable(() => {})).toBe(true)
44
+ expect(is.callable(class Foo {})).toBe(true)
45
+ expect(is.callable(123)).toBe(false)
46
+ expect(is.callable(null)).toBe(false)
47
+ })
48
+
49
+ it('should correctly identify callable descriptors', () => {
50
+ expect(is.callableDescriptor({ get: function() {} })).toBe(true)
51
+ expect(is.callableDescriptor({ set: function() {} })).toBe(true)
52
+ expect(is.callableDescriptor({ value: function() {} })).toBe(true)
53
+ expect(is.callableDescriptor({ value: 42 })).toBe(false)
54
+ expect(is.callableDescriptor(123)).toBe(false)
55
+ const object = { get name() { return 'Brie' } }
56
+ const descriptor = Object.getOwnPropertyDescriptor(object, 'name')
57
+ expect(is.callableDescriptor(object)).toBe(false)
58
+ expect(is.callableDescriptor(descriptor)).toBe(true)
59
+ })
60
+
61
+ it('should correctly identify data descriptors', () => {
62
+ expect(is.dataDescriptor({ value: 42, writable: true })).toBe(true)
63
+ expect(is.dataDescriptor({ value: 42 })).toBe(true)
64
+ expect(is.dataDescriptor({ get: () => 42, set: () => {} })).toBe(false)
65
+ expect(is.dataDescriptor({ value: 42, get: () => 42 })).toBe(false)
66
+ expect(is.dataDescriptor(null)).toBe(false)
67
+ })
68
+
69
+ it('should correctly identify property descriptors', () => {
70
+ expect(is.descriptor({ configurable: true, enumerable: false })).toBe(true)
71
+ expect(is.descriptor({ get: () => {}, set: () => {} })).toBe(true)
72
+ expect(is.descriptor({ value: 42 })).toBe(true)
73
+ expect(is.descriptor({})).toBe(false)
74
+ expect(is.descriptor(null)).toBe(false)
75
+ })
76
+
77
+ it('should correctly identify strict false', () => {
78
+ expect(is.false(false)).toBe(true)
79
+ expect(is.false(true)).toBe(false)
80
+ expect(is.false(0)).toBe(false)
81
+ expect(is.false(null)).toBe(false)
82
+ })
83
+
84
+ it('should correctly identify falsy values', () => {
85
+ expect(is.falsy(0)).toBe(true)
86
+ expect(is.falsy('')).toBe(true)
87
+ expect(is.falsy(null)).toBe(true)
88
+ expect(is.falsy(undefined)).toBe(true)
89
+ expect(is.falsy(false)).toBe(true)
90
+ expect(is.falsy(1)).toBe(false)
91
+ expect(is.falsy('hello')).toBe(false)
92
+ })
93
+
94
+ it('should correctly identify falsey values (alias for falsy)', () => {
95
+ expect(is.falsey(0)).toBe(true)
96
+ expect(is.falsey('')).toBe(true)
97
+ expect(is.falsey(1)).toBe(false)
98
+ expect(is.falsey('hello')).toBe(false)
99
+ })
31
100
 
32
101
  it('should correctly identify functions', () => {
33
- expect(is.function(function() {})).toBe(true);
34
- expect(is.function(123)).toBe(false);
35
- });
102
+ expect(is.function(function() {})).toBe(true)
103
+ expect(is.function(() => {})).toBe(true)
104
+ expect(is.function(class Foo {})).toBe(true)
105
+ expect(is.function(123)).toBe(false)
106
+ expect(is.function(null)).toBe(false)
107
+ })
36
108
 
37
109
  it('should correctly identify iterables', () => {
38
- expect(is.iterable([1, 2, 3])).toBe(true);
39
- expect(is.iterable('string')).toBe(true);
40
- expect(is.iterable(123)).toBe(false);
41
- });
110
+ expect(is.iterable([1, 2, 3])).toBe(true)
111
+ expect(is.iterable('string')).toBe(true)
112
+ expect(is.iterable(new Map())).toBe(true)
113
+ expect(is.iterable(new Set())).toBe(true)
114
+ expect(is.iterable(123)).toBe(false)
115
+ })
42
116
 
43
117
  it('should correctly identify nullish values', () => {
44
- expect(is.nullish(null)).toBe(true);
45
- expect(is.nullish(undefined)).toBe(true);
46
- expect(is.nullish('value')).toBe(false);
47
- });
118
+ expect(is.nullish(null)).toBe(true)
119
+ expect(is.nullish(undefined)).toBe(true)
120
+ expect(is.nullish('value')).toBe(false)
121
+ expect(is.nullish(0)).toBe(false)
122
+ })
48
123
 
49
124
  it('should correctly identify numbers', () => {
50
- expect(is.number(123)).toBe(true);
51
- expect(is.number('123')).toBe(false);
52
- });
125
+ expect(is.number(123)).toBe(true)
126
+ expect(is.number(0)).toBe(true)
127
+ expect(is.number('123')).toBe(false)
128
+ expect(is.number(null)).toBe(false)
129
+ })
53
130
 
54
131
  it('should correctly identify objects', () => {
55
- expect(is.object({})).toBe(true);
56
- expect(is.object(null)).toBe(false);
57
- });
132
+ expect(is.object({})).toBe(true)
133
+ expect(is.object([])).toBe(true)
134
+ expect(is.object(new Map())).toBe(true)
135
+ expect(is.object(null)).toBe(false)
136
+ expect(is.object(42)).toBe(false)
137
+ })
138
+
139
+ it('should correctly identify valid object entries', () => {
140
+ expect(is.objectEntry(['key', 42])).toBe(true)
141
+ expect(is.objectEntry([Symbol('id'), {}])).toBe(true)
142
+ expect(is.objectEntry([0, 'value'])).toBe(true)
143
+ expect(is.objectEntry([1, 2, 3])).toBe(false)
144
+ expect(is.objectEntry([{}, 'value'])).toBe(false)
145
+ expect(is.objectEntry('not-an-array')).toBe(false)
146
+ })
147
+
148
+ it('should correctly identify valid object keys', () => {
149
+ expect(is.objectKey('name')).toBe(true)
150
+ expect(is.objectKey(0)).toBe(true)
151
+ expect(is.objectKey(Symbol('id'))).toBe(true)
152
+ expect(is.objectKey({})).toBe(false)
153
+ expect(is.objectKey(null)).toBe(false)
154
+ expect(is.objectKey(true)).toBe(false)
155
+ })
156
+
157
+ it('should correctly identify primitive types', () => {
158
+ expect(is.primitive('hello')).toBe(true)
159
+ expect(is.primitive(123)).toBe(true)
160
+ expect(is.primitive(true)).toBe(true)
161
+ expect(is.primitive(123n)).toBe(true)
162
+ expect(is.primitive(Symbol('s'))).toBe(true)
163
+ expect(is.primitive(null)).toBe(true)
164
+ expect(is.primitive(undefined)).toBe(true)
165
+ expect(is.primitive({})).toBe(false)
166
+ expect(is.primitive([])).toBe(false)
167
+ })
168
+
169
+ it('should correctly identify shiny values (object or function)', () => {
170
+ expect(is.shiny({})).toBe(true)
171
+ expect(is.shiny([])).toBe(true)
172
+ expect(is.shiny(function() {})).toBe(true)
173
+ expect(is.shiny(() => {})).toBe(true)
174
+ expect(is.shiny(123)).toBe(false)
175
+ expect(is.shiny(null)).toBe(false)
176
+ expect(is.shiny('string')).toBe(false)
177
+ })
58
178
 
59
179
  it('should correctly identify strings', () => {
60
- expect(is.string('hello')).toBe(true);
61
- expect(is.string(123)).toBe(false);
62
- });
180
+ expect(is.string('hello')).toBe(true)
181
+ expect(is.string('')).toBe(true)
182
+ expect(is.string(123)).toBe(false)
183
+ expect(is.string(null)).toBe(false)
184
+ })
63
185
 
64
186
  it('should correctly identify symbols', () => {
65
- expect(is.symbol(Symbol('foo'))).toBe(true);
66
- expect(is.symbol('foo')).toBe(false);
67
- });
68
-
69
- it('should correctly identify true values', () => {
70
- expect(is.true(true)).toBe(true);
71
- expect(is.true(false)).toBe(false);
72
- });
187
+ expect(is.symbol(Symbol('foo'))).toBe(true)
188
+ expect(is.symbol(Symbol())).toBe(true)
189
+ expect(is.symbol('foo')).toBe(false)
190
+ expect(is.symbol(null)).toBe(false)
191
+ })
192
+
193
+ it('should correctly identify strict true', () => {
194
+ expect(is.true(true)).toBe(true)
195
+ expect(is.true(false)).toBe(false)
196
+ expect(is.true(1)).toBe(false)
197
+ })
73
198
 
74
199
  it('should correctly identify truthy values', () => {
75
- expect(is.truthy(1)).toBe(true);
76
- expect(is.truthy('hello')).toBe(true);
77
- expect(is.truthy(0)).toBe(false);
78
- expect(is.truthy('')).toBe(false);
79
- });
80
- });
200
+ expect(is.truthy(1)).toBe(true)
201
+ expect(is.truthy('hello')).toBe(true)
202
+ expect(is.truthy({})).toBe(true)
203
+ expect(is.truthy(0)).toBe(false)
204
+ expect(is.truthy('')).toBe(false)
205
+ expect(is.truthy(null)).toBe(false)
206
+ })
207
+ })
81
208
 
82
209
  describe('si utility functions', () => {
83
- it('should return thenValue or elseValue based on condition', () => {
84
- expect(si.a(42, 'number', 'yes', 'no')).toBe('yes');
85
- expect(si.a('string', Number, 'yes', 'no')).toBe('no');
86
- });
87
-
88
- it('should correctly identify falsy values and return thenValue or elseValue', () => {
89
- expect(si.falsy(0, 'yes', 'no')).toBe('yes');
90
- expect(si.falsy(1, 'yes', 'no')).toBe('no');
91
- });
92
-
93
- it('should correctly identify functions and return thenValue or elseValue', () => {
94
- expect(si.function(function() {}, 'yes', 'no')).toBe('yes');
95
- expect(si.function(123, 'yes', 'no')).toBe('no');
96
- });
97
-
98
- it('should correctly identify iterables and return thenValue or elseValue', () => {
99
- expect(si.iterable([1, 2, 3], 'yes', 'no')).toBe('yes');
100
- expect(si.iterable(123, 'yes', 'no')).toBe('no');
101
- });
102
-
103
- it('should correctly identify nullish values and return thenValue or elseValue', () => {
104
- expect(si.nullish(null, 'yes', 'no')).toBe('yes');
105
- expect(si.nullish('value', 'yes', 'no')).toBe('no');
106
- });
107
-
108
- it('should correctly identify numbers and return thenValue or elseValue', () => {
109
- expect(si.number(123, 'yes', 'no')).toBe('yes');
110
- expect(si.number('123', 'yes', 'no')).toBe('no');
111
- });
112
-
113
- it('should correctly identify objects and return thenValue or elseValue', () => {
114
- expect(si.object({}, 'yes', 'no')).toBe('yes');
115
- expect(si.object(null, 'yes', 'no')).toBe('no');
116
- });
117
-
118
- it('should correctly identify symbols and return thenValue or elseValue', () => {
119
- expect(si.symbol(Symbol('foo'), 'yes', 'no')).toBe('yes');
120
- expect(si.symbol('foo', 'yes', 'no')).toBe('no');
121
- });
122
-
123
- it('should correctly identify true values and return thenValue or elseValue', () => {
124
- expect(si.true(true, 'yes', 'no')).toBe('yes');
125
- expect(si.true(false, 'yes', 'no')).toBe('no');
126
- });
127
-
128
- it('should correctly identify truthy values and return thenValue or elseValue', () => {
129
- expect(si.truthy(1, 'yes', 'no')).toBe('yes');
130
- expect(si.truthy(0, 'yes', 'no')).toBe('no');
131
- });
132
- });
210
+ describe('returns thenValue or elseValue based on condition', () => {
211
+ it('si.a type/class check', () => {
212
+ expect(si.a(42, 'number', 'yes', 'no')).toBe('yes')
213
+ expect(si.a('string', Number, 'yes', 'no')).toBe('no')
214
+ expect(si.a(42, 'number', () => 'computed', 'no')).toBe('computed')
215
+ expect(si.a('str', Number, 'yes', () => 'computed')).toBe('computed')
216
+ })
217
+
218
+ it('si.accessorDescriptor', () => {
219
+ expect(si.accessorDescriptor({ get: () => 42 }, 'yes', 'no')).toBe('yes')
220
+ expect(si.accessorDescriptor({ value: 42 }, 'yes', 'no')).toBe('no')
221
+ expect(si.accessorDescriptor({ get: () => 42 }, () => 'computed', 'no')).toBe('computed')
222
+ })
223
+
224
+ it('si.array', () => {
225
+ expect(si.array([1, 2, 3], 'yes', 'no')).toBe('yes')
226
+ expect(si.array('string', 'yes', 'no')).toBe('no')
227
+ expect(si.array([1, 2, 3], () => 'computed', 'no')).toBe('computed')
228
+ })
229
+
230
+ it('si.bigint', () => {
231
+ expect(si.bigint(123n, 'yes', 'no')).toBe('yes')
232
+ expect(si.bigint(123, 'yes', 'no')).toBe('no')
233
+ expect(si.bigint(123n, () => 'computed', 'no')).toBe('computed')
234
+ })
235
+
236
+ it('si.boolean', () => {
237
+ expect(si.boolean(true, 'yes', 'no')).toBe('yes')
238
+ expect(si.boolean(false, 'yes', 'no')).toBe('yes')
239
+ expect(si.boolean(1, 'yes', 'no')).toBe('no')
240
+ expect(si.boolean(false, () => 'computed', 'no')).toBe('computed')
241
+ })
242
+
243
+ it('si.callable', () => {
244
+ expect(si.callable(function() {}, 'yes', 'no')).toBe('yes')
245
+ expect(si.callable(123, 'yes', 'no')).toBe('no')
246
+ expect(si.callable(() => {}, () => 'computed', 'no')).toBe('computed')
247
+ })
248
+
249
+ it('si.callableDescriptor', () => {
250
+ expect(si.callableDescriptor({ get: function() {} }, 'yes', 'no')).toBe('yes')
251
+ expect(si.callableDescriptor(123, 'yes', 'no')).toBe('no')
252
+ expect(si.callableDescriptor({ get: function() {} }, () => 'computed', 'no')).toBe('computed')
253
+ })
254
+
255
+ it('si.dataDescriptor', () => {
256
+ expect(si.dataDescriptor({ value: 42, writable: true }, 'yes', 'no')).toBe('yes')
257
+ expect(si.dataDescriptor({ get: () => 42 }, 'yes', 'no')).toBe('no')
258
+ expect(si.dataDescriptor({ value: 42 }, () => 'computed', 'no')).toBe('computed')
259
+ })
260
+
261
+ it('si.descriptor', () => {
262
+ expect(si.descriptor({ configurable: true }, 'yes', 'no')).toBe('yes')
263
+ expect(si.descriptor({}, 'yes', 'no')).toBe('no')
264
+ expect(si.descriptor({ get: () => {} }, () => 'computed', 'no')).toBe('computed')
265
+ })
266
+
267
+ it('si.false', () => {
268
+ expect(si.false(false, 'yes', 'no')).toBe('yes')
269
+ expect(si.false(0, 'yes', 'no')).toBe('no')
270
+ expect(si.false(false, () => 'computed', 'no')).toBe('computed')
271
+ })
272
+
273
+ it('si.falsy', () => {
274
+ expect(si.falsy(0, 'yes', 'no')).toBe('yes')
275
+ expect(si.falsy(1, 'yes', 'no')).toBe('no')
276
+ expect(si.falsy('', () => 'computed', 'no')).toBe('computed')
277
+ })
278
+
279
+ it('si.falsey (alias for falsy)', () => {
280
+ expect(si.falsey(0, 'yes', 'no')).toBe('yes')
281
+ expect(si.falsey(1, 'yes', 'no')).toBe('no')
282
+ expect(si.falsey('', () => 'computed', 'no')).toBe('computed')
283
+ })
284
+
285
+ it('si.function', () => {
286
+ expect(si.function(function() {}, 'yes', 'no')).toBe('yes')
287
+ expect(si.function(123, 'yes', 'no')).toBe('no')
288
+ expect(si.function(function() {}, () => 'computed', 'no')).toBe('computed')
289
+ })
290
+
291
+ it('si.iterable', () => {
292
+ expect(si.iterable([1, 2, 3], 'yes', 'no')).toBe('yes')
293
+ expect(si.iterable(123, 'yes', 'no')).toBe('no')
294
+ expect(si.iterable('string', () => 'computed', 'no')).toBe('computed')
295
+ })
296
+
297
+ it('si.nullish', () => {
298
+ expect(si.nullish(null, 'yes', 'no')).toBe('yes')
299
+ expect(si.nullish(undefined, 'yes', 'no')).toBe('yes')
300
+ expect(si.nullish('value', 'yes', 'no')).toBe('no')
301
+ expect(si.nullish(undefined, () => 'computed', 'no')).toBe('computed')
302
+ })
303
+
304
+ it('si.number', () => {
305
+ expect(si.number(123, 'yes', 'no')).toBe('yes')
306
+ expect(si.number('123', 'yes', 'no')).toBe('no')
307
+ expect(si.number(123, () => 'computed', 'no')).toBe('computed')
308
+ })
309
+
310
+ it('si.object', () => {
311
+ expect(si.object({}, 'yes', 'no')).toBe('yes')
312
+ expect(si.object(null, 'yes', 'no')).toBe('no')
313
+ expect(si.object({}, () => 'computed', 'no')).toBe('computed')
314
+ })
315
+
316
+ it('si.objectEntry', () => {
317
+ expect(si.objectEntry(['key', 42], 'yes', 'no')).toBe('yes')
318
+ expect(si.objectEntry([1, 2, 3], 'yes', 'no')).toBe('no')
319
+ expect(si.objectEntry(['key', 42], () => 'computed', 'no')).toBe('computed')
320
+ })
321
+
322
+ it('si.objectKey', () => {
323
+ expect(si.objectKey('name', 'yes', 'no')).toBe('yes')
324
+ expect(si.objectKey(0, 'yes', 'no')).toBe('yes')
325
+ expect(si.objectKey(Symbol('id'), 'yes', 'no')).toBe('yes')
326
+ expect(si.objectKey({}, 'yes', 'no')).toBe('no')
327
+ expect(si.objectKey(null, 'yes', 'no')).toBe('no')
328
+ expect(si.objectKey(Symbol('id'), () => 'computed', 'no')).toBe('computed')
329
+ })
330
+
331
+ it('si.primitive', () => {
332
+ expect(si.primitive('hello', 'yes', 'no')).toBe('yes')
333
+ expect(si.primitive(123, 'yes', 'no')).toBe('yes')
334
+ expect(si.primitive({}, 'yes', 'no')).toBe('no')
335
+ expect(si.primitive(123, () => 'computed', 'no')).toBe('computed')
336
+ })
337
+
338
+ it('si.shiny', () => {
339
+ expect(si.shiny({}, 'yes', 'no')).toBe('yes')
340
+ expect(si.shiny(123, 'yes', 'no')).toBe('no')
341
+ expect(si.shiny(function() {}, () => 'computed', 'no')).toBe('computed')
342
+ })
343
+
344
+ it('si.string', () => {
345
+ expect(si.string('hello', 'yes', 'no')).toBe('yes')
346
+ expect(si.string(123, 'yes', 'no')).toBe('no')
347
+ expect(si.string('hello', () => 'computed', 'no')).toBe('computed')
348
+ })
349
+
350
+ it('si.symbol', () => {
351
+ expect(si.symbol(Symbol('foo'), 'yes', 'no')).toBe('yes')
352
+ expect(si.symbol('foo', 'yes', 'no')).toBe('no')
353
+ expect(si.symbol(Symbol('foo'), () => 'computed', 'no')).toBe('computed')
354
+ })
355
+
356
+ it('si.then — evaluates a boolean or function condition', () => {
357
+ expect(si.then(true, 'yes', 'no')).toBe('yes')
358
+ expect(si.then(false, 'yes', 'no')).toBe('no')
359
+ expect(si.then(() => true, 'yes', 'no')).toBe('yes')
360
+ expect(si.then(() => false, 'yes', 'no')).toBe('no')
361
+ expect(si.then(true, () => 'computed', 'no')).toBe('computed')
362
+ expect(si.then(false, 'yes', () => 'computed')).toBe('computed')
363
+ })
364
+
365
+ it('si.true', () => {
366
+ expect(si.true(true, 'yes', 'no')).toBe('yes')
367
+ expect(si.true(false, 'yes', 'no')).toBe('no')
368
+ expect(si.true(1, 'yes', 'no')).toBe('no')
369
+ expect(si.true(true, () => 'computed', 'no')).toBe('computed')
370
+ })
371
+
372
+ it('si.truthy', () => {
373
+ expect(si.truthy(1, 'yes', 'no')).toBe('yes')
374
+ expect(si.truthy(0, 'yes', 'no')).toBe('no')
375
+ expect(si.truthy('hello', () => 'computed', 'no')).toBe('computed')
376
+ })
377
+
378
+ it('si.undefined', () => {
379
+ expect(si.undefined(undefined, 'yes', 'no')).toBe('yes')
380
+ expect(si.undefined('value', 'yes', 'no')).toBe('no')
381
+ expect(si.undefined(undefined, () => 'computed', 'no')).toBe('computed')
382
+ expect(si.undefined('value', 'yes', () => 'computed')).toBe('computed')
383
+ })
384
+ })
385
+
386
+ describe('thenValue defaults to the condition result when omitted', () => {
387
+ it('returns the condition boolean when only value is passed', () => {
388
+ expect(si.string('hello')).toBe(true)
389
+ expect(si.string(123)).toBe(false)
390
+ expect(si.number(42)).toBe(true)
391
+ expect(si.number('42')).toBe(false)
392
+ })
393
+ })
394
+ })
133
395
 
134
396
  describe('has utility functions', () => {
135
397
  it('should correctly identify if an object has a key', () => {
136
- expect(has(new Map([['key', 'value']]), 'key')).toBe(true);
137
- expect(has({}, 'key')).toBe(false);
138
- });
398
+ expect(has(new Map([['key', 'value']]), 'key')).toBe(true)
399
+ expect(has({}, 'key')).toBe(false)
400
+ })
139
401
 
140
402
  it('should correctly identify if an object has all keys', () => {
141
- expect(has.all(new Map([['key1', 'value1'], ['key2', 'value2']]), ['key1', 'key2'])).toBe(true);
142
- expect(has.all({}, ['key1', 'key2'])).toBe(false);
143
- });
403
+ expect(has.all(new Map([['key1', 'value1'], ['key2', 'value2']]), ['key1', 'key2'])).toBe(true)
404
+ expect(has.all({}, ['key1', 'key2'])).toBe(false)
405
+ })
144
406
 
145
407
  it('should correctly identify if an object has some keys', () => {
146
- expect(has.some(new Map([['key1', 'value1'], ['key2', 'value2']]), ['key1'])).toBe(true);
147
- expect(has.some({}, ['key1', 'key2'])).toBe(false);
148
- });
408
+ expect(has.some(new Map([['key1', 'value1'], ['key2', 'value2']]), ['key1'])).toBe(true)
409
+ expect(has.some({}, ['key1', 'key2'])).toBe(false)
410
+ })
149
411
 
150
412
  it('should correctly identify if an object has a prototype', () => {
151
- expect(has.prototype(function() {})).toBe(true);
152
- expect(has.prototype(() => {})).toBe(false);
153
- });
413
+ expect(has.prototype(function() {})).toBe(true)
414
+ expect(has.prototype(() => {})).toBe(false)
415
+ expect(has.prototype(5)).toBe(false)
416
+ })
154
417
 
155
418
  it('should correctly identify if an object has a custom string tag', () => {
156
- const obj = { [Symbol.toStringTag]: 'CustomObject' };
157
- expect(has.stringTag(obj)).toBe(true);
158
- });
419
+ const obj = { [Symbol.toStringTag]: 'CustomObject' }
420
+ expect(has.stringTag(obj)).toBe(true)
421
+ expect(has.stringTag({})).toBe(false)
422
+ })
159
423
 
160
424
  it('should correctly identify if an object has a custom toPrimitive method', () => {
161
- const obj = { [Symbol.toPrimitive]: () => 42 };
162
- expect(has.toPrimitive(obj)).toBe(true);
163
- });
425
+ const obj = { [Symbol.toPrimitive]: () => 42 }
426
+ expect(has.toPrimitive(obj)).toBe(true)
427
+ expect(has.toPrimitive({})).toBe(false)
428
+ })
164
429
 
165
430
  it('should correctly identify if an object has a custom valueOf method', () => {
166
- const obj = { valueOf: () => 42 };
167
- expect(has.valueOfFn(obj)).toBe(true);
168
- });
169
- });
431
+ const obj = { valueOf: () => 42 }
432
+ expect(has.valueOfFn(obj)).toBe(true)
433
+ expect(has.valueOfFn({})).toBe(false)
434
+ })
435
+ })
170
436
 
171
437
  describe('as utility functions', () => {
172
438
  it('should correctly convert values to arrays', () => {
173
- expect(as.array([1, 2, 3])).toEqual([1, 2, 3]);
174
- expect(as.array('string')).toEqual(['s', 't', 'r', 'i', 'n', 'g']);
175
- expect(as.array(123)).toBe(undefined);
176
- });
439
+ expect(as.array([1, 2, 3])).toEqual([1, 2, 3])
440
+ expect(as.array('string')).toEqual(['s', 't', 'r', 'i', 'n', 'g'])
441
+ expect(as.array(123)).toBe(undefined)
442
+ })
177
443
 
178
444
  it('should correctly convert values to objects', () => {
179
- expect(as.object({ key: 'value' })).toEqual({ key: 'value' });
180
- expect(typeof as.object('string')).toBe('object');
181
- expect(as.object(null)).toEqual({});
182
- });
445
+ expect(as.object({ key: 'value' })).toEqual({ key: 'value' })
446
+ expect(typeof as.object('string')).toBe('object')
447
+ expect(as.object(null)).toEqual({})
448
+ })
183
449
 
184
450
  it('should correctly convert values to strings', () => {
185
- expect(as.string(null)).toBe('null');
186
- expect(as.string(123)).toBe('123');
187
- const obj = { [Symbol.toPrimitive]: () => 'custom' };
188
- expect(as.string(obj)).toBe('custom');
189
- expect(as.string(Symbol('mySymbol'), { description: true })).toBe('mySymbol');
190
- expect(as.string([], { stringTag: true })).toBe('');
191
- });
451
+ expect(as.string(null)).toBe('null')
452
+ expect(as.string(123)).toBe('123')
453
+ const obj = { [Symbol.toPrimitive]: () => 'custom' }
454
+ expect(as.string(obj)).toBe('custom')
455
+ expect(as.string(Symbol('mySymbol'), { description: true })).toBe('mySymbol')
456
+ expect(as.string([], { stringTag: true })).toBe('')
457
+ })
192
458
 
193
459
  it('should correctly convert values to integer strings', () => {
194
- expect(as.integerString(123.456)).toBe('123');
195
- expect(as.integerString('0.789')).toBe('0');
196
- });
460
+ expect(as.integerString(123.456)).toBe('123')
461
+ expect(as.integerString('0.789')).toBe('0')
462
+ })
197
463
 
198
464
  it('should correctly convert values to number strings', () => {
199
- expect(as.numberString(' 123.456abc ')).toBe('123.456');
200
- expect(as.numberString('-0.789xyz')).toBe('-0.789');
201
- });
465
+ expect(as.numberString(' 123.456abc ')).toBe('123.456')
466
+ expect(as.numberString('-0.789xyz')).toBe('-0.789')
467
+ })
202
468
 
203
469
  it('should correctly convert values to numbers', () => {
204
- expect(as.number('123.456abc')).toBe(123.456);
205
- expect(as.number('-0.789xyz')).toBe(-0.789);
206
- });
470
+ expect(as.number('123.456abc')).toBe(123.456)
471
+ expect(as.number('-0.789xyz')).toBe(-0.789)
472
+ })
207
473
 
208
474
  it('should correctly convert values to bigints', () => {
209
- expect(as.bigint('123.456abc')).toBe(123n);
210
- expect(as.bigint('0.789xyz')).toBe(0n);
211
- });
475
+ expect(as.bigint('123.456abc')).toBe(123n)
476
+ expect(as.bigint('0.789xyz')).toBe(0n)
477
+ })
212
478
 
213
479
  it('should correctly convert values to booleans', () => {
214
- expect(as.boolean('yes')).toBe(true);
215
- expect(as.boolean('no')).toBe(false);
216
- expect(as.boolean(1)).toBe(true);
217
- expect(as.boolean(0)).toBe(false);
218
- expect(as.boolean('true')).toBe(true);
219
- expect(as.boolean('false')).toBe(false);
220
- expect(as.boolean({})).toBe(true);
221
- expect(as.boolean(null)).toBe(false);
222
- });
223
- });
480
+ expect(as.boolean('yes')).toBe(true)
481
+ expect(as.boolean('no')).toBe(false)
482
+ expect(as.boolean(1)).toBe(true)
483
+ expect(as.boolean(0)).toBe(false)
484
+ expect(as.boolean('true')).toBe(true)
485
+ expect(as.boolean('false')).toBe(false)
486
+ expect(as.boolean({})).toBe(true)
487
+ expect(as.boolean(null)).toBe(false)
488
+ })
489
+ })