@nejs/basic-extensions 2.7.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 (270) 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/src/array.extensions.js +322 -0
  150. package/src/big.int.extension.js +163 -0
  151. package/src/{newClasses → classes}/descriptor.js +16 -12
  152. package/src/classes/index.js +51 -0
  153. package/src/classes/introspector.js +167 -0
  154. package/src/classes/param.parser.js +253 -0
  155. package/src/classes/pluggable.proxy.js +485 -0
  156. package/src/{newClasses → classes}/refmap.js +5 -3
  157. package/src/classes/symkeys.js +464 -0
  158. package/src/classes/type.js +427 -0
  159. package/src/function.extensions.js +818 -0
  160. package/src/global.this.js +304 -0
  161. package/src/index.js +56 -23
  162. package/src/json.extensions.js +108 -0
  163. package/src/map.extensions.js +144 -0
  164. package/src/number.extension.js +273 -0
  165. package/src/object.extensions.js +1222 -0
  166. package/src/proxy.extensions.js +229 -0
  167. package/src/reflect.extensions.js +346 -0
  168. package/src/regular.expression.extensions.js +451 -0
  169. package/src/{setextensions.js → set.extensions.js} +151 -2
  170. package/src/string.extensions.js +515 -0
  171. package/src/symbol.extensions.js +268 -0
  172. package/tests/newClasses/refmap.test.js +3 -2
  173. package/tsconfig.base.json +5 -3
  174. package/tsconfig.cjs.json +2 -2
  175. package/tsconfig.esm.json +2 -2
  176. package/dist/@nejs/basic-extensions.bundle.2.6.0.js +0 -17
  177. package/dist/@nejs/basic-extensions.bundle.2.6.0.js.map +0 -7
  178. package/dist/cjs/arrayextensions.d.ts +0 -10
  179. package/dist/cjs/arrayextensions.js +0 -73
  180. package/dist/cjs/arrayextensions.js.map +0 -1
  181. package/dist/cjs/functionextensions.js +0 -202
  182. package/dist/cjs/functionextensions.js.map +0 -1
  183. package/dist/cjs/globals.js +0 -166
  184. package/dist/cjs/globals.js.map +0 -1
  185. package/dist/cjs/mapextensions.js +0 -32
  186. package/dist/cjs/mapextensions.js.map +0 -1
  187. package/dist/cjs/newClasses/asyncIterable.js.map +0 -1
  188. package/dist/cjs/newClasses/deferred.js.map +0 -1
  189. package/dist/cjs/newClasses/descriptor.js.map +0 -1
  190. package/dist/cjs/newClasses/iterable.js.map +0 -1
  191. package/dist/cjs/newClasses/refmap.js.map +0 -1
  192. package/dist/cjs/newClasses/refset.js.map +0 -1
  193. package/dist/cjs/objectextensions.d.ts +0 -11
  194. package/dist/cjs/objectextensions.js +0 -232
  195. package/dist/cjs/objectextensions.js.map +0 -1
  196. package/dist/cjs/reflectextensions.js +0 -111
  197. package/dist/cjs/reflectextensions.js.map +0 -1
  198. package/dist/cjs/setextensions.d.ts +0 -2
  199. package/dist/cjs/setextensions.js.map +0 -1
  200. package/dist/cjs/stringextensions.js +0 -158
  201. package/dist/cjs/stringextensions.js.map +0 -1
  202. package/dist/cjs/symbolextensions.js +0 -69
  203. package/dist/cjs/symbolextensions.js.map +0 -1
  204. package/dist/cjs/weakrefextensions.js.map +0 -1
  205. package/dist/mjs/arrayextensions.d.ts +0 -10
  206. package/dist/mjs/arrayextensions.js +0 -70
  207. package/dist/mjs/arrayextensions.js.map +0 -1
  208. package/dist/mjs/functionextensions.js +0 -199
  209. package/dist/mjs/functionextensions.js.map +0 -1
  210. package/dist/mjs/globals.js +0 -163
  211. package/dist/mjs/globals.js.map +0 -1
  212. package/dist/mjs/mapextensions.js +0 -29
  213. package/dist/mjs/mapextensions.js.map +0 -1
  214. package/dist/mjs/newClasses/asyncIterable.js.map +0 -1
  215. package/dist/mjs/newClasses/deferred.js.map +0 -1
  216. package/dist/mjs/newClasses/descriptor.js.map +0 -1
  217. package/dist/mjs/newClasses/iterable.js.map +0 -1
  218. package/dist/mjs/newClasses/refmap.js.map +0 -1
  219. package/dist/mjs/newClasses/refset.js.map +0 -1
  220. package/dist/mjs/objectextensions.d.ts +0 -11
  221. package/dist/mjs/objectextensions.js +0 -229
  222. package/dist/mjs/objectextensions.js.map +0 -1
  223. package/dist/mjs/reflectextensions.js +0 -108
  224. package/dist/mjs/reflectextensions.js.map +0 -1
  225. package/dist/mjs/setextensions.d.ts +0 -2
  226. package/dist/mjs/setextensions.js.map +0 -1
  227. package/dist/mjs/stringextensions.js +0 -155
  228. package/dist/mjs/stringextensions.js.map +0 -1
  229. package/dist/mjs/symbolextensions.js +0 -66
  230. package/dist/mjs/symbolextensions.js.map +0 -1
  231. package/dist/mjs/weakrefextensions.js.map +0 -1
  232. package/src/arrayextensions.js +0 -75
  233. package/src/functionextensions.js +0 -225
  234. package/src/globals.js +0 -196
  235. package/src/mapextensions.js +0 -32
  236. package/src/objectextensions.js +0 -256
  237. package/src/reflectextensions.js +0 -118
  238. package/src/stringextensions.js +0 -166
  239. package/src/symbolextensions.js +0 -69
  240. /package/dist/cjs/{newClasses → classes}/asyncIterable.d.ts +0 -0
  241. /package/dist/cjs/{newClasses → classes}/deferred.d.ts +0 -0
  242. /package/dist/cjs/{newClasses → classes}/descriptor.d.ts +0 -0
  243. /package/dist/cjs/{newClasses → classes}/iterable.d.ts +0 -0
  244. /package/dist/cjs/{newClasses → classes}/refmap.d.ts +0 -0
  245. /package/dist/cjs/{newClasses → classes}/refset.d.ts +0 -0
  246. /package/dist/cjs/{functionextensions.d.ts → function.extensions.d.ts} +0 -0
  247. /package/dist/cjs/{globals.d.ts → global.this.d.ts} +0 -0
  248. /package/dist/cjs/{reflectextensions.d.ts → reflect.extensions.d.ts} +0 -0
  249. /package/dist/cjs/{stringextensions.d.ts → string.extensions.d.ts} +0 -0
  250. /package/dist/cjs/{weakrefextensions.d.ts → weakref.extensions.d.ts} +0 -0
  251. /package/dist/mjs/{newClasses → classes}/asyncIterable.d.ts +0 -0
  252. /package/dist/mjs/{newClasses → classes}/asyncIterable.js +0 -0
  253. /package/dist/mjs/{newClasses → classes}/deferred.d.ts +0 -0
  254. /package/dist/mjs/{newClasses → classes}/deferred.js +0 -0
  255. /package/dist/mjs/{newClasses → classes}/descriptor.d.ts +0 -0
  256. /package/dist/mjs/{newClasses → classes}/iterable.d.ts +0 -0
  257. /package/dist/mjs/{newClasses → classes}/iterable.js +0 -0
  258. /package/dist/mjs/{newClasses → classes}/refmap.d.ts +0 -0
  259. /package/dist/mjs/{newClasses → classes}/refset.d.ts +0 -0
  260. /package/dist/mjs/{newClasses → classes}/refset.js +0 -0
  261. /package/dist/mjs/{functionextensions.d.ts → function.extensions.d.ts} +0 -0
  262. /package/dist/mjs/{globals.d.ts → global.this.d.ts} +0 -0
  263. /package/dist/mjs/{reflectextensions.d.ts → reflect.extensions.d.ts} +0 -0
  264. /package/dist/mjs/{stringextensions.d.ts → string.extensions.d.ts} +0 -0
  265. /package/dist/mjs/{weakrefextensions.d.ts → weakref.extensions.d.ts} +0 -0
  266. /package/src/{newClasses → classes}/asyncIterable.js +0 -0
  267. /package/src/{newClasses → classes}/deferred.js +0 -0
  268. /package/src/{newClasses → classes}/iterable.js +0 -0
  269. /package/src/{newClasses → classes}/refset.js +0 -0
  270. /package/src/{weakrefextensions.js → weakref.extensions.js} +0 -0
@@ -1,232 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObjectPrototypeExtensions = exports.ObjectExtensions = void 0;
4
- const extension_1 = require("@nejs/extension");
5
- /**
6
- * `ObjectExtensions` is a patch for the JavaScript built-in `Object` class.
7
- * It adds utility methods to the `Object` class without modifying the global
8
- * namespace directly. This patch includes methods for key validation, object
9
- * type checking, and retrieving the string tag of an object. These methods
10
- * are useful for enhancing the capabilities of the standard `Object` class
11
- * with additional utility functions.
12
- */
13
- exports.ObjectExtensions = new extension_1.Patch(Object, {
14
- /**
15
- * The function checks if a value is either `undefined` or `null`.
16
- *
17
- * @param {any} value - The parameter "value" is a variable that can hold
18
- * any value.
19
- * @returns {boolean} `true` if the value is either `undefined` or `null`,
20
- * and `false` otherwise.
21
- */
22
- isNullDefined(value) {
23
- return value === undefined || value === null;
24
- },
25
- /**
26
- * Checks to see if the supplied `value` is both an object, and has the
27
- * appropriate symbol defined.
28
- *
29
- * @param {any} value the value to determine if it contains a defined
30
- * `Symbol.toStringTag` defined.
31
- * @returns true if the symbol is defined, false otherwise
32
- */
33
- hasStringTag(value) {
34
- return Object.isObject(value) && Reflect.has(value, Symbol.toStringTag);
35
- },
36
- /**
37
- * Retrieves the string tag of an object. The string tag is a representation
38
- * of the object's type, as defined by its `Object.prototype.toString`
39
- * method. This utility method is helpful for getting a more descriptive
40
- * type of an object than what is returned by the `typeof` operator,
41
- * especially for custom objects.
42
- *
43
- * @param {*} value - The object whose string tag is to be retrieved.
44
- * @param {boolean} strict - if this is set to true, undefined will be
45
- * returned whenever a supplied object does not have a
46
- * `Symbol.toStringTag` defined, period. if false, the default,
47
- * @returns {string} - The string tag of the object, indicating its type.
48
- */
49
- getStringTag(value, strict = false) {
50
- if (Object.hasStringTag(value)) {
51
- return value[Symbol.toStringTag];
52
- }
53
- if (strict) {
54
- return undefined;
55
- }
56
- if (value && (typeof value === 'function')) {
57
- return value.name;
58
- }
59
- return /\s(.+)]/.exec(Object.prototype.toString.call(value))[1];
60
- },
61
- /**
62
- * Determines the type of the given value based on its string tag. This method
63
- * uses `Object.getStringTag` to obtain the string tag of the value, which
64
- * represents its more specific type (e.g., Array, Map, Set) rather than just
65
- * 'object'. The method then maps this string tag to the corresponding type
66
- * present in the provided `owner` object, which defaults to `globalThis`.
67
- * This utility method is especially useful for identifying the specific
68
- * constructor or class of an object, beyond the basic types identified by
69
- * the `typeof` operator.
70
- *
71
- * @param {any} value - The value whose type is to be determined.
72
- * @param {object} [owner=globalThis] - The object in which to look up the
73
- * constructor corresponding to the string tag. Defaults to `globalThis`,
74
- * which covers global constructors like `Array`, `Object`, etc.
75
- * @returns {Function|object|null|undefined} - Returns the constructor or
76
- * type of the value based on its string tag. For 'Null' and 'Undefined',
77
- * it returns `null` and `undefined`, respectively. For other types, it
78
- * returns the corresponding constructor (e.g., `Array` for arrays) if
79
- * available in the `owner` object.
80
- */
81
- getType(value, owner = globalThis) {
82
- const stringTag = Object.getStringTag(value);
83
- switch (stringTag) {
84
- case 'Null': return null;
85
- case 'Undefined': return undefined;
86
- default:
87
- return owner[stringTag];
88
- }
89
- },
90
- /**
91
- * Determines if the provided value is an object. This method checks whether
92
- * the value is an instance of `Object` or if its type is 'object'. It's a
93
- * utility method for type-checking, ensuring that a value is an object
94
- * before performing operations that are specific to objects.
95
- *
96
- * @param {*} value - The value to be checked.
97
- * @returns {boolean} - Returns `true` if the value is an object,
98
- * otherwise `false`.
99
- */
100
- isObject(value) {
101
- return value && (value instanceof Object || typeof value === 'object');
102
- },
103
- /**
104
- * Checks to see if the supplied value is a primitive value.
105
- *
106
- * @param {any} value the value to test to see if it is a primitive value type
107
- * @returns true if the object is considered widely to be a primitive value,
108
- * false otherwise.
109
- */
110
- isPrimitive(value) {
111
- // Check for null as a special case because typeof null
112
- // is 'object'
113
- if (value === null) {
114
- return true;
115
- }
116
- // Check for other primitives
117
- switch (typeof value) {
118
- case 'string':
119
- case 'number':
120
- case 'bigint':
121
- case 'boolean':
122
- case 'undefined':
123
- case 'symbol':
124
- return true;
125
- default:
126
- return false;
127
- }
128
- },
129
- /**
130
- * Checks if the given value is a valid key for an object. In JavaScript, a
131
- * valid key can be either a string or a symbol. This method is useful for
132
- * validating object keys before using them in operations like setting or
133
- * getting object properties.
134
- *
135
- * @param {*} value - The value to be checked.
136
- * @returns {boolean} - Returns `true` if the value is a valid object key
137
- * (string or symbol), otherwise `false`.
138
- */
139
- isValidKey(value) {
140
- return (typeof value === 'string' || typeof value === 'symbol');
141
- },
142
- /**
143
- * Strips an object down to only the keys specified. Optionally, any
144
- * accessors can be made to retain their context on the source object.
145
- *
146
- * @param {object} object the object to pare down
147
- * @param {Array<string|symbol>} keys the keys that should appear in the
148
- * final reduced object
149
- * @param {boolean} [bindAccessors = true] if this value is true then any
150
- * accessors from the source object will continue to have their `this`
151
- * value bound to the source. If the getter or setter on that object is
152
- * defined using an arrow function, this will not work as intended.
153
- * @returns {object} an object containing only the keys and symbols
154
- * specified in the `keys` parameter.
155
- */
156
- stripTo(object, keys, bindAccessors = true) {
157
- if (!object || typeof object !== 'object') {
158
- throw new TypeError('Object.stripTo requires an object to strip. Received', object);
159
- }
160
- const result = {};
161
- if (!Array.isArray(keys)) {
162
- return result;
163
- }
164
- for (let key of keys) {
165
- if (Reflect.has(object, key)) {
166
- const originalDescriptor = Object.getOwnPropertyDescriptor(object, key);
167
- const descriptor = { ...originalDescriptor };
168
- if (typeof descriptor.get === 'function' ||
169
- typeof descriptor.set === 'function') {
170
- if (bindAccessors) {
171
- descriptor.get = descriptor.get?.bind(object);
172
- descriptor.set = descriptor.set?.bind(object);
173
- }
174
- }
175
- Object.defineProperty(result, key, descriptor);
176
- }
177
- }
178
- return result;
179
- },
180
- });
181
- const staticPatches = exports.ObjectExtensions.patches;
182
- exports.ObjectPrototypeExtensions = new extension_1.Patch(Object.prototype, {
183
- [extension_1.Patch.kMutablyHidden](store) {
184
- return {
185
- /**
186
- * Checks to see if the supplied `value` is both an object, and has the
187
- * appropriate symbol defined.
188
- *
189
- * @param {any} value the value to determine if it contains a defined
190
- * `Symbol.toStringTag` defined.
191
- * @returns true if the symbol is defined, false otherwise
192
- */
193
- get hasStringTag() {
194
- return staticPatches.hasStringTag(this);
195
- },
196
- /**
197
- * Retrieves the string tag of an object. The string tag is a representation
198
- * of the object's type, as defined by its `Object.prototype.toString`
199
- * method. This utility method is helpful for getting a more descriptive
200
- * type of an object than what is returned by the `typeof` operator,
201
- * especially for custom objects.
202
- *
203
- * @param {*} value - The object whose string tag is to be retrieved.
204
- * @param {boolean} strict - if this is set to true, undefined will be
205
- * returned whenever a supplied object does not have a
206
- * `Symbol.toStringTag` defined, period. if false, the default,
207
- * @returns {string} - The string tag of the object, indicating its type.
208
- */
209
- getStringTag(strict = false) {
210
- return staticPatches.getStringTag(this, strict);
211
- },
212
- /**
213
- * Strips an object down to only the keys specified. Optionally, any
214
- * accessors can be made to retain their context on the source object.
215
- * This is a passthrough to the static {@link Object.stripTo} function
216
- *
217
- * @param {Array<string|symbol>} keys the keys that should appear in the
218
- * final reduced object
219
- * @param {boolean} [bindAccessors = true] if this value is true then any
220
- * accessors from the source object will continue to have their `this`
221
- * value bound to the source. If the getter or setter on that object is
222
- * defined using an arrow function, this will not work as intended.
223
- * @returns {object} an object containing only the keys and symbols
224
- * specified in the `keys` parameter.
225
- */
226
- stripTo(keys, bindAccessors = true) {
227
- return Object.stripTo(this, keys, bindAccessors);
228
- }
229
- };
230
- },
231
- });
232
- //# sourceMappingURL=objectextensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectextensions.js","sourceRoot":"","sources":["../../src/objectextensions.js"],"names":[],"mappings":"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"}
@@ -1,111 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReflectExtensions = void 0;
4
- const extension_1 = require("@nejs/extension");
5
- const objectextensions_js_1 = require("./objectextensions.js");
6
- const { isObject } = objectextensions_js_1.ObjectExtensions.patches;
7
- /**
8
- * The `ReflectExtensions` class is a patch applied to the built-in JavaScript
9
- * `Reflect` object. It extends `Reflect` with additional utility methods that
10
- * enhance its capabilities. These methods provide more advanced ways of
11
- * interacting with object properties, such as checking for the presence of
12
- * multiple keys at once (`hasAll`) or verifying if at least one specified key
13
- * exists in an object (`hasSome`). This class is part of the `@nejs/extension`
14
- * library and is designed to offer these extended functionalities in a way
15
- * that is consistent with the existing `Reflect` API, making it intuitive for
16
- * developers who are already familiar with standard reflection methods in
17
- * JavaScript.
18
- */
19
- exports.ReflectExtensions = new extension_1.Patch(Reflect, {
20
- /**
21
- * The function checks if an object has all the specified keys.
22
- *
23
- * @param object - The `object` parameter is the object that we want to
24
- * check if it has all the specified keys.
25
- * @param keys - The `keys` parameter is a rest parameter, which means
26
- * it can accept any number of arguments. In this case, it is expected
27
- * to receive multiple keys as arguments.
28
- * @returns a boolean value.
29
- */
30
- hasAll(object, ...keys) {
31
- return Object.isObject(object) && (keys.flat(Infinity)
32
- .map(key => Reflect.has(object, key))
33
- .every(has => has));
34
- },
35
- /**
36
- * Fetches all descriptors of an object, including those mapped to a
37
- * symbol descriptor value.
38
- *
39
- * @param {object} object the object from whose descriptors need to be
40
- * retrieved.
41
- * @returns {object} with keys mapped to object descriptors
42
- * @throws {TypeError} if the supplied `object` is null or not an object
43
- * a TypeError exception will be thrown
44
- */
45
- ownDescriptors(object) {
46
- if (!isObject(object)) {
47
- throw new TypeError('The supplied object must be non-null and an object');
48
- }
49
- const result = {};
50
- const keys = Reflect.ownKeys(object);
51
- for (const key of keys) {
52
- result[key] = Object.getOwnPropertyDescriptor(key);
53
- }
54
- return result;
55
- },
56
- /**
57
- * The function checks if an object has at least one of the specified keys.
58
- *
59
- * @param object - The `object` parameter is the object that we want to check
60
- * for the presence of certain keys.
61
- * @param keys - The `keys` parameter is a rest parameter, which means it can
62
- * accept any number of arguments. These arguments are the keys that we want
63
- * to check if they exist in the `object`.
64
- * @returns The function `hasSome` returns a boolean value indicating whether
65
- * at least one of the keys provided as arguments exists in the given object.
66
- */
67
- hasSome(object, ...keys) {
68
- return isObject(object) && (keys.flat(Infinity)
69
- .map(key => Reflect.has(object, key))
70
- .some(has => has));
71
- },
72
- /**
73
- * Retrieves an array of [key, descriptor] pairs for each property of the
74
- * provided object. This method is akin to `Object.entries` but includes
75
- * property descriptors instead of the property values. It's useful for cases
76
- * where you need detailed information about properties, including their
77
- * configurability, enumerability, and accessors.
78
- *
79
- * @param {object} object - The object whose property entries are to be
80
- * retrieved.
81
- * @returns {Array} An array of [key, descriptor] pairs, where each pair
82
- * consists of the property name (key) and its descriptor. Returns an empty
83
- * array if the input is not a valid object.
84
- */
85
- entries(object) {
86
- if (!object || typeof object !== 'object') {
87
- return [];
88
- }
89
- return Reflect.ownKeys(object).map(key => [
90
- key, Object.getOwnPropertyDescriptor(object, key)
91
- ]);
92
- },
93
- /**
94
- * Retrieves an array of values from the property descriptors of the given
95
- * object. This method works similarly to `Object.values` but operates on
96
- * property descriptors instead. It's useful when you need the values of
97
- * properties including getters, setters, and other descriptor-specific
98
- * attributes.
99
- *
100
- * @param {object} object - The object whose property values are to be
101
- * retrieved.
102
- * @returns {Array} An array of values extracted from the object's property
103
- * descriptors. The values correspond to the `value` attribute in each
104
- * property's descriptor. Returns an empty array if the input is not a valid
105
- * object.
106
- */
107
- values(object) {
108
- return Reflect.entries.map(([, value]) => value);
109
- }
110
- });
111
- //# sourceMappingURL=reflectextensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reflectextensions.js","sourceRoot":"","sources":["../../src/reflectextensions.js"],"names":[],"mappings":";;;AAAA,+CAAuC;AACvC,+DAAwD;AAExD,MAAM,EAAE,QAAQ,EAAE,GAAG,sCAAgB,CAAC,OAAO,CAAA;AAE7C;;;;;;;;;;;GAWG;AACU,QAAA,iBAAiB,GAAG,IAAI,iBAAK,CAAC,OAAO,EAAE;IAClD;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI;QACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;aACnD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;aACpC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CACnB,CAAA;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAA;QAC3E,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAA;QAEjB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAA;QACpD,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI;QACrB,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC5C,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;aACpC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAClB,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM;QACZ,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,EAAE,CAAA;QAAC,CAAC;QAExD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC;SAClD,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IACjD,CAAC;CACF,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export const SetPrototypeExtensions: Patch;
2
- import { Patch } from '@nejs/extension';
@@ -1 +0,0 @@
1
- {"version":3,"file":"setextensions.js","sourceRoot":"","sources":["../../src/setextensions.js"],"names":[],"mappings":"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"}
@@ -1,158 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StringPrototypeExtensions = exports.StringExtensions = void 0;
4
- const extension_1 = require("@nejs/extension");
5
- const parenthesisPair = ['(', ')'];
6
- /**
7
- * `StringExtensions` is a patch for the JavaScript built-in `String` class. It
8
- * adds utility methods to the `String` class without modifying the global namespace
9
- * directly. This patch includes methods for key validation, object type checking,
10
- * and retrieving the string tag of an object. These methods are useful for
11
- * enhancing the capabilities of the standard `String` class with additional
12
- * utility functions.
13
- */
14
- exports.StringExtensions = new extension_1.Patch(String, {
15
- /**
16
- * The `isString` method does exactly what one would it expect. It returns
17
- * true if the string matches typeof or instanceof as a string.
18
- *
19
- * @param {*} value checks to see if the `value` is a string
20
- * @returns {boolean} `true` if it is a `String`, `false` otherwise
21
- */
22
- isString(value) {
23
- if (value && (typeof value === 'string' || value instanceof String)) {
24
- return value.length > 0;
25
- }
26
- return false;
27
- },
28
- /**
29
- * A getter property that returns a pair of parentheses as an array.
30
- * This property can be used when operations require a clear distinction
31
- * between the opening and closing parentheses, such as parsing or
32
- * matching balanced expressions in strings.
33
- *
34
- * @returns {[string, string]} An array containing a pair of strings: the
35
- * opening parenthesis '(' as the first element, and the closing parenthesis
36
- * ')' as the second element.
37
- */
38
- get parenthesisPair() {
39
- return ['(', ')'];
40
- },
41
- /**
42
- * A getter property that returns a pair of square brackets as an array.
43
- * This property is particularly useful for operations that require a clear
44
- * distinction between the opening and closing square brackets, such as
45
- * parsing arrays in strings or matching balanced expressions within
46
- * square brackets.
47
- *
48
- * @returns {[string, string]} An array containing a pair of strings: the
49
- * opening square bracket '[' as the first element, and the closing square
50
- * bracket ']' as the second element.
51
- */
52
- get squareBracketsPair() {
53
- return ['[', ']'];
54
- },
55
- /**
56
- * A getter property that returns a pair of curly brackets as an array.
57
- * This property is particularly useful for operations that require a clear
58
- * distinction between the opening and closing curly brackets, such as
59
- * parsing objects in strings or matching balanced expressions within
60
- * curly brackets. The returned array consists of the opening curly bracket
61
- * '{' as the first element, and the closing curly bracket '}' as the
62
- * second element.
63
- *
64
- * @returns {[string, string]} An array containing a pair of strings: the
65
- * opening curly bracket '{' as the first element, and the closing curly
66
- * bracket '}' as the second element.
67
- */
68
- get curlyBracketsPair() {
69
- return ['{', '}'];
70
- },
71
- });
72
- /**
73
- * `StringPrototypeExtensions` provides a set of utility methods that are
74
- * added to the `String` prototype. This allows all string instances to
75
- * access new functionality directly, enhancing their capabilities beyond
76
- * the standard `String` class methods. These extensions are applied using
77
- * the `Patch` class from '@nejs/extension', ensuring that they do not
78
- * interfere with the global namespace or existing properties.
79
- *
80
- * The extensions include methods for extracting substrings based on
81
- * specific tokens, checking the presence of certain patterns, and more,
82
- * making string manipulation tasks more convenient and expressive.
83
- */
84
- exports.StringPrototypeExtensions = new extension_1.Patch(String.prototype, {
85
- [extension_1.Patch.kMutablyHidden]: {
86
- /**
87
- * Extracts a substring from the current string, starting at a given offset
88
- * and bounded by specified opening and closing tokens. This method is
89
- * particularly useful for parsing nested structures or quoted strings,
90
- * where the level of nesting or the presence of escape characters must
91
- * be considered.
92
- *
93
- * @param {number} offset The position in the string from which to start the
94
- * search for the substring.
95
- * @param {[string, string]} tokens An array containing two strings: the
96
- * opening and closing tokens that define the boundaries of the substring
97
- * to be extracted.
98
- * @returns {Object} An object with two properties: `extracted`, the
99
- * extracted substring, and `newOffset`, the position in the original
100
- * string immediately after the end of the extracted substring. If no
101
- * substring is found, `extracted` is `null` and `newOffset` is the same
102
- * as the input offset.
103
- */
104
- extractSubstring(offset = 0, tokens = parenthesisPair) {
105
- let [openToken, closeToken] = tokens;
106
- let depth = 0;
107
- let start = -1;
108
- let end = -1;
109
- let leadingToken = '';
110
- let firstToken = 0;
111
- for (let i = offset; i < this.length; i++) {
112
- const char = this[i];
113
- if (char === openToken) {
114
- depth++;
115
- if (start === -1)
116
- start = i;
117
- }
118
- else if (char === closeToken) {
119
- depth--;
120
- if (depth === 0) {
121
- end = i;
122
- break;
123
- }
124
- }
125
- }
126
- let lRange = [
127
- Math.max(0, start - 100),
128
- start
129
- ];
130
- let leading = [...this.substring(lRange[0], lRange[1])].reverse().join('');
131
- let reversedLeadingToken;
132
- try {
133
- reversedLeadingToken = /([^ \,\"\'\`]+)/.exec(leading)[1] ?? '';
134
- leadingToken = [...reversedLeadingToken].reverse().join('');
135
- }
136
- catch (ignored) { }
137
- if (start !== -1 && end !== -1) {
138
- const sliceRange = [start, end + 1];
139
- const extracted = this.slice(sliceRange[0], sliceRange[1]);
140
- return {
141
- extracted,
142
- range: [start, end],
143
- newOffset: end + 1,
144
- leadingToken,
145
- };
146
- }
147
- else {
148
- return {
149
- extracted: null,
150
- range: [start, end],
151
- newOffset: offset,
152
- leadingToken,
153
- };
154
- }
155
- },
156
- },
157
- });
158
- //# sourceMappingURL=stringextensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stringextensions.js","sourceRoot":"","sources":["../../src/stringextensions.js"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SymbolExtensions = void 0;
4
- const extension_1 = require("@nejs/extension");
5
- /**
6
- * `SymbolExtensions` is a patch for the JavaScript built-in `Symbol` class. It
7
- * adds utility methods to the `Symbol` class without modifying the global namespace
8
- * directly. This patch includes methods for key validation, object type checking,
9
- * and retrieving the string tag of an object. These methods are useful for
10
- * enhancing the capabilities of the standard `Symbol` class with additional
11
- * utility functions.
12
- */
13
- exports.SymbolExtensions = new extension_1.Patch(Symbol, {
14
- /**
15
- * The `isSymbol` method does exactly what one would it expect. It returns
16
- * true if the string matches typeof or instanceof as a symbol.
17
- *
18
- * @param {*} value checks to see if the `value` is a string
19
- * @returns {boolean} `true` if it is a `Symbol`, `false` otherwise
20
- */
21
- isSymbol(value) {
22
- return value && (typeof value === 'symbol');
23
- },
24
- /**
25
- * Returns true if the supplied value is a Symbol created using
26
- * `Symbol.for()`.
27
- *
28
- * @param {any} value assumption is that the supplied value is of type
29
- * 'symbol' however, unless `allowOnlySymbols` is set to `true`, `false`
30
- * will be returned for any non-symbol values.
31
- * @param {boolean} allowOnlySymbols true if an error should be thrown
32
- * if the supplied value is not of type 'symbol'
33
- * @returns true if the symbol is registered, meaning, none of the spec
34
- * static symbols (`toStringTag`, `iterator`, etc...), and no symbols
35
- * created by passing a value directly to the Symbol function, such as
36
- * `Symbol('name')`
37
- */
38
- isRegistered(value, allowOnlySymbols = false) {
39
- if (!Symbol.isSymbol(value)) {
40
- if (allowOnlySymbols) {
41
- throw new TypeError('allowOnlySymbols specified; value is not a symbol');
42
- }
43
- return false;
44
- }
45
- return Symbol.keyFor(value) !== undefined;
46
- },
47
- /**
48
- * A function that returns true if the symbol is not registered, meaning,
49
- * any of the spec static symbols (`toStringTag`, `iterator`, etc...), and
50
- * any symbols created by passing a value directly to the `Symbol` function,
51
- * such as `Symbol('name')`.
52
- *
53
- * @param {any} value assumption is that the supplied value is of type
54
- * 'symbol' however, unless allowOnlySymbols is set to true, false will
55
- * be returned for any non-symbol values.
56
- * @param {boolean} allowOnlySymbols true if an error should be thrown
57
- * if the supplied value is not of type 'symbol'
58
- * @returns true if the symbol is not registered, meaning, any of the
59
- * spec static symbols (`toStringTag`, `iterator`, etc...), and any symbols
60
- * created by passing a value directly to the `Symbol` function, such as
61
- * `Symbol('name')`
62
- * @returns true if the `value` in question is both a `symbol` and has
63
- * returns `undefined` if passed to `Symbol.keyFor`
64
- */
65
- isNonRegistered(value, allowOnlySymbols = false) {
66
- return !Symbol.isRegistered(value, allowOnlySymbols);
67
- },
68
- });
69
- //# sourceMappingURL=symbolextensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"symbolextensions.js","sourceRoot":"","sources":["../../src/symbolextensions.js"],"names":[],"mappings":";;;AAAA,+CAAwC;AAExC;;;;;;;GAOG;AACU,QAAA,gBAAgB,GAAG,IAAI,iBAAK,CAAC,MAAM,EAAE;IAChD;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK;QACZ,OAAO,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK;QAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAA;YAC1E,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAA;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK;QAC7C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;IACtD,CAAC;CACF,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"weakrefextensions.js","sourceRoot":"","sources":["../../src/weakrefextensions.js"],"names":[],"mappings":";;;AAAA,+CAAuC;AAE1B,QAAA,iBAAiB,GAAG,IAAI,iBAAK,CAAC,OAAO,EAAE;IAClD;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK;QACpB,OAAO,CAAC,CACN,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;YACjE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;YACxD,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CACxC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -1,10 +0,0 @@
1
- /**
2
- * The `ArrayPrototypeExtensions` patch extends the prototype of the built-in
3
- * JavaScript `Array` with additional properties for convenience and improved
4
- * readability. By applying this patch, all array instances gain new getter
5
- * properties `first` and `last`, which provide quick access to the first and
6
- * last elements of the array, respectively. This enhancement simplifies common
7
- * operations on arrays and makes code more expressive and concise.
8
- */
9
- export const ArrayPrototypeExtensions: Patch;
10
- import { Patch } from '@nejs/extension';