@nejs/basic-extensions 2.21.5 → 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.
- package/README.md +78 -4
- package/dist/@nejs/basic-extensions.bundle.2.22.6.js +25 -0
- package/dist/@nejs/basic-extensions.bundle.2.22.6.js.map +7 -0
- package/dist/cjs/classes/index.cjs +11129 -0
- package/dist/cjs/classes/index.cjs.map +7 -0
- package/dist/cjs/index.cjs +15191 -0
- package/dist/cjs/index.cjs.map +7 -0
- package/dist/cjs/utils/index.cjs +3954 -0
- package/dist/cjs/utils/index.cjs.map +7 -0
- package/dist/esm/basic-extensions.mjs +25 -0
- package/dist/esm/basic-extensions.mjs.map +7 -0
- package/package.json +16 -22
- package/repl.bootstrap.js +4 -7
- package/repl.history +26 -26
- package/src/classes/enumeration.js +466 -0
- package/src/classes/index.js +5 -1
- package/src/index.js +3 -1
- package/src/regular.expression.extensions.js +0 -35
- package/src/utils/toolkit.js +699 -516
- package/tests/arrayextensions.test.js +3 -3
- package/tests/index.test.js +3 -1
- package/tests/newClasses/asyncIterable.test.js +3 -3
- package/tests/newClasses/deferred.test.js +3 -3
- package/tests/newClasses/descriptor.test.js +3 -3
- package/tests/newClasses/iterable.test.js +3 -3
- package/tests/newClasses/refmap.test.js +3 -3
- package/tests/newClasses/refset.test.js +3 -3
- package/tests/objectextensions.test.js +3 -3
- package/tests/setextensions.test.js +3 -3
- package/tests/stringextensions.test.js +3 -2
- package/tests/utils/descriptor.utils.test.js +1 -1
- package/tests/utils/toolkit.test.js +429 -163
- package/.esdoc.json +0 -9
- package/.vscode/settings.json +0 -5
- package/bin/build +0 -27
- package/bin/clean +0 -14
- package/bin/esbuild +0 -91
- package/bin/fixup +0 -13
- package/bin/repl.basics.js +0 -584
- package/bin/repl.signature.js +0 -63
- package/bin/version +0 -100
- package/dist/@nejs/basic-extensions.bundle.2.21.5.js +0 -25
- package/dist/@nejs/basic-extensions.bundle.2.21.5.js.map +0 -7
- package/dist/cjs/array.extensions.d.ts +0 -39
- package/dist/cjs/array.extensions.js +0 -477
- package/dist/cjs/array.extensions.js.map +0 -1
- package/dist/cjs/big.int.extension.d.ts +0 -31
- package/dist/cjs/big.int.extension.js +0 -273
- package/dist/cjs/big.int.extension.js.map +0 -1
- package/dist/cjs/classes/asyncIterable.d.ts +0 -126
- package/dist/cjs/classes/asyncIterable.js +0 -209
- package/dist/cjs/classes/asyncIterable.js.map +0 -1
- package/dist/cjs/classes/deferred.d.ts +0 -146
- package/dist/cjs/classes/deferred.js +0 -291
- package/dist/cjs/classes/deferred.js.map +0 -1
- package/dist/cjs/classes/descriptor.d.ts +0 -334
- package/dist/cjs/classes/descriptor.js +0 -537
- package/dist/cjs/classes/descriptor.js.map +0 -1
- package/dist/cjs/classes/enum.d.ts +0 -50
- package/dist/cjs/classes/enum.js +0 -405
- package/dist/cjs/classes/enum.js.map +0 -1
- package/dist/cjs/classes/index.d.ts +0 -15
- package/dist/cjs/classes/index.js +0 -63
- package/dist/cjs/classes/index.js.map +0 -1
- package/dist/cjs/classes/introspector.d.ts +0 -20
- package/dist/cjs/classes/introspector.js +0 -130
- package/dist/cjs/classes/introspector.js.map +0 -1
- package/dist/cjs/classes/iterable.d.ts +0 -169
- package/dist/cjs/classes/iterable.js +0 -268
- package/dist/cjs/classes/iterable.js.map +0 -1
- package/dist/cjs/classes/param.parser.d.ts +0 -221
- package/dist/cjs/classes/param.parser.js +0 -242
- package/dist/cjs/classes/param.parser.js.map +0 -1
- package/dist/cjs/classes/pluggable.proxy.d.ts +0 -153
- package/dist/cjs/classes/pluggable.proxy.js +0 -444
- package/dist/cjs/classes/pluggable.proxy.js.map +0 -1
- package/dist/cjs/classes/property.d.ts +0 -79
- package/dist/cjs/classes/property.js +0 -284
- package/dist/cjs/classes/property.js.map +0 -1
- package/dist/cjs/classes/refmap.d.ts +0 -238
- package/dist/cjs/classes/refmap.js +0 -421
- package/dist/cjs/classes/refmap.js.map +0 -1
- package/dist/cjs/classes/refset.d.ts +0 -186
- package/dist/cjs/classes/refset.js +0 -370
- package/dist/cjs/classes/refset.js.map +0 -1
- package/dist/cjs/classes/symkeys.d.ts +0 -349
- package/dist/cjs/classes/symkeys.js +0 -510
- package/dist/cjs/classes/symkeys.js.map +0 -1
- package/dist/cjs/classes/type.d.ts +0 -56
- package/dist/cjs/classes/type.js +0 -405
- package/dist/cjs/classes/type.js.map +0 -1
- package/dist/cjs/function.extensions.d.ts +0 -12
- package/dist/cjs/function.extensions.js +0 -758
- package/dist/cjs/function.extensions.js.map +0 -1
- package/dist/cjs/global.this.d.ts +0 -2
- package/dist/cjs/global.this.js +0 -300
- package/dist/cjs/global.this.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -31
- package/dist/cjs/index.js +0 -228
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/json.extensions.d.ts +0 -2
- package/dist/cjs/json.extensions.js +0 -109
- package/dist/cjs/json.extensions.js.map +0 -1
- package/dist/cjs/map.extensions.d.ts +0 -3
- package/dist/cjs/map.extensions.js +0 -143
- package/dist/cjs/map.extensions.js.map +0 -1
- package/dist/cjs/math.extension.d.ts +0 -14
- package/dist/cjs/math.extension.js +0 -71
- package/dist/cjs/math.extension.js.map +0 -1
- package/dist/cjs/number.extension.d.ts +0 -44
- package/dist/cjs/number.extension.js +0 -278
- package/dist/cjs/number.extension.js.map +0 -1
- package/dist/cjs/object.extensions.d.ts +0 -33
- package/dist/cjs/object.extensions.js +0 -1091
- package/dist/cjs/object.extensions.js.map +0 -1
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/proxy.extensions.d.ts +0 -2
- package/dist/cjs/proxy.extensions.js +0 -207
- package/dist/cjs/proxy.extensions.js.map +0 -1
- package/dist/cjs/reflect.extensions.d.ts +0 -14
- package/dist/cjs/reflect.extensions.js +0 -316
- package/dist/cjs/reflect.extensions.js.map +0 -1
- package/dist/cjs/regular.expression.extensions.d.ts +0 -2
- package/dist/cjs/regular.expression.extensions.js +0 -423
- package/dist/cjs/regular.expression.extensions.js.map +0 -1
- package/dist/cjs/set.extensions.d.ts +0 -40
- package/dist/cjs/set.extensions.js +0 -355
- package/dist/cjs/set.extensions.js.map +0 -1
- package/dist/cjs/string.extensions.d.ts +0 -23
- package/dist/cjs/string.extensions.js +0 -704
- package/dist/cjs/string.extensions.js.map +0 -1
- package/dist/cjs/symbol.extensions.d.ts +0 -11
- package/dist/cjs/symbol.extensions.js +0 -735
- package/dist/cjs/symbol.extensions.js.map +0 -1
- package/dist/cjs/utils/copy.object.d.ts +0 -408
- package/dist/cjs/utils/copy.object.js +0 -720
- package/dist/cjs/utils/copy.object.js.map +0 -1
- package/dist/cjs/utils/descriptor.utils.d.ts +0 -298
- package/dist/cjs/utils/descriptor.utils.js +0 -889
- package/dist/cjs/utils/descriptor.utils.js.map +0 -1
- package/dist/cjs/utils/index.d.ts +0 -75
- package/dist/cjs/utils/index.js +0 -61
- package/dist/cjs/utils/index.js.map +0 -1
- package/dist/cjs/utils/stdout.d.ts +0 -742
- package/dist/cjs/utils/stdout.js +0 -1042
- package/dist/cjs/utils/stdout.js.map +0 -1
- package/dist/cjs/utils/toolkit.d.ts +0 -1898
- package/dist/cjs/utils/toolkit.js +0 -1378
- package/dist/cjs/utils/toolkit.js.map +0 -1
- package/dist/cjs/weakref.extensions.d.ts +0 -2
- package/dist/cjs/weakref.extensions.js +0 -19
- package/dist/cjs/weakref.extensions.js.map +0 -1
- package/dist/mjs/array.extensions.d.ts +0 -39
- package/dist/mjs/array.extensions.js +0 -474
- package/dist/mjs/array.extensions.js.map +0 -1
- package/dist/mjs/big.int.extension.d.ts +0 -31
- package/dist/mjs/big.int.extension.js +0 -270
- package/dist/mjs/big.int.extension.js.map +0 -1
- package/dist/mjs/classes/asyncIterable.d.ts +0 -126
- package/dist/mjs/classes/asyncIterable.js +0 -204
- package/dist/mjs/classes/asyncIterable.js.map +0 -1
- package/dist/mjs/classes/deferred.d.ts +0 -146
- package/dist/mjs/classes/deferred.js +0 -287
- package/dist/mjs/classes/deferred.js.map +0 -1
- package/dist/mjs/classes/descriptor.d.ts +0 -334
- package/dist/mjs/classes/descriptor.js +0 -533
- package/dist/mjs/classes/descriptor.js.map +0 -1
- package/dist/mjs/classes/enum.d.ts +0 -50
- package/dist/mjs/classes/enum.js +0 -400
- package/dist/mjs/classes/enum.js.map +0 -1
- package/dist/mjs/classes/index.d.ts +0 -15
- package/dist/mjs/classes/index.js +0 -46
- package/dist/mjs/classes/index.js.map +0 -1
- package/dist/mjs/classes/introspector.d.ts +0 -20
- package/dist/mjs/classes/introspector.js +0 -126
- package/dist/mjs/classes/introspector.js.map +0 -1
- package/dist/mjs/classes/iterable.d.ts +0 -169
- package/dist/mjs/classes/iterable.js +0 -263
- package/dist/mjs/classes/iterable.js.map +0 -1
- package/dist/mjs/classes/param.parser.d.ts +0 -221
- package/dist/mjs/classes/param.parser.js +0 -238
- package/dist/mjs/classes/param.parser.js.map +0 -1
- package/dist/mjs/classes/pluggable.proxy.d.ts +0 -153
- package/dist/mjs/classes/pluggable.proxy.js +0 -438
- package/dist/mjs/classes/pluggable.proxy.js.map +0 -1
- package/dist/mjs/classes/property.d.ts +0 -79
- package/dist/mjs/classes/property.js +0 -280
- package/dist/mjs/classes/property.js.map +0 -1
- package/dist/mjs/classes/refmap.d.ts +0 -238
- package/dist/mjs/classes/refmap.js +0 -417
- package/dist/mjs/classes/refmap.js.map +0 -1
- package/dist/mjs/classes/refset.d.ts +0 -186
- package/dist/mjs/classes/refset.js +0 -366
- package/dist/mjs/classes/refset.js.map +0 -1
- package/dist/mjs/classes/symkeys.d.ts +0 -349
- package/dist/mjs/classes/symkeys.js +0 -506
- package/dist/mjs/classes/symkeys.js.map +0 -1
- package/dist/mjs/classes/type.d.ts +0 -56
- package/dist/mjs/classes/type.js +0 -401
- package/dist/mjs/classes/type.js.map +0 -1
- package/dist/mjs/function.extensions.d.ts +0 -12
- package/dist/mjs/function.extensions.js +0 -755
- package/dist/mjs/function.extensions.js.map +0 -1
- package/dist/mjs/global.this.d.ts +0 -2
- package/dist/mjs/global.this.js +0 -264
- package/dist/mjs/global.this.js.map +0 -1
- package/dist/mjs/index.d.ts +0 -31
- package/dist/mjs/index.js +0 -206
- package/dist/mjs/index.js.map +0 -1
- package/dist/mjs/json.extensions.d.ts +0 -2
- package/dist/mjs/json.extensions.js +0 -106
- package/dist/mjs/json.extensions.js.map +0 -1
- package/dist/mjs/map.extensions.d.ts +0 -3
- package/dist/mjs/map.extensions.js +0 -140
- package/dist/mjs/map.extensions.js.map +0 -1
- package/dist/mjs/math.extension.d.ts +0 -14
- package/dist/mjs/math.extension.js +0 -68
- package/dist/mjs/math.extension.js.map +0 -1
- package/dist/mjs/number.extension.d.ts +0 -44
- package/dist/mjs/number.extension.js +0 -275
- package/dist/mjs/number.extension.js.map +0 -1
- package/dist/mjs/object.extensions.d.ts +0 -33
- package/dist/mjs/object.extensions.js +0 -1088
- package/dist/mjs/object.extensions.js.map +0 -1
- package/dist/mjs/package.json +0 -3
- package/dist/mjs/proxy.extensions.d.ts +0 -2
- package/dist/mjs/proxy.extensions.js +0 -204
- package/dist/mjs/proxy.extensions.js.map +0 -1
- package/dist/mjs/reflect.extensions.d.ts +0 -14
- package/dist/mjs/reflect.extensions.js +0 -313
- package/dist/mjs/reflect.extensions.js.map +0 -1
- package/dist/mjs/regular.expression.extensions.d.ts +0 -2
- package/dist/mjs/regular.expression.extensions.js +0 -420
- package/dist/mjs/regular.expression.extensions.js.map +0 -1
- package/dist/mjs/set.extensions.d.ts +0 -40
- package/dist/mjs/set.extensions.js +0 -352
- package/dist/mjs/set.extensions.js.map +0 -1
- package/dist/mjs/string.extensions.d.ts +0 -23
- package/dist/mjs/string.extensions.js +0 -701
- package/dist/mjs/string.extensions.js.map +0 -1
- package/dist/mjs/symbol.extensions.d.ts +0 -11
- package/dist/mjs/symbol.extensions.js +0 -732
- package/dist/mjs/symbol.extensions.js.map +0 -1
- package/dist/mjs/utils/copy.object.d.ts +0 -408
- package/dist/mjs/utils/copy.object.js +0 -702
- package/dist/mjs/utils/copy.object.js.map +0 -1
- package/dist/mjs/utils/descriptor.utils.d.ts +0 -298
- package/dist/mjs/utils/descriptor.utils.js +0 -875
- package/dist/mjs/utils/descriptor.utils.js.map +0 -1
- package/dist/mjs/utils/index.d.ts +0 -75
- package/dist/mjs/utils/index.js +0 -45
- package/dist/mjs/utils/index.js.map +0 -1
- package/dist/mjs/utils/stdout.d.ts +0 -742
- package/dist/mjs/utils/stdout.js +0 -1037
- package/dist/mjs/utils/stdout.js.map +0 -1
- package/dist/mjs/utils/toolkit.d.ts +0 -1898
- package/dist/mjs/utils/toolkit.js +0 -1373
- package/dist/mjs/utils/toolkit.js.map +0 -1
- package/dist/mjs/weakref.extensions.d.ts +0 -2
- package/dist/mjs/weakref.extensions.js +0 -16
- package/dist/mjs/weakref.extensions.js.map +0 -1
- package/jsdoc-config.json +0 -31
- package/tsconfig.base.json +0 -28
- package/tsconfig.cjs.json +0 -8
- package/tsconfig.esm.json +0 -8
- 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';
|