@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
@@ -1,229 +0,0 @@
1
- import { Patch } from '@nejs/extension';
2
- /**
3
- * `ObjectExtensions` is a patch for the JavaScript built-in `Object` class.
4
- * It adds utility methods to the `Object` class without modifying the global
5
- * namespace directly. This patch includes methods for key validation, object
6
- * type checking, and retrieving the string tag of an object. These methods
7
- * are useful for enhancing the capabilities of the standard `Object` class
8
- * with additional utility functions.
9
- */
10
- export const ObjectExtensions = new Patch(Object, {
11
- /**
12
- * The function checks if a value is either `undefined` or `null`.
13
- *
14
- * @param {any} value - The parameter "value" is a variable that can hold
15
- * any value.
16
- * @returns {boolean} `true` if the value is either `undefined` or `null`,
17
- * and `false` otherwise.
18
- */
19
- isNullDefined(value) {
20
- return value === undefined || value === null;
21
- },
22
- /**
23
- * Checks to see if the supplied `value` is both an object, and has the
24
- * appropriate symbol defined.
25
- *
26
- * @param {any} value the value to determine if it contains a defined
27
- * `Symbol.toStringTag` defined.
28
- * @returns true if the symbol is defined, false otherwise
29
- */
30
- hasStringTag(value) {
31
- return Object.isObject(value) && Reflect.has(value, Symbol.toStringTag);
32
- },
33
- /**
34
- * Retrieves the string tag of an object. The string tag is a representation
35
- * of the object's type, as defined by its `Object.prototype.toString`
36
- * method. This utility method is helpful for getting a more descriptive
37
- * type of an object than what is returned by the `typeof` operator,
38
- * especially for custom objects.
39
- *
40
- * @param {*} value - The object whose string tag is to be retrieved.
41
- * @param {boolean} strict - if this is set to true, undefined will be
42
- * returned whenever a supplied object does not have a
43
- * `Symbol.toStringTag` defined, period. if false, the default,
44
- * @returns {string} - The string tag of the object, indicating its type.
45
- */
46
- getStringTag(value, strict = false) {
47
- if (Object.hasStringTag(value)) {
48
- return value[Symbol.toStringTag];
49
- }
50
- if (strict) {
51
- return undefined;
52
- }
53
- if (value && (typeof value === 'function')) {
54
- return value.name;
55
- }
56
- return /\s(.+)]/.exec(Object.prototype.toString.call(value))[1];
57
- },
58
- /**
59
- * Determines the type of the given value based on its string tag. This method
60
- * uses `Object.getStringTag` to obtain the string tag of the value, which
61
- * represents its more specific type (e.g., Array, Map, Set) rather than just
62
- * 'object'. The method then maps this string tag to the corresponding type
63
- * present in the provided `owner` object, which defaults to `globalThis`.
64
- * This utility method is especially useful for identifying the specific
65
- * constructor or class of an object, beyond the basic types identified by
66
- * the `typeof` operator.
67
- *
68
- * @param {any} value - The value whose type is to be determined.
69
- * @param {object} [owner=globalThis] - The object in which to look up the
70
- * constructor corresponding to the string tag. Defaults to `globalThis`,
71
- * which covers global constructors like `Array`, `Object`, etc.
72
- * @returns {Function|object|null|undefined} - Returns the constructor or
73
- * type of the value based on its string tag. For 'Null' and 'Undefined',
74
- * it returns `null` and `undefined`, respectively. For other types, it
75
- * returns the corresponding constructor (e.g., `Array` for arrays) if
76
- * available in the `owner` object.
77
- */
78
- getType(value, owner = globalThis) {
79
- const stringTag = Object.getStringTag(value);
80
- switch (stringTag) {
81
- case 'Null': return null;
82
- case 'Undefined': return undefined;
83
- default:
84
- return owner[stringTag];
85
- }
86
- },
87
- /**
88
- * Determines if the provided value is an object. This method checks whether
89
- * the value is an instance of `Object` or if its type is 'object'. It's a
90
- * utility method for type-checking, ensuring that a value is an object
91
- * before performing operations that are specific to objects.
92
- *
93
- * @param {*} value - The value to be checked.
94
- * @returns {boolean} - Returns `true` if the value is an object,
95
- * otherwise `false`.
96
- */
97
- isObject(value) {
98
- return value && (value instanceof Object || typeof value === 'object');
99
- },
100
- /**
101
- * Checks to see if the supplied value is a primitive value.
102
- *
103
- * @param {any} value the value to test to see if it is a primitive value type
104
- * @returns true if the object is considered widely to be a primitive value,
105
- * false otherwise.
106
- */
107
- isPrimitive(value) {
108
- // Check for null as a special case because typeof null
109
- // is 'object'
110
- if (value === null) {
111
- return true;
112
- }
113
- // Check for other primitives
114
- switch (typeof value) {
115
- case 'string':
116
- case 'number':
117
- case 'bigint':
118
- case 'boolean':
119
- case 'undefined':
120
- case 'symbol':
121
- return true;
122
- default:
123
- return false;
124
- }
125
- },
126
- /**
127
- * Checks if the given value is a valid key for an object. In JavaScript, a
128
- * valid key can be either a string or a symbol. This method is useful for
129
- * validating object keys before using them in operations like setting or
130
- * getting object properties.
131
- *
132
- * @param {*} value - The value to be checked.
133
- * @returns {boolean} - Returns `true` if the value is a valid object key
134
- * (string or symbol), otherwise `false`.
135
- */
136
- isValidKey(value) {
137
- return (typeof value === 'string' || typeof value === 'symbol');
138
- },
139
- /**
140
- * Strips an object down to only the keys specified. Optionally, any
141
- * accessors can be made to retain their context on the source object.
142
- *
143
- * @param {object} object the object to pare down
144
- * @param {Array<string|symbol>} keys the keys that should appear in the
145
- * final reduced object
146
- * @param {boolean} [bindAccessors = true] if this value is true then any
147
- * accessors from the source object will continue to have their `this`
148
- * value bound to the source. If the getter or setter on that object is
149
- * defined using an arrow function, this will not work as intended.
150
- * @returns {object} an object containing only the keys and symbols
151
- * specified in the `keys` parameter.
152
- */
153
- stripTo(object, keys, bindAccessors = true) {
154
- if (!object || typeof object !== 'object') {
155
- throw new TypeError('Object.stripTo requires an object to strip. Received', object);
156
- }
157
- const result = {};
158
- if (!Array.isArray(keys)) {
159
- return result;
160
- }
161
- for (let key of keys) {
162
- if (Reflect.has(object, key)) {
163
- const originalDescriptor = Object.getOwnPropertyDescriptor(object, key);
164
- const descriptor = { ...originalDescriptor };
165
- if (typeof descriptor.get === 'function' ||
166
- typeof descriptor.set === 'function') {
167
- if (bindAccessors) {
168
- descriptor.get = descriptor.get?.bind(object);
169
- descriptor.set = descriptor.set?.bind(object);
170
- }
171
- }
172
- Object.defineProperty(result, key, descriptor);
173
- }
174
- }
175
- return result;
176
- },
177
- });
178
- const staticPatches = ObjectExtensions.patches;
179
- export const ObjectPrototypeExtensions = new Patch(Object.prototype, {
180
- [Patch.kMutablyHidden](store) {
181
- return {
182
- /**
183
- * Checks to see if the supplied `value` is both an object, and has the
184
- * appropriate symbol defined.
185
- *
186
- * @param {any} value the value to determine if it contains a defined
187
- * `Symbol.toStringTag` defined.
188
- * @returns true if the symbol is defined, false otherwise
189
- */
190
- get hasStringTag() {
191
- return staticPatches.hasStringTag(this);
192
- },
193
- /**
194
- * Retrieves the string tag of an object. The string tag is a representation
195
- * of the object's type, as defined by its `Object.prototype.toString`
196
- * method. This utility method is helpful for getting a more descriptive
197
- * type of an object than what is returned by the `typeof` operator,
198
- * especially for custom objects.
199
- *
200
- * @param {*} value - The object whose string tag is to be retrieved.
201
- * @param {boolean} strict - if this is set to true, undefined will be
202
- * returned whenever a supplied object does not have a
203
- * `Symbol.toStringTag` defined, period. if false, the default,
204
- * @returns {string} - The string tag of the object, indicating its type.
205
- */
206
- getStringTag(strict = false) {
207
- return staticPatches.getStringTag(this, strict);
208
- },
209
- /**
210
- * Strips an object down to only the keys specified. Optionally, any
211
- * accessors can be made to retain their context on the source object.
212
- * This is a passthrough to the static {@link Object.stripTo} function
213
- *
214
- * @param {Array<string|symbol>} keys the keys that should appear in the
215
- * final reduced object
216
- * @param {boolean} [bindAccessors = true] if this value is true then any
217
- * accessors from the source object will continue to have their `this`
218
- * value bound to the source. If the getter or setter on that object is
219
- * defined using an arrow function, this will not work as intended.
220
- * @returns {object} an object containing only the keys and symbols
221
- * specified in the `keys` parameter.
222
- */
223
- stripTo(keys, bindAccessors = true) {
224
- return Object.stripTo(this, keys, bindAccessors);
225
- }
226
- };
227
- },
228
- });
229
- //# sourceMappingURL=objectextensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectextensions.js","sourceRoot":"","sources":["../../src/objectextensions.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;IAChD;;;;;;;OAOG;IACH,aAAa,CAAC,KAAK;QACjB,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAA;IAC9C,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK;QAChB,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IACzE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;QAChC,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAClC,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,IAAI,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC,IAAI,CAAA;QACnB,CAAC;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAE5C,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAA;YACxB,KAAK,WAAW,CAAC,CAAC,OAAO,SAAS,CAAA;YAClC;gBACE,OAAO,KAAK,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK;QACZ,OAAO,KAAK,IAAI,CAAC,KAAK,YAAY,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,KAAK;QACf,uDAAuD;QACvD,cAAc;QACd,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6BAA6B;QAC7B,QAAQ,OAAO,KAAK,EAAE,CAAC;YACrB,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS,CAAC;YACf,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,KAAK;QACd,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;QACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,SAAS,CACjB,sDAAsD,EACtD,MAAM,CACP,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACxE,MAAM,UAAU,GAAG,EAAE,GAAG,kBAAkB,EAAE,CAAC;gBAE7C,IACE,OAAO,UAAU,CAAC,GAAG,KAAK,UAAU;oBACpC,OAAO,UAAU,CAAC,GAAG,KAAK,UAAU,EACpC,CAAC;oBACD,IAAI,aAAa,EAAE,CAAC;wBAClB,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC9C,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAED,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAE/C,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE;IACnE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK;QAC1B,OAAO;YACL;;;;;;;eAOG;YACH,IAAI,YAAY;gBACd,OAAO,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACzC,CAAC;YAED;;;;;;;;;;;;eAYG;YACH,YAAY,CAAC,MAAM,GAAG,KAAK;gBACzB,OAAO,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACjD,CAAC;YAED;;;;;;;;;;;;;eAaG;YACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;gBAChC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;YAClD,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -1,108 +0,0 @@
1
- import { Patch } from '@nejs/extension';
2
- import { ObjectExtensions } from './objectextensions.js';
3
- const { isObject } = ObjectExtensions.patches;
4
- /**
5
- * The `ReflectExtensions` class is a patch applied to the built-in JavaScript
6
- * `Reflect` object. It extends `Reflect` with additional utility methods that
7
- * enhance its capabilities. These methods provide more advanced ways of
8
- * interacting with object properties, such as checking for the presence of
9
- * multiple keys at once (`hasAll`) or verifying if at least one specified key
10
- * exists in an object (`hasSome`). This class is part of the `@nejs/extension`
11
- * library and is designed to offer these extended functionalities in a way
12
- * that is consistent with the existing `Reflect` API, making it intuitive for
13
- * developers who are already familiar with standard reflection methods in
14
- * JavaScript.
15
- */
16
- export const ReflectExtensions = new Patch(Reflect, {
17
- /**
18
- * The function checks if an object has all the specified keys.
19
- *
20
- * @param object - The `object` parameter is the object that we want to
21
- * check if it has all the specified keys.
22
- * @param keys - The `keys` parameter is a rest parameter, which means
23
- * it can accept any number of arguments. In this case, it is expected
24
- * to receive multiple keys as arguments.
25
- * @returns a boolean value.
26
- */
27
- hasAll(object, ...keys) {
28
- return Object.isObject(object) && (keys.flat(Infinity)
29
- .map(key => Reflect.has(object, key))
30
- .every(has => has));
31
- },
32
- /**
33
- * Fetches all descriptors of an object, including those mapped to a
34
- * symbol descriptor value.
35
- *
36
- * @param {object} object the object from whose descriptors need to be
37
- * retrieved.
38
- * @returns {object} with keys mapped to object descriptors
39
- * @throws {TypeError} if the supplied `object` is null or not an object
40
- * a TypeError exception will be thrown
41
- */
42
- ownDescriptors(object) {
43
- if (!isObject(object)) {
44
- throw new TypeError('The supplied object must be non-null and an object');
45
- }
46
- const result = {};
47
- const keys = Reflect.ownKeys(object);
48
- for (const key of keys) {
49
- result[key] = Object.getOwnPropertyDescriptor(key);
50
- }
51
- return result;
52
- },
53
- /**
54
- * The function checks if an object has at least one of the specified keys.
55
- *
56
- * @param object - The `object` parameter is the object that we want to check
57
- * for the presence of certain keys.
58
- * @param keys - The `keys` parameter is a rest parameter, which means it can
59
- * accept any number of arguments. These arguments are the keys that we want
60
- * to check if they exist in the `object`.
61
- * @returns The function `hasSome` returns a boolean value indicating whether
62
- * at least one of the keys provided as arguments exists in the given object.
63
- */
64
- hasSome(object, ...keys) {
65
- return isObject(object) && (keys.flat(Infinity)
66
- .map(key => Reflect.has(object, key))
67
- .some(has => has));
68
- },
69
- /**
70
- * Retrieves an array of [key, descriptor] pairs for each property of the
71
- * provided object. This method is akin to `Object.entries` but includes
72
- * property descriptors instead of the property values. It's useful for cases
73
- * where you need detailed information about properties, including their
74
- * configurability, enumerability, and accessors.
75
- *
76
- * @param {object} object - The object whose property entries are to be
77
- * retrieved.
78
- * @returns {Array} An array of [key, descriptor] pairs, where each pair
79
- * consists of the property name (key) and its descriptor. Returns an empty
80
- * array if the input is not a valid object.
81
- */
82
- entries(object) {
83
- if (!object || typeof object !== 'object') {
84
- return [];
85
- }
86
- return Reflect.ownKeys(object).map(key => [
87
- key, Object.getOwnPropertyDescriptor(object, key)
88
- ]);
89
- },
90
- /**
91
- * Retrieves an array of values from the property descriptors of the given
92
- * object. This method works similarly to `Object.values` but operates on
93
- * property descriptors instead. It's useful when you need the values of
94
- * properties including getters, setters, and other descriptor-specific
95
- * attributes.
96
- *
97
- * @param {object} object - The object whose property values are to be
98
- * retrieved.
99
- * @returns {Array} An array of values extracted from the object's property
100
- * descriptors. The values correspond to the `value` attribute in each
101
- * property's descriptor. Returns an empty array if the input is not a valid
102
- * object.
103
- */
104
- values(object) {
105
- return Reflect.entries.map(([, value]) => value);
106
- }
107
- });
108
- //# sourceMappingURL=reflectextensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reflectextensions.js","sourceRoot":"","sources":["../../src/reflectextensions.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAA;AAE7C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,KAAK,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,155 +0,0 @@
1
- import { Patch } from '@nejs/extension';
2
- const parenthesisPair = ['(', ')'];
3
- /**
4
- * `StringExtensions` is a patch for the JavaScript built-in `String` class. It
5
- * adds utility methods to the `String` class without modifying the global namespace
6
- * directly. This patch includes methods for key validation, object type checking,
7
- * and retrieving the string tag of an object. These methods are useful for
8
- * enhancing the capabilities of the standard `String` class with additional
9
- * utility functions.
10
- */
11
- export const StringExtensions = new Patch(String, {
12
- /**
13
- * The `isString` method does exactly what one would it expect. It returns
14
- * true if the string matches typeof or instanceof as a string.
15
- *
16
- * @param {*} value checks to see if the `value` is a string
17
- * @returns {boolean} `true` if it is a `String`, `false` otherwise
18
- */
19
- isString(value) {
20
- if (value && (typeof value === 'string' || value instanceof String)) {
21
- return value.length > 0;
22
- }
23
- return false;
24
- },
25
- /**
26
- * A getter property that returns a pair of parentheses as an array.
27
- * This property can be used when operations require a clear distinction
28
- * between the opening and closing parentheses, such as parsing or
29
- * matching balanced expressions in strings.
30
- *
31
- * @returns {[string, string]} An array containing a pair of strings: the
32
- * opening parenthesis '(' as the first element, and the closing parenthesis
33
- * ')' as the second element.
34
- */
35
- get parenthesisPair() {
36
- return ['(', ')'];
37
- },
38
- /**
39
- * A getter property that returns a pair of square brackets as an array.
40
- * This property is particularly useful for operations that require a clear
41
- * distinction between the opening and closing square brackets, such as
42
- * parsing arrays in strings or matching balanced expressions within
43
- * square brackets.
44
- *
45
- * @returns {[string, string]} An array containing a pair of strings: the
46
- * opening square bracket '[' as the first element, and the closing square
47
- * bracket ']' as the second element.
48
- */
49
- get squareBracketsPair() {
50
- return ['[', ']'];
51
- },
52
- /**
53
- * A getter property that returns a pair of curly brackets as an array.
54
- * This property is particularly useful for operations that require a clear
55
- * distinction between the opening and closing curly brackets, such as
56
- * parsing objects in strings or matching balanced expressions within
57
- * curly brackets. The returned array consists of the opening curly bracket
58
- * '{' as the first element, and the closing curly bracket '}' as the
59
- * second element.
60
- *
61
- * @returns {[string, string]} An array containing a pair of strings: the
62
- * opening curly bracket '{' as the first element, and the closing curly
63
- * bracket '}' as the second element.
64
- */
65
- get curlyBracketsPair() {
66
- return ['{', '}'];
67
- },
68
- });
69
- /**
70
- * `StringPrototypeExtensions` provides a set of utility methods that are
71
- * added to the `String` prototype. This allows all string instances to
72
- * access new functionality directly, enhancing their capabilities beyond
73
- * the standard `String` class methods. These extensions are applied using
74
- * the `Patch` class from '@nejs/extension', ensuring that they do not
75
- * interfere with the global namespace or existing properties.
76
- *
77
- * The extensions include methods for extracting substrings based on
78
- * specific tokens, checking the presence of certain patterns, and more,
79
- * making string manipulation tasks more convenient and expressive.
80
- */
81
- export const StringPrototypeExtensions = new Patch(String.prototype, {
82
- [Patch.kMutablyHidden]: {
83
- /**
84
- * Extracts a substring from the current string, starting at a given offset
85
- * and bounded by specified opening and closing tokens. This method is
86
- * particularly useful for parsing nested structures or quoted strings,
87
- * where the level of nesting or the presence of escape characters must
88
- * be considered.
89
- *
90
- * @param {number} offset The position in the string from which to start the
91
- * search for the substring.
92
- * @param {[string, string]} tokens An array containing two strings: the
93
- * opening and closing tokens that define the boundaries of the substring
94
- * to be extracted.
95
- * @returns {Object} An object with two properties: `extracted`, the
96
- * extracted substring, and `newOffset`, the position in the original
97
- * string immediately after the end of the extracted substring. If no
98
- * substring is found, `extracted` is `null` and `newOffset` is the same
99
- * as the input offset.
100
- */
101
- extractSubstring(offset = 0, tokens = parenthesisPair) {
102
- let [openToken, closeToken] = tokens;
103
- let depth = 0;
104
- let start = -1;
105
- let end = -1;
106
- let leadingToken = '';
107
- let firstToken = 0;
108
- for (let i = offset; i < this.length; i++) {
109
- const char = this[i];
110
- if (char === openToken) {
111
- depth++;
112
- if (start === -1)
113
- start = i;
114
- }
115
- else if (char === closeToken) {
116
- depth--;
117
- if (depth === 0) {
118
- end = i;
119
- break;
120
- }
121
- }
122
- }
123
- let lRange = [
124
- Math.max(0, start - 100),
125
- start
126
- ];
127
- let leading = [...this.substring(lRange[0], lRange[1])].reverse().join('');
128
- let reversedLeadingToken;
129
- try {
130
- reversedLeadingToken = /([^ \,\"\'\`]+)/.exec(leading)[1] ?? '';
131
- leadingToken = [...reversedLeadingToken].reverse().join('');
132
- }
133
- catch (ignored) { }
134
- if (start !== -1 && end !== -1) {
135
- const sliceRange = [start, end + 1];
136
- const extracted = this.slice(sliceRange[0], sliceRange[1]);
137
- return {
138
- extracted,
139
- range: [start, end],
140
- newOffset: end + 1,
141
- leadingToken,
142
- };
143
- }
144
- else {
145
- return {
146
- extracted: null,
147
- range: [start, end],
148
- newOffset: offset,
149
- leadingToken,
150
- };
151
- }
152
- },
153
- },
154
- });
155
- //# 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,66 +0,0 @@
1
- import { Patch } from '@nejs/extension';
2
- /**
3
- * `SymbolExtensions` is a patch for the JavaScript built-in `Symbol` class. It
4
- * adds utility methods to the `Symbol` class without modifying the global namespace
5
- * directly. This patch includes methods for key validation, object type checking,
6
- * and retrieving the string tag of an object. These methods are useful for
7
- * enhancing the capabilities of the standard `Symbol` class with additional
8
- * utility functions.
9
- */
10
- export const SymbolExtensions = new Patch(Symbol, {
11
- /**
12
- * The `isSymbol` method does exactly what one would it expect. It returns
13
- * true if the string matches typeof or instanceof as a symbol.
14
- *
15
- * @param {*} value checks to see if the `value` is a string
16
- * @returns {boolean} `true` if it is a `Symbol`, `false` otherwise
17
- */
18
- isSymbol(value) {
19
- return value && (typeof value === 'symbol');
20
- },
21
- /**
22
- * Returns true if the supplied value is a Symbol created using
23
- * `Symbol.for()`.
24
- *
25
- * @param {any} value assumption is that the supplied value is of type
26
- * 'symbol' however, unless `allowOnlySymbols` is set to `true`, `false`
27
- * will be returned for any non-symbol values.
28
- * @param {boolean} allowOnlySymbols true if an error should be thrown
29
- * if the supplied value is not of type 'symbol'
30
- * @returns true if the symbol is registered, meaning, none of the spec
31
- * static symbols (`toStringTag`, `iterator`, etc...), and no symbols
32
- * created by passing a value directly to the Symbol function, such as
33
- * `Symbol('name')`
34
- */
35
- isRegistered(value, allowOnlySymbols = false) {
36
- if (!Symbol.isSymbol(value)) {
37
- if (allowOnlySymbols) {
38
- throw new TypeError('allowOnlySymbols specified; value is not a symbol');
39
- }
40
- return false;
41
- }
42
- return Symbol.keyFor(value) !== undefined;
43
- },
44
- /**
45
- * A function that returns true if the symbol is not registered, meaning,
46
- * any of the spec static symbols (`toStringTag`, `iterator`, etc...), and
47
- * any symbols created by passing a value directly to the `Symbol` function,
48
- * such as `Symbol('name')`.
49
- *
50
- * @param {any} value assumption is that the supplied value is of type
51
- * 'symbol' however, unless allowOnlySymbols is set to true, false will
52
- * be returned for any non-symbol values.
53
- * @param {boolean} allowOnlySymbols true if an error should be thrown
54
- * if the supplied value is not of type 'symbol'
55
- * @returns true if the symbol is not registered, meaning, any of the
56
- * spec static symbols (`toStringTag`, `iterator`, etc...), and any symbols
57
- * created by passing a value directly to the `Symbol` function, such as
58
- * `Symbol('name')`
59
- * @returns true if the `value` in question is both a `symbol` and has
60
- * returns `undefined` if passed to `Symbol.keyFor`
61
- */
62
- isNonRegistered(value, allowOnlySymbols = false) {
63
- return !Symbol.isRegistered(value, allowOnlySymbols);
64
- },
65
- });
66
- //# sourceMappingURL=symbolextensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"symbolextensions.js","sourceRoot":"","sources":["../../src/symbolextensions.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,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,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,KAAK,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"}