map-transform 0.5.6 → 1.0.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/README.md +130 -53
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/operations/alt.js +21 -23
- package/dist/operations/alt.js.map +1 -1
- package/dist/operations/apply.js +8 -5
- package/dist/operations/apply.js.map +1 -1
- package/dist/operations/concat.d.ts +2 -1
- package/dist/operations/concat.js +34 -11
- package/dist/operations/concat.js.map +1 -1
- package/dist/operations/directionals.d.ts +1 -1
- package/dist/operations/directionals.js +10 -5
- package/dist/operations/directionals.js.map +1 -1
- package/dist/operations/getSet.js +58 -28
- package/dist/operations/getSet.js.map +1 -1
- package/dist/operations/lookup.d.ts +3 -1
- package/dist/operations/lookup.js +27 -31
- package/dist/operations/lookup.js.map +1 -1
- package/dist/operations/merge.d.ts +2 -1
- package/dist/operations/merge.js +1 -1
- package/dist/operations/merge.js.map +1 -1
- package/dist/operations/modify.js +4 -7
- package/dist/operations/modify.js.map +1 -1
- package/dist/operations/pipe.js +4 -4
- package/dist/operations/pipe.js.map +1 -1
- package/dist/operations/props.js +107 -67
- package/dist/operations/props.js.map +1 -1
- package/dist/operations/transform.js +6 -12
- package/dist/operations/transform.js.map +1 -1
- package/dist/transformers/compare.js +17 -8
- package/dist/transformers/compare.js.map +1 -1
- package/dist/transformers/explode.d.ts +2 -3
- package/dist/transformers/explode.js +6 -7
- package/dist/transformers/explode.js.map +1 -1
- package/dist/transformers/index.d.ts +1 -0
- package/dist/transformers/index.js +2 -1
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/merge.d.ts +2 -2
- package/dist/transformers/merge.js +9 -4
- package/dist/transformers/merge.js.map +1 -1
- package/dist/transformers/sort.js +5 -5
- package/dist/transformers/sort.js.map +1 -1
- package/dist/utils/definitionHelpers.js +4 -4
- package/dist/utils/definitionHelpers.js.map +1 -1
- package/dist/utils/is.d.ts +2 -0
- package/dist/utils/is.js +2 -0
- package/dist/utils/is.js.map +1 -1
- package/dist/utils/modifyOperationObject.js +9 -10
- package/dist/utils/modifyOperationObject.js.map +1 -1
- package/dist/utils/stateHelpers.d.ts +26 -3
- package/dist/utils/stateHelpers.js +14 -7
- package/dist/utils/stateHelpers.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directionals.js","sourceRoot":"","sources":["../../src/operations/directionals.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"directionals.js","sourceRoot":"","sources":["../../src/operations/directionals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,MAAM,gBAAgB,GACpB,CAAC,GAAwB,EAAE,YAAqB,EAAa,EAAE,CAC/D,CAAC,OAAgB,EAAE,EAAE,CACrB,CAAC,IAAI,EAAE,EAAE;IACP,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;IACtD,OAAO,KAAK,UAAU,aAAa,CAAC,KAAK;QACvC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3E,CAAC,CAAA;AACH,CAAC,CAAA;AAEH,MAAM,UAAU,GAAG,CAAC,GAAwB;IAC1C,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAwB;IAC1C,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,MAA2B,EAC3B,MAA2B,EAC3B,SAAS,GAAG,KAAK;IAEjB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;QAC5D,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;QAC5D,OAAO,KAAK,UAAU,WAAW,CAAC,KAAK;YACrC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;YAC3D,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
import mapAny from 'map-any';
|
|
2
|
-
import
|
|
2
|
+
import modify from './modify.js';
|
|
3
|
+
import { getStateValue, setStateValue, getTargetFromState, setTargetOnState, getLastContext, getRootFromState, isNonvalue, revFromState, } from '../utils/stateHelpers.js';
|
|
3
4
|
import { isObject } from '../utils/is.js';
|
|
4
5
|
import { ensureArray, indexOfIfArray } from '../utils/array.js';
|
|
5
|
-
|
|
6
|
-
const adjustIsSet = (isSet, { rev = false, flip = false }) => xor(isSet, xor(rev, flip));
|
|
6
|
+
const adjustIsSet = (isSet, state) => revFromState(state, isSet);
|
|
7
7
|
function flatMapAny(fn) {
|
|
8
8
|
return (value, target) => Array.isArray(value)
|
|
9
9
|
? value.flatMap((value) => fn(value, target))
|
|
10
10
|
: fn(value, target);
|
|
11
11
|
}
|
|
12
|
+
function handleArrayPath(path) {
|
|
13
|
+
if (path.endsWith('][')) {
|
|
14
|
+
return [path.slice(0, path.length - 2), false, true];
|
|
15
|
+
}
|
|
16
|
+
const pos = path.indexOf('[');
|
|
17
|
+
if (path[pos - 1] === '\\') {
|
|
18
|
+
return [path.replace('\\[', '['), false, false];
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const isArr = path[pos + 1] === ']';
|
|
22
|
+
return [path.slice(0, pos), isArr, false];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
12
25
|
function preparePath(path) {
|
|
13
26
|
if (typeof path === 'string') {
|
|
14
27
|
if (path.includes('[')) {
|
|
15
|
-
|
|
16
|
-
return [path.slice(0, path.length - 2), false, true];
|
|
17
|
-
}
|
|
18
|
-
const pos = path.indexOf('[');
|
|
19
|
-
if (path[pos - 1] === '\\') {
|
|
20
|
-
return [path.replace('\\[', '['), false, false];
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const isArr = path[pos + 1] === ']';
|
|
24
|
-
return [path.slice(0, pos), isArr, false];
|
|
25
|
-
}
|
|
28
|
+
return handleArrayPath(path);
|
|
26
29
|
}
|
|
27
30
|
else if (path.startsWith('\\$')) {
|
|
28
31
|
return [path.slice(1), false, false];
|
|
@@ -81,6 +84,14 @@ function getSetParentOrRoot(path, isSet) {
|
|
|
81
84
|
}
|
|
82
85
|
};
|
|
83
86
|
}
|
|
87
|
+
const modifyOnSet = (isSet) => (options) => function modifyOnSet(next) {
|
|
88
|
+
const modifyFn = modify('.')(options)(next);
|
|
89
|
+
return async (state) => {
|
|
90
|
+
return adjustIsSet(isSet, state)
|
|
91
|
+
? await modifyFn(state)
|
|
92
|
+
: setStateValue(await next(state), undefined);
|
|
93
|
+
};
|
|
94
|
+
};
|
|
84
95
|
function doModifyGetValue(value, state, options) {
|
|
85
96
|
const { modifyGetValue } = options;
|
|
86
97
|
return typeof modifyGetValue === 'function'
|
|
@@ -89,8 +100,13 @@ function doModifyGetValue(value, state, options) {
|
|
|
89
100
|
}
|
|
90
101
|
function getSet(isSet = false) {
|
|
91
102
|
return (path) => {
|
|
92
|
-
if (typeof path === 'string'
|
|
93
|
-
|
|
103
|
+
if (typeof path === 'string') {
|
|
104
|
+
if (path === '$modify') {
|
|
105
|
+
return modifyOnSet(isSet);
|
|
106
|
+
}
|
|
107
|
+
else if (path[0] === '^') {
|
|
108
|
+
return getSetParentOrRoot(path, isSet);
|
|
109
|
+
}
|
|
94
110
|
}
|
|
95
111
|
const [basePath, isArr, isIndexProp] = preparePath(path);
|
|
96
112
|
const isIndex = typeof basePath === 'number';
|
|
@@ -127,24 +143,38 @@ function getSet(isSet = false) {
|
|
|
127
143
|
};
|
|
128
144
|
};
|
|
129
145
|
}
|
|
146
|
+
function resolveArrayNotation(path, pos) {
|
|
147
|
+
const index = Number.parseInt(path.slice(pos + 1), 10);
|
|
148
|
+
if (!Number.isNaN(index)) {
|
|
149
|
+
const basePath = path.slice(0, pos).trim();
|
|
150
|
+
return basePath ? [`${basePath}][`, index] : [index];
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
return path.trim();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function resolveParentNotation(path) {
|
|
157
|
+
if (path.startsWith('^^') && path.length > 2) {
|
|
158
|
+
return ['^^', path.slice(2).trim()];
|
|
159
|
+
}
|
|
160
|
+
else if (path.length > 1 && path !== '^^') {
|
|
161
|
+
return ['^^', path.slice(1).trim()];
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
return path.trim();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
130
167
|
function splitUpArrayAndParentNotation(path) {
|
|
131
168
|
const pos = path.indexOf('[');
|
|
132
169
|
if (pos > -1 && path[pos - 1] !== '\\') {
|
|
133
|
-
|
|
134
|
-
if (!Number.isNaN(index)) {
|
|
135
|
-
const basePath = path.slice(0, pos).trim();
|
|
136
|
-
return basePath ? [`${basePath}][`, index] : [index];
|
|
137
|
-
}
|
|
170
|
+
return resolveArrayNotation(path, pos);
|
|
138
171
|
}
|
|
139
172
|
else if (path.startsWith('^')) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
return ['^^', path.slice(1).trim()];
|
|
145
|
-
}
|
|
173
|
+
return resolveParentNotation(path);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
return path.trim();
|
|
146
177
|
}
|
|
147
|
-
return path.trim();
|
|
148
178
|
}
|
|
149
179
|
function pathToNextOperations(path, isSet = false) {
|
|
150
180
|
if (!path || path === '.') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSet.js","sourceRoot":"","sources":["../../src/operations/getSet.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,UAAU,
|
|
1
|
+
{"version":3,"file":"getSet.js","sourceRoot":"","sources":["../../src/operations/getSet.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,7 @@ export interface Props extends TransformerProps {
|
|
|
3
3
|
arrayPath: Path;
|
|
4
4
|
propPath: Path;
|
|
5
5
|
matchSeveral?: boolean;
|
|
6
|
+
flip?: boolean;
|
|
6
7
|
}
|
|
7
|
-
export
|
|
8
|
+
export declare function lookup({ arrayPath, propPath, matchSeveral, flip, }: Props): Operation;
|
|
9
|
+
export declare function lookdown(props: Props): Operation;
|
|
@@ -1,48 +1,44 @@
|
|
|
1
|
-
import
|
|
1
|
+
import mapAny from 'map-any/async.js';
|
|
2
|
+
import { getStateValue, setStateValue, goForward, revFromState, } from '../utils/stateHelpers.js';
|
|
2
3
|
import { defToDataMapper, defToOperation } from '../utils/definitionHelpers.js';
|
|
3
4
|
import { noopNext } from '../utils/stateHelpers.js';
|
|
4
|
-
import xor from '../utils/xor.js';
|
|
5
5
|
const FLATTEN_DEPTH = 1;
|
|
6
6
|
const flattenIfArray = (data) => Array.isArray(data) ? data.flat(FLATTEN_DEPTH) : data;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return val;
|
|
16
|
-
}
|
|
7
|
+
const findAllMatches = (getProp) => async function findAllMatches(value, arr, state) {
|
|
8
|
+
const results = await Promise.all(arr.map(async (val) => await getProp(val, state)));
|
|
9
|
+
return arr.filter((_v, index) => results[index] === value);
|
|
10
|
+
};
|
|
11
|
+
const findOneMatch = (getProp) => async function findOneMatch(value, arr, state) {
|
|
12
|
+
for (const val of arr) {
|
|
13
|
+
if ((await getProp(val, state)) === value) {
|
|
14
|
+
return val;
|
|
17
15
|
}
|
|
18
|
-
return undefined;
|
|
19
16
|
}
|
|
17
|
+
return undefined;
|
|
20
18
|
};
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
const { value: arr } = await getArray({})(noopNext)(state);
|
|
29
|
-
return arr ? matchInArray(arr, state) : async () => undefined;
|
|
30
|
-
}
|
|
19
|
+
const matchInArray = (getArray, match) => (state) => {
|
|
20
|
+
return async (value) => {
|
|
21
|
+
const fwdState = goForward(state);
|
|
22
|
+
const { value: arr } = await getArray({})(noopNext)(goForward(fwdState));
|
|
23
|
+
return Array.isArray(arr) ? match(value, arr, fwdState) : undefined;
|
|
31
24
|
};
|
|
32
25
|
};
|
|
33
|
-
export
|
|
34
|
-
return (options) =>
|
|
26
|
+
export function lookup({ arrayPath, propPath, matchSeveral = false, flip = false, }) {
|
|
27
|
+
return (options) => {
|
|
35
28
|
const getter = defToDataMapper(propPath, options);
|
|
36
|
-
const
|
|
37
|
-
|
|
29
|
+
const matchFn = matchInArray(defToOperation(arrayPath, options), matchSeveral ? findAllMatches(getter) : findOneMatch(getter));
|
|
30
|
+
const extractProp = (state) => async (value) => await getter(value, goForward(state));
|
|
31
|
+
return (next) => async function doLookup(state) {
|
|
38
32
|
const nextState = await next(state);
|
|
39
|
-
const fn = await mapValueFn(nextState);
|
|
40
33
|
const value = getStateValue(nextState);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
const rev = revFromState(state, flip);
|
|
35
|
+
const matcher = rev ? extractProp : matchFn;
|
|
36
|
+
const matches = await mapAny(matcher(nextState), value);
|
|
44
37
|
return setStateValue(nextState, flattenIfArray(matches));
|
|
45
38
|
};
|
|
46
39
|
};
|
|
47
40
|
}
|
|
41
|
+
export function lookdown(props) {
|
|
42
|
+
return lookup({ ...props, flip: !props.flip });
|
|
43
|
+
}
|
|
48
44
|
//# sourceMappingURL=lookup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/operations/lookup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/operations/lookup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type { Operation, TransformDefinition } from '../types.js';
|
|
1
|
+
import type { Operation, State, TransformDefinition } from '../types.js';
|
|
2
2
|
export declare function mergeExisting<T, U>(target: T[], source: U[]): U | (U | T | (U & T))[];
|
|
3
|
+
export declare function mergeStates(state: State, thisState: State): State;
|
|
3
4
|
export default function merge(...defs: TransformDefinition[]): Operation;
|
package/dist/operations/merge.js
CHANGED
|
@@ -14,7 +14,7 @@ export function mergeExisting(target, source) {
|
|
|
14
14
|
}
|
|
15
15
|
return target;
|
|
16
16
|
}
|
|
17
|
-
function mergeStates(state, thisState) {
|
|
17
|
+
export function mergeStates(state, thisState) {
|
|
18
18
|
const target = getStateValue(state);
|
|
19
19
|
const source = getStateValue(thisState);
|
|
20
20
|
const value = !isObject(source)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/operations/merge.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,MAAM,UAAU,aAAa,CAC3B,MAAW,EACX,MAAW;IAEX,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;QAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAE9B,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,CAAO,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;gBACjD,UAAU,EAAE,aAAa;aAC1B,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;KACX;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/operations/merge.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,MAAM,UAAU,aAAa,CAC3B,MAAW,EACX,MAAW;IAEX,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;QAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAE9B,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,CAAO,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;gBACjD,UAAU,EAAE,aAAa;aAC1B,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;KACX;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,SAAgB;IACxD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAEvC,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC7B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACnB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAA;IAE5D,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,GAAG,IAA2B;IAC1D,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAA;SACpE;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACjC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAC5C,CAAA;QAED,OAAO,KAAK,WAAW,KAAK;YAC1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAA;YACnC,IAAI,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE;gBACjD,OAAO,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;aAC3C;iBAAM;gBACL,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CACjD,CAAA;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;aAClC;QACH,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -7,13 +7,10 @@ export default function modify(def) {
|
|
|
7
7
|
const runFn = defToOperation(def, options);
|
|
8
8
|
return (next) => async (state) => {
|
|
9
9
|
const nextState = await next(state);
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
return setStateValue(nextState, isObject(nextValue) && isObject(thisValue)
|
|
15
|
-
? { ...thisValue, ...nextValue }
|
|
16
|
-
: nextValue);
|
|
10
|
+
const thisState = await runFn(options)(noopNext)(goForward(nextState));
|
|
11
|
+
const target = getTargetFromState(nextState);
|
|
12
|
+
const value = getStateValue(thisState);
|
|
13
|
+
return setStateValue(nextState, isObject(target) && isObject(value) ? { ...value, ...target } : target);
|
|
17
14
|
};
|
|
18
15
|
};
|
|
19
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modify.js","sourceRoot":"","sources":["../../src/operations/modify.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,SAAS,GACV,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAwB;IACrD,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC1C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAA;YACnC,MAAM,
|
|
1
|
+
{"version":3,"file":"modify.js","sourceRoot":"","sources":["../../src/operations/modify.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,SAAS,GACV,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAwB;IACrD,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC1C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAA;YACnC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;YAEtE,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;YAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;YAEtC,OAAO,aAAa,CAClB,SAAS,EACT,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CACvE,CAAA;QACH,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
package/dist/operations/pipe.js
CHANGED
|
@@ -3,8 +3,7 @@ import iterate from './iterate.js';
|
|
|
3
3
|
import transform from './transform.js';
|
|
4
4
|
import flatten from '../transformers/flatten.js';
|
|
5
5
|
import { defToOperations } from '../utils/definitionHelpers.js';
|
|
6
|
-
import
|
|
7
|
-
import { setValueFromState } from '../utils/stateHelpers.js';
|
|
6
|
+
import { setValueFromState, revFromState } from '../utils/stateHelpers.js';
|
|
8
7
|
function createRun(fns, next) {
|
|
9
8
|
let fn = next;
|
|
10
9
|
for (const f of fns) {
|
|
@@ -44,8 +43,9 @@ export default function pipe(defs, doReturnContext = false) {
|
|
|
44
43
|
const runFwd = createRun(fns, next);
|
|
45
44
|
const runRev = createRun(Array.from(fns).reverse(), next);
|
|
46
45
|
return async function doPipe(state) {
|
|
47
|
-
const
|
|
48
|
-
|
|
46
|
+
const thisState = revFromState(state)
|
|
47
|
+
? await runRev(state)
|
|
48
|
+
: await runFwd(state);
|
|
49
49
|
return doReturnContext ? thisState : setValueFromState(state, thisState);
|
|
50
50
|
};
|
|
51
51
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/operations/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,OAAO,MAAM,4BAA4B,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/operations/pipe.ts"],"names":[],"mappings":"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"}
|
package/dist/operations/props.js
CHANGED
|
@@ -1,41 +1,74 @@
|
|
|
1
1
|
import iterate from './iterate.js';
|
|
2
|
-
import modify from './modify.js';
|
|
3
2
|
import pipe from './pipe.js';
|
|
4
3
|
import { set } from './getSet.js';
|
|
5
|
-
import { divide } from './directionals.js';
|
|
4
|
+
import { divide, fwd, rev } from './directionals.js';
|
|
6
5
|
import plug from './plug.js';
|
|
7
|
-
import { getStateValue, setStateValue, setTargetOnState, setValueFromState, isNonvalueState, stopIteration, } from '../utils/stateHelpers.js';
|
|
6
|
+
import { getStateValue, setStateValue, getTargetFromState, setTargetOnState, setValueFromState, isNonvalueState, stopIteration, } from '../utils/stateHelpers.js';
|
|
8
7
|
import { isTransformObject, isTransformDefinition, defToOperation, } from '../utils/definitionHelpers.js';
|
|
9
8
|
import { noopNext } from '../utils/stateHelpers.js';
|
|
10
|
-
import { isObject } from '../utils/is.js';
|
|
11
|
-
function
|
|
12
|
-
const
|
|
13
|
-
return
|
|
9
|
+
import { isObject, isNotNullOrUndefined } from '../utils/is.js';
|
|
10
|
+
function pathHasModify(path) {
|
|
11
|
+
const index = path.indexOf('$modify');
|
|
12
|
+
return (index > -1 &&
|
|
13
|
+
(index === 0 || path[index - 1] === '.') &&
|
|
14
|
+
(path.length === index + 7 || path[index + 7] === '.'));
|
|
14
15
|
}
|
|
15
|
-
function
|
|
16
|
-
if (
|
|
17
|
-
|
|
18
|
-
return (rev = false) => !rev;
|
|
16
|
+
function isPathWithModify(pipeline) {
|
|
17
|
+
if (Array.isArray(pipeline)) {
|
|
18
|
+
return pipeline.some(isPathWithModify);
|
|
19
19
|
}
|
|
20
|
-
else if (
|
|
21
|
-
|
|
22
|
-
return (rev = false) => rev;
|
|
20
|
+
else if (typeof pipeline !== 'string') {
|
|
21
|
+
return false;
|
|
23
22
|
}
|
|
24
23
|
else {
|
|
25
|
-
return ()
|
|
24
|
+
return pathHasModify(pipeline);
|
|
26
25
|
}
|
|
27
26
|
}
|
|
27
|
+
function isRegularProp(entry) {
|
|
28
|
+
const [prop, pipeline] = entry;
|
|
29
|
+
return ((prop[0] !== '$' ||
|
|
30
|
+
(isPathWithModify(prop) && !isPathWithModify(pipeline))) &&
|
|
31
|
+
isTransformDefinition(pipeline));
|
|
32
|
+
}
|
|
33
|
+
function sortProps([aProp, aPipeline], [bProp, bPipeline]) {
|
|
34
|
+
const aIsModify = isPathWithModify(aProp) || isPathWithModify(aPipeline);
|
|
35
|
+
const bIsModify = isPathWithModify(bProp) || isPathWithModify(bPipeline);
|
|
36
|
+
return Number(aIsModify) - Number(bIsModify);
|
|
37
|
+
}
|
|
38
|
+
const checkDirection = (requiredDirection, directionKeyword, directionAlias) => requiredDirection === directionKeyword ||
|
|
39
|
+
(directionAlias && requiredDirection === directionAlias);
|
|
40
|
+
const resolveDirection = (direction, options) => checkDirection(direction, 'rev', options.revAlias)
|
|
41
|
+
? true
|
|
42
|
+
: checkDirection(direction, 'fwd', options.fwdAlias)
|
|
43
|
+
? false
|
|
44
|
+
: undefined;
|
|
45
|
+
function wrapInDirectional(operation, direction) {
|
|
46
|
+
return (options) => {
|
|
47
|
+
const isRev = resolveDirection(direction, options);
|
|
48
|
+
if (isRev === undefined) {
|
|
49
|
+
return operation(options);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const wrapOp = isRev ? rev : fwd;
|
|
53
|
+
return wrapOp(operation)(options);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const mergeTargetAndValueOperation = () => (next) => async function mergeTargetAndValue(state) {
|
|
58
|
+
const nextState = await next(state);
|
|
59
|
+
const target = getTargetFromState(nextState);
|
|
60
|
+
const value = getStateValue(nextState);
|
|
61
|
+
return isObject(target) && isObject(value)
|
|
62
|
+
? setStateValue(nextState, { ...target, ...value })
|
|
63
|
+
: nextState;
|
|
64
|
+
};
|
|
28
65
|
function runOperationWithOriginalValue({ value }) {
|
|
29
66
|
return async (state, fn) => {
|
|
30
|
-
const nextState = await fn(
|
|
31
|
-
const target = state
|
|
67
|
+
const nextState = await fn(setStateValue(state, value));
|
|
68
|
+
const target = getTargetFromState(state);
|
|
32
69
|
const nextValue = getStateValue(nextState);
|
|
33
70
|
const thisState = setTargetOnState(nextState, nextValue);
|
|
34
|
-
if (isObject(target) && isObject(nextValue)) {
|
|
35
|
-
const thisValue = { ...target, ...nextValue };
|
|
36
|
-
return setStateValue(thisState, thisValue);
|
|
37
|
-
}
|
|
38
|
-
else if (isObject(target)) {
|
|
71
|
+
if (isObject(target) && !isObject(nextValue)) {
|
|
39
72
|
return setStateValue(thisState, target);
|
|
40
73
|
}
|
|
41
74
|
else {
|
|
@@ -54,45 +87,49 @@ function removeSlash(prop) {
|
|
|
54
87
|
}
|
|
55
88
|
return prop;
|
|
56
89
|
}
|
|
90
|
+
function createDirectionalOperation(pipeline, onlyFwd, onlyRev) {
|
|
91
|
+
if (onlyRev && onlyFwd) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
else if (onlyRev) {
|
|
95
|
+
return divide(plug(), pipeline, true);
|
|
96
|
+
}
|
|
97
|
+
else if (onlyFwd) {
|
|
98
|
+
return divide(pipeline, plug(), true);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return pipe(pipeline);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
57
104
|
const createSetPipeline = (options) => function createSetPipeline([prop, pipeline]) {
|
|
58
105
|
if (isTransformObject(pipeline)) {
|
|
59
|
-
pipeline =
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
106
|
+
pipeline = [
|
|
107
|
+
rev(mergeTargetAndValueOperation),
|
|
108
|
+
{
|
|
109
|
+
...pipeline,
|
|
110
|
+
$iterate: pipeline.$iterate || isArr(prop),
|
|
111
|
+
},
|
|
112
|
+
];
|
|
63
113
|
}
|
|
64
114
|
const unslashedProp = removeSlash(prop);
|
|
65
|
-
const
|
|
115
|
+
const isSlashed = prop !== unslashedProp;
|
|
116
|
+
const onlyFwd = isPathWithModify(unslashedProp);
|
|
117
|
+
const onlyRev = isSlashed || isPathWithModify(pipeline);
|
|
66
118
|
const operations = [defToOperation(pipeline, options), set(unslashedProp)];
|
|
67
|
-
return onlyRev
|
|
68
|
-
? divide(plug(), operations)(options)
|
|
69
|
-
: pipe(operations)(options);
|
|
119
|
+
return createDirectionalOperation(operations, onlyFwd, onlyRev);
|
|
70
120
|
};
|
|
71
|
-
|
|
72
|
-
if (
|
|
73
|
-
|
|
74
|
-
return (next) => {
|
|
75
|
-
const fn = modifyFn(next);
|
|
76
|
-
return async (state, nextState) => await fn(setTargetOnState(state, getStateValue(nextState)));
|
|
77
|
-
};
|
|
121
|
+
const runOperations = (stateMappers, options) => async (state) => {
|
|
122
|
+
if (isNonvalueState(state, options.nonvalues)) {
|
|
123
|
+
return state;
|
|
78
124
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (isNonvalueState(state, options.nonvalues)) {
|
|
85
|
-
return state;
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
const run = runOperationWithOriginalValue(state);
|
|
89
|
-
let nextState = state;
|
|
90
|
-
for (const operation of operations) {
|
|
91
|
-
nextState = await run(nextState, operation);
|
|
92
|
-
}
|
|
93
|
-
return modifyFn(nextState, state);
|
|
125
|
+
else {
|
|
126
|
+
const run = runOperationWithOriginalValue(state);
|
|
127
|
+
let nextState = state;
|
|
128
|
+
for (const stateMapper of stateMappers) {
|
|
129
|
+
nextState = await run(nextState, stateMapper(noopNext));
|
|
94
130
|
}
|
|
95
|
-
|
|
131
|
+
return nextState;
|
|
132
|
+
}
|
|
96
133
|
};
|
|
97
134
|
const setStateProps = (state, noDefaults, flip) => ({
|
|
98
135
|
...state,
|
|
@@ -100,33 +137,36 @@ const setStateProps = (state, noDefaults, flip) => ({
|
|
|
100
137
|
flip: flip || state.flip || false,
|
|
101
138
|
target: undefined,
|
|
102
139
|
});
|
|
103
|
-
|
|
104
|
-
|
|
140
|
+
const fixModifyPath = (def) => def.$modify === true ? { ...def, $modify: '.' } : def;
|
|
141
|
+
const createStateMappers = (def, options) => Object.entries(def)
|
|
142
|
+
.filter(isRegularProp)
|
|
143
|
+
.sort(sortProps)
|
|
144
|
+
.map(createSetPipeline(options))
|
|
145
|
+
.filter(isNotNullOrUndefined)
|
|
146
|
+
.map((fn) => fn(options));
|
|
147
|
+
function prepareOperation(def) {
|
|
105
148
|
return (options) => {
|
|
106
|
-
const nextStateMappers =
|
|
107
|
-
.filter(isRegularProp)
|
|
108
|
-
.map(createSetPipeline(options));
|
|
149
|
+
const nextStateMappers = createStateMappers(fixModifyPath(def), options);
|
|
109
150
|
if (nextStateMappers.length === 0) {
|
|
110
151
|
return (next) => async (state) => setStateValue(await next(state), {});
|
|
111
152
|
}
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const isWrongDirectionFn = isWrongDirection(def.$direction, options);
|
|
153
|
+
const run = runOperations(nextStateMappers, options);
|
|
154
|
+
const runWithIterateWhenNeeded = def.$iterate === true ? iterate(() => () => run)(options)(noopNext) : run;
|
|
115
155
|
return (next) => {
|
|
116
|
-
const run = runFn(noopNext);
|
|
117
156
|
return async function doMutate(state) {
|
|
118
157
|
const nextState = await next(state);
|
|
119
|
-
if (isNonvalueState(nextState, options.nonvalues)
|
|
120
|
-
isWrongDirectionFn(nextState.rev)) {
|
|
158
|
+
if (isNonvalueState(nextState, options.nonvalues)) {
|
|
121
159
|
return nextState;
|
|
122
160
|
}
|
|
123
161
|
const propsState = stopIteration(setStateProps(nextState, def.$noDefaults, def.$flip));
|
|
124
|
-
const thisState =
|
|
125
|
-
? await iterate(() => () => run)(options)(noopNext)(propsState)
|
|
126
|
-
: await run(propsState);
|
|
162
|
+
const thisState = await runWithIterateWhenNeeded(propsState);
|
|
127
163
|
return setValueFromState(nextState, thisState);
|
|
128
164
|
};
|
|
129
165
|
};
|
|
130
166
|
};
|
|
131
167
|
}
|
|
168
|
+
export default function props(def) {
|
|
169
|
+
const operation = prepareOperation(def);
|
|
170
|
+
return wrapInDirectional(operation, def.$direction);
|
|
171
|
+
}
|
|
132
172
|
//# sourceMappingURL=props.js.map
|