@rimbu/deep 0.12.1 → 0.13.1
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/main/match.js +109 -34
- package/dist/main/match.js.map +1 -1
- package/dist/module/match.js +108 -33
- package/dist/module/match.js.map +1 -1
- package/dist/types/match.d.ts +37 -15
- package/package.json +4 -4
- package/src/match.ts +240 -44
package/dist/module/match.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/match.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,GAGX,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/match.ts"],"names":[],"mappings":"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"}
|
package/dist/types/match.d.ts
CHANGED
|
@@ -12,18 +12,17 @@ export declare namespace Match {
|
|
|
12
12
|
* Determines the various allowed match types for given type `T`.
|
|
13
13
|
* @typeparam T - the input value type
|
|
14
14
|
* @typeparam C - utility type
|
|
15
|
-
* @typeparam P - the
|
|
15
|
+
* @typeparam P - the parent type
|
|
16
16
|
* @typeparam R - the root object type
|
|
17
17
|
*/
|
|
18
|
-
type Entry<T, C, P, R> = IsAnyFunc<T> extends true ? T : IsPlainObj<T> extends true ? Match.WithResult<T, P, R, Match.Obj<T, C, P, R>> : IsArray<T> extends true ?
|
|
19
|
-
Match.Arr<T, C, P, R> | Match.Func<T, P, R, Match.Arr<T, C, P, R>> : Match.WithResult<T, P, R, {
|
|
18
|
+
type Entry<T, C, P, R> = IsAnyFunc<T> extends true ? T : IsPlainObj<T> extends true ? Match.WithResult<T, P, R, Match.Obj<T, C, P, R>> : IsArray<T> extends true ? Match.Arr<T, C, P, R> | Match.Entry<T[number & keyof T], C[number & keyof C], P, R>[] | Match.Func<T, P, R, Match.Arr<T, C, P, R> | Match.Entry<T[number & keyof T], C[number & keyof C], P, R>[]> : Match.WithResult<T, P, R, {
|
|
20
19
|
[K in keyof C]: C[K & keyof T];
|
|
21
20
|
}>;
|
|
22
21
|
/**
|
|
23
22
|
* The type that determines allowed matchers for objects.
|
|
24
23
|
* @typeparam T - the input value type
|
|
25
24
|
* @typeparam C - utility type
|
|
26
|
-
* @typeparam P - the
|
|
25
|
+
* @typeparam P - the parent type
|
|
27
26
|
* @typeparam R - the root object type
|
|
28
27
|
*/
|
|
29
28
|
type Obj<T, C, P, R> = Match.ObjProps<T, C, R> | Match.CompoundForObj<T, C, P, R>;
|
|
@@ -40,17 +39,25 @@ export declare namespace Match {
|
|
|
40
39
|
* The type that determines allowed matchers for arrays/tuples.
|
|
41
40
|
* @typeparam T - the input value type
|
|
42
41
|
* @typeparam C - utility type
|
|
43
|
-
* @typeparam P - the
|
|
42
|
+
* @typeparam P - the parent type
|
|
44
43
|
* @typeparam R - the root object type
|
|
45
44
|
*/
|
|
46
|
-
type Arr<T, C, P, R> = C | Match.CompoundForArr<T, C, P, R> | (Match.TupIndices<T, C, R> & {
|
|
47
|
-
[K in Match.CompoundType]?: never;
|
|
45
|
+
type Arr<T, C, P, R> = C | Match.CompoundForArr<T, C, P, R> | Match.TraversalForArr<T, C, R> | (Match.TupIndices<T, C, R> & {
|
|
46
|
+
[K in Match.CompoundType | Match.ArrayTraversalType]?: never;
|
|
48
47
|
});
|
|
48
|
+
/**
|
|
49
|
+
* A type that either directly results in result type `S` or is a function taking the value, parent, and root values, and
|
|
50
|
+
* returns a value of type `S`.
|
|
51
|
+
* @typeparam T - the input value type
|
|
52
|
+
* @typeparam P - the parent type
|
|
53
|
+
* @typeparam R - the root object type
|
|
54
|
+
* @typeparam S - the result type
|
|
55
|
+
*/
|
|
49
56
|
type WithResult<T, P, R, S> = S | Match.Func<T, P, R, S>;
|
|
50
57
|
/**
|
|
51
58
|
* Type used to determine the allowed function types. Always includes booleans.
|
|
52
59
|
* @typeparam T - the input value type
|
|
53
|
-
* @typeparam P - the
|
|
60
|
+
* @typeparam P - the parent type
|
|
54
61
|
* @typeparam R - the root object type
|
|
55
62
|
* @typeparam S - the allowed return value type
|
|
56
63
|
*/
|
|
@@ -68,6 +75,10 @@ export declare namespace Match {
|
|
|
68
75
|
* Compound keys used to indicate the type of compound.
|
|
69
76
|
*/
|
|
70
77
|
type CompoundType = 'every' | 'some' | 'none' | 'single';
|
|
78
|
+
/**
|
|
79
|
+
* Keys used to indicate an array match traversal.
|
|
80
|
+
*/
|
|
81
|
+
type ArrayTraversalType = `${CompoundType}Item`;
|
|
71
82
|
/**
|
|
72
83
|
* Compount matcher for objects, can only be an array staring with a compound type keyword.
|
|
73
84
|
* @typeparam T - the input value type
|
|
@@ -87,14 +98,25 @@ export declare namespace Match {
|
|
|
87
98
|
* @typeparam R - the root object type
|
|
88
99
|
*/
|
|
89
100
|
type CompoundForArr<T, C, P, R> = {
|
|
90
|
-
[K in CompoundType]: {
|
|
91
|
-
[K2 in CompoundType]?: K2 extends K ? Match.Entry<T, C, P, R>[] : never;
|
|
101
|
+
[K in Match.CompoundType]: {
|
|
102
|
+
[K2 in Match.CompoundType]?: K2 extends K ? Match.Entry<T, C, P, R>[] : never;
|
|
103
|
+
};
|
|
104
|
+
}[Match.CompoundType];
|
|
105
|
+
/**
|
|
106
|
+
* Defines an object containing exactly one `TraversalType` key, having a matcher for the array element type.
|
|
107
|
+
* @typeparam T - the input value type
|
|
108
|
+
* @typeparam C - utility type
|
|
109
|
+
* @typeparam R - the root object type
|
|
110
|
+
*/
|
|
111
|
+
type TraversalForArr<T, C, R> = {
|
|
112
|
+
[K in Match.ArrayTraversalType]: {
|
|
113
|
+
[K2 in Match.ArrayTraversalType]?: K2 extends K ? Match.Entry<T[number & keyof T], C[number & keyof C], T, R> : never;
|
|
92
114
|
};
|
|
93
|
-
}[
|
|
115
|
+
}[Match.ArrayTraversalType];
|
|
94
116
|
/**
|
|
95
|
-
* Utility type for collecting
|
|
117
|
+
* Utility type for collecting match failure reasons
|
|
96
118
|
*/
|
|
97
|
-
type
|
|
119
|
+
type FailureLog = string[];
|
|
98
120
|
}
|
|
99
121
|
/**
|
|
100
122
|
* Returns true if the given `value` object matches the given `matcher`, false otherwise.
|
|
@@ -102,7 +124,7 @@ export declare namespace Match {
|
|
|
102
124
|
* @typeparam C - utility type
|
|
103
125
|
* @param source - the value to match (should be a plain object)
|
|
104
126
|
* @param matcher - a matcher object or a function taking the matcher API and returning a match object
|
|
105
|
-
* @param
|
|
127
|
+
* @param failureLog - (optional) a string array that can be passed to collect reasons why the match failed
|
|
106
128
|
* @example
|
|
107
129
|
* ```ts
|
|
108
130
|
* const input = { a: 1, b: { c: true, d: 'a' } }
|
|
@@ -115,4 +137,4 @@ export declare namespace Match {
|
|
|
115
137
|
* // => true
|
|
116
138
|
* ```
|
|
117
139
|
*/
|
|
118
|
-
export declare function match<T, C extends Partial<T> = Partial<T>>(source: T, matcher: Match<T, C>,
|
|
140
|
+
export declare function match<T, C extends Partial<T> = Partial<T>>(source: T, matcher: Match<T, C>, failureLog?: Match.FailureLog): boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rimbu/deep",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.1",
|
|
4
4
|
"description": "Tools to use handle plain JS objects as immutable objects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"immutable",
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
},
|
|
58
58
|
"sideEffects": false,
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@rimbu/base": "^0.10.
|
|
61
|
-
"@rimbu/common": "^0.
|
|
60
|
+
"@rimbu/base": "^0.10.1",
|
|
61
|
+
"@rimbu/common": "^0.11.0",
|
|
62
62
|
"tslib": "^2.4.0"
|
|
63
63
|
},
|
|
64
64
|
"publishConfig": {
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
"index": "src/index.ts",
|
|
69
69
|
"replacer": "../../config/denoify-rimbu-replacer.js"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "28454fe17a4e51a42f6107f7b1733270d0d88de5"
|
|
72
72
|
}
|