@duplojs/utils 1.4.34 → 1.4.36
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/common/simpleClone.cjs +11 -4
- package/dist/common/simpleClone.mjs +11 -4
- package/dist/dataParser/base.cjs +17 -16
- package/dist/dataParser/base.d.ts +35 -3
- package/dist/dataParser/base.mjs +17 -16
- package/dist/dataParser/baseExtended.cjs +3 -0
- package/dist/dataParser/baseExtended.mjs +3 -0
- package/dist/dataParser/parsers/array/index.cjs +2 -2
- package/dist/dataParser/parsers/array/index.mjs +2 -2
- package/dist/dataParser/parsers/bigint/index.cjs +2 -2
- package/dist/dataParser/parsers/bigint/index.mjs +2 -2
- package/dist/dataParser/parsers/boolean.cjs +2 -2
- package/dist/dataParser/parsers/boolean.mjs +2 -2
- package/dist/dataParser/parsers/date.cjs +2 -2
- package/dist/dataParser/parsers/date.mjs +2 -2
- package/dist/dataParser/parsers/empty.cjs +2 -2
- package/dist/dataParser/parsers/empty.mjs +2 -2
- package/dist/dataParser/parsers/lazy.cjs +2 -2
- package/dist/dataParser/parsers/lazy.d.ts +1 -1
- package/dist/dataParser/parsers/lazy.mjs +2 -2
- package/dist/dataParser/parsers/literal.cjs +2 -2
- package/dist/dataParser/parsers/literal.mjs +2 -2
- package/dist/dataParser/parsers/nil.cjs +2 -2
- package/dist/dataParser/parsers/nil.mjs +2 -2
- package/dist/dataParser/parsers/nullable.cjs +2 -2
- package/dist/dataParser/parsers/nullable.mjs +2 -2
- package/dist/dataParser/parsers/number/index.cjs +2 -2
- package/dist/dataParser/parsers/number/index.mjs +2 -2
- package/dist/dataParser/parsers/object/index.cjs +2 -2
- package/dist/dataParser/parsers/object/index.mjs +2 -2
- package/dist/dataParser/parsers/optional.cjs +2 -2
- package/dist/dataParser/parsers/optional.mjs +2 -2
- package/dist/dataParser/parsers/pipe.cjs +2 -2
- package/dist/dataParser/parsers/pipe.mjs +2 -2
- package/dist/dataParser/parsers/record/index.cjs +2 -2
- package/dist/dataParser/parsers/record/index.mjs +2 -2
- package/dist/dataParser/parsers/recover.cjs +2 -2
- package/dist/dataParser/parsers/recover.mjs +2 -2
- package/dist/dataParser/parsers/string/index.cjs +2 -2
- package/dist/dataParser/parsers/string/index.mjs +2 -2
- package/dist/dataParser/parsers/templateLiteral/index.cjs +2 -2
- package/dist/dataParser/parsers/templateLiteral/index.mjs +2 -2
- package/dist/dataParser/parsers/time/index.cjs +2 -2
- package/dist/dataParser/parsers/time/index.mjs +2 -2
- package/dist/dataParser/parsers/transform.cjs +2 -2
- package/dist/dataParser/parsers/transform.mjs +2 -2
- package/dist/dataParser/parsers/tuple.cjs +2 -2
- package/dist/dataParser/parsers/tuple.mjs +2 -2
- package/dist/dataParser/parsers/union.cjs +2 -2
- package/dist/dataParser/parsers/union.mjs +2 -2
- package/dist/dataParser/parsers/unknown.cjs +2 -2
- package/dist/dataParser/parsers/unknown.mjs +2 -2
- package/dist/metadata.json +6 -0
- package/dist/pattern/types/complexMatchedValue/function.d.ts +8 -0
- package/dist/pattern/types/complexMatchedValue/index.d.ts +3 -1
- package/dist/pattern/types/complexMatchedValue/object.d.ts +3 -3
- package/dist/pattern/types/complexUnMatchedValue/array.d.ts +11 -4
- package/dist/pattern/types/complexUnMatchedValue/function.d.ts +8 -0
- package/dist/pattern/types/complexUnMatchedValue/getIncompleteUnion.d.ts +12 -1
- package/dist/pattern/types/complexUnMatchedValue/index.d.ts +9 -2
- package/dist/pattern/types/complexUnMatchedValue/object.d.ts +3 -3
- package/dist/pattern/types/pattern.d.ts +2 -2
- package/package.json +1 -1
|
@@ -12,10 +12,17 @@ function simpleClone(unknownValue) {
|
|
|
12
12
|
}
|
|
13
13
|
else if (unknownValue.constructor === undefined
|
|
14
14
|
|| unknownValue.constructor.name === "Object") {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const result = {};
|
|
16
|
+
for (const key in unknownValue) {
|
|
17
|
+
const desc = Object.getOwnPropertyDescriptor(unknownValue, key);
|
|
18
|
+
if (desc?.set || desc?.get) {
|
|
19
|
+
Object.defineProperty(result, key, desc);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
result[key] = simpleClone(unknownValue[key]);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
19
26
|
}
|
|
20
27
|
else if (unknownValue instanceof Array && unknownValue.constructor.name === "Array") {
|
|
21
28
|
return unknownValue.map(simpleClone);
|
|
@@ -10,10 +10,17 @@ function simpleClone(unknownValue) {
|
|
|
10
10
|
}
|
|
11
11
|
else if (unknownValue.constructor === undefined
|
|
12
12
|
|| unknownValue.constructor.name === "Object") {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
const result = {};
|
|
14
|
+
for (const key in unknownValue) {
|
|
15
|
+
const desc = Object.getOwnPropertyDescriptor(unknownValue, key);
|
|
16
|
+
if (desc?.set || desc?.get) {
|
|
17
|
+
Object.defineProperty(result, key, desc);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
result[key] = simpleClone(unknownValue[key]);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
17
24
|
}
|
|
18
25
|
else if (unknownValue instanceof Array && unknownValue.constructor.name === "Array") {
|
|
19
26
|
return unknownValue.map(simpleClone);
|
package/dist/dataParser/base.cjs
CHANGED
|
@@ -27,7 +27,7 @@ const DPE = error.createError();
|
|
|
27
27
|
const EE = error$1.error(null);
|
|
28
28
|
const ES = success.success(null);
|
|
29
29
|
const KWV = wrapValue.keyWrappedValue;
|
|
30
|
-
function dataParserInit(kind, definition, exec) {
|
|
30
|
+
function dataParserInit(kind, definition, exec, specificOverrideHandler) {
|
|
31
31
|
const formattedExec = typeof exec === "object"
|
|
32
32
|
? exec
|
|
33
33
|
: {
|
|
@@ -35,18 +35,18 @@ function dataParserInit(kind, definition, exec) {
|
|
|
35
35
|
async: exec,
|
|
36
36
|
};
|
|
37
37
|
function middleExec(data, error$1) {
|
|
38
|
-
let result = formattedExec.sync(data, error$1,
|
|
38
|
+
let result = formattedExec.sync(data, error$1, self);
|
|
39
39
|
if (result === SDPEI) {
|
|
40
|
-
error.addIssue(error$1,
|
|
40
|
+
error.addIssue(error$1, self, data);
|
|
41
41
|
return SDPE;
|
|
42
42
|
}
|
|
43
43
|
else if (result === SDPEPI) {
|
|
44
|
-
error.addPromiseIssue(error$1,
|
|
44
|
+
error.addPromiseIssue(error$1, self, data);
|
|
45
45
|
return SDPE;
|
|
46
46
|
}
|
|
47
47
|
else if (result !== SDPE
|
|
48
|
-
&&
|
|
49
|
-
for (const checker of
|
|
48
|
+
&& self.definition.checkers.length) {
|
|
49
|
+
for (const checker of self.definition.checkers) {
|
|
50
50
|
const checkerResult = checker.exec(result, checker);
|
|
51
51
|
if (checkerResult === SDPEI) {
|
|
52
52
|
error.addIssue(error$1, checker, result);
|
|
@@ -60,18 +60,18 @@ function dataParserInit(kind, definition, exec) {
|
|
|
60
60
|
return result;
|
|
61
61
|
}
|
|
62
62
|
async function middleAsyncExec(data, error$1) {
|
|
63
|
-
let result = await formattedExec.async(data, error$1,
|
|
63
|
+
let result = await formattedExec.async(data, error$1, self);
|
|
64
64
|
if (result === SDPEI) {
|
|
65
|
-
error.addIssue(error$1,
|
|
65
|
+
error.addIssue(error$1, self, data);
|
|
66
66
|
return SDPE;
|
|
67
67
|
}
|
|
68
68
|
else if (result === SDPEPI) {
|
|
69
|
-
error.addPromiseIssue(error$1,
|
|
69
|
+
error.addPromiseIssue(error$1, self, data);
|
|
70
70
|
return SDPE;
|
|
71
71
|
}
|
|
72
72
|
else if (result !== SDPE
|
|
73
|
-
&&
|
|
74
|
-
for (const checker of
|
|
73
|
+
&& self.definition.checkers.length) {
|
|
74
|
+
for (const checker of self.definition.checkers) {
|
|
75
75
|
const checkerResult = checker.exec(result, checker);
|
|
76
76
|
if (checkerResult === SDPEI) {
|
|
77
77
|
error.addIssue(error$1, checker, result);
|
|
@@ -84,7 +84,7 @@ function dataParserInit(kind, definition, exec) {
|
|
|
84
84
|
}
|
|
85
85
|
return result;
|
|
86
86
|
}
|
|
87
|
-
const
|
|
87
|
+
const self = pipe.pipe({
|
|
88
88
|
definition,
|
|
89
89
|
exec: middleExec,
|
|
90
90
|
asyncExec: middleAsyncExec,
|
|
@@ -127,10 +127,11 @@ function dataParserInit(kind, definition, exec) {
|
|
|
127
127
|
addChecker: (...checkers) => dataParserInit(kind, simpleClone.simpleClone({
|
|
128
128
|
...definition,
|
|
129
129
|
checkers: [...definition.checkers, ...checkers],
|
|
130
|
-
}), exec),
|
|
131
|
-
clone: () => dataParserInit(kind, simpleClone.simpleClone(definition), exec),
|
|
132
|
-
|
|
133
|
-
|
|
130
|
+
}), exec, specificOverrideHandler),
|
|
131
|
+
clone: () => dataParserInit(kind, simpleClone.simpleClone(definition), exec, specificOverrideHandler),
|
|
132
|
+
contract: () => self,
|
|
133
|
+
}, (value) => dataParserKind.setTo(value, null), kind.setTo, (value) => dataParserInit.overrideHandler.apply(value), (value) => specificOverrideHandler.apply(value));
|
|
134
|
+
return self;
|
|
134
135
|
}
|
|
135
136
|
dataParserInit.overrideHandler = override.createOverride("@duplojs/utils/data-parser/base");
|
|
136
137
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type GetKindHandler, type GetKindValue, type Kind, type KindHandler, type RemoveKind } from "../common";
|
|
1
|
+
import { type GetKindHandler, type GetKindValue, type IsEqual, type Kind, type KindHandler, type OverrideHandler, type RemoveKind } from "../common";
|
|
2
2
|
import { SymbolDataParserErrorIssue, SymbolDataParserErrorPromiseIssue, type DataParserError } from "./error";
|
|
3
3
|
import * as DEither from "../either";
|
|
4
4
|
export declare const SymbolDataParserErrorLabel = "SymbolDataParserError";
|
|
@@ -22,6 +22,7 @@ export interface DataParserDefinition<GenericChecker extends DataParserChecker =
|
|
|
22
22
|
readonly errorMessage?: string;
|
|
23
23
|
readonly checkers: readonly GenericChecker[];
|
|
24
24
|
}
|
|
25
|
+
declare const SymbolContractError: unique symbol;
|
|
25
26
|
export interface DataParser<GenericDefinition extends DataParserDefinition = DataParserDefinition, GenericOutput extends unknown = unknown, GenericInput extends unknown = GenericOutput> extends Kind<typeof dataParserKind.definition, {
|
|
26
27
|
input: GenericInput;
|
|
27
28
|
output: GenericOutput;
|
|
@@ -137,14 +138,45 @@ export interface DataParser<GenericDefinition extends DataParserDefinition = Dat
|
|
|
137
138
|
*
|
|
138
139
|
*/
|
|
139
140
|
clone(): this;
|
|
141
|
+
/**
|
|
142
|
+
* The contract() method validates that the parser output type exactly matches the type you want to assign it to.
|
|
143
|
+
*
|
|
144
|
+
* **Supported call styles:**
|
|
145
|
+
* - Method: `dataParser.contract<Output>()` -> returns the same parser if types match
|
|
146
|
+
*
|
|
147
|
+
* It does not change runtime behavior; it enforces at compile time that the parser output type and the expected type are exactly the same.
|
|
148
|
+
*
|
|
149
|
+
* ```ts
|
|
150
|
+
* interface User {
|
|
151
|
+
* id: number;
|
|
152
|
+
* name: string;
|
|
153
|
+
* }
|
|
154
|
+
*
|
|
155
|
+
* const userParser: DP.Contract<User> = DP.object({
|
|
156
|
+
* id: DP.number(),
|
|
157
|
+
* name: DP.string(),
|
|
158
|
+
* }).contract();
|
|
159
|
+
*
|
|
160
|
+
* const statusParser: DP.Contract<"draft" | "published">
|
|
161
|
+
* = DP.literal(["draft", "published"]).contract();
|
|
162
|
+
* ```
|
|
163
|
+
*
|
|
164
|
+
* @see https://utils.duplojs.dev/en/v1/api/dataParser
|
|
165
|
+
*
|
|
166
|
+
* @namespace DP
|
|
167
|
+
*
|
|
168
|
+
*/
|
|
169
|
+
contract<GenericValue extends unknown>(...args: IsEqual<Output<this>, GenericValue> extends true ? [] : [] & {
|
|
170
|
+
[SymbolContractError]: "Contract error.";
|
|
171
|
+
}): Contract<GenericValue>;
|
|
140
172
|
}
|
|
141
173
|
interface DataParserInitExecParams<GenericDataParser extends DataParser> {
|
|
142
174
|
sync(...args: [...Parameters<GenericDataParser["exec"]>, self: GenericDataParser]): (GetKindValue<typeof dataParserKind, GenericDataParser>["output"] | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue);
|
|
143
175
|
async(...args: [...Parameters<GenericDataParser["exec"]>, self: GenericDataParser]): Promise<GetKindValue<typeof dataParserKind, GenericDataParser>["output"] | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue>;
|
|
144
176
|
}
|
|
145
|
-
export declare function dataParserInit<GenericDataParser extends DataParser>(kind: Exclude<GetKindHandler<GenericDataParser>, typeof dataParserKind>, definition: GenericDataParser["definition"], exec: (DataParserInitExecParams<GenericDataParser> | DataParserInitExecParams<GenericDataParser>["sync"])): GenericDataParser;
|
|
177
|
+
export declare function dataParserInit<GenericDataParser extends DataParser>(kind: Exclude<GetKindHandler<GenericDataParser>, typeof dataParserKind>, definition: GenericDataParser["definition"], exec: (DataParserInitExecParams<GenericDataParser> | DataParserInitExecParams<GenericDataParser>["sync"]), specificOverrideHandler: OverrideHandler<GenericDataParser>): GenericDataParser;
|
|
146
178
|
export declare namespace dataParserInit {
|
|
147
|
-
var overrideHandler:
|
|
179
|
+
var overrideHandler: OverrideHandler<DataParser<DataParserDefinition<DataParserChecker<DataParserCheckerDefinition, unknown>>, unknown, unknown>>;
|
|
148
180
|
}
|
|
149
181
|
export type Output<GenericDataParser extends DataParser> = GetKindValue<typeof dataParserKind, GenericDataParser>["output"];
|
|
150
182
|
export type Input<GenericDataParser extends DataParser> = GetKindValue<typeof dataParserKind, GenericDataParser>["input"];
|
package/dist/dataParser/base.mjs
CHANGED
|
@@ -25,7 +25,7 @@ const DPE = createError();
|
|
|
25
25
|
const EE = error(null);
|
|
26
26
|
const ES = success(null);
|
|
27
27
|
const KWV = keyWrappedValue;
|
|
28
|
-
function dataParserInit(kind, definition, exec) {
|
|
28
|
+
function dataParserInit(kind, definition, exec, specificOverrideHandler) {
|
|
29
29
|
const formattedExec = typeof exec === "object"
|
|
30
30
|
? exec
|
|
31
31
|
: {
|
|
@@ -33,18 +33,18 @@ function dataParserInit(kind, definition, exec) {
|
|
|
33
33
|
async: exec,
|
|
34
34
|
};
|
|
35
35
|
function middleExec(data, error) {
|
|
36
|
-
let result = formattedExec.sync(data, error,
|
|
36
|
+
let result = formattedExec.sync(data, error, self);
|
|
37
37
|
if (result === SDPEI) {
|
|
38
|
-
addIssue(error,
|
|
38
|
+
addIssue(error, self, data);
|
|
39
39
|
return SDPE;
|
|
40
40
|
}
|
|
41
41
|
else if (result === SDPEPI) {
|
|
42
|
-
addPromiseIssue(error,
|
|
42
|
+
addPromiseIssue(error, self, data);
|
|
43
43
|
return SDPE;
|
|
44
44
|
}
|
|
45
45
|
else if (result !== SDPE
|
|
46
|
-
&&
|
|
47
|
-
for (const checker of
|
|
46
|
+
&& self.definition.checkers.length) {
|
|
47
|
+
for (const checker of self.definition.checkers) {
|
|
48
48
|
const checkerResult = checker.exec(result, checker);
|
|
49
49
|
if (checkerResult === SDPEI) {
|
|
50
50
|
addIssue(error, checker, result);
|
|
@@ -58,18 +58,18 @@ function dataParserInit(kind, definition, exec) {
|
|
|
58
58
|
return result;
|
|
59
59
|
}
|
|
60
60
|
async function middleAsyncExec(data, error) {
|
|
61
|
-
let result = await formattedExec.async(data, error,
|
|
61
|
+
let result = await formattedExec.async(data, error, self);
|
|
62
62
|
if (result === SDPEI) {
|
|
63
|
-
addIssue(error,
|
|
63
|
+
addIssue(error, self, data);
|
|
64
64
|
return SDPE;
|
|
65
65
|
}
|
|
66
66
|
else if (result === SDPEPI) {
|
|
67
|
-
addPromiseIssue(error,
|
|
67
|
+
addPromiseIssue(error, self, data);
|
|
68
68
|
return SDPE;
|
|
69
69
|
}
|
|
70
70
|
else if (result !== SDPE
|
|
71
|
-
&&
|
|
72
|
-
for (const checker of
|
|
71
|
+
&& self.definition.checkers.length) {
|
|
72
|
+
for (const checker of self.definition.checkers) {
|
|
73
73
|
const checkerResult = checker.exec(result, checker);
|
|
74
74
|
if (checkerResult === SDPEI) {
|
|
75
75
|
addIssue(error, checker, result);
|
|
@@ -82,7 +82,7 @@ function dataParserInit(kind, definition, exec) {
|
|
|
82
82
|
}
|
|
83
83
|
return result;
|
|
84
84
|
}
|
|
85
|
-
const
|
|
85
|
+
const self = pipe({
|
|
86
86
|
definition,
|
|
87
87
|
exec: middleExec,
|
|
88
88
|
asyncExec: middleAsyncExec,
|
|
@@ -125,10 +125,11 @@ function dataParserInit(kind, definition, exec) {
|
|
|
125
125
|
addChecker: (...checkers) => dataParserInit(kind, simpleClone({
|
|
126
126
|
...definition,
|
|
127
127
|
checkers: [...definition.checkers, ...checkers],
|
|
128
|
-
}), exec),
|
|
129
|
-
clone: () => dataParserInit(kind, simpleClone(definition), exec),
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
}), exec, specificOverrideHandler),
|
|
129
|
+
clone: () => dataParserInit(kind, simpleClone(definition), exec, specificOverrideHandler),
|
|
130
|
+
contract: () => self,
|
|
131
|
+
}, (value) => dataParserKind.setTo(value, null), kind.setTo, (value) => dataParserInit.overrideHandler.apply(value), (value) => specificOverrideHandler.apply(value));
|
|
132
|
+
return self;
|
|
132
133
|
}
|
|
133
134
|
dataParserInit.overrideHandler = createOverride("@duplojs/utils/data-parser/base");
|
|
134
135
|
|
|
@@ -59,6 +59,9 @@ function dataParserExtendedInit(dataParser, rest) {
|
|
|
59
59
|
recover(recoveredValue, definition) {
|
|
60
60
|
return recover.recover(self, recoveredValue, definition);
|
|
61
61
|
},
|
|
62
|
+
contract() {
|
|
63
|
+
return self;
|
|
64
|
+
},
|
|
62
65
|
}, extendedKind.setTo, dataParserExtendedInit.overrideHandler.apply);
|
|
63
66
|
return self;
|
|
64
67
|
}
|
|
@@ -57,6 +57,9 @@ function dataParserExtendedInit(dataParser, rest) {
|
|
|
57
57
|
recover(recoveredValue, definition) {
|
|
58
58
|
return recover(self, recoveredValue, definition);
|
|
59
59
|
},
|
|
60
|
+
contract() {
|
|
61
|
+
return self;
|
|
62
|
+
},
|
|
60
63
|
}, extendedKind.setTo, dataParserExtendedInit.overrideHandler.apply);
|
|
61
64
|
return self;
|
|
62
65
|
}
|
|
@@ -59,8 +59,8 @@ function array(element, definition) {
|
|
|
59
59
|
void (data.length && error.popErrorPath(error$1));
|
|
60
60
|
return output;
|
|
61
61
|
},
|
|
62
|
-
});
|
|
63
|
-
return
|
|
62
|
+
}, array.overrideHandler);
|
|
63
|
+
return self;
|
|
64
64
|
}
|
|
65
65
|
array.overrideHandler = override.createOverride("@duplojs/utils/data-parser/array");
|
|
66
66
|
|
|
@@ -57,8 +57,8 @@ function array(element, definition) {
|
|
|
57
57
|
void (data.length && popErrorPath(error));
|
|
58
58
|
return output;
|
|
59
59
|
},
|
|
60
|
-
});
|
|
61
|
-
return
|
|
60
|
+
}, array.overrideHandler);
|
|
61
|
+
return self;
|
|
62
62
|
}
|
|
63
63
|
array.overrideHandler = createOverride("@duplojs/utils/data-parser/array");
|
|
64
64
|
|
|
@@ -26,8 +26,8 @@ function bigint(definition) {
|
|
|
26
26
|
return data;
|
|
27
27
|
}
|
|
28
28
|
return error.SymbolDataParserErrorIssue;
|
|
29
|
-
});
|
|
30
|
-
return
|
|
29
|
+
}, bigint.overrideHandler);
|
|
30
|
+
return self;
|
|
31
31
|
}
|
|
32
32
|
bigint.overrideHandler = override.createOverride("@duplojs/utils/data-parser/bigint");
|
|
33
33
|
|
|
@@ -24,8 +24,8 @@ function bigint(definition) {
|
|
|
24
24
|
return data;
|
|
25
25
|
}
|
|
26
26
|
return SymbolDataParserErrorIssue;
|
|
27
|
-
});
|
|
28
|
-
return
|
|
27
|
+
}, bigint.overrideHandler);
|
|
28
|
+
return self;
|
|
29
29
|
}
|
|
30
30
|
bigint.overrideHandler = createOverride("@duplojs/utils/data-parser/bigint");
|
|
31
31
|
|
|
@@ -35,8 +35,8 @@ function boolean(definition) {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
return error.SymbolDataParserErrorIssue;
|
|
38
|
-
});
|
|
39
|
-
return
|
|
38
|
+
}, boolean.overrideHandler);
|
|
39
|
+
return self;
|
|
40
40
|
}
|
|
41
41
|
boolean.overrideHandler = override.createOverride("@duplojs/utils/data-parser/boolean");
|
|
42
42
|
|
|
@@ -33,8 +33,8 @@ function boolean(definition) {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
return SymbolDataParserErrorIssue;
|
|
36
|
-
});
|
|
37
|
-
return
|
|
36
|
+
}, boolean.overrideHandler);
|
|
37
|
+
return self;
|
|
38
38
|
}
|
|
39
39
|
boolean.overrideHandler = createOverride("@duplojs/utils/data-parser/boolean");
|
|
40
40
|
|
|
@@ -44,8 +44,8 @@ function date(definition) {
|
|
|
44
44
|
return data;
|
|
45
45
|
}
|
|
46
46
|
return error.SymbolDataParserErrorIssue;
|
|
47
|
-
});
|
|
48
|
-
return
|
|
47
|
+
}, date.overrideHandler);
|
|
48
|
+
return self;
|
|
49
49
|
}
|
|
50
50
|
date.overrideHandler = override.createOverride("@duplojs/utils/data-parser/date");
|
|
51
51
|
|
|
@@ -42,8 +42,8 @@ function date(definition) {
|
|
|
42
42
|
return data;
|
|
43
43
|
}
|
|
44
44
|
return SymbolDataParserErrorIssue;
|
|
45
|
-
});
|
|
46
|
-
return
|
|
45
|
+
}, date.overrideHandler);
|
|
46
|
+
return self;
|
|
47
47
|
}
|
|
48
48
|
date.overrideHandler = createOverride("@duplojs/utils/data-parser/date");
|
|
49
49
|
|
|
@@ -22,8 +22,8 @@ function empty(definition) {
|
|
|
22
22
|
return undefined;
|
|
23
23
|
}
|
|
24
24
|
return error.SymbolDataParserErrorIssue;
|
|
25
|
-
});
|
|
26
|
-
return
|
|
25
|
+
}, empty.overrideHandler);
|
|
26
|
+
return self;
|
|
27
27
|
}
|
|
28
28
|
empty.overrideHandler = override.createOverride("@duplojs/utils/data-parser/empty");
|
|
29
29
|
|
|
@@ -20,8 +20,8 @@ function empty(definition) {
|
|
|
20
20
|
return undefined;
|
|
21
21
|
}
|
|
22
22
|
return SymbolDataParserErrorIssue;
|
|
23
|
-
});
|
|
24
|
-
return
|
|
23
|
+
}, empty.overrideHandler);
|
|
24
|
+
return self;
|
|
25
25
|
}
|
|
26
26
|
empty.overrideHandler = createOverride("@duplojs/utils/data-parser/empty");
|
|
27
27
|
|
|
@@ -17,8 +17,8 @@ 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
|
-
});
|
|
21
|
-
return
|
|
20
|
+
}, lazy.overrideHandler);
|
|
21
|
+
return self;
|
|
22
22
|
}
|
|
23
23
|
lazy.overrideHandler = override.createOverride("@duplojs/utils/data-parser/lazy");
|
|
24
24
|
|
|
@@ -63,6 +63,6 @@ export declare function lazy<GenericDataParser extends DataParser, const Generic
|
|
|
63
63
|
getter: Memoized<GenericDataParser>;
|
|
64
64
|
}>>;
|
|
65
65
|
export declare namespace lazy {
|
|
66
|
-
var overrideHandler: import("../../common").OverrideHandler<
|
|
66
|
+
var overrideHandler: import("../../common").OverrideHandler<DataParserLazy<DataParserDefinitionLazy>>;
|
|
67
67
|
}
|
|
68
68
|
export {};
|
|
@@ -15,8 +15,8 @@ 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
|
-
});
|
|
19
|
-
return
|
|
18
|
+
}, lazy.overrideHandler);
|
|
19
|
+
return self;
|
|
20
20
|
}
|
|
21
21
|
lazy.overrideHandler = createOverride("@duplojs/utils/data-parser/lazy");
|
|
22
22
|
|
|
@@ -20,8 +20,8 @@ function literal(value, definition) {
|
|
|
20
20
|
return data;
|
|
21
21
|
}
|
|
22
22
|
return error.SymbolDataParserErrorIssue;
|
|
23
|
-
});
|
|
24
|
-
return
|
|
23
|
+
}, literal.overrideHandler);
|
|
24
|
+
return self;
|
|
25
25
|
}
|
|
26
26
|
literal.overrideHandler = override.createOverride("@duplojs/utils/data-parser/literal");
|
|
27
27
|
|
|
@@ -18,8 +18,8 @@ function literal(value, definition) {
|
|
|
18
18
|
return data;
|
|
19
19
|
}
|
|
20
20
|
return SymbolDataParserErrorIssue;
|
|
21
|
-
});
|
|
22
|
-
return
|
|
21
|
+
}, literal.overrideHandler);
|
|
22
|
+
return self;
|
|
23
23
|
}
|
|
24
24
|
literal.overrideHandler = createOverride("@duplojs/utils/data-parser/literal");
|
|
25
25
|
|
|
@@ -22,8 +22,8 @@ function nil(definition) {
|
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
24
|
return error.SymbolDataParserErrorIssue;
|
|
25
|
-
});
|
|
26
|
-
return
|
|
25
|
+
}, nil.overrideHandler);
|
|
26
|
+
return self;
|
|
27
27
|
}
|
|
28
28
|
nil.overrideHandler = override.createOverride("@duplojs/utils/data-parser/nil");
|
|
29
29
|
|
|
@@ -20,8 +20,8 @@ function nil(definition) {
|
|
|
20
20
|
return null;
|
|
21
21
|
}
|
|
22
22
|
return SymbolDataParserErrorIssue;
|
|
23
|
-
});
|
|
24
|
-
return
|
|
23
|
+
}, nil.overrideHandler);
|
|
24
|
+
return self;
|
|
25
25
|
}
|
|
26
26
|
nil.overrideHandler = createOverride("@duplojs/utils/data-parser/nil");
|
|
27
27
|
|
|
@@ -27,8 +27,8 @@ function nullable(inner, definition) {
|
|
|
27
27
|
}
|
|
28
28
|
return self.definition.inner.asyncExec(data, error);
|
|
29
29
|
},
|
|
30
|
-
});
|
|
31
|
-
return
|
|
30
|
+
}, nullable.overrideHandler);
|
|
31
|
+
return self;
|
|
32
32
|
}
|
|
33
33
|
nullable.overrideHandler = override.createOverride("@duplojs/utils/data-parser/nullable");
|
|
34
34
|
|
|
@@ -25,8 +25,8 @@ function nullable(inner, definition) {
|
|
|
25
25
|
}
|
|
26
26
|
return self.definition.inner.asyncExec(data, error);
|
|
27
27
|
},
|
|
28
|
-
});
|
|
29
|
-
return
|
|
28
|
+
}, nullable.overrideHandler);
|
|
29
|
+
return self;
|
|
30
30
|
}
|
|
31
31
|
nullable.overrideHandler = createOverride("@duplojs/utils/data-parser/nullable");
|
|
32
32
|
|
|
@@ -26,8 +26,8 @@ function number(definition) {
|
|
|
26
26
|
return data;
|
|
27
27
|
}
|
|
28
28
|
return error.SymbolDataParserErrorIssue;
|
|
29
|
-
});
|
|
30
|
-
return
|
|
29
|
+
}, number.overrideHandler);
|
|
30
|
+
return self;
|
|
31
31
|
}
|
|
32
32
|
number.overrideHandler = override.createOverride("@duplojs/utils/data-parser/number");
|
|
33
33
|
|
|
@@ -24,8 +24,8 @@ function number(definition) {
|
|
|
24
24
|
return data;
|
|
25
25
|
}
|
|
26
26
|
return SymbolDataParserErrorIssue;
|
|
27
|
-
});
|
|
28
|
-
return
|
|
27
|
+
}, number.overrideHandler);
|
|
28
|
+
return self;
|
|
29
29
|
}
|
|
30
30
|
number.overrideHandler = createOverride("@duplojs/utils/data-parser/number");
|
|
31
31
|
|
|
@@ -69,8 +69,8 @@ function object(shape, definition) {
|
|
|
69
69
|
void (self.definition.optimizedShape.value.length && error.popErrorPath(error$1));
|
|
70
70
|
return output;
|
|
71
71
|
},
|
|
72
|
-
});
|
|
73
|
-
return
|
|
72
|
+
}, object.overrideHandler);
|
|
73
|
+
return self;
|
|
74
74
|
}
|
|
75
75
|
object.overrideHandler = override.createOverride("@duplojs/utils/data-parser/object");
|
|
76
76
|
|
|
@@ -67,8 +67,8 @@ function object(shape, definition) {
|
|
|
67
67
|
void (self.definition.optimizedShape.value.length && popErrorPath(error));
|
|
68
68
|
return output;
|
|
69
69
|
},
|
|
70
|
-
});
|
|
71
|
-
return
|
|
70
|
+
}, object.overrideHandler);
|
|
71
|
+
return self;
|
|
72
72
|
}
|
|
73
73
|
object.overrideHandler = createOverride("@duplojs/utils/data-parser/object");
|
|
74
74
|
|
|
@@ -27,8 +27,8 @@ function optional(inner, definition) {
|
|
|
27
27
|
}
|
|
28
28
|
return self.definition.inner.asyncExec(data, error);
|
|
29
29
|
},
|
|
30
|
-
});
|
|
31
|
-
return
|
|
30
|
+
}, optional.overrideHandler);
|
|
31
|
+
return self;
|
|
32
32
|
}
|
|
33
33
|
optional.overrideHandler = override.createOverride("@duplojs/utils/data-parser/optional");
|
|
34
34
|
|
|
@@ -25,8 +25,8 @@ function optional(inner, definition) {
|
|
|
25
25
|
}
|
|
26
26
|
return self.definition.inner.asyncExec(data, error);
|
|
27
27
|
},
|
|
28
|
-
});
|
|
29
|
-
return
|
|
28
|
+
}, optional.overrideHandler);
|
|
29
|
+
return self;
|
|
30
30
|
}
|
|
31
31
|
optional.overrideHandler = createOverride("@duplojs/utils/data-parser/optional");
|
|
32
32
|
|
|
@@ -29,8 +29,8 @@ function pipe(input, output, definition) {
|
|
|
29
29
|
}
|
|
30
30
|
return self.definition.output.asyncExec(result, error);
|
|
31
31
|
},
|
|
32
|
-
});
|
|
33
|
-
return
|
|
32
|
+
}, pipe.overrideHandler);
|
|
33
|
+
return self;
|
|
34
34
|
}
|
|
35
35
|
pipe.overrideHandler = override.createOverride("@duplojs/utils/data-parser/pipe");
|
|
36
36
|
|
|
@@ -27,8 +27,8 @@ function pipe(input, output, definition) {
|
|
|
27
27
|
}
|
|
28
28
|
return self.definition.output.asyncExec(result, error);
|
|
29
29
|
},
|
|
30
|
-
});
|
|
31
|
-
return
|
|
30
|
+
}, pipe.overrideHandler);
|
|
31
|
+
return self;
|
|
32
32
|
}
|
|
33
33
|
pipe.overrideHandler = createOverride("@duplojs/utils/data-parser/pipe");
|
|
34
34
|
|
|
@@ -94,8 +94,8 @@ function record(key, value, definition) {
|
|
|
94
94
|
}
|
|
95
95
|
return output;
|
|
96
96
|
},
|
|
97
|
-
});
|
|
98
|
-
return
|
|
97
|
+
}, record.overrideHandler);
|
|
98
|
+
return self;
|
|
99
99
|
}
|
|
100
100
|
record.overrideHandler = override.createOverride("@duplojs/utils/data-parser/record");
|
|
101
101
|
|
|
@@ -93,8 +93,8 @@ function record(key, value, definition) {
|
|
|
93
93
|
}
|
|
94
94
|
return output;
|
|
95
95
|
},
|
|
96
|
-
});
|
|
97
|
-
return
|
|
96
|
+
}, record.overrideHandler);
|
|
97
|
+
return self;
|
|
98
98
|
}
|
|
99
99
|
record.overrideHandler = createOverride("@duplojs/utils/data-parser/record");
|
|
100
100
|
|
|
@@ -27,8 +27,8 @@ function recover(inner, recoveredValue, definition) {
|
|
|
27
27
|
? self.definition.recoveredValue
|
|
28
28
|
: result;
|
|
29
29
|
},
|
|
30
|
-
});
|
|
31
|
-
return
|
|
30
|
+
}, recover.overrideHandler);
|
|
31
|
+
return self;
|
|
32
32
|
}
|
|
33
33
|
recover.overrideHandler = override.createOverride("@duplojs/utils/data-parser/recover");
|
|
34
34
|
|
|
@@ -25,8 +25,8 @@ function recover(inner, recoveredValue, definition) {
|
|
|
25
25
|
? self.definition.recoveredValue
|
|
26
26
|
: result;
|
|
27
27
|
},
|
|
28
|
-
});
|
|
29
|
-
return
|
|
28
|
+
}, recover.overrideHandler);
|
|
29
|
+
return self;
|
|
30
30
|
}
|
|
31
31
|
recover.overrideHandler = createOverride("@duplojs/utils/data-parser/recover");
|
|
32
32
|
|
|
@@ -26,8 +26,8 @@ function string(definition) {
|
|
|
26
26
|
return data;
|
|
27
27
|
}
|
|
28
28
|
return error.SymbolDataParserErrorIssue;
|
|
29
|
-
});
|
|
30
|
-
return
|
|
29
|
+
}, string.overrideHandler);
|
|
30
|
+
return self;
|
|
31
31
|
}
|
|
32
32
|
string.overrideHandler = override.createOverride("@duplojs/utils/data-parser/string");
|
|
33
33
|
|
|
@@ -24,8 +24,8 @@ function string(definition) {
|
|
|
24
24
|
return data;
|
|
25
25
|
}
|
|
26
26
|
return SymbolDataParserErrorIssue;
|
|
27
|
-
});
|
|
28
|
-
return
|
|
27
|
+
}, string.overrideHandler);
|
|
28
|
+
return self;
|
|
29
29
|
}
|
|
30
30
|
string.overrideHandler = createOverride("@duplojs/utils/data-parser/string");
|
|
31
31
|
|
|
@@ -23,8 +23,8 @@ function templateLiteral(template, definition) {
|
|
|
23
23
|
return data;
|
|
24
24
|
}
|
|
25
25
|
return error.SymbolDataParserErrorIssue;
|
|
26
|
-
});
|
|
27
|
-
return
|
|
26
|
+
}, templateLiteral.overrideHandler);
|
|
27
|
+
return self;
|
|
28
28
|
}
|
|
29
29
|
templateLiteral.overrideHandler = override.createOverride("@duplojs/utils/data-parser/templateLiteral");
|
|
30
30
|
|
|
@@ -21,8 +21,8 @@ function templateLiteral(template, definition) {
|
|
|
21
21
|
return data;
|
|
22
22
|
}
|
|
23
23
|
return SymbolDataParserErrorIssue;
|
|
24
|
-
});
|
|
25
|
-
return
|
|
24
|
+
}, templateLiteral.overrideHandler);
|
|
25
|
+
return self;
|
|
26
26
|
}
|
|
27
27
|
templateLiteral.overrideHandler = createOverride("@duplojs/utils/data-parser/templateLiteral");
|
|
28
28
|
|
|
@@ -41,8 +41,8 @@ function time(definition) {
|
|
|
41
41
|
return data;
|
|
42
42
|
}
|
|
43
43
|
return error.SymbolDataParserErrorIssue;
|
|
44
|
-
});
|
|
45
|
-
return
|
|
44
|
+
}, time.overrideHandler);
|
|
45
|
+
return self;
|
|
46
46
|
}
|
|
47
47
|
time.overrideHandler = override.createOverride("@duplojs/utils/data-parser/time");
|
|
48
48
|
|
|
@@ -39,8 +39,8 @@ function time(definition) {
|
|
|
39
39
|
return data;
|
|
40
40
|
}
|
|
41
41
|
return SymbolDataParserErrorIssue;
|
|
42
|
-
});
|
|
43
|
-
return
|
|
42
|
+
}, time.overrideHandler);
|
|
43
|
+
return self;
|
|
44
44
|
}
|
|
45
45
|
time.overrideHandler = createOverride("@duplojs/utils/data-parser/time");
|
|
46
46
|
|
|
@@ -38,8 +38,8 @@ function transform(inner, theFunction, definition) {
|
|
|
38
38
|
}
|
|
39
39
|
return result;
|
|
40
40
|
},
|
|
41
|
-
});
|
|
42
|
-
return
|
|
41
|
+
}, transform.overrideHandler);
|
|
42
|
+
return self;
|
|
43
43
|
}
|
|
44
44
|
transform.overrideHandler = override.createOverride("@duplojs/utils/data-parser/transform");
|
|
45
45
|
|
|
@@ -36,8 +36,8 @@ function transform(inner, theFunction, definition) {
|
|
|
36
36
|
}
|
|
37
37
|
return result;
|
|
38
38
|
},
|
|
39
|
-
});
|
|
40
|
-
return
|
|
39
|
+
}, transform.overrideHandler);
|
|
40
|
+
return self;
|
|
41
41
|
}
|
|
42
42
|
transform.overrideHandler = createOverride("@duplojs/utils/data-parser/transform");
|
|
43
43
|
|
|
@@ -78,8 +78,8 @@ function tuple(shape, definition) {
|
|
|
78
78
|
void (self.definition.shape.length && error.popErrorPath(error$1));
|
|
79
79
|
return output;
|
|
80
80
|
},
|
|
81
|
-
});
|
|
82
|
-
return
|
|
81
|
+
}, tuple.overrideHandler);
|
|
82
|
+
return self;
|
|
83
83
|
}
|
|
84
84
|
tuple.overrideHandler = override.createOverride("@duplojs/utils/data-parser/tuple");
|
|
85
85
|
|
|
@@ -76,8 +76,8 @@ function tuple(shape, definition) {
|
|
|
76
76
|
void (self.definition.shape.length && popErrorPath(error));
|
|
77
77
|
return output;
|
|
78
78
|
},
|
|
79
|
-
});
|
|
80
|
-
return
|
|
79
|
+
}, tuple.overrideHandler);
|
|
80
|
+
return self;
|
|
81
81
|
}
|
|
82
82
|
tuple.overrideHandler = createOverride("@duplojs/utils/data-parser/tuple");
|
|
83
83
|
|
|
@@ -33,8 +33,8 @@ function union(options, definition) {
|
|
|
33
33
|
}
|
|
34
34
|
return error.SymbolDataParserErrorIssue;
|
|
35
35
|
},
|
|
36
|
-
});
|
|
37
|
-
return
|
|
36
|
+
}, union.overrideHandler);
|
|
37
|
+
return self;
|
|
38
38
|
}
|
|
39
39
|
union.overrideHandler = override.createOverride("@duplojs/utils/data-parser/union");
|
|
40
40
|
|
|
@@ -31,8 +31,8 @@ function union(options, definition) {
|
|
|
31
31
|
}
|
|
32
32
|
return SymbolDataParserErrorIssue;
|
|
33
33
|
},
|
|
34
|
-
});
|
|
35
|
-
return
|
|
34
|
+
}, union.overrideHandler);
|
|
35
|
+
return self;
|
|
36
36
|
}
|
|
37
37
|
union.overrideHandler = createOverride("@duplojs/utils/data-parser/union");
|
|
38
38
|
|
|
@@ -12,8 +12,8 @@ function unknown(definition) {
|
|
|
12
12
|
const self = base.dataParserInit(unknownKind, {
|
|
13
13
|
errorMessage: definition?.errorMessage,
|
|
14
14
|
checkers: definition?.checkers ?? [],
|
|
15
|
-
}, (data) => data);
|
|
16
|
-
return
|
|
15
|
+
}, (data) => data, unknown.overrideHandler);
|
|
16
|
+
return self;
|
|
17
17
|
}
|
|
18
18
|
unknown.overrideHandler = override.createOverride("@duplojs/utils/data-parser/unknown");
|
|
19
19
|
|
|
@@ -10,8 +10,8 @@ function unknown(definition) {
|
|
|
10
10
|
const self = dataParserInit(unknownKind, {
|
|
11
11
|
errorMessage: definition?.errorMessage,
|
|
12
12
|
checkers: definition?.checkers ?? [],
|
|
13
|
-
}, (data) => data);
|
|
14
|
-
return
|
|
13
|
+
}, (data) => data, unknown.overrideHandler);
|
|
14
|
+
return self;
|
|
15
15
|
}
|
|
16
16
|
unknown.overrideHandler = createOverride("@duplojs/utils/data-parser/unknown");
|
|
17
17
|
|
package/dist/metadata.json
CHANGED
|
@@ -4401,6 +4401,9 @@
|
|
|
4401
4401
|
{
|
|
4402
4402
|
"name": "array.d.ts"
|
|
4403
4403
|
},
|
|
4404
|
+
{
|
|
4405
|
+
"name": "function.d.ts"
|
|
4406
|
+
},
|
|
4404
4407
|
{
|
|
4405
4408
|
"name": "index.d.ts"
|
|
4406
4409
|
},
|
|
@@ -4421,6 +4424,9 @@
|
|
|
4421
4424
|
{
|
|
4422
4425
|
"name": "array.d.ts"
|
|
4423
4426
|
},
|
|
4427
|
+
{
|
|
4428
|
+
"name": "function.d.ts"
|
|
4429
|
+
},
|
|
4424
4430
|
{
|
|
4425
4431
|
"name": "getIncompleteUnion.d.ts"
|
|
4426
4432
|
},
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type AnyFunction, type IsEqual } from "../../../common";
|
|
2
|
+
export type ComplexMatchedFunction<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
3
|
+
Extract<GenericInput, AnyFunction>,
|
|
4
|
+
Extract<GenericPatternValue, AnyFunction>
|
|
5
|
+
] extends [
|
|
6
|
+
infer inferredInput extends AnyFunction,
|
|
7
|
+
infer inferredPatternValue extends AnyFunction
|
|
8
|
+
] ? Extract<inferredInput, inferredPatternValue> extends infer inferredValue ? IsEqual<inferredValue, never> extends true ? inferredPatternValue : inferredValue : never : never);
|
|
@@ -3,4 +3,6 @@ import { type ComplexMatchedObject } from "./object";
|
|
|
3
3
|
import { type ComplexMatchedArray } from "./array";
|
|
4
4
|
import { type PatternValueMaybeAll } from "../pattern";
|
|
5
5
|
import { type ComplexMatchedMaybeAll } from "./maybeAll";
|
|
6
|
-
|
|
6
|
+
import { type ComplexMatchedFunction } from "./function";
|
|
7
|
+
import { type AnyValue, type IsEqual } from "../../../common";
|
|
8
|
+
export type ComplexMatchedValue<GenericInput extends unknown, GenericPatternValue extends unknown> = (IsEqual<GenericInput, unknown> extends true ? AnyValue : GenericInput) extends infer InferredInput ? Exclude<GenericPatternValue, PatternValueMaybeAll> extends infer InferredPatternValue ? (ComplexMatchedPrimitive<InferredInput, InferredPatternValue> | ComplexMatchedObject<InferredInput, InferredPatternValue> | ComplexMatchedArray<InferredInput, InferredPatternValue> | ComplexMatchedFunction<InferredInput, InferredPatternValue> | ComplexMatchedMaybeAll<InferredInput, GenericPatternValue>) : never : never;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type Adaptor, type SimplifyTopLevel, type IsEqual } from "../../../common";
|
|
1
|
+
import { type Adaptor, type SimplifyTopLevel, type IsEqual, type AnyFunction } from "../../../common";
|
|
2
2
|
import { type ComplexMatchedValue } from ".";
|
|
3
3
|
import { type GetPropsWithValue } from "../../../object";
|
|
4
4
|
export type ComplexMatchedObject<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
5
|
-
Exclude<Extract<GenericInput, object>, readonly any[]>,
|
|
6
|
-
Exclude<Extract<GenericPatternValue, object>, readonly any[]>
|
|
5
|
+
Exclude<Extract<GenericInput, object>, readonly any[] | AnyFunction>,
|
|
6
|
+
Exclude<Extract<GenericPatternValue, object>, readonly any[] | AnyFunction>
|
|
7
7
|
] extends [
|
|
8
8
|
infer InferredInput,
|
|
9
9
|
infer InferredPatternValue
|
|
@@ -5,15 +5,15 @@ type ComplexUnMatchedArrayTuple<GenericInput extends unknown, GenericPatternValu
|
|
|
5
5
|
Extract<GenericPatternValue, AnyTuple>
|
|
6
6
|
] extends [
|
|
7
7
|
infer InferredInput,
|
|
8
|
-
infer
|
|
9
|
-
] ? InferredInput : never);
|
|
8
|
+
infer InferredPatternValue
|
|
9
|
+
] ? IsEqual<InferredPatternValue, never> extends true ? never : InferredInput : never);
|
|
10
10
|
type ComplexUnMatchedTupleTuple<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
11
11
|
Extract<GenericInput, AnyTuple>,
|
|
12
12
|
Extract<GenericPatternValue, AnyTuple>
|
|
13
13
|
] extends [
|
|
14
14
|
infer InferredInput,
|
|
15
15
|
infer InferredPatternValue
|
|
16
|
-
] ? IsEqual<InferredPatternValue, never> extends true ?
|
|
16
|
+
] ? IsEqual<InferredPatternValue, never> extends true ? never : IsUnion<InferredPatternValue> extends true ? never : InferredInput extends InferredPatternValue ? never : [
|
|
17
17
|
InferredInput,
|
|
18
18
|
InferredPatternValue
|
|
19
19
|
] extends [
|
|
@@ -23,5 +23,12 @@ type ComplexUnMatchedTupleTuple<GenericInput extends unknown, GenericPatternValu
|
|
|
23
23
|
IsEqual<InferredResultFirst, never> extends true ? InferredInputFirst : InferredResultFirst,
|
|
24
24
|
...Adaptor<IsEqual<InferredResultRest, never> extends true ? InferredPatternValueRest : InferredResultRest, readonly any[]>
|
|
25
25
|
] : never : never : never : never);
|
|
26
|
-
|
|
26
|
+
type ComplexUnMatchedArrayArray<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
27
|
+
Exclude<Extract<GenericInput, readonly any[]>, AnyTuple>,
|
|
28
|
+
Exclude<Extract<GenericPatternValue, readonly any[]>, AnyTuple>
|
|
29
|
+
] extends [
|
|
30
|
+
infer InferredInput extends readonly any[],
|
|
31
|
+
infer InferredPatternValue extends readonly any[]
|
|
32
|
+
] ? IsEqual<InferredInput, never> extends true ? never : InferredInput[number] extends infer InferredInnerValue ? InferredInnerValue extends any ? Extract<InferredInnerValue, InferredPatternValue[number]> extends infer InferredObviousMatch ? IsEqual<InferredObviousMatch, never> extends true ? ComplexUnMatchedValue<InferredInnerValue, InferredPatternValue[number]> extends infer InferredValue ? IsEqual<InferredValue, never> extends true ? never : InferredInput : never : never : never : never : never : never);
|
|
33
|
+
export type ComplexUnMatchedArray<GenericInput extends unknown, GenericPatternValue extends unknown> = Exclude<GenericPatternValue, readonly []> extends infer InferredPatternValue ? IsEqual<InferredPatternValue, never> extends true ? never : (ComplexUnMatchedTupleTuple<GenericInput, InferredPatternValue> | ComplexUnMatchedArrayTuple<GenericInput, InferredPatternValue> | ComplexUnMatchedArrayArray<GenericInput, InferredPatternValue>) : never;
|
|
27
34
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type AnyFunction } from "../../../common";
|
|
2
|
+
export type ComplexUnMatchedFunction<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
3
|
+
Extract<GenericInput, AnyFunction>,
|
|
4
|
+
Extract<GenericPatternValue, AnyFunction>
|
|
5
|
+
] extends [
|
|
6
|
+
infer inferredInput,
|
|
7
|
+
infer inferredPatternValue
|
|
8
|
+
] ? Exclude<inferredInput, inferredPatternValue> : never);
|
|
@@ -52,7 +52,18 @@ export type GetIncompleteUnion<GenericInput extends unknown, GenericPatternValue
|
|
|
52
52
|
] ? GetIncompleteUnion<InferredInput[number], InferredPatternValueFirst> extends infer InferredResultFirst ? FlatObject<{
|
|
53
53
|
"@duplojs/utils/[array.first": InferredResultFirst;
|
|
54
54
|
"@duplojs/utils/array.rest]": IsEqual<InferredResultFirst, {}> extends true ? GetIncompleteUnion<InferredInput, InferredPatternValueRest> : never;
|
|
55
|
-
}> : {} : {} : never) | (
|
|
55
|
+
}> : {} : {} : never) | ([
|
|
56
|
+
Exclude<Extract<GenericInput, readonly any[]>, AnyTuple>,
|
|
57
|
+
Exclude<Extract<GenericPatternValue, readonly any[]>, AnyTuple>
|
|
58
|
+
] extends [
|
|
59
|
+
infer InferredInput extends readonly any[],
|
|
60
|
+
infer InferredPatternValue extends readonly any[]
|
|
61
|
+
] ? Or<[
|
|
62
|
+
IsEqual<InferredPatternValue, never>,
|
|
63
|
+
IsEqual<InferredInput, never>
|
|
64
|
+
]> extends true ? never : IsEqual<Exclude<InferredInput[number], InferredPatternValue[number]>, never> extends true ? {} : {
|
|
65
|
+
"@duplojs/utils/[array]": true;
|
|
66
|
+
} : never) | (Extract<GenericPatternValue, PatternValueMaybeAll> extends infer InferredPatternValue ? IsEqual<InferredPatternValue, never> extends true ? never : {
|
|
56
67
|
"@duplojs/utils/{maybeAll}": true;
|
|
57
68
|
} : never) | ([
|
|
58
69
|
Extract<GenericInput, readonly any[]>,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type UnionToTuple } from "../../../common";
|
|
1
|
+
import { type AnyValue, type IsEqual, type UnionToTuple } from "../../../common";
|
|
2
2
|
import { type GetIncompleteUnion } from "./getIncompleteUnion";
|
|
3
3
|
import { type ComplexUnMatchedPrimitive } from "./primitive";
|
|
4
4
|
import { type ComplexUnMatchedObject } from "./object";
|
|
@@ -6,4 +6,11 @@ import { type ComplexUnMatchedUnionObject } from "./unionObject";
|
|
|
6
6
|
import { type ComplexUnMatchedArray } from "./array";
|
|
7
7
|
import { type PatternValueMaybeAll } from "../pattern";
|
|
8
8
|
import { type ComplexUnMatchedMaybeAll } from "./maybeAll";
|
|
9
|
-
|
|
9
|
+
import { type ComplexUnMatchedFunction } from "./function";
|
|
10
|
+
export type ComplexUnMatchedValue<GenericInput extends unknown, GenericPatternValue extends unknown> = (IsEqual<GenericInput, unknown> extends true ? AnyValue : GenericInput) extends infer InferredInput ? (InferredInput extends any ? UnionToTuple<keyof GetIncompleteUnion<InferredInput, GenericPatternValue>>["length"] extends 0 | 1 ? never : InferredInput : never) extends infer InferredIncompleteUnionInput ? [
|
|
11
|
+
Exclude<InferredInput, InferredIncompleteUnionInput>,
|
|
12
|
+
Exclude<GenericPatternValue, PatternValueMaybeAll>
|
|
13
|
+
] extends [
|
|
14
|
+
infer InferredSortedInput,
|
|
15
|
+
infer InferredPatternValue
|
|
16
|
+
] ? (ComplexUnMatchedPrimitive<InferredSortedInput, InferredPatternValue> | ComplexUnMatchedObject<InferredSortedInput, InferredPatternValue> | ComplexUnMatchedArray<InferredSortedInput, InferredPatternValue> | ComplexUnMatchedUnionObject<InferredSortedInput, InferredPatternValue> | ComplexUnMatchedFunction<InferredSortedInput, InferredPatternValue> | ComplexUnMatchedMaybeAll<InferredSortedInput, GenericPatternValue> | InferredIncompleteUnionInput) : never : never : never;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type Adaptor, type SimplifyTopLevel, type IsEqual, type IsUnion, type NeverCoalescing, type RemoveReadonly } from "../../../common";
|
|
1
|
+
import { type Adaptor, type SimplifyTopLevel, type IsEqual, type IsUnion, type NeverCoalescing, type RemoveReadonly, type AnyFunction } from "../../../common";
|
|
2
2
|
import { type ComplexUnMatchedValue } from ".";
|
|
3
3
|
export type ComplexUnMatchedObject<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
4
|
-
Exclude<Extract<GenericInput, object>, readonly any[]>,
|
|
5
|
-
Exclude<Extract<GenericPatternValue, object>, readonly any[]>
|
|
4
|
+
Exclude<Extract<GenericInput, object>, readonly any[] | AnyFunction>,
|
|
5
|
+
Exclude<Extract<GenericPatternValue, object>, readonly any[] | AnyFunction>
|
|
6
6
|
] extends [
|
|
7
7
|
infer InferredInput,
|
|
8
8
|
infer InferredPatternValue
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type MergeUnionTuple } from "../../array/types/mergeUnionTuple";
|
|
2
|
-
import { type AnyTuple, type Adaptor, type IsEqual, type ObjectKey, type WrappedValue } from "../../common";
|
|
2
|
+
import { type AnyTuple, type Adaptor, type IsEqual, type ObjectKey, type WrappedValue, type AnyValue } from "../../common";
|
|
3
3
|
export type EligiblePrimitiveMatch = string | number | bigint | boolean | undefined | null;
|
|
4
4
|
type PrimitivePattern<GenericInput extends unknown> = GenericInput extends EligiblePrimitiveMatch ? GenericInput : never;
|
|
5
5
|
type ObjectPattern<GenericInput extends unknown> = Exclude<GenericInput, readonly any[]> extends infer InferredInput ? [
|
|
@@ -25,7 +25,7 @@ export interface ToolPattern<GenericInput extends unknown = any, GenericPattern
|
|
|
25
25
|
[SymbolToolPatternFunction](input: GenericInput): boolean;
|
|
26
26
|
[SymbolToolPattern]: GenericPattern;
|
|
27
27
|
}
|
|
28
|
-
export type Pattern<GenericInput extends unknown = any> = (
|
|
28
|
+
export type Pattern<GenericInput extends unknown = any> = (IsEqual<GenericInput, unknown> extends true ? AnyValue : GenericInput) extends infer InferredInput ? (PredicatePattern<InferredInput> | ToolPattern<InferredInput> | PrimitivePattern<InferredInput> | ObjectPattern<InferredInput> | ArrayPattern<InferredInput>) : never;
|
|
29
29
|
declare const SymbolPatternValueMaybeAll: unique symbol;
|
|
30
30
|
type SymbolPatternValueMaybeAll = typeof SymbolPatternValueMaybeAll;
|
|
31
31
|
export interface PatternValueMaybeAll<GenericValue extends unknown = any> extends WrappedValue<GenericValue> {
|