@duplojs/utils 1.4.46 → 1.4.47
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/dist/dataParser/base.cjs +4 -0
- package/dist/dataParser/base.d.ts +34 -0
- package/dist/dataParser/base.mjs +4 -0
- package/dist/dataParser/parsers/array/index.cjs +1 -0
- package/dist/dataParser/parsers/array/index.mjs +1 -0
- package/dist/dataParser/parsers/lazy.cjs +1 -0
- package/dist/dataParser/parsers/lazy.mjs +1 -0
- package/dist/dataParser/parsers/nullable.cjs +1 -0
- package/dist/dataParser/parsers/nullable.mjs +1 -0
- package/dist/dataParser/parsers/object/index.cjs +2 -0
- package/dist/dataParser/parsers/object/index.mjs +2 -0
- package/dist/dataParser/parsers/optional.cjs +1 -0
- package/dist/dataParser/parsers/optional.mjs +1 -0
- package/dist/dataParser/parsers/pipe.cjs +1 -0
- package/dist/dataParser/parsers/pipe.mjs +1 -0
- package/dist/dataParser/parsers/record/index.cjs +1 -0
- package/dist/dataParser/parsers/record/index.mjs +1 -0
- package/dist/dataParser/parsers/recover.cjs +1 -0
- package/dist/dataParser/parsers/recover.mjs +1 -0
- package/dist/dataParser/parsers/transform.cjs +1 -0
- package/dist/dataParser/parsers/transform.mjs +1 -0
- package/dist/dataParser/parsers/tuple.cjs +2 -0
- package/dist/dataParser/parsers/tuple.mjs +2 -0
- package/dist/dataParser/parsers/union.cjs +2 -0
- package/dist/dataParser/parsers/union.mjs +2 -0
- package/package.json +1 -1
package/dist/dataParser/base.cjs
CHANGED
|
@@ -42,6 +42,7 @@ function dataParserInit(kind, definition, exec, specificOverrideHandler) {
|
|
|
42
42
|
: {
|
|
43
43
|
sync: exec,
|
|
44
44
|
async: exec,
|
|
45
|
+
isAsynchronous: () => false,
|
|
45
46
|
};
|
|
46
47
|
function middleExec(data, error$1) {
|
|
47
48
|
let result = formattedExec.sync(data, error$1, self);
|
|
@@ -163,6 +164,9 @@ function dataParserInit(kind, definition, exec, specificOverrideHandler) {
|
|
|
163
164
|
}
|
|
164
165
|
return result;
|
|
165
166
|
},
|
|
167
|
+
isAsynchronous() {
|
|
168
|
+
return formattedExec.isAsynchronous(self);
|
|
169
|
+
},
|
|
166
170
|
}, (value) => dataParserKind.setTo(value, null), kind.setTo, (value) => dataParserInit.overrideHandler.apply(value), (value) => specificOverrideHandler.apply(value));
|
|
167
171
|
return self;
|
|
168
172
|
}
|
|
@@ -204,10 +204,44 @@ export interface DataParser<GenericDefinition extends DataParserDefinition = Dat
|
|
|
204
204
|
*
|
|
205
205
|
*/
|
|
206
206
|
asyncParseOrThrow(data: unknown): Promise<GenericOutput>;
|
|
207
|
+
/**
|
|
208
|
+
* The isAsynchronous() method tells whether a data parser requires async execution.
|
|
209
|
+
*
|
|
210
|
+
* **Supported call styles:**
|
|
211
|
+
* - Method: `dataParser.isAsynchronous()` -> returns a boolean
|
|
212
|
+
*
|
|
213
|
+
* It checks the parser definition (and nested parsers when relevant) and does not run any parsing.
|
|
214
|
+
*
|
|
215
|
+
* ```ts
|
|
216
|
+
* const syncParser = DDataParser.string();
|
|
217
|
+
* syncParser.isAsynchronous(); // false
|
|
218
|
+
*
|
|
219
|
+
* const asyncTransform = DDataParser.transform(
|
|
220
|
+
* DDataParser.number(),
|
|
221
|
+
* async(value) => {
|
|
222
|
+
* const result = await Promise.resolve(value);
|
|
223
|
+
*
|
|
224
|
+
* return result;
|
|
225
|
+
* },
|
|
226
|
+
* );
|
|
227
|
+
* asyncTransform.isAsynchronous(); // true
|
|
228
|
+
*
|
|
229
|
+
* const asyncArray = DDataParser.array(asyncTransform);
|
|
230
|
+
* asyncArray.isAsynchronous(); // true
|
|
231
|
+
*
|
|
232
|
+
* ```
|
|
233
|
+
*
|
|
234
|
+
* @see https://utils.duplojs.dev/en/v1/api/dataParser/isAsynchronous
|
|
235
|
+
*
|
|
236
|
+
* @namespace DP
|
|
237
|
+
*
|
|
238
|
+
*/
|
|
239
|
+
isAsynchronous(): boolean;
|
|
207
240
|
}
|
|
208
241
|
interface DataParserInitExecParams<GenericDataParser extends DataParser> {
|
|
209
242
|
sync(...args: [...Parameters<GenericDataParser["exec"]>, self: GenericDataParser]): (GetKindValue<typeof dataParserKind, GenericDataParser>["output"] | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue);
|
|
210
243
|
async(...args: [...Parameters<GenericDataParser["exec"]>, self: GenericDataParser]): Promise<GetKindValue<typeof dataParserKind, GenericDataParser>["output"] | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue>;
|
|
244
|
+
isAsynchronous(self: GenericDataParser): boolean;
|
|
211
245
|
}
|
|
212
246
|
declare const DataParserThrowError_base: new (params: {
|
|
213
247
|
"@DuplojsUtilsError/dataParserThrowError"?: unknown;
|
package/dist/dataParser/base.mjs
CHANGED
|
@@ -40,6 +40,7 @@ function dataParserInit(kind, definition, exec, specificOverrideHandler) {
|
|
|
40
40
|
: {
|
|
41
41
|
sync: exec,
|
|
42
42
|
async: exec,
|
|
43
|
+
isAsynchronous: () => false,
|
|
43
44
|
};
|
|
44
45
|
function middleExec(data, error) {
|
|
45
46
|
let result = formattedExec.sync(data, error, self);
|
|
@@ -161,6 +162,9 @@ function dataParserInit(kind, definition, exec, specificOverrideHandler) {
|
|
|
161
162
|
}
|
|
162
163
|
return result;
|
|
163
164
|
},
|
|
165
|
+
isAsynchronous() {
|
|
166
|
+
return formattedExec.isAsynchronous(self);
|
|
167
|
+
},
|
|
164
168
|
}, (value) => dataParserKind.setTo(value, null), kind.setTo, (value) => dataParserInit.overrideHandler.apply(value), (value) => specificOverrideHandler.apply(value));
|
|
165
169
|
return self;
|
|
166
170
|
}
|
|
@@ -17,6 +17,7 @@ function lazy(getter, definition) {
|
|
|
17
17
|
}, {
|
|
18
18
|
sync: (data, _error, self) => self.definition.getter.value.exec(data, _error),
|
|
19
19
|
async: (data, _error, self) => self.definition.getter.value.asyncExec(data, _error),
|
|
20
|
+
isAsynchronous: (self) => self.definition.getter.value.isAsynchronous(),
|
|
20
21
|
}, lazy.overrideHandler);
|
|
21
22
|
return self;
|
|
22
23
|
}
|
|
@@ -15,6 +15,7 @@ function lazy(getter, definition) {
|
|
|
15
15
|
}, {
|
|
16
16
|
sync: (data, _error, self) => self.definition.getter.value.exec(data, _error),
|
|
17
17
|
async: (data, _error, self) => self.definition.getter.value.asyncExec(data, _error),
|
|
18
|
+
isAsynchronous: (self) => self.definition.getter.value.isAsynchronous(),
|
|
18
19
|
}, lazy.overrideHandler);
|
|
19
20
|
return self;
|
|
20
21
|
}
|
|
@@ -4,6 +4,7 @@ var base = require('../../base.cjs');
|
|
|
4
4
|
var error = require('../../error.cjs');
|
|
5
5
|
var kind = require('../../kind.cjs');
|
|
6
6
|
var memo = require('../../../common/memo.cjs');
|
|
7
|
+
var some = require('../../../array/some.cjs');
|
|
7
8
|
var pipe = require('../../../common/pipe.cjs');
|
|
8
9
|
var map = require('../../../array/map.cjs');
|
|
9
10
|
var filter = require('../../../array/filter.cjs');
|
|
@@ -69,6 +70,7 @@ function object(shape, definition) {
|
|
|
69
70
|
void (self.definition.optimizedShape.value.length && error.popErrorPath(error$1));
|
|
70
71
|
return output;
|
|
71
72
|
},
|
|
73
|
+
isAsynchronous: (self) => some.some(self.definition.optimizedShape.value, (element) => element.value.isAsynchronous()),
|
|
72
74
|
}, object.overrideHandler);
|
|
73
75
|
return self;
|
|
74
76
|
}
|
|
@@ -2,6 +2,7 @@ import { dataParserInit, SymbolDataParserError, dataParserKind } from '../../bas
|
|
|
2
2
|
import { SymbolDataParserErrorIssue, setErrorPath, popErrorPath } from '../../error.mjs';
|
|
3
3
|
import { createDataParserKind } from '../../kind.mjs';
|
|
4
4
|
import { memo } from '../../../common/memo.mjs';
|
|
5
|
+
import { some } from '../../../array/some.mjs';
|
|
5
6
|
import { pipe } from '../../../common/pipe.mjs';
|
|
6
7
|
import { map } from '../../../array/map.mjs';
|
|
7
8
|
import { filter } from '../../../array/filter.mjs';
|
|
@@ -67,6 +68,7 @@ function object(shape, definition) {
|
|
|
67
68
|
void (self.definition.optimizedShape.value.length && popErrorPath(error));
|
|
68
69
|
return output;
|
|
69
70
|
},
|
|
71
|
+
isAsynchronous: (self) => some(self.definition.optimizedShape.value, (element) => element.value.isAsynchronous()),
|
|
70
72
|
}, object.overrideHandler);
|
|
71
73
|
return self;
|
|
72
74
|
}
|
|
@@ -29,6 +29,7 @@ function pipe(input, output, definition) {
|
|
|
29
29
|
}
|
|
30
30
|
return self.definition.output.asyncExec(result, error);
|
|
31
31
|
},
|
|
32
|
+
isAsynchronous: (self) => self.definition.input.isAsynchronous() || self.definition.output.isAsynchronous(),
|
|
32
33
|
}, pipe.overrideHandler);
|
|
33
34
|
return self;
|
|
34
35
|
}
|
|
@@ -27,6 +27,7 @@ function pipe(input, output, definition) {
|
|
|
27
27
|
}
|
|
28
28
|
return self.definition.output.asyncExec(result, error);
|
|
29
29
|
},
|
|
30
|
+
isAsynchronous: (self) => self.definition.input.isAsynchronous() || self.definition.output.isAsynchronous(),
|
|
30
31
|
}, pipe.overrideHandler);
|
|
31
32
|
return self;
|
|
32
33
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var base = require('../base.cjs');
|
|
4
4
|
var error = require('../error.cjs');
|
|
5
5
|
var kind = require('../kind.cjs');
|
|
6
|
+
var some = require('../../array/some.cjs');
|
|
6
7
|
var override = require('../../common/override.cjs');
|
|
7
8
|
|
|
8
9
|
const tupleKind = kind.createDataParserKind("tuple");
|
|
@@ -78,6 +79,7 @@ function tuple(shape, definition) {
|
|
|
78
79
|
void (self.definition.shape.length && error.popErrorPath(error$1));
|
|
79
80
|
return output;
|
|
80
81
|
},
|
|
82
|
+
isAsynchronous: (self) => some.some(self.definition.shape, (element) => element.isAsynchronous()) || !!self.definition.rest?.isAsynchronous(),
|
|
81
83
|
}, tuple.overrideHandler);
|
|
82
84
|
return self;
|
|
83
85
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { dataParserInit, SymbolDataParserError } from '../base.mjs';
|
|
2
2
|
import { SymbolDataParserErrorIssue, setErrorPath, popErrorPath } from '../error.mjs';
|
|
3
3
|
import { createDataParserKind } from '../kind.mjs';
|
|
4
|
+
import { some } from '../../array/some.mjs';
|
|
4
5
|
import { createOverride } from '../../common/override.mjs';
|
|
5
6
|
|
|
6
7
|
const tupleKind = createDataParserKind("tuple");
|
|
@@ -76,6 +77,7 @@ function tuple(shape, definition) {
|
|
|
76
77
|
void (self.definition.shape.length && popErrorPath(error));
|
|
77
78
|
return output;
|
|
78
79
|
},
|
|
80
|
+
isAsynchronous: (self) => some(self.definition.shape, (element) => element.isAsynchronous()) || !!self.definition.rest?.isAsynchronous(),
|
|
79
81
|
}, tuple.overrideHandler);
|
|
80
82
|
return self;
|
|
81
83
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var base = require('../base.cjs');
|
|
4
4
|
var error = require('../error.cjs');
|
|
5
5
|
var kind = require('../kind.cjs');
|
|
6
|
+
var some = require('../../array/some.cjs');
|
|
6
7
|
var override = require('../../common/override.cjs');
|
|
7
8
|
|
|
8
9
|
const unionKind = kind.createDataParserKind("union");
|
|
@@ -33,6 +34,7 @@ function union(options, definition) {
|
|
|
33
34
|
}
|
|
34
35
|
return error.SymbolDataParserErrorIssue;
|
|
35
36
|
},
|
|
37
|
+
isAsynchronous: (self) => some.some(self.definition.options, (element) => element.isAsynchronous()),
|
|
36
38
|
}, union.overrideHandler);
|
|
37
39
|
return self;
|
|
38
40
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { dataParserInit, SymbolDataParserError } from '../base.mjs';
|
|
2
2
|
import { SymbolDataParserErrorIssue } from '../error.mjs';
|
|
3
3
|
import { createDataParserKind } from '../kind.mjs';
|
|
4
|
+
import { some } from '../../array/some.mjs';
|
|
4
5
|
import { createOverride } from '../../common/override.mjs';
|
|
5
6
|
|
|
6
7
|
const unionKind = createDataParserKind("union");
|
|
@@ -31,6 +32,7 @@ function union(options, definition) {
|
|
|
31
32
|
}
|
|
32
33
|
return SymbolDataParserErrorIssue;
|
|
33
34
|
},
|
|
35
|
+
isAsynchronous: (self) => some(self.definition.options, (element) => element.isAsynchronous()),
|
|
34
36
|
}, union.overrideHandler);
|
|
35
37
|
return self;
|
|
36
38
|
}
|