@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,471 @@
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
+ return (value !== null && value !== undefined &&
24
+ (typeof value === 'string' || value instanceof String));
25
+ },
26
+ /**
27
+ * Conditionally returns a value based on whether the supplied
28
+ * `value` is a `String` or not. If the `value` is a `String`,
29
+ * the `thenValue` will be returned. If it is not a `String`,
30
+ * the `elseValue` will be returned instead.
31
+ *
32
+ * @param {any} value the value to check to determine if it is a
33
+ * `String`
34
+ * @param {any} thenValue the value to return if the supplied
35
+ * `value` is a `String`
36
+ * @param {any} elseValue the value to return if the supplied
37
+ * `value` is not a `String`
38
+ * @returns {any} either the `thenValue` or `elseValue` depending
39
+ * on if the supplied `value` is a `String`
40
+ *
41
+ * @example
42
+ * const str = 'hello'
43
+ * const num = 42
44
+ * ifString(str, 'is a string', 'not a string') // 'is a string'
45
+ * ifString(num, 'is a string', 'not a string') // 'not a string'
46
+ */
47
+ ifString(value, thenValue, elseValue) {
48
+ return isThenElse(this.isString(value), thenValue, elseValue);
49
+ },
50
+ /**
51
+ * A getter property that returns a pair of parentheses as an array.
52
+ * This property can be used when operations require a clear distinction
53
+ * between the opening and closing parentheses, such as parsing or
54
+ * matching balanced expressions in strings.
55
+ *
56
+ * @returns {[string, string]} An array containing a pair of strings: the
57
+ * opening parenthesis '(' as the first element, and the closing parenthesis
58
+ * ')' as the second element.
59
+ */
60
+ get parenthesisPair() {
61
+ return ['(', ')'];
62
+ },
63
+ /**
64
+ * A getter property that returns a pair of square brackets as an array.
65
+ * This property is particularly useful for operations that require a clear
66
+ * distinction between the opening and closing square brackets, such as
67
+ * parsing arrays in strings or matching balanced expressions within
68
+ * square brackets.
69
+ *
70
+ * @returns {[string, string]} An array containing a pair of strings: the
71
+ * opening square bracket '[' as the first element, and the closing square
72
+ * bracket ']' as the second element.
73
+ */
74
+ get squareBracketsPair() {
75
+ return ['[', ']'];
76
+ },
77
+ /**
78
+ * A getter property that returns a pair of curly brackets as an array.
79
+ * This property is particularly useful for operations that require a clear
80
+ * distinction between the opening and closing curly brackets, such as
81
+ * parsing objects in strings or matching balanced expressions within
82
+ * curly brackets. The returned array consists of the opening curly bracket
83
+ * '{' as the first element, and the closing curly bracket '}' as the
84
+ * second element.
85
+ *
86
+ * @returns {[string, string]} An array containing a pair of strings: the
87
+ * opening curly bracket '{' as the first element, and the closing curly
88
+ * bracket '}' as the second element.
89
+ */
90
+ get curlyBracketsPair() {
91
+ return ['{', '}'];
92
+ },
93
+ /**
94
+ * Generates a random string using base 36 (numbers and lowercase letters).
95
+ * This method is useful when you need a random string that includes both
96
+ * numbers and letters. The generated string does not include the leading
97
+ * '0.' that is part of the string representation of a random number in
98
+ * base 36.
99
+ *
100
+ * @returns {string} A random string of characters in base 36.
101
+ *
102
+ * @example
103
+ * const randomStr = StringExtensions.random36();
104
+ * console.log(randomStr); // Output: "3n5yzxjkf2o"
105
+ */
106
+ random36() {
107
+ return Math.random().toString(36).slice(2);
108
+ },
109
+ /**
110
+ * Generates a random string using base 16 (hexadecimal numbers).
111
+ * This method is useful when you need a random string that includes both
112
+ * numbers and letters in hexadecimal format. The generated string does not
113
+ * include the leading '0.' that is part of the string representation of a
114
+ * random number in base 16.
115
+ *
116
+ * @returns {string} A random string of characters in base 16.
117
+ *
118
+ * @example
119
+ * const randomStr = StringExtensions.random16();
120
+ * console.log(randomStr); // Output: "3a5f4c"
121
+ */
122
+ random16() {
123
+ return Math.random().toString(16).slice(2);
124
+ },
125
+ /**
126
+ * Generates a random RGB color code.
127
+ *
128
+ * This method generates a random hexadecimal number, slices off the
129
+ * leading '0.' and takes the first 6 characters. It then pads the
130
+ * end of the string with '0' until it is 6 characters long. The
131
+ * result is a string that can be used as a color code in CSS.
132
+ *
133
+ * @param {string} [prefix='#'] - The prefix to prepend to the color
134
+ * code. Defaults to '#'.
135
+ *
136
+ * @returns {string} A random RGB color code.
137
+ *
138
+ * @example
139
+ * const randomColor = StringExtensions.randomRGB();
140
+ * console.log(randomColor); // Output: "#3a5f4c"
141
+ */
142
+ randomRGBHex(prefix = '#') {
143
+ const hex = Math.random().toString(16).slice(2).substring(0, 6);
144
+ return `${prefix}${hex.padEnd(6, '0')}`;
145
+ },
146
+ /**
147
+ * Generates a random ARGB color code.
148
+ *
149
+ * This method generates a random hexadecimal number, slices off the
150
+ * leading '0.' and takes the first 8 characters. It then pads the
151
+ * start of the string with '0' until it is 6 characters long and the
152
+ * end of the string with '0' until it is 8 characters long. The
153
+ * result is a string that can be used as a color code in CSS.
154
+ *
155
+ * @param {string} [prefix='#'] - The prefix to prepend to the color
156
+ * code. Defaults to '#'.
157
+ *
158
+ * @returns {string} A random ARGB color code.
159
+ *
160
+ * @example
161
+ * const randomColor = StringExtensions.randomARGB();
162
+ * console.log(randomColor); // Output: "#3a5f4c00"
163
+ */
164
+ randomARGBHex(prefix = '#') {
165
+ const hex = Math.random().toString(16).slice(2).substring(0, 8);
166
+ return `${prefix}${hex.padStart(6, '0').padEnd(8, '0')}`;
167
+ },
168
+ /**
169
+ * Generates a random RGBA color code.
170
+ *
171
+ * This method generates a random hexadecimal number, slices off the
172
+ * leading '0.' and takes the first 8 characters. It then pads the
173
+ * start of the string with '0' until it is 6 characters long and the
174
+ * end of the string with '0' until it is 8 characters long. The
175
+ * result is a string that can be used as a color code in CSS.
176
+ *
177
+ * @param {string} [prefix='#'] - The prefix to prepend to the color
178
+ * code. Defaults to '#'.
179
+ *
180
+ * @returns {string} A random RGBA color code.
181
+ *
182
+ * @example
183
+ * const randomColor = StringExtensions.randomRGBA();
184
+ * console.log(randomColor); // Output: "#3a5f4c00"
185
+ */
186
+ randomRGBAHex(prefix = '#') {
187
+ const hex = Math.random().toString(16).slice(2).substring(0, 8);
188
+ return `${prefix}${hex.padStart(6, '0').padStart(8, '0')}`;
189
+ },
190
+ /**
191
+ * Generates a random RGB color code.
192
+ *
193
+ * This method generates a random hexadecimal number, slices off the
194
+ * leading '0.' and pads the end of the string with '0' until it is
195
+ * 8 characters long. It then parses the first 6 characters into
196
+ * three separate 2-character strings, each representing a color
197
+ * component (red, green, blue) in hexadecimal format. These strings
198
+ * are then converted into decimal format and used to construct an
199
+ * RGB color code.
200
+ *
201
+ * @returns {string} A random RGB color code.
202
+ *
203
+ * @example
204
+ * const randomColor = StringExtensions.randomRGB();
205
+ * console.log(randomColor); // Output: "rgb(58,95,76)"
206
+ */
207
+ randomRGB() {
208
+ const hex = Math.random().toString(16).slice(2).padEnd(8, '0');
209
+ const red = parseInt(hex.substring(0, 2), 16);
210
+ const green = parseInt(hex.substring(2, 4), 16);
211
+ const blue = parseInt(hex.substring(4, 6), 16);
212
+ return `rgb(${red}, ${green}, ${blue})`;
213
+ },
214
+ /**
215
+ * Generates a random RGBA color code with optional forced color values.
216
+ *
217
+ * This method generates a random hexadecimal number, slices off the
218
+ * leading '0.' and pads the end of the string with '0' until it is
219
+ * 8 characters long. It then parses the first 8 characters into
220
+ * four separate 2-character strings, each representing a color
221
+ * component (red, green, blue, alpha) in hexadecimal format. These strings
222
+ * are then converted into decimal format and used to construct an
223
+ * RGBA color code.
224
+ *
225
+ * If a color component is provided in the `force` parameter, it will
226
+ * be used instead of a random value for that component.
227
+ *
228
+ * @param {Object} force - An object with properties for each color
229
+ * component (red, green, blue, alpha) that should be forced to a
230
+ * specific value. If a property is undefined or not provided, a
231
+ * random value will be used for that component.
232
+ * @param {number} force.red - The red component (0-255).
233
+ * @param {number} force.green - The green component (0-255).
234
+ * @param {number} force.blue - The blue component (0-255).
235
+ * @param {number} force.alpha - The alpha component (0.0-1.0).
236
+ *
237
+ * @returns {string} A random RGBA color code.
238
+ *
239
+ * @example
240
+ * const randomColor = StringExtensions.randomRGBA();
241
+ * console.log(randomColor); // Output: "rgba(58,95,76,0.50)"
242
+ *
243
+ * const forcedGreen = StringExtensions.randomRGBA({ green: 255 });
244
+ * console.log(forcedGreen); // Output: "rgba(58,255,76,0.50)"
245
+ */
246
+ randomRGBA(force = {
247
+ red: undefined,
248
+ green: undefined,
249
+ blue: undefined,
250
+ alpha: undefined
251
+ }) {
252
+ const hex = Math.random().toString(16).slice(2).padEnd(8, '0');
253
+ const red = force.red ?? parseInt(hex.substring(0, 2), 16);
254
+ const green = force.green ?? parseInt(hex.substring(2, 4), 16);
255
+ const blue = force.blue ?? parseInt(hex.substring(4, 6), 16);
256
+ const alpha = force.alpha ??
257
+ (parseInt(hex.substring(6, 8), 16) / 255.0) * 1.0;
258
+ return `rgba(${red}, ${green}, ${blue}, ${alpha.toFixed(2)})`;
259
+ },
260
+ wrap(object = globalThis, options = {
261
+ indent: 2,
262
+ separator: ', ',
263
+ indentCharacter: ' ',
264
+ lineEnding: '\n',
265
+ inspector: [Object, 'getOwnPropertyNames'],
266
+ mapValues: undefined,
267
+ mapLine: undefined,
268
+ }) {
269
+ const { indent = 2, separator = ', ', indentCharacter = ' ', lineEnding = '\n', inspector = [Object, 'getOwnPropertyNames'], mapValues, mapLine, } = options ?? {};
270
+ let tab = indent === 0 ? '' : indentCharacter.repeat(Number(indent) || 2);
271
+ let maxLen = 76 - tab.length;
272
+ let line = [];
273
+ let getElements = inspector[0][inspector[1]];
274
+ let values = Array.isArray(object) ? object : getElements(Object(object));
275
+ if (typeof mapValues === 'function') {
276
+ values = values.map(mapValues);
277
+ }
278
+ return values.reduce((acc, key, index, { length }) => {
279
+ const endOfLine = index < (length - 1) ? separator : '';
280
+ let ifCombined = [
281
+ tab, ...line.join(separator), key, endOfLine
282
+ ].join('').trim();
283
+ if (ifCombined.length < maxLen) {
284
+ line.push(key);
285
+ }
286
+ else {
287
+ let lineElements = [...line, key];
288
+ let debug = `<-- (len: ${[tab, ...line.join(separator), key, endOfLine].join('').trim().length})`;
289
+ if (typeof mapLine === 'function') {
290
+ lineElements = lineElements.map(mapLine);
291
+ }
292
+ const completeLine = (tab +
293
+ lineElements.slice(1).join(separator) +
294
+ endOfLine).trim();
295
+ acc.push(completeLine + debug);
296
+ line = [];
297
+ }
298
+ ;
299
+ return acc;
300
+ }, []).join(lineEnding);
301
+ },
302
+ });
303
+ const { isString: pIsString, ifString: pIfString } = exports.StringExtensions.patches;
304
+ /**
305
+ * `StringPrototypeExtensions` provides a set of utility methods that are
306
+ * added to the `String` prototype. This allows all string instances to
307
+ * access new functionality directly, enhancing their capabilities beyond
308
+ * the standard `String` class methods. These extensions are applied using
309
+ * the `Patch` class from '@nejs/extension', ensuring that they do not
310
+ * interfere with the global namespace or existing properties.
311
+ *
312
+ * The extensions include methods for extracting substrings based on
313
+ * specific tokens, checking the presence of certain patterns, and more,
314
+ * making string manipulation tasks more convenient and expressive.
315
+ */
316
+ exports.StringPrototypeExtensions = new extension_1.Patch(String.prototype, {
317
+ [extension_1.Patch.kMutablyHidden]: {
318
+ /**
319
+ * Determines if the current object is a string.
320
+ *
321
+ * This getter uses the `pIsString` function from the
322
+ * `StringExtensions` patch to check if the current object
323
+ * (`this`) is a string.
324
+ *
325
+ * @type {boolean}
326
+ * @readonly
327
+ *
328
+ * @example
329
+ * const str = "Hello, World!"
330
+ * console.log(str.isString) // Output: true
331
+ *
332
+ * const notStr = 123
333
+ * console.log(notStr.isString) // Output: false
334
+ */
335
+ get isString() {
336
+ return pIsString(this);
337
+ },
338
+ /**
339
+ * Checks if the current object is a string and returns the
340
+ * corresponding value based on the result.
341
+ *
342
+ * This method uses the `pIfString` function from the
343
+ * `StringExtensions` patch to determine if the current object
344
+ * (`this`) is a string. If it is a string, the `thenValue` is returned.
345
+ * Otherwise, the `elseValue` is returned.
346
+ *
347
+ * @param {any} thenValue - The value to return if the current object
348
+ * is a string.
349
+ * @param {any} elseValue - The value to return if the current object
350
+ * is not a string.
351
+ * @returns {any} The `thenValue` if the current object is a string, or
352
+ * the `elseValue` if it is not a string.
353
+ *
354
+ * @example
355
+ * const str = "Hello, World!"
356
+ * // 'Is a string'
357
+ * console.log(str.ifString('Is a string', 'Not a string'))
358
+ *
359
+ * const notStr = 123
360
+ * // 'Not a string'
361
+ * console.log(notStr.ifString('Is a string', 'Not a string'))
362
+ */
363
+ ifString(thenValue, elseValue) {
364
+ return pIfString(this, thenValue, elseValue);
365
+ },
366
+ /**
367
+ * Returns an object representation of the string instance.
368
+ *
369
+ * This getter method creates and returns an object that wraps
370
+ * the string instance, allowing it to be treated as an object.
371
+ * The returned object is created using the `Object()`
372
+ * constructor, which takes the string instance as its argument.
373
+ *
374
+ * @type {Object}
375
+ * @readonly
376
+ *
377
+ * @example
378
+ * const str = 'Hello, World!'
379
+ * console.log(typeof str) // 'string'
380
+ * console.log(typeof str.instance) // 'object'
381
+ */
382
+ get instance() {
383
+ return Object(this);
384
+ },
385
+ /**
386
+ * Extracts a substring from the current string, starting at a given offset
387
+ * and bounded by specified opening and closing tokens. This method is
388
+ * particularly useful for parsing nested structures or quoted strings,
389
+ * where the level of nesting or the presence of escape characters must
390
+ * be considered.
391
+ *
392
+ * @param {number} offset The position in the string from which to start the
393
+ * search for the substring.
394
+ * @param {[string, string]} tokens An array containing two strings: the
395
+ * opening and closing tokens that define the boundaries of the substring
396
+ * to be extracted.
397
+ * @returns {Object} An object with two properties: `extracted`, the
398
+ * extracted substring, and `newOffset`, the position in the original
399
+ * string immediately after the end of the extracted substring. If no
400
+ * substring is found, `extracted` is `null` and `newOffset` is the same
401
+ * as the input offset.
402
+ */
403
+ extractSubstring(offset = 0, tokens = parenthesisPair) {
404
+ let [openToken, closeToken] = tokens;
405
+ let depth = 0;
406
+ let start = -1;
407
+ let end = -1;
408
+ let leadingToken = '';
409
+ let firstToken = 0;
410
+ for (let i = offset; i < this.length; i++) {
411
+ const char = this[i];
412
+ if (char === openToken) {
413
+ depth++;
414
+ if (start === -1)
415
+ start = i;
416
+ }
417
+ else if (char === closeToken) {
418
+ depth--;
419
+ if (depth === 0) {
420
+ end = i;
421
+ break;
422
+ }
423
+ }
424
+ }
425
+ let lRange = [
426
+ Math.max(0, start - 100),
427
+ start
428
+ ];
429
+ let leading = [...this.substring(lRange[0], lRange[1])].reverse().join('');
430
+ let reversedLeadingToken;
431
+ try {
432
+ reversedLeadingToken = /([^ \,\"\'\`]+)/.exec(leading)[1] ?? '';
433
+ leadingToken = [...reversedLeadingToken].reverse().join('');
434
+ }
435
+ catch (ignored) { }
436
+ if (start !== -1 && end !== -1) {
437
+ const sliceRange = [start, end + 1];
438
+ const extracted = this.slice(sliceRange[0], sliceRange[1]);
439
+ return {
440
+ extracted,
441
+ range: [start, end],
442
+ newOffset: end + 1,
443
+ leadingToken,
444
+ };
445
+ }
446
+ else {
447
+ return {
448
+ extracted: null,
449
+ range: [start, end],
450
+ newOffset: offset,
451
+ leadingToken,
452
+ };
453
+ }
454
+ },
455
+ },
456
+ });
457
+ // NOTE to self; this is repeated here otherwise a circular reference from
458
+ // Object<->Function<->Global occurs. See original source in global.this.js
459
+ // {@see globalThis.isThenElse}
460
+ function isThenElse(bv, tv, ev) {
461
+ if (arguments.length > 1) {
462
+ var _then = isFunction(tv) ? tv(bv) : tv;
463
+ if (arguments.length > 2) {
464
+ var _else = isFunction(ev) ? tv(bv) : ev;
465
+ return bv ? _then : _else;
466
+ }
467
+ return bv || _then;
468
+ }
469
+ return bv;
470
+ }
471
+ //# sourceMappingURL=string.extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.extensions.js","sourceRoot":"","sources":["../../src/string.extensions.js"],"names":[],"mappings":"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"}
@@ -7,4 +7,5 @@
7
7
  * utility functions.
8
8
  */
9
9
  export const SymbolExtensions: Patch;
10
+ export const SymbolPrototypeExtensions: Patch;
10
11
  import { Patch } from '@nejs/extension';