@nejs/basic-extensions 2.21.0 → 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 (270) hide show
  1. package/.idea/markdown.xml +8 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/ne-basic-extensions.iml +8 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/CODE_STYLE.md +393 -0
  6. package/CODING_PHILOSOPHY.md +36 -0
  7. package/DOCUMENTATION_GUIDELINES.md +221 -0
  8. package/README.md +78 -4
  9. package/dist/@nejs/basic-extensions.bundle.2.22.6.js +25 -0
  10. package/dist/@nejs/basic-extensions.bundle.2.22.6.js.map +7 -0
  11. package/dist/cjs/classes/index.cjs +11129 -0
  12. package/dist/cjs/classes/index.cjs.map +7 -0
  13. package/dist/cjs/index.cjs +15191 -0
  14. package/dist/cjs/index.cjs.map +7 -0
  15. package/dist/cjs/utils/index.cjs +3954 -0
  16. package/dist/cjs/utils/index.cjs.map +7 -0
  17. package/dist/esm/basic-extensions.mjs +25 -0
  18. package/dist/esm/basic-extensions.mjs.map +7 -0
  19. package/package.json +16 -22
  20. package/repl.bootstrap.js +4 -7
  21. package/repl.history +30 -30
  22. package/src/big.int.extension.js +171 -45
  23. package/src/classes/enumeration.js +466 -0
  24. package/src/classes/index.js +5 -1
  25. package/src/index.js +5 -1
  26. package/src/math.extension.js +73 -0
  27. package/src/number.extension.js +18 -0
  28. package/src/regular.expression.extensions.js +0 -35
  29. package/src/utils/toolkit.js +699 -516
  30. package/tests/arrayextensions.test.js +3 -3
  31. package/tests/index.test.js +3 -1
  32. package/tests/newClasses/asyncIterable.test.js +3 -3
  33. package/tests/newClasses/deferred.test.js +3 -3
  34. package/tests/newClasses/descriptor.test.js +3 -3
  35. package/tests/newClasses/iterable.test.js +3 -3
  36. package/tests/newClasses/refmap.test.js +3 -3
  37. package/tests/newClasses/refset.test.js +3 -3
  38. package/tests/objectextensions.test.js +3 -3
  39. package/tests/setextensions.test.js +3 -3
  40. package/tests/stringextensions.test.js +3 -2
  41. package/tests/utils/descriptor.utils.test.js +1 -1
  42. package/tests/utils/toolkit.test.js +429 -163
  43. package/.esdoc.json +0 -9
  44. package/.vscode/settings.json +0 -5
  45. package/bin/build +0 -27
  46. package/bin/clean +0 -14
  47. package/bin/esbuild +0 -91
  48. package/bin/fixup +0 -13
  49. package/bin/repl.basics.js +0 -584
  50. package/bin/repl.signature.js +0 -63
  51. package/bin/version +0 -100
  52. package/dist/@nejs/basic-extensions.bundle.2.21.0.js +0 -25
  53. package/dist/@nejs/basic-extensions.bundle.2.21.0.js.map +0 -7
  54. package/dist/cjs/array.extensions.d.ts +0 -39
  55. package/dist/cjs/array.extensions.js +0 -477
  56. package/dist/cjs/array.extensions.js.map +0 -1
  57. package/dist/cjs/big.int.extension.d.ts +0 -31
  58. package/dist/cjs/big.int.extension.js +0 -165
  59. package/dist/cjs/big.int.extension.js.map +0 -1
  60. package/dist/cjs/classes/asyncIterable.d.ts +0 -126
  61. package/dist/cjs/classes/asyncIterable.js +0 -209
  62. package/dist/cjs/classes/asyncIterable.js.map +0 -1
  63. package/dist/cjs/classes/deferred.d.ts +0 -146
  64. package/dist/cjs/classes/deferred.js +0 -291
  65. package/dist/cjs/classes/deferred.js.map +0 -1
  66. package/dist/cjs/classes/descriptor.d.ts +0 -334
  67. package/dist/cjs/classes/descriptor.js +0 -537
  68. package/dist/cjs/classes/descriptor.js.map +0 -1
  69. package/dist/cjs/classes/enum.d.ts +0 -50
  70. package/dist/cjs/classes/enum.js +0 -405
  71. package/dist/cjs/classes/enum.js.map +0 -1
  72. package/dist/cjs/classes/index.d.ts +0 -15
  73. package/dist/cjs/classes/index.js +0 -63
  74. package/dist/cjs/classes/index.js.map +0 -1
  75. package/dist/cjs/classes/introspector.d.ts +0 -20
  76. package/dist/cjs/classes/introspector.js +0 -130
  77. package/dist/cjs/classes/introspector.js.map +0 -1
  78. package/dist/cjs/classes/iterable.d.ts +0 -169
  79. package/dist/cjs/classes/iterable.js +0 -268
  80. package/dist/cjs/classes/iterable.js.map +0 -1
  81. package/dist/cjs/classes/param.parser.d.ts +0 -221
  82. package/dist/cjs/classes/param.parser.js +0 -242
  83. package/dist/cjs/classes/param.parser.js.map +0 -1
  84. package/dist/cjs/classes/pluggable.proxy.d.ts +0 -153
  85. package/dist/cjs/classes/pluggable.proxy.js +0 -444
  86. package/dist/cjs/classes/pluggable.proxy.js.map +0 -1
  87. package/dist/cjs/classes/property.d.ts +0 -79
  88. package/dist/cjs/classes/property.js +0 -284
  89. package/dist/cjs/classes/property.js.map +0 -1
  90. package/dist/cjs/classes/refmap.d.ts +0 -238
  91. package/dist/cjs/classes/refmap.js +0 -421
  92. package/dist/cjs/classes/refmap.js.map +0 -1
  93. package/dist/cjs/classes/refset.d.ts +0 -186
  94. package/dist/cjs/classes/refset.js +0 -370
  95. package/dist/cjs/classes/refset.js.map +0 -1
  96. package/dist/cjs/classes/symkeys.d.ts +0 -349
  97. package/dist/cjs/classes/symkeys.js +0 -510
  98. package/dist/cjs/classes/symkeys.js.map +0 -1
  99. package/dist/cjs/classes/type.d.ts +0 -56
  100. package/dist/cjs/classes/type.js +0 -405
  101. package/dist/cjs/classes/type.js.map +0 -1
  102. package/dist/cjs/function.extensions.d.ts +0 -12
  103. package/dist/cjs/function.extensions.js +0 -758
  104. package/dist/cjs/function.extensions.js.map +0 -1
  105. package/dist/cjs/global.this.d.ts +0 -2
  106. package/dist/cjs/global.this.js +0 -300
  107. package/dist/cjs/global.this.js.map +0 -1
  108. package/dist/cjs/index.d.ts +0 -31
  109. package/dist/cjs/index.js +0 -226
  110. package/dist/cjs/index.js.map +0 -1
  111. package/dist/cjs/json.extensions.d.ts +0 -2
  112. package/dist/cjs/json.extensions.js +0 -109
  113. package/dist/cjs/json.extensions.js.map +0 -1
  114. package/dist/cjs/map.extensions.d.ts +0 -3
  115. package/dist/cjs/map.extensions.js +0 -143
  116. package/dist/cjs/map.extensions.js.map +0 -1
  117. package/dist/cjs/number.extension.d.ts +0 -44
  118. package/dist/cjs/number.extension.js +0 -261
  119. package/dist/cjs/number.extension.js.map +0 -1
  120. package/dist/cjs/object.extensions.d.ts +0 -33
  121. package/dist/cjs/object.extensions.js +0 -1091
  122. package/dist/cjs/object.extensions.js.map +0 -1
  123. package/dist/cjs/package.json +0 -3
  124. package/dist/cjs/proxy.extensions.d.ts +0 -2
  125. package/dist/cjs/proxy.extensions.js +0 -207
  126. package/dist/cjs/proxy.extensions.js.map +0 -1
  127. package/dist/cjs/reflect.extensions.d.ts +0 -14
  128. package/dist/cjs/reflect.extensions.js +0 -316
  129. package/dist/cjs/reflect.extensions.js.map +0 -1
  130. package/dist/cjs/regular.expression.extensions.d.ts +0 -2
  131. package/dist/cjs/regular.expression.extensions.js +0 -423
  132. package/dist/cjs/regular.expression.extensions.js.map +0 -1
  133. package/dist/cjs/set.extensions.d.ts +0 -40
  134. package/dist/cjs/set.extensions.js +0 -355
  135. package/dist/cjs/set.extensions.js.map +0 -1
  136. package/dist/cjs/string.extensions.d.ts +0 -23
  137. package/dist/cjs/string.extensions.js +0 -704
  138. package/dist/cjs/string.extensions.js.map +0 -1
  139. package/dist/cjs/symbol.extensions.d.ts +0 -11
  140. package/dist/cjs/symbol.extensions.js +0 -735
  141. package/dist/cjs/symbol.extensions.js.map +0 -1
  142. package/dist/cjs/utils/copy.object.d.ts +0 -408
  143. package/dist/cjs/utils/copy.object.js +0 -720
  144. package/dist/cjs/utils/copy.object.js.map +0 -1
  145. package/dist/cjs/utils/descriptor.utils.d.ts +0 -298
  146. package/dist/cjs/utils/descriptor.utils.js +0 -889
  147. package/dist/cjs/utils/descriptor.utils.js.map +0 -1
  148. package/dist/cjs/utils/index.d.ts +0 -75
  149. package/dist/cjs/utils/index.js +0 -61
  150. package/dist/cjs/utils/index.js.map +0 -1
  151. package/dist/cjs/utils/stdout.d.ts +0 -742
  152. package/dist/cjs/utils/stdout.js +0 -1042
  153. package/dist/cjs/utils/stdout.js.map +0 -1
  154. package/dist/cjs/utils/toolkit.d.ts +0 -1898
  155. package/dist/cjs/utils/toolkit.js +0 -1378
  156. package/dist/cjs/utils/toolkit.js.map +0 -1
  157. package/dist/cjs/weakref.extensions.d.ts +0 -2
  158. package/dist/cjs/weakref.extensions.js +0 -19
  159. package/dist/cjs/weakref.extensions.js.map +0 -1
  160. package/dist/mjs/array.extensions.d.ts +0 -39
  161. package/dist/mjs/array.extensions.js +0 -474
  162. package/dist/mjs/array.extensions.js.map +0 -1
  163. package/dist/mjs/big.int.extension.d.ts +0 -31
  164. package/dist/mjs/big.int.extension.js +0 -162
  165. package/dist/mjs/big.int.extension.js.map +0 -1
  166. package/dist/mjs/classes/asyncIterable.d.ts +0 -126
  167. package/dist/mjs/classes/asyncIterable.js +0 -204
  168. package/dist/mjs/classes/asyncIterable.js.map +0 -1
  169. package/dist/mjs/classes/deferred.d.ts +0 -146
  170. package/dist/mjs/classes/deferred.js +0 -287
  171. package/dist/mjs/classes/deferred.js.map +0 -1
  172. package/dist/mjs/classes/descriptor.d.ts +0 -334
  173. package/dist/mjs/classes/descriptor.js +0 -533
  174. package/dist/mjs/classes/descriptor.js.map +0 -1
  175. package/dist/mjs/classes/enum.d.ts +0 -50
  176. package/dist/mjs/classes/enum.js +0 -400
  177. package/dist/mjs/classes/enum.js.map +0 -1
  178. package/dist/mjs/classes/index.d.ts +0 -15
  179. package/dist/mjs/classes/index.js +0 -46
  180. package/dist/mjs/classes/index.js.map +0 -1
  181. package/dist/mjs/classes/introspector.d.ts +0 -20
  182. package/dist/mjs/classes/introspector.js +0 -126
  183. package/dist/mjs/classes/introspector.js.map +0 -1
  184. package/dist/mjs/classes/iterable.d.ts +0 -169
  185. package/dist/mjs/classes/iterable.js +0 -263
  186. package/dist/mjs/classes/iterable.js.map +0 -1
  187. package/dist/mjs/classes/param.parser.d.ts +0 -221
  188. package/dist/mjs/classes/param.parser.js +0 -238
  189. package/dist/mjs/classes/param.parser.js.map +0 -1
  190. package/dist/mjs/classes/pluggable.proxy.d.ts +0 -153
  191. package/dist/mjs/classes/pluggable.proxy.js +0 -438
  192. package/dist/mjs/classes/pluggable.proxy.js.map +0 -1
  193. package/dist/mjs/classes/property.d.ts +0 -79
  194. package/dist/mjs/classes/property.js +0 -280
  195. package/dist/mjs/classes/property.js.map +0 -1
  196. package/dist/mjs/classes/refmap.d.ts +0 -238
  197. package/dist/mjs/classes/refmap.js +0 -417
  198. package/dist/mjs/classes/refmap.js.map +0 -1
  199. package/dist/mjs/classes/refset.d.ts +0 -186
  200. package/dist/mjs/classes/refset.js +0 -366
  201. package/dist/mjs/classes/refset.js.map +0 -1
  202. package/dist/mjs/classes/symkeys.d.ts +0 -349
  203. package/dist/mjs/classes/symkeys.js +0 -506
  204. package/dist/mjs/classes/symkeys.js.map +0 -1
  205. package/dist/mjs/classes/type.d.ts +0 -56
  206. package/dist/mjs/classes/type.js +0 -401
  207. package/dist/mjs/classes/type.js.map +0 -1
  208. package/dist/mjs/function.extensions.d.ts +0 -12
  209. package/dist/mjs/function.extensions.js +0 -755
  210. package/dist/mjs/function.extensions.js.map +0 -1
  211. package/dist/mjs/global.this.d.ts +0 -2
  212. package/dist/mjs/global.this.js +0 -264
  213. package/dist/mjs/global.this.js.map +0 -1
  214. package/dist/mjs/index.d.ts +0 -31
  215. package/dist/mjs/index.js +0 -204
  216. package/dist/mjs/index.js.map +0 -1
  217. package/dist/mjs/json.extensions.d.ts +0 -2
  218. package/dist/mjs/json.extensions.js +0 -106
  219. package/dist/mjs/json.extensions.js.map +0 -1
  220. package/dist/mjs/map.extensions.d.ts +0 -3
  221. package/dist/mjs/map.extensions.js +0 -140
  222. package/dist/mjs/map.extensions.js.map +0 -1
  223. package/dist/mjs/number.extension.d.ts +0 -44
  224. package/dist/mjs/number.extension.js +0 -258
  225. package/dist/mjs/number.extension.js.map +0 -1
  226. package/dist/mjs/object.extensions.d.ts +0 -33
  227. package/dist/mjs/object.extensions.js +0 -1088
  228. package/dist/mjs/object.extensions.js.map +0 -1
  229. package/dist/mjs/package.json +0 -3
  230. package/dist/mjs/proxy.extensions.d.ts +0 -2
  231. package/dist/mjs/proxy.extensions.js +0 -204
  232. package/dist/mjs/proxy.extensions.js.map +0 -1
  233. package/dist/mjs/reflect.extensions.d.ts +0 -14
  234. package/dist/mjs/reflect.extensions.js +0 -313
  235. package/dist/mjs/reflect.extensions.js.map +0 -1
  236. package/dist/mjs/regular.expression.extensions.d.ts +0 -2
  237. package/dist/mjs/regular.expression.extensions.js +0 -420
  238. package/dist/mjs/regular.expression.extensions.js.map +0 -1
  239. package/dist/mjs/set.extensions.d.ts +0 -40
  240. package/dist/mjs/set.extensions.js +0 -352
  241. package/dist/mjs/set.extensions.js.map +0 -1
  242. package/dist/mjs/string.extensions.d.ts +0 -23
  243. package/dist/mjs/string.extensions.js +0 -701
  244. package/dist/mjs/string.extensions.js.map +0 -1
  245. package/dist/mjs/symbol.extensions.d.ts +0 -11
  246. package/dist/mjs/symbol.extensions.js +0 -732
  247. package/dist/mjs/symbol.extensions.js.map +0 -1
  248. package/dist/mjs/utils/copy.object.d.ts +0 -408
  249. package/dist/mjs/utils/copy.object.js +0 -702
  250. package/dist/mjs/utils/copy.object.js.map +0 -1
  251. package/dist/mjs/utils/descriptor.utils.d.ts +0 -298
  252. package/dist/mjs/utils/descriptor.utils.js +0 -875
  253. package/dist/mjs/utils/descriptor.utils.js.map +0 -1
  254. package/dist/mjs/utils/index.d.ts +0 -75
  255. package/dist/mjs/utils/index.js +0 -45
  256. package/dist/mjs/utils/index.js.map +0 -1
  257. package/dist/mjs/utils/stdout.d.ts +0 -742
  258. package/dist/mjs/utils/stdout.js +0 -1037
  259. package/dist/mjs/utils/stdout.js.map +0 -1
  260. package/dist/mjs/utils/toolkit.d.ts +0 -1898
  261. package/dist/mjs/utils/toolkit.js +0 -1373
  262. package/dist/mjs/utils/toolkit.js.map +0 -1
  263. package/dist/mjs/weakref.extensions.d.ts +0 -2
  264. package/dist/mjs/weakref.extensions.js +0 -16
  265. package/dist/mjs/weakref.extensions.js.map +0 -1
  266. package/jsdoc-config.json +0 -31
  267. package/tsconfig.base.json +0 -28
  268. package/tsconfig.cjs.json +0 -8
  269. package/tsconfig.esm.json +0 -8
  270. 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
+ })