@nejs/basic-extensions 2.21.0 → 2.22.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/.idea/markdown.xml +8 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/ne-basic-extensions.iml +8 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/CODE_STYLE.md +393 -0
  6. package/CODING_PHILOSOPHY.md +36 -0
  7. package/DOCUMENTATION_GUIDELINES.md +221 -0
  8. package/README.md +78 -4
  9. package/dist/@nejs/basic-extensions.bundle.2.22.6.js +25 -0
  10. package/dist/@nejs/basic-extensions.bundle.2.22.6.js.map +7 -0
  11. package/dist/cjs/classes/index.cjs +11129 -0
  12. package/dist/cjs/classes/index.cjs.map +7 -0
  13. package/dist/cjs/index.cjs +15191 -0
  14. package/dist/cjs/index.cjs.map +7 -0
  15. package/dist/cjs/utils/index.cjs +3954 -0
  16. package/dist/cjs/utils/index.cjs.map +7 -0
  17. package/dist/esm/basic-extensions.mjs +25 -0
  18. package/dist/esm/basic-extensions.mjs.map +7 -0
  19. package/package.json +16 -22
  20. package/repl.bootstrap.js +4 -7
  21. package/repl.history +30 -30
  22. package/src/big.int.extension.js +171 -45
  23. package/src/classes/enumeration.js +466 -0
  24. package/src/classes/index.js +5 -1
  25. package/src/index.js +5 -1
  26. package/src/math.extension.js +73 -0
  27. package/src/number.extension.js +18 -0
  28. package/src/regular.expression.extensions.js +0 -35
  29. package/src/utils/toolkit.js +699 -516
  30. package/tests/arrayextensions.test.js +3 -3
  31. package/tests/index.test.js +3 -1
  32. package/tests/newClasses/asyncIterable.test.js +3 -3
  33. package/tests/newClasses/deferred.test.js +3 -3
  34. package/tests/newClasses/descriptor.test.js +3 -3
  35. package/tests/newClasses/iterable.test.js +3 -3
  36. package/tests/newClasses/refmap.test.js +3 -3
  37. package/tests/newClasses/refset.test.js +3 -3
  38. package/tests/objectextensions.test.js +3 -3
  39. package/tests/setextensions.test.js +3 -3
  40. package/tests/stringextensions.test.js +3 -2
  41. package/tests/utils/descriptor.utils.test.js +1 -1
  42. package/tests/utils/toolkit.test.js +429 -163
  43. package/.esdoc.json +0 -9
  44. package/.vscode/settings.json +0 -5
  45. package/bin/build +0 -27
  46. package/bin/clean +0 -14
  47. package/bin/esbuild +0 -91
  48. package/bin/fixup +0 -13
  49. package/bin/repl.basics.js +0 -584
  50. package/bin/repl.signature.js +0 -63
  51. package/bin/version +0 -100
  52. package/dist/@nejs/basic-extensions.bundle.2.21.0.js +0 -25
  53. package/dist/@nejs/basic-extensions.bundle.2.21.0.js.map +0 -7
  54. package/dist/cjs/array.extensions.d.ts +0 -39
  55. package/dist/cjs/array.extensions.js +0 -477
  56. package/dist/cjs/array.extensions.js.map +0 -1
  57. package/dist/cjs/big.int.extension.d.ts +0 -31
  58. package/dist/cjs/big.int.extension.js +0 -165
  59. package/dist/cjs/big.int.extension.js.map +0 -1
  60. package/dist/cjs/classes/asyncIterable.d.ts +0 -126
  61. package/dist/cjs/classes/asyncIterable.js +0 -209
  62. package/dist/cjs/classes/asyncIterable.js.map +0 -1
  63. package/dist/cjs/classes/deferred.d.ts +0 -146
  64. package/dist/cjs/classes/deferred.js +0 -291
  65. package/dist/cjs/classes/deferred.js.map +0 -1
  66. package/dist/cjs/classes/descriptor.d.ts +0 -334
  67. package/dist/cjs/classes/descriptor.js +0 -537
  68. package/dist/cjs/classes/descriptor.js.map +0 -1
  69. package/dist/cjs/classes/enum.d.ts +0 -50
  70. package/dist/cjs/classes/enum.js +0 -405
  71. package/dist/cjs/classes/enum.js.map +0 -1
  72. package/dist/cjs/classes/index.d.ts +0 -15
  73. package/dist/cjs/classes/index.js +0 -63
  74. package/dist/cjs/classes/index.js.map +0 -1
  75. package/dist/cjs/classes/introspector.d.ts +0 -20
  76. package/dist/cjs/classes/introspector.js +0 -130
  77. package/dist/cjs/classes/introspector.js.map +0 -1
  78. package/dist/cjs/classes/iterable.d.ts +0 -169
  79. package/dist/cjs/classes/iterable.js +0 -268
  80. package/dist/cjs/classes/iterable.js.map +0 -1
  81. package/dist/cjs/classes/param.parser.d.ts +0 -221
  82. package/dist/cjs/classes/param.parser.js +0 -242
  83. package/dist/cjs/classes/param.parser.js.map +0 -1
  84. package/dist/cjs/classes/pluggable.proxy.d.ts +0 -153
  85. package/dist/cjs/classes/pluggable.proxy.js +0 -444
  86. package/dist/cjs/classes/pluggable.proxy.js.map +0 -1
  87. package/dist/cjs/classes/property.d.ts +0 -79
  88. package/dist/cjs/classes/property.js +0 -284
  89. package/dist/cjs/classes/property.js.map +0 -1
  90. package/dist/cjs/classes/refmap.d.ts +0 -238
  91. package/dist/cjs/classes/refmap.js +0 -421
  92. package/dist/cjs/classes/refmap.js.map +0 -1
  93. package/dist/cjs/classes/refset.d.ts +0 -186
  94. package/dist/cjs/classes/refset.js +0 -370
  95. package/dist/cjs/classes/refset.js.map +0 -1
  96. package/dist/cjs/classes/symkeys.d.ts +0 -349
  97. package/dist/cjs/classes/symkeys.js +0 -510
  98. package/dist/cjs/classes/symkeys.js.map +0 -1
  99. package/dist/cjs/classes/type.d.ts +0 -56
  100. package/dist/cjs/classes/type.js +0 -405
  101. package/dist/cjs/classes/type.js.map +0 -1
  102. package/dist/cjs/function.extensions.d.ts +0 -12
  103. package/dist/cjs/function.extensions.js +0 -758
  104. package/dist/cjs/function.extensions.js.map +0 -1
  105. package/dist/cjs/global.this.d.ts +0 -2
  106. package/dist/cjs/global.this.js +0 -300
  107. package/dist/cjs/global.this.js.map +0 -1
  108. package/dist/cjs/index.d.ts +0 -31
  109. package/dist/cjs/index.js +0 -226
  110. package/dist/cjs/index.js.map +0 -1
  111. package/dist/cjs/json.extensions.d.ts +0 -2
  112. package/dist/cjs/json.extensions.js +0 -109
  113. package/dist/cjs/json.extensions.js.map +0 -1
  114. package/dist/cjs/map.extensions.d.ts +0 -3
  115. package/dist/cjs/map.extensions.js +0 -143
  116. package/dist/cjs/map.extensions.js.map +0 -1
  117. package/dist/cjs/number.extension.d.ts +0 -44
  118. package/dist/cjs/number.extension.js +0 -261
  119. package/dist/cjs/number.extension.js.map +0 -1
  120. package/dist/cjs/object.extensions.d.ts +0 -33
  121. package/dist/cjs/object.extensions.js +0 -1091
  122. package/dist/cjs/object.extensions.js.map +0 -1
  123. package/dist/cjs/package.json +0 -3
  124. package/dist/cjs/proxy.extensions.d.ts +0 -2
  125. package/dist/cjs/proxy.extensions.js +0 -207
  126. package/dist/cjs/proxy.extensions.js.map +0 -1
  127. package/dist/cjs/reflect.extensions.d.ts +0 -14
  128. package/dist/cjs/reflect.extensions.js +0 -316
  129. package/dist/cjs/reflect.extensions.js.map +0 -1
  130. package/dist/cjs/regular.expression.extensions.d.ts +0 -2
  131. package/dist/cjs/regular.expression.extensions.js +0 -423
  132. package/dist/cjs/regular.expression.extensions.js.map +0 -1
  133. package/dist/cjs/set.extensions.d.ts +0 -40
  134. package/dist/cjs/set.extensions.js +0 -355
  135. package/dist/cjs/set.extensions.js.map +0 -1
  136. package/dist/cjs/string.extensions.d.ts +0 -23
  137. package/dist/cjs/string.extensions.js +0 -704
  138. package/dist/cjs/string.extensions.js.map +0 -1
  139. package/dist/cjs/symbol.extensions.d.ts +0 -11
  140. package/dist/cjs/symbol.extensions.js +0 -735
  141. package/dist/cjs/symbol.extensions.js.map +0 -1
  142. package/dist/cjs/utils/copy.object.d.ts +0 -408
  143. package/dist/cjs/utils/copy.object.js +0 -720
  144. package/dist/cjs/utils/copy.object.js.map +0 -1
  145. package/dist/cjs/utils/descriptor.utils.d.ts +0 -298
  146. package/dist/cjs/utils/descriptor.utils.js +0 -889
  147. package/dist/cjs/utils/descriptor.utils.js.map +0 -1
  148. package/dist/cjs/utils/index.d.ts +0 -75
  149. package/dist/cjs/utils/index.js +0 -61
  150. package/dist/cjs/utils/index.js.map +0 -1
  151. package/dist/cjs/utils/stdout.d.ts +0 -742
  152. package/dist/cjs/utils/stdout.js +0 -1042
  153. package/dist/cjs/utils/stdout.js.map +0 -1
  154. package/dist/cjs/utils/toolkit.d.ts +0 -1898
  155. package/dist/cjs/utils/toolkit.js +0 -1378
  156. package/dist/cjs/utils/toolkit.js.map +0 -1
  157. package/dist/cjs/weakref.extensions.d.ts +0 -2
  158. package/dist/cjs/weakref.extensions.js +0 -19
  159. package/dist/cjs/weakref.extensions.js.map +0 -1
  160. package/dist/mjs/array.extensions.d.ts +0 -39
  161. package/dist/mjs/array.extensions.js +0 -474
  162. package/dist/mjs/array.extensions.js.map +0 -1
  163. package/dist/mjs/big.int.extension.d.ts +0 -31
  164. package/dist/mjs/big.int.extension.js +0 -162
  165. package/dist/mjs/big.int.extension.js.map +0 -1
  166. package/dist/mjs/classes/asyncIterable.d.ts +0 -126
  167. package/dist/mjs/classes/asyncIterable.js +0 -204
  168. package/dist/mjs/classes/asyncIterable.js.map +0 -1
  169. package/dist/mjs/classes/deferred.d.ts +0 -146
  170. package/dist/mjs/classes/deferred.js +0 -287
  171. package/dist/mjs/classes/deferred.js.map +0 -1
  172. package/dist/mjs/classes/descriptor.d.ts +0 -334
  173. package/dist/mjs/classes/descriptor.js +0 -533
  174. package/dist/mjs/classes/descriptor.js.map +0 -1
  175. package/dist/mjs/classes/enum.d.ts +0 -50
  176. package/dist/mjs/classes/enum.js +0 -400
  177. package/dist/mjs/classes/enum.js.map +0 -1
  178. package/dist/mjs/classes/index.d.ts +0 -15
  179. package/dist/mjs/classes/index.js +0 -46
  180. package/dist/mjs/classes/index.js.map +0 -1
  181. package/dist/mjs/classes/introspector.d.ts +0 -20
  182. package/dist/mjs/classes/introspector.js +0 -126
  183. package/dist/mjs/classes/introspector.js.map +0 -1
  184. package/dist/mjs/classes/iterable.d.ts +0 -169
  185. package/dist/mjs/classes/iterable.js +0 -263
  186. package/dist/mjs/classes/iterable.js.map +0 -1
  187. package/dist/mjs/classes/param.parser.d.ts +0 -221
  188. package/dist/mjs/classes/param.parser.js +0 -238
  189. package/dist/mjs/classes/param.parser.js.map +0 -1
  190. package/dist/mjs/classes/pluggable.proxy.d.ts +0 -153
  191. package/dist/mjs/classes/pluggable.proxy.js +0 -438
  192. package/dist/mjs/classes/pluggable.proxy.js.map +0 -1
  193. package/dist/mjs/classes/property.d.ts +0 -79
  194. package/dist/mjs/classes/property.js +0 -280
  195. package/dist/mjs/classes/property.js.map +0 -1
  196. package/dist/mjs/classes/refmap.d.ts +0 -238
  197. package/dist/mjs/classes/refmap.js +0 -417
  198. package/dist/mjs/classes/refmap.js.map +0 -1
  199. package/dist/mjs/classes/refset.d.ts +0 -186
  200. package/dist/mjs/classes/refset.js +0 -366
  201. package/dist/mjs/classes/refset.js.map +0 -1
  202. package/dist/mjs/classes/symkeys.d.ts +0 -349
  203. package/dist/mjs/classes/symkeys.js +0 -506
  204. package/dist/mjs/classes/symkeys.js.map +0 -1
  205. package/dist/mjs/classes/type.d.ts +0 -56
  206. package/dist/mjs/classes/type.js +0 -401
  207. package/dist/mjs/classes/type.js.map +0 -1
  208. package/dist/mjs/function.extensions.d.ts +0 -12
  209. package/dist/mjs/function.extensions.js +0 -755
  210. package/dist/mjs/function.extensions.js.map +0 -1
  211. package/dist/mjs/global.this.d.ts +0 -2
  212. package/dist/mjs/global.this.js +0 -264
  213. package/dist/mjs/global.this.js.map +0 -1
  214. package/dist/mjs/index.d.ts +0 -31
  215. package/dist/mjs/index.js +0 -204
  216. package/dist/mjs/index.js.map +0 -1
  217. package/dist/mjs/json.extensions.d.ts +0 -2
  218. package/dist/mjs/json.extensions.js +0 -106
  219. package/dist/mjs/json.extensions.js.map +0 -1
  220. package/dist/mjs/map.extensions.d.ts +0 -3
  221. package/dist/mjs/map.extensions.js +0 -140
  222. package/dist/mjs/map.extensions.js.map +0 -1
  223. package/dist/mjs/number.extension.d.ts +0 -44
  224. package/dist/mjs/number.extension.js +0 -258
  225. package/dist/mjs/number.extension.js.map +0 -1
  226. package/dist/mjs/object.extensions.d.ts +0 -33
  227. package/dist/mjs/object.extensions.js +0 -1088
  228. package/dist/mjs/object.extensions.js.map +0 -1
  229. package/dist/mjs/package.json +0 -3
  230. package/dist/mjs/proxy.extensions.d.ts +0 -2
  231. package/dist/mjs/proxy.extensions.js +0 -204
  232. package/dist/mjs/proxy.extensions.js.map +0 -1
  233. package/dist/mjs/reflect.extensions.d.ts +0 -14
  234. package/dist/mjs/reflect.extensions.js +0 -313
  235. package/dist/mjs/reflect.extensions.js.map +0 -1
  236. package/dist/mjs/regular.expression.extensions.d.ts +0 -2
  237. package/dist/mjs/regular.expression.extensions.js +0 -420
  238. package/dist/mjs/regular.expression.extensions.js.map +0 -1
  239. package/dist/mjs/set.extensions.d.ts +0 -40
  240. package/dist/mjs/set.extensions.js +0 -352
  241. package/dist/mjs/set.extensions.js.map +0 -1
  242. package/dist/mjs/string.extensions.d.ts +0 -23
  243. package/dist/mjs/string.extensions.js +0 -701
  244. package/dist/mjs/string.extensions.js.map +0 -1
  245. package/dist/mjs/symbol.extensions.d.ts +0 -11
  246. package/dist/mjs/symbol.extensions.js +0 -732
  247. package/dist/mjs/symbol.extensions.js.map +0 -1
  248. package/dist/mjs/utils/copy.object.d.ts +0 -408
  249. package/dist/mjs/utils/copy.object.js +0 -702
  250. package/dist/mjs/utils/copy.object.js.map +0 -1
  251. package/dist/mjs/utils/descriptor.utils.d.ts +0 -298
  252. package/dist/mjs/utils/descriptor.utils.js +0 -875
  253. package/dist/mjs/utils/descriptor.utils.js.map +0 -1
  254. package/dist/mjs/utils/index.d.ts +0 -75
  255. package/dist/mjs/utils/index.js +0 -45
  256. package/dist/mjs/utils/index.js.map +0 -1
  257. package/dist/mjs/utils/stdout.d.ts +0 -742
  258. package/dist/mjs/utils/stdout.js +0 -1037
  259. package/dist/mjs/utils/stdout.js.map +0 -1
  260. package/dist/mjs/utils/toolkit.d.ts +0 -1898
  261. package/dist/mjs/utils/toolkit.js +0 -1373
  262. package/dist/mjs/utils/toolkit.js.map +0 -1
  263. package/dist/mjs/weakref.extensions.d.ts +0 -2
  264. package/dist/mjs/weakref.extensions.js +0 -16
  265. package/dist/mjs/weakref.extensions.js.map +0 -1
  266. package/jsdoc-config.json +0 -31
  267. package/tsconfig.base.json +0 -28
  268. package/tsconfig.cjs.json +0 -8
  269. package/tsconfig.esm.json +0 -8
  270. package/vitest.config.js +0 -7
@@ -1,238 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"param.parser.js","sourceRoot":"","sources":["../../../src/classes/param.parser.js"],"names":[],"mappings":"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"}
@@ -1,153 +0,0 @@
1
- export class ProxyHandlerResponse {
2
- [x: symbol]: string;
3
- constructor(success?: boolean, value?: undefined, context?: undefined);
4
- }
5
- export class ProxyHandler {
6
- /**
7
- * This static method is used to create a response object. The response
8
- * object contains the success status, the value, and the context of the
9
- * response. It also includes a getter for the Symbol.toStringTag property
10
- * that returns the ResponseType of the ProxyHandler.
11
- *
12
- * @param {boolean} success - The success status of the response.
13
- * @param {*} value - The value of the response.
14
- * @param {Object} context - The context of the response.
15
- * @returns {Object} The response object.
16
- *
17
- * @example
18
- * // Create a response object
19
- * const response = ProxyHandler.response(
20
- * true, 'value', { key: 'context' }
21
- * );
22
- *
23
- * // Output: { success: true, value: 'value', context: { key: 'context' },
24
- * // [Symbol.toStringTag]: 'ProxyHandlerResponse' }
25
- * console.log(response);
26
- */
27
- static response(success: boolean, value: any, context: Object): Object;
28
- /**
29
- * This static getter method is used to retrieve the response type
30
- * of the ProxyHandler. It returns a string that represents the
31
- * response type of the ProxyHandler.
32
- *
33
- * @property {function} ResponseType - A static getter method that
34
- * returns the response type of the ProxyHandler.
35
- * @returns {string} A string representing the response type of the
36
- * ProxyHandler.
37
- *
38
- * @example
39
- * // Get the response type of the ProxyHandler
40
- * const responseType = ProxyHandler.ResponseType;
41
- *
42
- * // Output: 'ProxyHandlerResponse'
43
- * console.log(responseType);
44
- */
45
- static get ResponseType(): string;
46
- /**
47
- * This static method is used to retrieve the name of a ProxyHandler type
48
- * from a given array of arguments. If the array of arguments matches any
49
- * of the ProxyHandler types, the name of that type is returned. If no
50
- * match is found, or if the input is not an array, 'custom' is returned.
51
- *
52
- * @param {Array.<*>} proxyHandlerType - An array of arguments to match
53
- * against the ProxyHandler types.
54
- * @returns {string} The name of the matching ProxyHandler type, or 'custom'
55
- * if no match is found.
56
- *
57
- * @example
58
- * // Get the name of a type from its arguments
59
- * const typeName = ProxyHandler.nameFromType(
60
- * ['target', 'thisArg', 'argumentsList']
61
- * );
62
- *
63
- * // Output: 'apply'
64
- * console.log(typeName);
65
- *
66
- * @throws {TypeError} If ProxyHandler.type is undefined.
67
- */
68
- static nameFromType(proxyHandlerType: Array<any>): string;
69
- /**
70
- * This method is used to retrieve all the types of ProxyHandler available
71
- * in the ProxyHandler.type object. It is useful when you need to iterate
72
- * over all the types or when you need to check if a certain type exists.
73
- *
74
- * @property {function} typeNames - A static getter method that returns an
75
- * array of keys from the ProxyHandler.type object.
76
- * @returns {Array.<string>} An array of strings representing the keys of
77
- * the ProxyHandler.type object.
78
- *
79
- * @example
80
- * // Get all type names
81
- * const types = ProxyHandler.typeNames;
82
- *
83
- * // Output: ['apply', 'construct', 'defineProperty', ...]
84
- * console.log(types);
85
- *
86
- * @throws {TypeError} If ProxyHandler.type is undefined.
87
- */
88
- static get typeNames(): Array<string>;
89
- /**
90
- * A static getter method that returns an object containing keyed proxy
91
- * trap types and their associated expected arguments list by name. A
92
- * docstring description complete with url shortening links for each entry
93
- * are provided (links go to the MDN documentation)
94
- *
95
- * @property {function} type - A static getter method that returns an object
96
- * of ProxyHandler types.
97
- * @returns {Object.<string, function>} An object where each key is a type
98
- * name and each value is a function that returns an array of strings
99
- * representing the arguments for that type.
100
- *
101
- * @example
102
- * // Get the 'apply' type
103
- * const applyType = ProxyHandler.type.apply;
104
- *
105
- * // Output: ['target', 'thisArg', 'argumentsList']
106
- * console.log(applyType());
107
- *
108
- * @throws {TypeError} If ProxyHandler.type is undefined.
109
- */
110
- static get type(): {
111
- [x: string]: Function;
112
- };
113
- constructor(handler: any, type?: Function);
114
- handler: any;
115
- typeName: string;
116
- type: any;
117
- invoke(...args: any[]): any;
118
- }
119
- export class PluggableProxy {
120
- static get kCreated(): symbol;
121
- static get kOriginal(): symbol;
122
- static get kProxy(): symbol;
123
- constructor(Class: any, handlers: any, options?: {
124
- prototype: undefined;
125
- apply: boolean;
126
- });
127
- handlers: Map<any, any>;
128
- handlersOfType(typeName: any): any;
129
- tryEachOfType(type: any, ...args: any[]): any[];
130
- apply(target: any, thisArg: any, argumentsList: any): any;
131
- construct(target: any, args: any): any;
132
- defineProperty(target: any, key: any, descriptor: any): any;
133
- deleteProperty(target: any, property: any): any;
134
- get(target: any, property: any, receiver: any): any;
135
- getOwnPropertyDescriptor(target: any, property: any): any;
136
- getPrototypeOf(target: any): any;
137
- has(target: any, property: any): any;
138
- isExtensible(target: any): any;
139
- ownKeys(target: any): any;
140
- preventExtensions(target: any): any;
141
- set(target: any, property: any, value: any, receiver: any): any;
142
- setPrototypeOf(target: any, prototype: any): any;
143
- }
144
- export const ProxyHandlerExtensions: Extension;
145
- export const PluggableProxyExtensions: Extension;
146
- export const PluggableProxyExtensionSet: {
147
- name: string;
148
- extensionObjects: Set<any>;
149
- extensions: Set<any>;
150
- apply(): void;
151
- revert(): void;
152
- };
153
- import { Extension } from '@nejs/extension';