@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,227 @@
1
+ export class ParamParser {
2
+ /**
3
+ * Attempts to parse the given parameters using the provided parsers, throwing an
4
+ * error if no valid parser is found. This method serves as a convenience wrapper
5
+ * around `safeTryParsers`, enforcing strict parsing by automatically enabling
6
+ * error throwing on failure.
7
+ *
8
+ * @param {any[]} parameters - The parameters to be parsed.
9
+ * @param {Function[]} parsers - An array of `ParamParser` subclasses to attempt
10
+ * parsing with.
11
+ * @returns {Object} An object containing the parsing result, with a `success`
12
+ * property indicating if parsing was successful, and a `data` property containing
13
+ * the parsed data if successful.
14
+ * @example
15
+ * const parameters = ['param1', 'param2'];
16
+ * const parsers = [Parser1, Parser2];
17
+ * const result = ParamParser.tryParsers(parameters, parsers);
18
+ * if (result.success) {
19
+ * console.log('Parsing successful:', result.data);
20
+ * } else {
21
+ * console.error('Parsing failed.');
22
+ * }
23
+ */
24
+ static tryParsers(parameters: any[], parsers: Function[]): Object;
25
+ /**
26
+ * Tries parsing `parameters` with each parser in `parsers`. If
27
+ * `throwOnFail` is true, throws an error when validation fails or
28
+ * no valid parser is found.
29
+ *
30
+ * This method attempts to parse the given parameters using the
31
+ * provided list of parsers. It validates the input to ensure both
32
+ * `parameters` and `parsers` are arrays and that `parsers`
33
+ * contains at least one valid `ParamParser` subclass. If
34
+ * `throwOnFail` is set to true, it will throw specific errors for
35
+ * invalid inputs or when no parser succeeds. Otherwise, it returns
36
+ * an object indicating the success status and the result of
37
+ * parsing, if successful.
38
+ *
39
+ * @param {any[]} parameters - The parameters to be parsed.
40
+ * @param {Function[]} parsers - An array of `ParamParser`
41
+ * subclasses to attempt parsing with.
42
+ * @param {boolean} [throwOnFail=false] - Whether to throw an
43
+ * error on failure.
44
+ * @returns {{success: boolean, data: any}} An object with a
45
+ * `success` flag and `data` containing the parsing result, if
46
+ * successful.
47
+ * @throws {ParametersMustBeArrayError} If `parameters` or
48
+ * `parsers` are not arrays when `throwOnFail` is true.
49
+ * @throws {ParsersArrayMustContainParsersError} If `parsers`
50
+ * does not contain at least one valid `ParamParser` subclass
51
+ * when `throwOnFail` is true.
52
+ * @throws {NoValidParsersFound} If no valid parser is found
53
+ * and `throwOnFail` is true.
54
+ * @example
55
+ * const parameters = ['param1', 'param2'];
56
+ * const parsers = [Parser1, Parser2];
57
+ * const result = ParamParser.safeTryParsers(
58
+ * parameters, parsers, true
59
+ * );
60
+ *
61
+ * if (result.success) {
62
+ * console.log('Parsing successful:', result.data);
63
+ * } else {
64
+ * console.error('Parsing failed.');
65
+ * }
66
+ */
67
+ static safeTryParsers(parameters: any[], parsers: Function[], throwOnFail?: boolean | undefined): {
68
+ success: boolean;
69
+ data: any;
70
+ };
71
+ /**
72
+ * A custom error class that signifies no valid parsers were found
73
+ * during the parsing process. This error is thrown when all
74
+ * parsers fail to parse the given parameters and the `throwOnFail`
75
+ * flag is set to true in the `safeTryParsers` method.
76
+ *
77
+ * @returns {Function} A class extending Error, representing a
78
+ * specific error when no valid parsers are found.ound.
79
+ *
80
+ * @example
81
+ * try {
82
+ * const result = ParamParser.safeTryParsers(
83
+ * parameters, parsers, true
84
+ * );
85
+ * } catch (error) {
86
+ * if (error instanceof ParamParser.NoValidParsersFound) {
87
+ * console.error(
88
+ * 'No valid parsers could process the parameters.'
89
+ * );
90
+ * }
91
+ * }
92
+ */
93
+ static get NoValidParsersFound(): Function;
94
+ /**
95
+ * Represents an error thrown when the parameters provided to a method
96
+ * are not in an array format as expected. This class extends the
97
+ * native JavaScript `Error` class, allowing for instances of this
98
+ * error to be thrown and caught using standard error handling
99
+ * mechanisms in JavaScript.
100
+ *
101
+ * This error is specifically used in scenarios where a method
102
+ * expects its arguments to be provided as an array, and the
103
+ * validation of those arguments fails because they were not
104
+ * provided in an array format. It serves as a clear indicator
105
+ * of the nature of the error to developers, enabling them to
106
+ * quickly identify and rectify the issue in their code.
107
+ *
108
+ * @example
109
+ * try {
110
+ * ParamParser.safeTryParsers(nonArrayParameters, parsers, true);
111
+ * } catch (error) {
112
+ * if (error instanceof ParamParser.ParametersMustBeArrayError) {
113
+ * console.error('Parameters must be provided as an array.');
114
+ * }
115
+ * }
116
+ */
117
+ static get ParametersMustBeArrayError(): {
118
+ new (message?: string | undefined): {
119
+ name: string;
120
+ message: string;
121
+ stack?: string | undefined;
122
+ cause?: unknown;
123
+ };
124
+ new (message?: string | undefined, options?: ErrorOptions | undefined): {
125
+ name: string;
126
+ message: string;
127
+ stack?: string | undefined;
128
+ cause?: unknown;
129
+ };
130
+ captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
131
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
132
+ stackTraceLimit: number;
133
+ };
134
+ /**
135
+ * A custom error class indicating that the parsers array does not
136
+ * contain valid parser functions. This error is thrown when the
137
+ * validation of parsers within `ParamParser.safeTryParsers` fails
138
+ * to find any instance that is a subclass of `ParamParser`. It
139
+ * extends the native JavaScript `Error` class, allowing it to be
140
+ * thrown and caught using standard error handling mechanisms.
141
+ *
142
+ * This error serves as a clear indicator to developers that the
143
+ * provided array of parsers does not meet the expected criteria,
144
+ * specifically that it must contain at least one valid parser
145
+ * that extends `ParamParser`. This ensures that the parsing
146
+ * process can be executed with at least one valid parser function.
147
+ *
148
+ * @example
149
+ * try {
150
+ * ParamParser.safeTryParsers(parameters, [], true);
151
+ * } catch (error) {
152
+ * const { ParsersArrayMustContainParsersError } = ParamParser
153
+ * if (error instanceof ParsersArrayMustContainParsersError) {
154
+ * console.error(
155
+ * 'The parsers array must contain at least one valid parser.'
156
+ * );
157
+ * }
158
+ * }
159
+ */
160
+ static get ParsersArrayMustContainParsersError(): {
161
+ new (message?: string | undefined): {
162
+ name: string;
163
+ message: string;
164
+ stack?: string | undefined;
165
+ cause?: unknown;
166
+ };
167
+ new (message?: string | undefined, options?: ErrorOptions | undefined): {
168
+ name: string;
169
+ message: string;
170
+ stack?: string | undefined;
171
+ cause?: unknown;
172
+ };
173
+ captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
174
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
175
+ stackTraceLimit: number;
176
+ };
177
+ /**
178
+ * Constructs an instance of ParamParser. It takes in parameters, an optional
179
+ * validator function, and an optional parser function. The parameters are
180
+ * validated and if successful, parsed.
181
+ *
182
+ * @param {any[]} parameters - Arguments passed in by the process.
183
+ * @param {((any[]) => boolean)?} [validator=() => {}] - An optional function
184
+ * to specify a validator without subclassing ParamParser. It should return
185
+ * a boolean indicating the validity of the parameters.
186
+ * @param {((any[]) => object)?} [parser=() => {}] - An optional function to
187
+ * specify a parser without subclassing ParamParser. It should return an
188
+ * object after parsing the input parameters.
189
+ *
190
+ * @example
191
+ * const parameters = ['param1', 'param2']
192
+ * const validator = params => params.every(param => typeof param === 'string')
193
+ * const parser = params => ({ params })
194
+ * const paramParser = new ParamParser(parameters, validator, parser)
195
+ * if (paramParser.success) {
196
+ * console.log('Parsing successful:', paramParser.results)
197
+ * } else {
198
+ * console.error('Parsing failed.')
199
+ * }
200
+ */
201
+ constructor(parameters: any[], validator?: () => void, parser?: () => void);
202
+ args: any[];
203
+ parser: () => void;
204
+ validator: () => void;
205
+ result: any;
206
+ success: boolean;
207
+ results: object | undefined;
208
+ /**
209
+ * @param {object} args arguments that were previously validated
210
+ * by either the overloaded validate() method or the supplied
211
+ * validator closure.
212
+ * @returns {object} returns the output object, or an empty
213
+ * object, after parsing the input arguments or parameters.
214
+ */
215
+ parse(args: object): object;
216
+ /**
217
+ * Walk the arguments and determine if the supplied input is
218
+ * a valid parsing.
219
+ *
220
+ * @param {any[]} args arguments supplied by the process.
221
+ * @returns {boolean} `true` if the validation is successful,
222
+ * `false` otherwise.
223
+ */
224
+ validate(args: any[]): boolean;
225
+ }
226
+ export const ParamParserExtensions: Extension;
227
+ import { Extension } from '@nejs/extension';
@@ -0,0 +1,238 @@
1
+ import { Extension } from '@nejs/extension';
2
+ export class ParamParser {
3
+ /**
4
+ * Constructs an instance of ParamParser. It takes in parameters, an optional
5
+ * validator function, and an optional parser function. The parameters are
6
+ * validated and if successful, parsed.
7
+ *
8
+ * @param {any[]} parameters - Arguments passed in by the process.
9
+ * @param {((any[]) => boolean)?} [validator=() => {}] - An optional function
10
+ * to specify a validator without subclassing ParamParser. It should return
11
+ * a boolean indicating the validity of the parameters.
12
+ * @param {((any[]) => object)?} [parser=() => {}] - An optional function to
13
+ * specify a parser without subclassing ParamParser. It should return an
14
+ * object after parsing the input parameters.
15
+ *
16
+ * @example
17
+ * const parameters = ['param1', 'param2']
18
+ * const validator = params => params.every(param => typeof param === 'string')
19
+ * const parser = params => ({ params })
20
+ * const paramParser = new ParamParser(parameters, validator, parser)
21
+ * if (paramParser.success) {
22
+ * console.log('Parsing successful:', paramParser.results)
23
+ * } else {
24
+ * console.error('Parsing failed.')
25
+ * }
26
+ */
27
+ constructor(parameters, validator = () => { }, parser = () => { }) {
28
+ this.args = parameters;
29
+ this.parser = parser;
30
+ this.validator = validator;
31
+ this.result = undefined;
32
+ this.success = this.validate(this.args);
33
+ if (this.success) {
34
+ this.results = this.parse(this.args);
35
+ }
36
+ }
37
+ /**
38
+ * @param {object} args arguments that were previously validated
39
+ * by either the overloaded validate() method or the supplied
40
+ * validator closure.
41
+ * @returns {object} returns the output object, or an empty
42
+ * object, after parsing the input arguments or parameters.
43
+ */
44
+ parse(args) {
45
+ return this.parser?.(args);
46
+ }
47
+ /**
48
+ * Walk the arguments and determine if the supplied input is
49
+ * a valid parsing.
50
+ *
51
+ * @param {any[]} args arguments supplied by the process.
52
+ * @returns {boolean} `true` if the validation is successful,
53
+ * `false` otherwise.
54
+ */
55
+ validate(args) {
56
+ return this.validator?.(args);
57
+ }
58
+ /**
59
+ * Attempts to parse the given parameters using the provided parsers, throwing an
60
+ * error if no valid parser is found. This method serves as a convenience wrapper
61
+ * around `safeTryParsers`, enforcing strict parsing by automatically enabling
62
+ * error throwing on failure.
63
+ *
64
+ * @param {any[]} parameters - The parameters to be parsed.
65
+ * @param {Function[]} parsers - An array of `ParamParser` subclasses to attempt
66
+ * parsing with.
67
+ * @returns {Object} An object containing the parsing result, with a `success`
68
+ * property indicating if parsing was successful, and a `data` property containing
69
+ * the parsed data if successful.
70
+ * @example
71
+ * const parameters = ['param1', 'param2'];
72
+ * const parsers = [Parser1, Parser2];
73
+ * const result = ParamParser.tryParsers(parameters, parsers);
74
+ * if (result.success) {
75
+ * console.log('Parsing successful:', result.data);
76
+ * } else {
77
+ * console.error('Parsing failed.');
78
+ * }
79
+ */
80
+ static tryParsers(parameters, parsers) {
81
+ return this.safeTryParsers(parameters, parsers, true);
82
+ }
83
+ /**
84
+ * Tries parsing `parameters` with each parser in `parsers`. If
85
+ * `throwOnFail` is true, throws an error when validation fails or
86
+ * no valid parser is found.
87
+ *
88
+ * This method attempts to parse the given parameters using the
89
+ * provided list of parsers. It validates the input to ensure both
90
+ * `parameters` and `parsers` are arrays and that `parsers`
91
+ * contains at least one valid `ParamParser` subclass. If
92
+ * `throwOnFail` is set to true, it will throw specific errors for
93
+ * invalid inputs or when no parser succeeds. Otherwise, it returns
94
+ * an object indicating the success status and the result of
95
+ * parsing, if successful.
96
+ *
97
+ * @param {any[]} parameters - The parameters to be parsed.
98
+ * @param {Function[]} parsers - An array of `ParamParser`
99
+ * subclasses to attempt parsing with.
100
+ * @param {boolean} [throwOnFail=false] - Whether to throw an
101
+ * error on failure.
102
+ * @returns {{success: boolean, data: any}} An object with a
103
+ * `success` flag and `data` containing the parsing result, if
104
+ * successful.
105
+ * @throws {ParametersMustBeArrayError} If `parameters` or
106
+ * `parsers` are not arrays when `throwOnFail` is true.
107
+ * @throws {ParsersArrayMustContainParsersError} If `parsers`
108
+ * does not contain at least one valid `ParamParser` subclass
109
+ * when `throwOnFail` is true.
110
+ * @throws {NoValidParsersFound} If no valid parser is found
111
+ * and `throwOnFail` is true.
112
+ * @example
113
+ * const parameters = ['param1', 'param2'];
114
+ * const parsers = [Parser1, Parser2];
115
+ * const result = ParamParser.safeTryParsers(
116
+ * parameters, parsers, true
117
+ * );
118
+ *
119
+ * if (result.success) {
120
+ * console.log('Parsing successful:', result.data);
121
+ * } else {
122
+ * console.error('Parsing failed.');
123
+ * }
124
+ */
125
+ static safeTryParsers(parameters, parsers, throwOnFail = false) {
126
+ if (!Array.isArray(parameters) || !Array.isArray(parsers)) {
127
+ if (throwOnFail) {
128
+ throw new this.ParametersMustBeArrayError(`${this.name}.tryParsers must receive two arrays as args`);
129
+ }
130
+ }
131
+ if (!parsers.some(parser => parser?.prototype instanceof ParamParser &&
132
+ typeof parser === 'function')) {
133
+ if (throwOnFail) {
134
+ throw new this.ParsersArrayMustContainParsersError(`${this.name}.tryParsers parsers argument must contain at least one ` +
135
+ `ParamParser derived class`);
136
+ }
137
+ }
138
+ let success = false;
139
+ let result = undefined;
140
+ for (let Parser of parsers) {
141
+ const parser = new Parser(parameters);
142
+ if (parser.success) {
143
+ success = true;
144
+ result = parser.result;
145
+ break;
146
+ }
147
+ }
148
+ if (!success && throwOnFail) {
149
+ throw new this.NoValidParsersFound('No valid parsers found');
150
+ }
151
+ return { success, data: result };
152
+ }
153
+ /**
154
+ * A custom error class that signifies no valid parsers were found
155
+ * during the parsing process. This error is thrown when all
156
+ * parsers fail to parse the given parameters and the `throwOnFail`
157
+ * flag is set to true in the `safeTryParsers` method.
158
+ *
159
+ * @returns {Function} A class extending Error, representing a
160
+ * specific error when no valid parsers are found.ound.
161
+ *
162
+ * @example
163
+ * try {
164
+ * const result = ParamParser.safeTryParsers(
165
+ * parameters, parsers, true
166
+ * );
167
+ * } catch (error) {
168
+ * if (error instanceof ParamParser.NoValidParsersFound) {
169
+ * console.error(
170
+ * 'No valid parsers could process the parameters.'
171
+ * );
172
+ * }
173
+ * }
174
+ */
175
+ static get NoValidParsersFound() {
176
+ return class NoValidParsersFound extends Error {
177
+ };
178
+ }
179
+ /**
180
+ * Represents an error thrown when the parameters provided to a method
181
+ * are not in an array format as expected. This class extends the
182
+ * native JavaScript `Error` class, allowing for instances of this
183
+ * error to be thrown and caught using standard error handling
184
+ * mechanisms in JavaScript.
185
+ *
186
+ * This error is specifically used in scenarios where a method
187
+ * expects its arguments to be provided as an array, and the
188
+ * validation of those arguments fails because they were not
189
+ * provided in an array format. It serves as a clear indicator
190
+ * of the nature of the error to developers, enabling them to
191
+ * quickly identify and rectify the issue in their code.
192
+ *
193
+ * @example
194
+ * try {
195
+ * ParamParser.safeTryParsers(nonArrayParameters, parsers, true);
196
+ * } catch (error) {
197
+ * if (error instanceof ParamParser.ParametersMustBeArrayError) {
198
+ * console.error('Parameters must be provided as an array.');
199
+ * }
200
+ * }
201
+ */
202
+ static get ParametersMustBeArrayError() {
203
+ return class ParametersMustBeArrayError extends Error {
204
+ };
205
+ }
206
+ /**
207
+ * A custom error class indicating that the parsers array does not
208
+ * contain valid parser functions. This error is thrown when the
209
+ * validation of parsers within `ParamParser.safeTryParsers` fails
210
+ * to find any instance that is a subclass of `ParamParser`. It
211
+ * extends the native JavaScript `Error` class, allowing it to be
212
+ * thrown and caught using standard error handling mechanisms.
213
+ *
214
+ * This error serves as a clear indicator to developers that the
215
+ * provided array of parsers does not meet the expected criteria,
216
+ * specifically that it must contain at least one valid parser
217
+ * that extends `ParamParser`. This ensures that the parsing
218
+ * process can be executed with at least one valid parser function.
219
+ *
220
+ * @example
221
+ * try {
222
+ * ParamParser.safeTryParsers(parameters, [], true);
223
+ * } catch (error) {
224
+ * const { ParsersArrayMustContainParsersError } = ParamParser
225
+ * if (error instanceof ParsersArrayMustContainParsersError) {
226
+ * console.error(
227
+ * 'The parsers array must contain at least one valid parser.'
228
+ * );
229
+ * }
230
+ * }
231
+ */
232
+ static get ParsersArrayMustContainParsersError() {
233
+ return class ParsersArrayMustContainParsersError extends Error {
234
+ };
235
+ }
236
+ }
237
+ export const ParamParserExtensions = new Extension(ParamParser);
238
+ //# sourceMappingURL=param.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param.parser.js","sourceRoot":"","sources":["../../../src/classes/param.parser.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ export class ProxyHandlerResponse {
2
+ constructor(success?: boolean, value?: undefined, context?: undefined);
3
+ }
4
+ export class ProxyHandler {
5
+ /**
6
+ * This static method is used to create a response object. The response
7
+ * object contains the success status, the value, and the context of the
8
+ * response. It also includes a getter for the Symbol.toStringTag property
9
+ * that returns the ResponseType of the ProxyHandler.
10
+ *
11
+ * @param {boolean} success - The success status of the response.
12
+ * @param {*} value - The value of the response.
13
+ * @param {Object} context - The context of the response.
14
+ * @returns {Object} The response object.
15
+ *
16
+ * @example
17
+ * // Create a response object
18
+ * const response = ProxyHandler.response(
19
+ * true, 'value', { key: 'context' }
20
+ * );
21
+ *
22
+ * // Output: { success: true, value: 'value', context: { key: 'context' },
23
+ * // [Symbol.toStringTag]: 'ProxyHandlerResponse' }
24
+ * console.log(response);
25
+ */
26
+ static response(success: boolean, value: any, context: Object): Object;
27
+ /**
28
+ * This static getter method is used to retrieve the response type
29
+ * of the ProxyHandler. It returns a string that represents the
30
+ * response type of the ProxyHandler.
31
+ *
32
+ * @property {function} ResponseType - A static getter method that
33
+ * returns the response type of the ProxyHandler.
34
+ * @returns {string} A string representing the response type of the
35
+ * ProxyHandler.
36
+ *
37
+ * @example
38
+ * // Get the response type of the ProxyHandler
39
+ * const responseType = ProxyHandler.ResponseType;
40
+ *
41
+ * // Output: 'ProxyHandlerResponse'
42
+ * console.log(responseType);
43
+ */
44
+ static get ResponseType(): string;
45
+ /**
46
+ * This static method is used to retrieve the name of a ProxyHandler type
47
+ * from a given array of arguments. If the array of arguments matches any
48
+ * of the ProxyHandler types, the name of that type is returned. If no
49
+ * match is found, or if the input is not an array, 'custom' is returned.
50
+ *
51
+ * @param {Array.<*>} proxyHandlerType - An array of arguments to match
52
+ * against the ProxyHandler types.
53
+ * @returns {string} The name of the matching ProxyHandler type, or 'custom'
54
+ * if no match is found.
55
+ *
56
+ * @example
57
+ * // Get the name of a type from its arguments
58
+ * const typeName = ProxyHandler.nameFromType(
59
+ * ['target', 'thisArg', 'argumentsList']
60
+ * );
61
+ *
62
+ * // Output: 'apply'
63
+ * console.log(typeName);
64
+ *
65
+ * @throws {TypeError} If ProxyHandler.type is undefined.
66
+ */
67
+ static nameFromType(proxyHandlerType: Array<any>): string;
68
+ /**
69
+ * This method is used to retrieve all the types of ProxyHandler available
70
+ * in the ProxyHandler.type object. It is useful when you need to iterate
71
+ * over all the types or when you need to check if a certain type exists.
72
+ *
73
+ * @property {function} typeNames - A static getter method that returns an
74
+ * array of keys from the ProxyHandler.type object.
75
+ * @returns {Array.<string>} An array of strings representing the keys of
76
+ * the ProxyHandler.type object.
77
+ *
78
+ * @example
79
+ * // Get all type names
80
+ * const types = ProxyHandler.typeNames;
81
+ *
82
+ * // Output: ['apply', 'construct', 'defineProperty', ...]
83
+ * console.log(types);
84
+ *
85
+ * @throws {TypeError} If ProxyHandler.type is undefined.
86
+ */
87
+ static get typeNames(): string[];
88
+ /**
89
+ * A static getter method that returns an object containing keyed proxy
90
+ * trap types and their associated expected arguments list by name. A
91
+ * docstring description complete with url shortening links for each entry
92
+ * are provided (links go to the MDN documentation)
93
+ *
94
+ * @property {function} type - A static getter method that returns an object
95
+ * of ProxyHandler types.
96
+ * @returns {Object.<string, function>} An object where each key is a type
97
+ * name and each value is a function that returns an array of strings
98
+ * representing the arguments for that type.
99
+ *
100
+ * @example
101
+ * // Get the 'apply' type
102
+ * const applyType = ProxyHandler.type.apply;
103
+ *
104
+ * // Output: ['target', 'thisArg', 'argumentsList']
105
+ * console.log(applyType());
106
+ *
107
+ * @throws {TypeError} If ProxyHandler.type is undefined.
108
+ */
109
+ static get type(): {
110
+ [x: string]: Function;
111
+ };
112
+ constructor(handler: any, type?: Function);
113
+ handler: any;
114
+ typeName: string;
115
+ type: any;
116
+ invoke(...args: any[]): any;
117
+ }
118
+ export class PluggableProxy {
119
+ static get kCreated(): symbol;
120
+ static get kOriginal(): symbol;
121
+ static get kProxy(): symbol;
122
+ constructor(Class: any, handlers: any, options?: {
123
+ prototype: undefined;
124
+ apply: boolean;
125
+ });
126
+ handlers: Map<any, any>;
127
+ handlersOfType(typeName: any): any;
128
+ tryEachOfType(type: any, ...args: any[]): any[];
129
+ apply(target: any, thisArg: any, argumentsList: any): any;
130
+ construct(target: any, args: any): any;
131
+ defineProperty(target: any, key: any, descriptor: any): any;
132
+ deleteProperty(target: any, property: any): any;
133
+ get(target: any, property: any, receiver: any): any;
134
+ getOwnPropertyDescriptor(target: any, property: any): any;
135
+ getPrototypeOf(target: any): any;
136
+ has(target: any, property: any): any;
137
+ isExtensible(target: any): any;
138
+ ownKeys(target: any): any;
139
+ preventExtensions(target: any): any;
140
+ set(target: any, property: any, value: any, receiver: any): any;
141
+ setPrototypeOf(target: any, prototype: any): any;
142
+ }
143
+ export const ProxyHandlerExtensions: Extension;
144
+ export const PluggableProxyExtensions: Extension;
145
+ export const PluggableProxyExtensionSet: {
146
+ name: string;
147
+ extensionObjects: Set<any>;
148
+ extensions: Set<any>;
149
+ apply(): void;
150
+ revert(): void;
151
+ };
152
+ import { Extension } from '@nejs/extension';