map-transform 0.4.0-alpha.11 → 0.4.0-alpha.12
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 +10 -1
- package/dist/operations/mutate.js +33 -14
- package/dist/operations/mutate.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -840,7 +840,16 @@ const def34b = {
|
|
|
840
840
|
}
|
|
841
841
|
```
|
|
842
842
|
|
|
843
|
-
Note that `$modify` may also be set further down in the object structure.
|
|
843
|
+
Note that `$modify` may also be set further down in the object structure. Also,
|
|
844
|
+
in some cases it may make more sense to specify a path in the source data to
|
|
845
|
+
merge with:
|
|
846
|
+
|
|
847
|
+
```javascript
|
|
848
|
+
const def34c = {
|
|
849
|
+
$modify: 'response',
|
|
850
|
+
data: 'response.data.deeply.placed.items',
|
|
851
|
+
}
|
|
852
|
+
```
|
|
844
853
|
|
|
845
854
|
#### `fwd(pipeline)` and `rev(pipeline)` operation
|
|
846
855
|
|
|
@@ -13,8 +13,13 @@ const flipIfNeeded = (pipe, shouldFlip) => {
|
|
|
13
13
|
const pipeline = shouldFlip ? pipe.slice().reverse().map(setIfPath) : pipe;
|
|
14
14
|
return pipeline;
|
|
15
15
|
};
|
|
16
|
-
const shouldIterate = (def, path) => ((0, definitionHelpers_1.isMapObject)(def) && def
|
|
17
|
-
const shouldModify = (def) => (0, definitionHelpers_1.isMapObject)(def) && def
|
|
16
|
+
const shouldIterate = (def, path) => ((0, definitionHelpers_1.isMapObject)(def) && def.$iterate === true) || (0, is_1.isArrayPath)(path);
|
|
17
|
+
const shouldModify = (def) => (0, definitionHelpers_1.isMapObject)(def) && !!def.$modify;
|
|
18
|
+
const extractModifyPath = (def) => shouldModify(def)
|
|
19
|
+
? def.$modify === true
|
|
20
|
+
? '.'
|
|
21
|
+
: def.$modify || undefined
|
|
22
|
+
: undefined;
|
|
18
23
|
const extractRealPath = (path) => {
|
|
19
24
|
const [realPath, index] = path.split('/');
|
|
20
25
|
return [realPath, index !== undefined];
|
|
@@ -25,16 +30,30 @@ const setTargetOnState = (state, target) => ({
|
|
|
25
30
|
});
|
|
26
31
|
const runWithTarget = (options, state) => (prevState, operation) => operation(options)(setTargetOnState(state, prevState?.value));
|
|
27
32
|
const revertTarget = ({ target, ...state }, originalState) => originalState.target ? setTargetOnState(state, originalState.target) : state;
|
|
28
|
-
|
|
33
|
+
function modifyStateValue(prevStateValue, nextState) {
|
|
34
|
+
const nextStateValue = (0, stateHelpers_1.getStateValue)(nextState);
|
|
35
|
+
if ((0, is_1.isObject)(prevStateValue) && (0, is_1.isObject)(nextStateValue)) {
|
|
36
|
+
return (0, stateHelpers_1.setStateValue)(nextState, {
|
|
37
|
+
...prevStateValue,
|
|
38
|
+
...nextStateValue,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return nextState;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const run = (operations, modifySourcePath) => function (options) {
|
|
29
46
|
const shouldSkip = (0, stateHelpers_1.shouldSkipMutation)(options);
|
|
30
|
-
return (state)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
47
|
+
return function runMutation(state) {
|
|
48
|
+
if (shouldSkip(state)) {
|
|
49
|
+
return (0, stateHelpers_1.setStateValue)(state, undefined);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const nextState = revertTarget(operations.reduce(runWithTarget(options, state), undefined) || state, state);
|
|
53
|
+
return modifySourcePath
|
|
54
|
+
? modifyStateValue((0, getSet_1.getValueFromState)(modifySourcePath)(state), nextState)
|
|
55
|
+
: nextState;
|
|
56
|
+
}
|
|
38
57
|
};
|
|
39
58
|
};
|
|
40
59
|
const objectToMapFunction = (objectDef, shouldFlip, parentPath = '') => Object.entries(objectDef)
|
|
@@ -64,10 +83,10 @@ const objectToMapFunction = (objectDef, shouldFlip, parentPath = '') => Object.e
|
|
|
64
83
|
.filter((pipeline) => !!pipeline);
|
|
65
84
|
function runAndIterate(def, shouldFlip, nextPath = '') {
|
|
66
85
|
const operations = objectToMapFunction(def, shouldFlip);
|
|
67
|
-
const
|
|
86
|
+
const modifySourcePath = extractModifyPath(def);
|
|
68
87
|
return shouldIterate(def, nextPath)
|
|
69
|
-
? (0, iterate_1.default)(run(operations,
|
|
70
|
-
: run(operations,
|
|
88
|
+
? (0, iterate_1.default)(run(operations, modifySourcePath))
|
|
89
|
+
: run(operations, modifySourcePath);
|
|
71
90
|
}
|
|
72
91
|
function mutate(def) {
|
|
73
92
|
if (Object.keys(def).length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/operations/mutate.ts"],"names":[],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/operations/mutate.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -77,7 +77,7 @@ export declare type MapPipe = (MapObject | Operation | OperationObject | Path |
|
|
|
77
77
|
export interface MapObject {
|
|
78
78
|
[key: string]: MapDefinition | undefined | boolean;
|
|
79
79
|
$iterate?: boolean;
|
|
80
|
-
$modify?: boolean;
|
|
80
|
+
$modify?: boolean | Path;
|
|
81
81
|
$flip?: boolean;
|
|
82
82
|
$transform?: undefined;
|
|
83
83
|
$filter?: undefined;
|
package/package.json
CHANGED