@nejs/basic-extensions 2.6.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/.vscode/settings.json +5 -0
  2. package/README.md +6129 -1574
  3. package/dist/@nejs/basic-extensions.bundle.2.7.0.js +19 -0
  4. package/dist/@nejs/basic-extensions.bundle.2.7.0.js.map +7 -0
  5. package/dist/cjs/array.extensions.d.ts +39 -0
  6. package/dist/cjs/array.extensions.js +303 -0
  7. package/dist/cjs/array.extensions.js.map +1 -0
  8. package/dist/cjs/big.int.extension.d.ts +31 -0
  9. package/dist/cjs/big.int.extension.js +164 -0
  10. package/dist/cjs/big.int.extension.js.map +1 -0
  11. package/dist/cjs/{newClasses → classes}/asyncIterable.js +32 -44
  12. package/dist/cjs/classes/asyncIterable.js.map +1 -0
  13. package/dist/cjs/{newClasses → classes}/deferred.js +66 -138
  14. package/dist/cjs/classes/deferred.js.map +1 -0
  15. package/dist/cjs/{newClasses → classes}/descriptor.js +56 -90
  16. package/dist/cjs/classes/descriptor.js.map +1 -0
  17. package/dist/cjs/classes/index.d.ts +13 -0
  18. package/dist/cjs/classes/index.js +57 -0
  19. package/dist/cjs/classes/index.js.map +1 -0
  20. package/dist/cjs/classes/introspector.d.ts +20 -0
  21. package/dist/cjs/classes/introspector.js +130 -0
  22. package/dist/cjs/classes/introspector.js.map +1 -0
  23. package/dist/cjs/{newClasses → classes}/iterable.js +42 -63
  24. package/dist/cjs/classes/iterable.js.map +1 -0
  25. package/dist/cjs/classes/param.parser.d.ts +227 -0
  26. package/dist/cjs/classes/param.parser.js +242 -0
  27. package/dist/cjs/classes/param.parser.js.map +1 -0
  28. package/dist/cjs/classes/pluggable.proxy.d.ts +152 -0
  29. package/dist/cjs/classes/pluggable.proxy.js +444 -0
  30. package/dist/cjs/classes/pluggable.proxy.js.map +1 -0
  31. package/dist/cjs/{newClasses → classes}/refmap.js +18 -30
  32. package/dist/cjs/classes/refmap.js.map +1 -0
  33. package/dist/cjs/{newClasses → classes}/refset.js +28 -47
  34. package/dist/cjs/classes/refset.js.map +1 -0
  35. package/dist/cjs/classes/symkeys.d.ts +292 -0
  36. package/dist/cjs/classes/symkeys.js +424 -0
  37. package/dist/cjs/classes/symkeys.js.map +1 -0
  38. package/dist/cjs/classes/type.d.ts +56 -0
  39. package/dist/cjs/classes/type.js +405 -0
  40. package/dist/cjs/classes/type.js.map +1 -0
  41. package/dist/cjs/function.extensions.js +757 -0
  42. package/dist/cjs/function.extensions.js.map +1 -0
  43. package/dist/cjs/global.this.js +261 -0
  44. package/dist/cjs/global.this.js.map +1 -0
  45. package/dist/cjs/index.d.ts +4 -3
  46. package/dist/cjs/index.js +62 -32
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/json.extensions.d.ts +2 -0
  49. package/dist/cjs/json.extensions.js +107 -0
  50. package/dist/cjs/json.extensions.js.map +1 -0
  51. package/dist/{mjs/mapextensions.d.ts → cjs/map.extensions.d.ts} +1 -0
  52. package/dist/cjs/map.extensions.js +142 -0
  53. package/dist/cjs/map.extensions.js.map +1 -0
  54. package/dist/cjs/number.extension.d.ts +44 -0
  55. package/dist/cjs/number.extension.js +260 -0
  56. package/dist/cjs/number.extension.js.map +1 -0
  57. package/dist/cjs/object.extensions.d.ts +62 -0
  58. package/dist/cjs/object.extensions.js +1116 -0
  59. package/dist/cjs/object.extensions.js.map +1 -0
  60. package/dist/cjs/proxy.extensions.d.ts +2 -0
  61. package/dist/cjs/proxy.extensions.js +207 -0
  62. package/dist/cjs/proxy.extensions.js.map +1 -0
  63. package/dist/cjs/reflect.extensions.js +316 -0
  64. package/dist/cjs/reflect.extensions.js.map +1 -0
  65. package/dist/cjs/regular.expression.extensions.d.ts +2 -0
  66. package/dist/cjs/regular.expression.extensions.js +423 -0
  67. package/dist/cjs/regular.expression.extensions.js.map +1 -0
  68. package/dist/cjs/set.extensions.d.ts +40 -0
  69. package/dist/cjs/{setextensions.js → set.extensions.js} +150 -2
  70. package/dist/cjs/set.extensions.js.map +1 -0
  71. package/dist/cjs/string.extensions.js +471 -0
  72. package/dist/cjs/string.extensions.js.map +1 -0
  73. package/dist/{mjs/symbolextensions.d.ts → cjs/symbol.extensions.d.ts} +1 -0
  74. package/dist/cjs/symbol.extensions.js +259 -0
  75. package/dist/cjs/symbol.extensions.js.map +1 -0
  76. package/dist/cjs/{weakrefextensions.js → weakref.extensions.js} +1 -1
  77. package/dist/cjs/weakref.extensions.js.map +1 -0
  78. package/dist/mjs/array.extensions.d.ts +39 -0
  79. package/dist/mjs/array.extensions.js +300 -0
  80. package/dist/mjs/array.extensions.js.map +1 -0
  81. package/dist/mjs/big.int.extension.d.ts +31 -0
  82. package/dist/mjs/big.int.extension.js +161 -0
  83. package/dist/mjs/big.int.extension.js.map +1 -0
  84. package/dist/mjs/classes/asyncIterable.js.map +1 -0
  85. package/dist/mjs/classes/deferred.js.map +1 -0
  86. package/dist/mjs/{newClasses → classes}/descriptor.js +7 -4
  87. package/dist/mjs/classes/descriptor.js.map +1 -0
  88. package/dist/mjs/classes/index.d.ts +13 -0
  89. package/dist/mjs/classes/index.js +40 -0
  90. package/dist/mjs/classes/index.js.map +1 -0
  91. package/dist/mjs/classes/introspector.d.ts +20 -0
  92. package/dist/mjs/classes/introspector.js +126 -0
  93. package/dist/mjs/classes/introspector.js.map +1 -0
  94. package/dist/mjs/classes/iterable.js.map +1 -0
  95. package/dist/mjs/classes/param.parser.d.ts +227 -0
  96. package/dist/mjs/classes/param.parser.js +238 -0
  97. package/dist/mjs/classes/param.parser.js.map +1 -0
  98. package/dist/mjs/classes/pluggable.proxy.d.ts +152 -0
  99. package/dist/mjs/classes/pluggable.proxy.js +438 -0
  100. package/dist/mjs/classes/pluggable.proxy.js.map +1 -0
  101. package/dist/mjs/{newClasses → classes}/refmap.js +3 -3
  102. package/dist/mjs/classes/refmap.js.map +1 -0
  103. package/dist/mjs/classes/refset.js.map +1 -0
  104. package/dist/mjs/classes/symkeys.d.ts +292 -0
  105. package/dist/mjs/classes/symkeys.js +420 -0
  106. package/dist/mjs/classes/symkeys.js.map +1 -0
  107. package/dist/mjs/classes/type.d.ts +56 -0
  108. package/dist/mjs/classes/type.js +401 -0
  109. package/dist/mjs/classes/type.js.map +1 -0
  110. package/dist/mjs/function.extensions.js +754 -0
  111. package/dist/mjs/function.extensions.js.map +1 -0
  112. package/dist/mjs/global.this.js +258 -0
  113. package/dist/mjs/global.this.js.map +1 -0
  114. package/dist/mjs/index.d.ts +4 -3
  115. package/dist/mjs/index.js +49 -19
  116. package/dist/mjs/index.js.map +1 -1
  117. package/dist/mjs/json.extensions.d.ts +2 -0
  118. package/dist/mjs/json.extensions.js +104 -0
  119. package/dist/mjs/json.extensions.js.map +1 -0
  120. package/dist/{cjs/mapextensions.d.ts → mjs/map.extensions.d.ts} +1 -0
  121. package/dist/mjs/map.extensions.js +139 -0
  122. package/dist/mjs/map.extensions.js.map +1 -0
  123. package/dist/mjs/number.extension.d.ts +44 -0
  124. package/dist/mjs/number.extension.js +257 -0
  125. package/dist/mjs/number.extension.js.map +1 -0
  126. package/dist/mjs/object.extensions.d.ts +62 -0
  127. package/dist/mjs/object.extensions.js +1112 -0
  128. package/dist/mjs/object.extensions.js.map +1 -0
  129. package/dist/mjs/proxy.extensions.d.ts +2 -0
  130. package/dist/mjs/proxy.extensions.js +204 -0
  131. package/dist/mjs/proxy.extensions.js.map +1 -0
  132. package/dist/mjs/reflect.extensions.js +313 -0
  133. package/dist/mjs/reflect.extensions.js.map +1 -0
  134. package/dist/mjs/regular.expression.extensions.d.ts +2 -0
  135. package/dist/mjs/regular.expression.extensions.js +420 -0
  136. package/dist/mjs/regular.expression.extensions.js.map +1 -0
  137. package/dist/mjs/set.extensions.d.ts +40 -0
  138. package/dist/mjs/{setextensions.js → set.extensions.js} +149 -1
  139. package/dist/mjs/set.extensions.js.map +1 -0
  140. package/dist/mjs/string.extensions.js +468 -0
  141. package/dist/mjs/string.extensions.js.map +1 -0
  142. package/dist/{cjs/symbolextensions.d.ts → mjs/symbol.extensions.d.ts} +1 -0
  143. package/dist/mjs/symbol.extensions.js +256 -0
  144. package/dist/mjs/symbol.extensions.js.map +1 -0
  145. package/dist/mjs/{weakrefextensions.js → weakref.extensions.js} +1 -1
  146. package/dist/mjs/weakref.extensions.js.map +1 -0
  147. package/docs/index.html +24045 -5805
  148. package/package.json +6 -4
  149. package/repl.bootstrap.js +21 -0
  150. package/src/array.extensions.js +322 -0
  151. package/src/big.int.extension.js +163 -0
  152. package/src/{newClasses → classes}/descriptor.js +16 -12
  153. package/src/classes/index.js +51 -0
  154. package/src/classes/introspector.js +167 -0
  155. package/src/classes/param.parser.js +253 -0
  156. package/src/classes/pluggable.proxy.js +485 -0
  157. package/src/{newClasses → classes}/refmap.js +5 -3
  158. package/src/classes/symkeys.js +464 -0
  159. package/src/classes/type.js +427 -0
  160. package/src/function.extensions.js +818 -0
  161. package/src/global.this.js +304 -0
  162. package/src/index.js +56 -23
  163. package/src/json.extensions.js +108 -0
  164. package/src/map.extensions.js +144 -0
  165. package/src/number.extension.js +273 -0
  166. package/src/object.extensions.js +1222 -0
  167. package/src/proxy.extensions.js +229 -0
  168. package/src/reflect.extensions.js +346 -0
  169. package/src/regular.expression.extensions.js +451 -0
  170. package/src/{setextensions.js → set.extensions.js} +151 -2
  171. package/src/string.extensions.js +515 -0
  172. package/src/symbol.extensions.js +268 -0
  173. package/tests/newClasses/refmap.test.js +3 -2
  174. package/tsconfig.base.json +5 -3
  175. package/tsconfig.cjs.json +2 -2
  176. package/tsconfig.esm.json +2 -2
  177. package/dist/@nejs/basic-extensions.bundle.2.5.0.js +0 -8
  178. package/dist/@nejs/basic-extensions.bundle.2.5.0.js.map +0 -7
  179. package/dist/cjs/arrayextensions.d.ts +0 -10
  180. package/dist/cjs/arrayextensions.js +0 -73
  181. package/dist/cjs/arrayextensions.js.map +0 -1
  182. package/dist/cjs/functionextensions.js +0 -202
  183. package/dist/cjs/functionextensions.js.map +0 -1
  184. package/dist/cjs/globals.js +0 -166
  185. package/dist/cjs/globals.js.map +0 -1
  186. package/dist/cjs/mapextensions.js +0 -32
  187. package/dist/cjs/mapextensions.js.map +0 -1
  188. package/dist/cjs/newClasses/asyncIterable.js.map +0 -1
  189. package/dist/cjs/newClasses/deferred.js.map +0 -1
  190. package/dist/cjs/newClasses/descriptor.js.map +0 -1
  191. package/dist/cjs/newClasses/iterable.js.map +0 -1
  192. package/dist/cjs/newClasses/refmap.js.map +0 -1
  193. package/dist/cjs/newClasses/refset.js.map +0 -1
  194. package/dist/cjs/objectextensions.d.ts +0 -11
  195. package/dist/cjs/objectextensions.js +0 -232
  196. package/dist/cjs/objectextensions.js.map +0 -1
  197. package/dist/cjs/reflectextensions.js +0 -111
  198. package/dist/cjs/reflectextensions.js.map +0 -1
  199. package/dist/cjs/setextensions.d.ts +0 -2
  200. package/dist/cjs/setextensions.js.map +0 -1
  201. package/dist/cjs/stringextensions.js +0 -158
  202. package/dist/cjs/stringextensions.js.map +0 -1
  203. package/dist/cjs/symbolextensions.js +0 -69
  204. package/dist/cjs/symbolextensions.js.map +0 -1
  205. package/dist/cjs/weakrefextensions.js.map +0 -1
  206. package/dist/mjs/arrayextensions.d.ts +0 -10
  207. package/dist/mjs/arrayextensions.js +0 -70
  208. package/dist/mjs/arrayextensions.js.map +0 -1
  209. package/dist/mjs/functionextensions.js +0 -199
  210. package/dist/mjs/functionextensions.js.map +0 -1
  211. package/dist/mjs/globals.js +0 -163
  212. package/dist/mjs/globals.js.map +0 -1
  213. package/dist/mjs/mapextensions.js +0 -29
  214. package/dist/mjs/mapextensions.js.map +0 -1
  215. package/dist/mjs/newClasses/asyncIterable.js.map +0 -1
  216. package/dist/mjs/newClasses/deferred.js.map +0 -1
  217. package/dist/mjs/newClasses/descriptor.js.map +0 -1
  218. package/dist/mjs/newClasses/iterable.js.map +0 -1
  219. package/dist/mjs/newClasses/refmap.js.map +0 -1
  220. package/dist/mjs/newClasses/refset.js.map +0 -1
  221. package/dist/mjs/objectextensions.d.ts +0 -11
  222. package/dist/mjs/objectextensions.js +0 -229
  223. package/dist/mjs/objectextensions.js.map +0 -1
  224. package/dist/mjs/reflectextensions.js +0 -108
  225. package/dist/mjs/reflectextensions.js.map +0 -1
  226. package/dist/mjs/setextensions.d.ts +0 -2
  227. package/dist/mjs/setextensions.js.map +0 -1
  228. package/dist/mjs/stringextensions.js +0 -155
  229. package/dist/mjs/stringextensions.js.map +0 -1
  230. package/dist/mjs/symbolextensions.js +0 -66
  231. package/dist/mjs/symbolextensions.js.map +0 -1
  232. package/dist/mjs/weakrefextensions.js.map +0 -1
  233. package/src/arrayextensions.js +0 -75
  234. package/src/functionextensions.js +0 -225
  235. package/src/globals.js +0 -196
  236. package/src/mapextensions.js +0 -32
  237. package/src/objectextensions.js +0 -256
  238. package/src/reflectextensions.js +0 -118
  239. package/src/stringextensions.js +0 -166
  240. package/src/symbolextensions.js +0 -69
  241. /package/dist/cjs/{newClasses → classes}/asyncIterable.d.ts +0 -0
  242. /package/dist/cjs/{newClasses → classes}/deferred.d.ts +0 -0
  243. /package/dist/cjs/{newClasses → classes}/descriptor.d.ts +0 -0
  244. /package/dist/cjs/{newClasses → classes}/iterable.d.ts +0 -0
  245. /package/dist/cjs/{newClasses → classes}/refmap.d.ts +0 -0
  246. /package/dist/cjs/{newClasses → classes}/refset.d.ts +0 -0
  247. /package/dist/cjs/{functionextensions.d.ts → function.extensions.d.ts} +0 -0
  248. /package/dist/cjs/{globals.d.ts → global.this.d.ts} +0 -0
  249. /package/dist/cjs/{reflectextensions.d.ts → reflect.extensions.d.ts} +0 -0
  250. /package/dist/cjs/{stringextensions.d.ts → string.extensions.d.ts} +0 -0
  251. /package/dist/cjs/{weakrefextensions.d.ts → weakref.extensions.d.ts} +0 -0
  252. /package/dist/mjs/{newClasses → classes}/asyncIterable.d.ts +0 -0
  253. /package/dist/mjs/{newClasses → classes}/asyncIterable.js +0 -0
  254. /package/dist/mjs/{newClasses → classes}/deferred.d.ts +0 -0
  255. /package/dist/mjs/{newClasses → classes}/deferred.js +0 -0
  256. /package/dist/mjs/{newClasses → classes}/descriptor.d.ts +0 -0
  257. /package/dist/mjs/{newClasses → classes}/iterable.d.ts +0 -0
  258. /package/dist/mjs/{newClasses → classes}/iterable.js +0 -0
  259. /package/dist/mjs/{newClasses → classes}/refmap.d.ts +0 -0
  260. /package/dist/mjs/{newClasses → classes}/refset.d.ts +0 -0
  261. /package/dist/mjs/{newClasses → classes}/refset.js +0 -0
  262. /package/dist/mjs/{functionextensions.d.ts → function.extensions.d.ts} +0 -0
  263. /package/dist/mjs/{globals.d.ts → global.this.d.ts} +0 -0
  264. /package/dist/mjs/{reflectextensions.d.ts → reflect.extensions.d.ts} +0 -0
  265. /package/dist/mjs/{stringextensions.d.ts → string.extensions.d.ts} +0 -0
  266. /package/dist/mjs/{weakrefextensions.d.ts → weakref.extensions.d.ts} +0 -0
  267. /package/src/{newClasses → classes}/asyncIterable.js +0 -0
  268. /package/src/{newClasses → classes}/deferred.js +0 -0
  269. /package/src/{newClasses → classes}/iterable.js +0 -0
  270. /package/src/{newClasses → classes}/refset.js +0 -0
  271. /package/src/{weakrefextensions.js → weakref.extensions.js} +0 -0
@@ -0,0 +1,139 @@
1
+ import { Patch } from '@nejs/extension';
2
+ export const MapExtensions = new Patch(Map, {
3
+ [Patch.kMutablyHidden]: {
4
+ /**
5
+ * Determines if the supplied `value` is a `Map` object. This check
6
+ * is performed by first looking for the `Symbol.toStringTag` on the
7
+ * `value` and checking to see if it is equal to the string "Map".
8
+ * If that check fails, `instanceof` is used as a fallback to check
9
+ * the prototype chain.
10
+ *
11
+ * @param {any} value the value that needs to be checked to determine
12
+ * if it is a `Map` object or not
13
+ * @returns {boolean} `true` if the supplied `value` is a `Map`
14
+ * object, `false` otherwise
15
+ *
16
+ * @example
17
+ * const map = new Map()
18
+ * isMap(map) // true
19
+ * isMap(new Set()) // false
20
+ * isMap([]) // false
21
+ * isMap({}) // false
22
+ */
23
+ isMap(value) {
24
+ return value?.[Symbol.toStringTag] === Map.name && value instanceof Map;
25
+ },
26
+ /**
27
+ * Conditionally returns a value based on whether the supplied
28
+ * `value` is a `Map` object or not. If the `value` is a `Map`
29
+ * object, the `thenValue` will be returned. If it is not a `Map`
30
+ * object, the `elseValue` will be returned instead.
31
+ *
32
+ * @param {any} value the value to check to determine if it is a
33
+ * `Map` object
34
+ * @param {any} thenValue the value to return if the supplied
35
+ * `value` is a `Map` object
36
+ * @param {any} elseValue the value to return if the supplied
37
+ * `value` is not a `Map` object
38
+ * @returns {any} either the `thenValue` or `elseValue` depending
39
+ * on if the supplied `value` is a `Map` object
40
+ *
41
+ * @example
42
+ * const map = new Map()
43
+ * const set = new Set()
44
+ * ifMap(map, 'is a map', 'not a map') // 'is a map'
45
+ * ifMap(set, 'is a map', 'not a map') // 'not a map'
46
+ */
47
+ ifMap(value, thenValue, elseValue) {
48
+ return isThenElse(this.isMap(value), thenValue, elseValue);
49
+ },
50
+ }
51
+ });
52
+ const { isMap: pIsMap, ifMap: pIfMap } = MapExtensions.patches;
53
+ export const MapPrototypeExtensions = new Patch(Map.prototype, {
54
+ [Patch.kMutablyHidden]: {
55
+ /**
56
+ * Determines if the current object is a `Map` object
57
+ *
58
+ * This is a getter that uses the `isMap` function from the
59
+ * `MapExtensions` patch to check if the current object (`this`) is
60
+ * a `Map` object
61
+ *
62
+ * @type {boolean}
63
+ * @readonly
64
+ *
65
+ * @example
66
+ * const map = new Map()
67
+ * console.log(map.isMap) // Output: true
68
+ *
69
+ * const notMap = {}
70
+ * console.log(notMap.isMap) // Output: false
71
+ */
72
+ get isMap() {
73
+ return pIsMap(this);
74
+ },
75
+ /**
76
+ * Conditionally returns a value based on whether the current
77
+ * object is a `Map` object or not
78
+ *
79
+ * If the current object is a `Map` object, the `thenValue` will
80
+ * be returned. If it is not a `Map` object, the `elseValue` will
81
+ * be returned instead.
82
+ *
83
+ * @param {any} thenValue the value to return if the current
84
+ * object is a `Map` object
85
+ * @param {any} elseValue the value to return if the current
86
+ * object is not a `Map` object
87
+ * @returns {any} either the `thenValue` or `elseValue` depending
88
+ * on if the current object is a `Map` object
89
+ *
90
+ * @example
91
+ * const map = new Map()
92
+ * map.ifMap('is a map', 'not a map') // 'is a map'
93
+ *
94
+ * const notMap = {}
95
+ * notMap.ifMap('is a map', 'not a map') // 'not a map'
96
+ */
97
+ ifMap(thenValue, elseValue) {
98
+ return pIfMap(this, thenValue, elseValue);
99
+ },
100
+ /**
101
+ * The function `getKey` returns the key associated with a given value
102
+ * in a map.
103
+ *
104
+ * @param {any} value - The value parameter is the value that you want to
105
+ * find the corresponding key for in the map.
106
+ * @param [strict=true] - The "strict" parameter is a boolean value that
107
+ * determines whether strict equality (===) or loose equality (==) should
108
+ * be used when comparing the "value" parameter with the values in the
109
+ * entries of the object. If "strict" is set to true, strict equality will
110
+ * be used.
111
+ * @returns the key associated with the given value. If a matching key is
112
+ * found, it is returned. If no matching key is found, null is returned.
113
+ */
114
+ getKey(value, strict = true) {
115
+ for (const [key, entryValue] of this) {
116
+ if ((strict && value === entryValue) &&
117
+ (!strict && value == entryValue)) {
118
+ return key;
119
+ }
120
+ return null;
121
+ }
122
+ },
123
+ },
124
+ });
125
+ // NOTE to self; this is repeated here otherwise a circular reference from
126
+ // Object<->Function<->Global occurs. See original source in global.this.js
127
+ // {@see globalThis.isThenElse}
128
+ function isThenElse(bv, tv, ev) {
129
+ if (arguments.length > 1) {
130
+ var _then = isFunction(tv) ? tv(bv) : tv;
131
+ if (arguments.length > 2) {
132
+ var _else = isFunction(ev) ? tv(bv) : ev;
133
+ return bv ? _then : _else;
134
+ }
135
+ return bv || _then;
136
+ }
137
+ return bv;
138
+ }
139
+ //# sourceMappingURL=map.extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.extensions.js","sourceRoot":"","sources":["../../src/map.extensions.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;IAC1C,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;QACtB;;;;;;;;;;;;;;;;;;WAkBG;QACH,KAAK,CAAC,KAAK;YACT,OAAO,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,YAAY,GAAG,CAAA;QACzE,CAAC;QAED;;;;;;;;;;;;;;;;;;;;WAoBG;QACH,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS;YAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QAC5D,CAAC;KACF;CACF,CAAC,CAAA;AAEF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAA;AAE9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE;IAC7D,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;QACtB;;;;;;;;;;;;;;;;WAgBG;QACH,IAAI,KAAK;YACP,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;QAED;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,KAAK,CAAC,SAAS,EAAE,SAAS;YACxB,OAAO,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QAC3C,CAAC;QAED;;;;;;;;;;;;;WAaG;QACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;YACzB,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrC,IACE,CAAC,MAAM,IAAI,KAAK,KAAK,UAAU,CAAC;oBAChC,CAAC,CAAC,MAAM,IAAI,KAAK,IAAI,UAAU,CAAC,EAChC,CAAC;oBACD,OAAO,GAAG,CAAA;gBACZ,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;KACF;CACF,CAAC,CAAA;AAEF,0EAA0E;AAC1E,2EAA2E;AAC3E,+BAA+B;AAC/B,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnE,IAAI,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;QACrE,CAAC;QAAC,OAAO,EAAE,IAAI,KAAK,CAAC;IACvB,CAAC;IAAC,OAAO,EAAE,CAAA;AACb,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * A patch for the JavaScript built-in `Number` class that adds utility
3
+ * methods without modifying the global namespace directly
4
+ *
5
+ * This patch includes methods for checking if a value is a number and
6
+ * conditionally returning a value based on whether the supplied value is
7
+ * a number or not.
8
+ *
9
+ * @type {Patch}
10
+ * @property {Object} [Patch.kMutablyHidden] An object containing methods
11
+ * that are hidden from enumeration and mutation
12
+ *
13
+ * @example
14
+ * import { NumberExtensions } from 'number.extension.js'
15
+ *
16
+ * NumberExtensions.apply()
17
+ * // Now the `Number` class has additional methods available
18
+ */
19
+ export const NumberExtensions: Patch;
20
+ /**
21
+ * `NumberPrototypeExtensions` provides a set of utility methods that
22
+ * are added to the `Number` prototype. This allows all number instances
23
+ * to access new functionality directly, enhancing their capabilities
24
+ * beyond the standard `Number` class methods.
25
+ *
26
+ * These extensions are applied using the `Patch` class from
27
+ * '@nejs/extension', ensuring that they do not interfere with the
28
+ * global namespace or existing properties.
29
+ *
30
+ * The extensions include methods for checking if a value is a number,
31
+ * conditionally returning values based on whether a value is a number,
32
+ * and more, making number-related tasks more convenient and expressive.
33
+ *
34
+ * @example
35
+ * const num = 42
36
+ * console.log(num.isNumber) // Output: true
37
+ *
38
+ * const notNum = "123"
39
+ * console.log(notNum.isNumber) // Output: false
40
+ *
41
+ * @type {Patch}
42
+ */
43
+ export const NumberPrototypeExtensions: Patch;
44
+ import { Patch } from '@nejs/extension';
@@ -0,0 +1,257 @@
1
+ import { Patch } from '@nejs/extension';
2
+ /**
3
+ * A patch for the JavaScript built-in `Number` class that adds utility
4
+ * methods without modifying the global namespace directly
5
+ *
6
+ * This patch includes methods for checking if a value is a number and
7
+ * conditionally returning a value based on whether the supplied value is
8
+ * a number or not.
9
+ *
10
+ * @type {Patch}
11
+ * @property {Object} [Patch.kMutablyHidden] An object containing methods
12
+ * that are hidden from enumeration and mutation
13
+ *
14
+ * @example
15
+ * import { NumberExtensions } from 'number.extension.js'
16
+ *
17
+ * NumberExtensions.apply()
18
+ * // Now the `Number` class has additional methods available
19
+ */
20
+ export const NumberExtensions = new Patch(Number, {
21
+ [Patch.kMutablyHidden]: {
22
+ /**
23
+ * Determines if the supplied `value` is a `Number`. This check is
24
+ * performed by first converting the `value` to a `Number` using the
25
+ * `Number()` constructor and checking to see if the result is not
26
+ * `NaN`. If that check passes, `typeof` is used to ensure that the
27
+ * original `value` is of type "number".
28
+ *
29
+ * @param {*} value The value that needs to be checked to determine if it
30
+ * is a `Number` or not
31
+ * @returns {boolean} `true` if the supplied `value` is a `Number`,
32
+ * `false` otherwise
33
+ *
34
+ * @example
35
+ * const num = 42
36
+ * isNumber(num) // true
37
+ * isNumber('42') // false
38
+ * isNumber(NaN) // false
39
+ * isNumber(Infinity) // true
40
+ */
41
+ isNumber(value) {
42
+ return !isNaN(value) && typeof value === 'number';
43
+ },
44
+ /**
45
+ * Checks if all or some of the supplied values are numbers.
46
+ *
47
+ * This method uses the `Array.prototype.every` or `Array.prototype.some`
48
+ * method to check if all or some of the supplied values are numbers,
49
+ * respectively. The method to use is determined by the `which` parameter.
50
+ *
51
+ * @param {string} [which='every'] - Determines the method to use for the
52
+ * check. Can be either 'every' or 'some'. Defaults to 'every'.
53
+ * @param {...*} values - The values to check.
54
+ * @returns {boolean} - Returns `true` if all or some of the values are
55
+ * numbers (based on the `which` parameter), `false` otherwise.
56
+ *
57
+ * @example
58
+ * areNumbers('every', 1, 2, 3) // true
59
+ * areNumbers('some', 1, '2', 3) // true
60
+ * areNumbers('every', 1, '2', 3) // false
61
+ */
62
+ areNumbers(which = ['every', 'some'][0], ...values) {
63
+ if (which !== 'every' && which !== 'some') {
64
+ return false;
65
+ }
66
+ return values[which](num => this.isNumber(num));
67
+ },
68
+ /**
69
+ * Conditionally returns a value based on whether the supplied `value` is
70
+ * a `Number` or not. If the `value` is a `Number`, the `thenValue` will
71
+ * be returned. If it is not a `Number`, the `elseValue` will be
72
+ * returned instead.
73
+ *
74
+ * @param {*} value The value to check to determine if it is a `Number`
75
+ * @param {*} thenValue The value to return if the supplied `value` is
76
+ * a `Number`
77
+ * @param {*} elseValue The value to return if the supplied `value` is
78
+ * not a `Number`
79
+ * @returns {*} Either the `thenValue` or `elseValue` depending on if the
80
+ * supplied `value` is a `Number`
81
+ *
82
+ * @example
83
+ * const num = 42
84
+ * const str = 'hello'
85
+ * ifNumber(num, 'is a number', 'not a number') // 'is a number'
86
+ * ifNumber(str, 'is a number', 'not a number') // 'not a number'
87
+ */
88
+ ifNumber(value, thenValue, elseValue) {
89
+ return isThenElse(this.isNumber(value), thenValue, elseValue);
90
+ },
91
+ /**
92
+ * Conditionally returns a value based on whether all or some of the
93
+ * supplied values are numbers.
94
+ *
95
+ * This method uses the `areNumbers` method to check if all or some of
96
+ * the supplied values are numbers, based on the `which` parameter.
97
+ * If the condition is met, the `thenValue` is returned, otherwise
98
+ * the `elseValue` is returned.
99
+ *
100
+ * @param {*} thenValue - The value to return if the condition is met.
101
+ * @param {*} elseValue - The value to return if the condition is not met.
102
+ * @param {string} [which='every'] - Determines the method to use for the
103
+ * check. Can be either 'every' or 'some'. Defaults to 'every'.
104
+ * @param {...*} numbers - The values to check.
105
+ * @returns {*} Either the `thenValue` or `elseValue` depending on if all
106
+ * or some of the supplied values are numbers.
107
+ *
108
+ * @example
109
+ * ifNumbers('All are numbers', 'Not all are numbers', 'every', 1, 2, 3)
110
+ * // returns 'All are numbers'
111
+ * ifNumbers('At least one is a number', 'None are numbers', 'some', 1, '2', 3)
112
+ * // returns 'At least one is a number'
113
+ * ifNumbers('All are numbers', 'Not all are numbers', 'every', 1, '2', 3)
114
+ * // returns 'Not all are numbers'
115
+ */
116
+ ifNumbers(thenValue, elseValue, which = ['every', 'some'][0], ...numbers) {
117
+ return isThenElse(this.areNumbers(which, ...numbers), thenValue, elseValue);
118
+ },
119
+ /**
120
+ * Clamps a value between a minimum and maximum value.
121
+ *
122
+ * This method checks if the provided value and the min and max bounds are
123
+ * numbers. If they are not, it returns the original value. If they are,
124
+ * it ensures that the value does not go below the minimum value or above
125
+ * the maximum value.
126
+ *
127
+ * @param {*} value - The value to clamp.
128
+ * @param {number} [minValue=-Infinity] - The minimum value. Defaults
129
+ * to -Infinity.
130
+ * @param {number} [maxValue=Infinity] - The maximum value. Defaults
131
+ * to Infinity.
132
+ * @returns {*} - Returns the clamped value if all parameters are numbers,
133
+ * otherwise returns the original value.
134
+ *
135
+ * @example
136
+ * clamp(10, 1, 5) // returns 5
137
+ * clamp(-10, 1, 5) // returns 1
138
+ * clamp(3, 1, 5) // returns 3
139
+ * clamp('10', 1, 5) // returns '10'
140
+ */
141
+ clamp(value, minValue = -Infinity, maxValue = Infinity) {
142
+ if (!this.areNumbers('every', value, minValue, maxValue)) {
143
+ return value;
144
+ }
145
+ return Math.max(minValue, Math.min(maxValue, value));
146
+ },
147
+ }
148
+ });
149
+ const { isNumber: pIsNumber, ifNumber: pIfNumber } = NumberExtensions.patches;
150
+ /**
151
+ * `NumberPrototypeExtensions` provides a set of utility methods that
152
+ * are added to the `Number` prototype. This allows all number instances
153
+ * to access new functionality directly, enhancing their capabilities
154
+ * beyond the standard `Number` class methods.
155
+ *
156
+ * These extensions are applied using the `Patch` class from
157
+ * '@nejs/extension', ensuring that they do not interfere with the
158
+ * global namespace or existing properties.
159
+ *
160
+ * The extensions include methods for checking if a value is a number,
161
+ * conditionally returning values based on whether a value is a number,
162
+ * and more, making number-related tasks more convenient and expressive.
163
+ *
164
+ * @example
165
+ * const num = 42
166
+ * console.log(num.isNumber) // Output: true
167
+ *
168
+ * const notNum = "123"
169
+ * console.log(notNum.isNumber) // Output: false
170
+ *
171
+ * @type {Patch}
172
+ */
173
+ export const NumberPrototypeExtensions = new Patch(Number.prototype, {
174
+ [Patch.kMutablyHidden]: {
175
+ /**
176
+ * Returns an object representation of the number instance.
177
+ *
178
+ * This getter method creates and returns an object that wraps the number
179
+ * instance, allowing it to be treated as an object. The returned object
180
+ * is created using the `Object()` constructor, which takes the number
181
+ * instance as its argument.
182
+ *
183
+ * @type {Object}
184
+ * @readonly
185
+ *
186
+ * @example
187
+ * const num = 42
188
+ * console.log(typeof num) // 'number'
189
+ * console.log(typeof num.instance) // 'object'
190
+ */
191
+ get instance() {
192
+ return Object(this);
193
+ },
194
+ /**
195
+ * Determines if the current object is a number
196
+ *
197
+ * This getter uses the `pIsNumber` function from the `NumberExtensions`
198
+ * patch to check if the current object (`this`) is a number.
199
+ *
200
+ * @type {boolean}
201
+ * @readonly
202
+ *
203
+ * @example
204
+ * const num = 42
205
+ * console.log(num.isNumber) // Output: true
206
+ *
207
+ * const notNum = "123"
208
+ * console.log(notNum.isNumber) // Output: false
209
+ */
210
+ get isNumber() {
211
+ return pIsNumber(this);
212
+ },
213
+ /**
214
+ * Checks if the current object is a number and returns the corresponding
215
+ * value based on the result.
216
+ *
217
+ * This method uses the `pIfNumber` function from the `NumberExtensions`
218
+ * patch to determine if the current object (`this`) is a number. If it is
219
+ * a number, the `thenValue` is returned. Otherwise, the `elseValue` is
220
+ * returned.
221
+ *
222
+ * @param {any} thenValue The value to return if the current object is
223
+ * a number
224
+ * @param {any} elseValue The value to return if the current object is not
225
+ * a number
226
+ * @returns {any} The `thenValue` if the current object is a number, or
227
+ * the `elseValue` if it is not a number
228
+ *
229
+ * @example
230
+ * const num = 42
231
+ * console.log(num.ifNumber('Is a number', 'Not a number'))
232
+ * // Output: 'Is a number'
233
+ *
234
+ * const notNum = '123'
235
+ * console.log(notNum.ifNumber('Is a number', 'Not a number'))
236
+ * // Output: 'Not a number'
237
+ */
238
+ ifNumber(thenValue, elseValue) {
239
+ return pIfNumber(this, thenValue, elseValue);
240
+ },
241
+ }
242
+ });
243
+ // NOTE to self; this is repeated here otherwise a circular reference from
244
+ // Object<->Function<->Global occurs. See original source in global.this.js
245
+ // {@see globalThis.isThenElse}
246
+ function isThenElse(bv, tv, ev) {
247
+ if (arguments.length > 1) {
248
+ var _then = isFunction(tv) ? tv(bv) : tv;
249
+ if (arguments.length > 2) {
250
+ var _else = isFunction(ev) ? tv(bv) : ev;
251
+ return bv ? _then : _else;
252
+ }
253
+ return bv || _then;
254
+ }
255
+ return bv;
256
+ }
257
+ //# sourceMappingURL=number.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.extension.js","sourceRoot":"","sources":["../../src/number.extension.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Creates a deep or shallow copy of the provided source objects and merges
3
+ * them into the destination object. The function uses a Set to keep track
4
+ * of visited objects to avoid circular references.
5
+ *
6
+ * @function
7
+ * @name copyObject
8
+ * @param {boolean} deep - If true, performs a deep copy, otherwise performs
9
+ * a shallow copy.
10
+ * @param {object} destination - The object to which properties will be copied.
11
+ * @param {...object} sources - The source object(s) from which properties
12
+ * will be copied.
13
+ * @returns {object} The destination object with the copied properties.
14
+ *
15
+ * @example
16
+ * // Shallow copy
17
+ * const obj1 = { a: 1, b: { c: 2 } };
18
+ * const obj2 = { b: { d: 3 }, e: 4 };
19
+ * const result = copyObject(false, obj1, obj2);
20
+ * console.log(result); // Output: { a: 1, b: { d: 3 }, e: 4 }
21
+ *
22
+ * @example
23
+ * // Deep copy
24
+ * const obj1 = { a: 1, b: { c: 2 } };
25
+ * const obj2 = { b: { d: 3 }, e: 4 };
26
+ * const result = copyObject(true, obj1, obj2);
27
+ * console.log(result); // Output: { a: 1, b: { c: 2, d: 3 }, e: 4 }
28
+ */
29
+ export function copyObject(deep: boolean, destination: object, ...sources: object[]): object;
30
+ /**
31
+ * `ObjectExtensions` is a constant that applies a patch to the global
32
+ * `Object` constructor. This patch extends the `Object` with additional
33
+ * methods and properties, enhancing its functionality.
34
+ *
35
+ * The `Patch` function takes two arguments: the target object to be patched
36
+ * (in this case, `Object`), and an object containing the methods and
37
+ * properties to be added to the target object.
38
+ *
39
+ * @type {Patch}
40
+ * @memberof module:object.extensions
41
+ */
42
+ export const ObjectExtensions: Patch;
43
+ /**
44
+ * `ObjectPrototypeExtensions` is a constant that applies a patch to the
45
+ * Object prototype. This patch extends the Object prototype with additional
46
+ * methods and properties, enhancing its functionality.
47
+ *
48
+ * The `Patch` function takes two arguments: the target object to be patched
49
+ * (in this case, `Object.prototype`), and an object containing the methods
50
+ * and properties to be added to the target object.
51
+ *
52
+ * @example
53
+ * // Using a method added by ObjectPrototypeExtensions
54
+ * const obj = {};
55
+ * console.log(obj.isObject()); // Output: true
56
+ *
57
+ * @const
58
+ * @type {Patch}
59
+ * @memberof module:object.extensions
60
+ */
61
+ export const ObjectPrototypeExtensions: Patch;
62
+ import { Patch } from '@nejs/extension';