@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,278 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NumberPrototypeExtensions = exports.NumberExtensions = void 0;
4
- const extension_1 = require("@nejs/extension");
5
- /**
6
- * A patch for the JavaScript built-in `Number` class that adds utility
7
- * methods without modifying the global namespace directly
8
- *
9
- * This patch includes methods for checking if a value is a number and
10
- * conditionally returning a value based on whether the supplied value is
11
- * a number or not.
12
- *
13
- * @type {Patch}
14
- * @property {Object} [Patch.kMutablyHidden] An object containing methods
15
- * that are hidden from enumeration and mutation
16
- *
17
- * @example
18
- * import { NumberExtensions } from 'number.extension.js'
19
- *
20
- * NumberExtensions.apply()
21
- * // Now the `Number` class has additional methods available
22
- */
23
- exports.NumberExtensions = new extension_1.Patch(Number, {
24
- [extension_1.Patch.kMutablyHidden]: {
25
- /**
26
- * Determines if the supplied `value` is a `Number`. This check is
27
- * performed by first converting the `value` to a `Number` using the
28
- * `Number()` constructor and checking to see if the result is not
29
- * `NaN`. If that check passes, `typeof` is used to ensure that the
30
- * original `value` is of type "number".
31
- *
32
- * @param {*} value The value that needs to be checked to determine if it
33
- * is a `Number` or not
34
- * @returns {boolean} `true` if the supplied `value` is a `Number`,
35
- * `false` otherwise
36
- *
37
- * @example
38
- * const num = 42
39
- * isNumber(num) // true
40
- * isNumber('42') // false
41
- * isNumber(NaN) // false
42
- * isNumber(Infinity) // true
43
- */
44
- isNumber(value) {
45
- return !isNaN(value) && typeof value === 'number';
46
- },
47
- /**
48
- * Checks if all or some of the supplied values are numbers.
49
- *
50
- * This method uses the `Array.prototype.every` or `Array.prototype.some`
51
- * method to check if all or some of the supplied values are numbers,
52
- * respectively. The method to use is determined by the `which` parameter.
53
- *
54
- * @param {string} [which='every'] - Determines the method to use for the
55
- * check. Can be either 'every' or 'some'. Defaults to 'every'.
56
- * @param {...*} values - The values to check.
57
- * @returns {boolean} - Returns `true` if all or some of the values are
58
- * numbers (based on the `which` parameter), `false` otherwise.
59
- *
60
- * @example
61
- * areNumbers('every', 1, 2, 3) // true
62
- * areNumbers('some', 1, '2', 3) // true
63
- * areNumbers('every', 1, '2', 3) // false
64
- */
65
- areNumbers(which = ['every', 'some'][0], ...values) {
66
- if (which !== 'every' && which !== 'some') {
67
- return false;
68
- }
69
- return values[which](num => this.isNumber(num));
70
- },
71
- /**
72
- * Conditionally returns a value based on whether the supplied `value` is
73
- * a `Number` or not. If the `value` is a `Number`, the `thenValue` will
74
- * be returned. If it is not a `Number`, the `elseValue` will be
75
- * returned instead.
76
- *
77
- * @param {*} value The value to check to determine if it is a `Number`
78
- * @param {*} thenValue The value to return if the supplied `value` is
79
- * a `Number`
80
- * @param {*} elseValue The value to return if the supplied `value` is
81
- * not a `Number`
82
- * @returns {*} Either the `thenValue` or `elseValue` depending on if the
83
- * supplied `value` is a `Number`
84
- *
85
- * @example
86
- * const num = 42
87
- * const str = 'hello'
88
- * ifNumber(num, 'is a number', 'not a number') // 'is a number'
89
- * ifNumber(str, 'is a number', 'not a number') // 'not a number'
90
- */
91
- ifNumber(value, thenValue, elseValue) {
92
- return isThenElse(this.isNumber(value), thenValue, elseValue);
93
- },
94
- /**
95
- * Conditionally returns a value based on whether all or some of the
96
- * supplied values are numbers.
97
- *
98
- * This method uses the `areNumbers` method to check if all or some of
99
- * the supplied values are numbers, based on the `which` parameter.
100
- * If the condition is met, the `thenValue` is returned, otherwise
101
- * the `elseValue` is returned.
102
- *
103
- * @param {*} thenValue - The value to return if the condition is met.
104
- * @param {*} elseValue - The value to return if the condition is not met.
105
- * @param {string} [which='every'] - Determines the method to use for the
106
- * check. Can be either 'every' or 'some'. Defaults to 'every'.
107
- * @param {...*} numbers - The values to check.
108
- * @returns {*} Either the `thenValue` or `elseValue` depending on if all
109
- * or some of the supplied values are numbers.
110
- *
111
- * @example
112
- * ifNumbers('All are numbers', 'Not all are numbers', 'every', 1, 2, 3)
113
- * // returns 'All are numbers'
114
- * ifNumbers('At least one is a number', 'None are numbers', 'some', 1, '2', 3)
115
- * // returns 'At least one is a number'
116
- * ifNumbers('All are numbers', 'Not all are numbers', 'every', 1, '2', 3)
117
- * // returns 'Not all are numbers'
118
- */
119
- ifNumbers(thenValue, elseValue, which = ['every', 'some'][0], ...numbers) {
120
- return isThenElse(this.areNumbers(which, ...numbers), thenValue, elseValue);
121
- },
122
- /**
123
- * Clamps a value between a minimum and maximum value.
124
- *
125
- * This method checks if the provided value and the min and max bounds are
126
- * numbers. If they are not, it returns the original value. If they are,
127
- * it ensures that the value does not go below the minimum value or above
128
- * the maximum value.
129
- *
130
- * @param {*} value - The value to clamp.
131
- * @param {number} [minValue=-Infinity] - The minimum value. Defaults
132
- * to -Infinity.
133
- * @param {number} [maxValue=Infinity] - The maximum value. Defaults
134
- * to Infinity.
135
- * @returns {*} - Returns the clamped value if all parameters are numbers,
136
- * otherwise returns the original value.
137
- *
138
- * @example
139
- * clamp(10, 1, 5) // returns 5
140
- * clamp(-10, 1, 5) // returns 1
141
- * clamp(3, 1, 5) // returns 3
142
- * clamp('10', 1, 5) // returns '10'
143
- */
144
- clamp(value, minValue = -Infinity, maxValue = Infinity) {
145
- if (!this.areNumbers('every', value, minValue, maxValue)) {
146
- return value;
147
- }
148
- return Math.max(minValue, Math.min(maxValue, value));
149
- },
150
- }
151
- });
152
- const { isNumber: pIsNumber, ifNumber: pIfNumber } = exports.NumberExtensions.patches;
153
- /**
154
- * `NumberPrototypeExtensions` provides a set of utility methods that
155
- * are added to the `Number` prototype. This allows all number instances
156
- * to access new functionality directly, enhancing their capabilities
157
- * beyond the standard `Number` class methods.
158
- *
159
- * These extensions are applied using the `Patch` class from
160
- * '@nejs/extension', ensuring that they do not interfere with the
161
- * global namespace or existing properties.
162
- *
163
- * The extensions include methods for checking if a value is a number,
164
- * conditionally returning values based on whether a value is a number,
165
- * and more, making number-related tasks more convenient and expressive.
166
- *
167
- * @example
168
- * const num = 42
169
- * console.log(num.isNumber) // Output: true
170
- *
171
- * const notNum = "123"
172
- * console.log(notNum.isNumber) // Output: false
173
- *
174
- * @type {Patch}
175
- */
176
- exports.NumberPrototypeExtensions = new extension_1.Patch(Number.prototype, {
177
- [extension_1.Patch.kMutablyHidden]: {
178
- /**
179
- * Returns an object representation of the number instance.
180
- *
181
- * This getter method creates and returns an object that wraps the number
182
- * instance, allowing it to be treated as an object. The returned object
183
- * is created using the `Object()` constructor, which takes the number
184
- * instance as its argument.
185
- *
186
- * @type {Object}
187
- * @readonly
188
- *
189
- * @example
190
- * const num = 42
191
- * console.log(typeof num) // 'number'
192
- * console.log(typeof num.instance) // 'object'
193
- */
194
- get instance() {
195
- return Object(this);
196
- },
197
- /**
198
- * Determines if the current object is a number
199
- *
200
- * This getter uses the `pIsNumber` function from the `NumberExtensions`
201
- * patch to check if the current object (`this`) is a number.
202
- *
203
- * @type {boolean}
204
- * @readonly
205
- *
206
- * @example
207
- * const num = 42
208
- * console.log(num.isNumber) // Output: true
209
- *
210
- * const notNum = "123"
211
- * console.log(notNum.isNumber) // Output: false
212
- */
213
- get isNumber() {
214
- return pIsNumber(this);
215
- },
216
- /**
217
- * Checks if the current object is a number and returns the corresponding
218
- * value based on the result.
219
- *
220
- * This method uses the `pIfNumber` function from the `NumberExtensions`
221
- * patch to determine if the current object (`this`) is a number. If it is
222
- * a number, the `thenValue` is returned. Otherwise, the `elseValue` is
223
- * returned.
224
- *
225
- * @param {any} thenValue The value to return if the current object is
226
- * a number
227
- * @param {any} elseValue The value to return if the current object is not
228
- * a number
229
- * @returns {any} The `thenValue` if the current object is a number, or
230
- * the `elseValue` if it is not a number
231
- *
232
- * @example
233
- * const num = 42
234
- * console.log(num.ifNumber('Is a number', 'Not a number'))
235
- * // Output: 'Is a number'
236
- *
237
- * const notNum = '123'
238
- * console.log(notNum.ifNumber('Is a number', 'Not a number'))
239
- * // Output: 'Not a number'
240
- */
241
- ifNumber(thenValue, elseValue) {
242
- return pIfNumber(this, thenValue, elseValue);
243
- },
244
- /**
245
- * Provides a way when dealing with numbers to determine if
246
- * a given number is within a range of values. By default, if
247
- * no parameters are supplied, it always returns true since
248
- * the default range is -Infinity to +Infinity. Additionally,
249
- * by default, the number will always be less than the supplied
250
- * max unless inclusive is set to true.
251
- *
252
- * @param min the lower range value, defaults to -Infinity
253
- * @param max the upper range value, defaults to +Infinity
254
- * @param inclusive defaults to false, set to true if you
255
- * want the max value to less than and equals to
256
- * @returns {boolean} true if within the range, false otherwise
257
- */
258
- within(min = -Infinity, max = Infinity, inclusive = false) {
259
- return this >= min && (inclusive ? this <= max : this < max);
260
- }
261
- }
262
- });
263
- // NOTE to self; this is repeated here otherwise a circular reference from
264
- // Object<->Function<->Global occurs. See original source in global.this.js
265
- // {@see globalThis.isThenElse}
266
- function isThenElse(bv, tv, ev) {
267
- function isFunction(value) { typeof value === 'function'; }
268
- if (arguments.length > 1) {
269
- var _then = isFunction(tv) ? tv(bv) : tv;
270
- if (arguments.length > 2) {
271
- var _else = isFunction(ev) ? tv(bv) : ev;
272
- return bv ? _then : _else;
273
- }
274
- return bv || _then;
275
- }
276
- return bv;
277
- }
278
- //# sourceMappingURL=number.extension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"number.extension.js","sourceRoot":"","sources":["../../src/number.extension.js"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * `ObjectExtensions` is a constant that applies a patch to the global
3
- * `Object` constructor. This patch extends the `Object` with additional
4
- * methods and properties, enhancing its functionality.
5
- *
6
- * The `Patch` function takes two arguments: the target object to be patched
7
- * (in this case, `Object`), and an object containing the methods and
8
- * properties to be added to the target object.
9
- *
10
- * @type {Patch}
11
- * @memberof module:object.extensions
12
- */
13
- export const ObjectExtensions: Patch;
14
- /**
15
- * `ObjectPrototypeExtensions` is a constant that applies a patch to the
16
- * Object prototype. This patch extends the Object prototype with additional
17
- * methods and properties, enhancing its functionality.
18
- *
19
- * The `Patch` function takes two arguments: the target object to be patched
20
- * (in this case, `Object.prototype`), and an object containing the methods
21
- * and properties to be added to the target object.
22
- *
23
- * @example
24
- * // Using a method added by ObjectPrototypeExtensions
25
- * const obj = {};
26
- * console.log(obj.isObject()); // Output: true
27
- *
28
- * @const
29
- * @type {Patch}
30
- * @memberof module:object.extensions
31
- */
32
- export const ObjectPrototypeExtensions: Patch;
33
- import { Patch } from '@nejs/extension';