map-transform 0.4.0-alpha.13 → 0.4.0-alpha.14
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 +27 -4
- package/dist/operations/ifelse.d.ts +1 -1
- package/dist/operations/ifelse.js +10 -3
- package/dist/operations/ifelse.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/utils/definitionHelpers.js +9 -0
- package/dist/utils/definitionHelpers.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -563,10 +563,10 @@ See the `transform()` operation for more on how defining as an object works.
|
|
|
563
563
|
|
|
564
564
|
#### `ifelse(conditionFn, truePipeline, falsePipeline)` operation
|
|
565
565
|
|
|
566
|
-
The `ifelse()` operation will run the `truePipeline` if the `conditionFn`
|
|
567
|
-
in
|
|
568
|
-
[the `filter()` operation](#filterconditionFn-operation)
|
|
569
|
-
requirements for the `conditionFn`.
|
|
566
|
+
The `ifelse()` operation will run the `truePipeline` if the `conditionFn`
|
|
567
|
+
results in something truthy, JavaScript tstyle, otherwise it will run the
|
|
568
|
+
`falsePipeline`. See [the `filter()` operation](#filterconditionFn-operation)
|
|
569
|
+
for more on the requirements for the `conditionFn`.
|
|
570
570
|
|
|
571
571
|
Both `truePipeline` and `falsePipeline` are optional, in case you only need to
|
|
572
572
|
apply a pipeline in one of the cases.
|
|
@@ -587,6 +587,29 @@ const def31 = [
|
|
|
587
587
|
]
|
|
588
588
|
```
|
|
589
589
|
|
|
590
|
+
Defining an if operation as an object:
|
|
591
|
+
|
|
592
|
+
```javascript
|
|
593
|
+
import { mapTransform, ifelse } from 'map-transform'
|
|
594
|
+
|
|
595
|
+
const def31b = [
|
|
596
|
+
'members'
|
|
597
|
+
{
|
|
598
|
+
name: 'name',
|
|
599
|
+
active: 'hasPayed'
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
$if: 'active',
|
|
603
|
+
then: set('active[]'),
|
|
604
|
+
else: set('inactive[]')
|
|
605
|
+
}
|
|
606
|
+
]
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
Note that `$if`, `then`, and `else` in the object notation may be any type of
|
|
610
|
+
pipeline definition. The only gotcha is that if `$if` is a function, it is
|
|
611
|
+
treated as a `conditionFn`, like in `def31`, not as a state mapper.
|
|
612
|
+
|
|
590
613
|
#### `iterate(pipeline)` operation
|
|
591
614
|
|
|
592
615
|
If you want something to be mapped over the items of an array, the `iterate`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { DataMapper, MapDefinition, Operation } from '../types';
|
|
2
|
-
export default function (
|
|
2
|
+
export default function (conditionDef: DataMapper | MapDefinition, trueDef?: MapDefinition, falseDef?: MapDefinition): Operation;
|
|
@@ -2,16 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const stateHelpers_1 = require("../utils/stateHelpers");
|
|
4
4
|
const definitionHelpers_1 = require("../utils/definitionHelpers");
|
|
5
|
-
function default_1(
|
|
5
|
+
function default_1(conditionDef, trueDef, falseDef) {
|
|
6
6
|
const falseFn = (0, definitionHelpers_1.mapFunctionFromDef)(falseDef);
|
|
7
|
-
if (
|
|
7
|
+
if (!conditionDef) {
|
|
8
8
|
return falseFn;
|
|
9
9
|
}
|
|
10
|
+
const conditionFn = typeof conditionDef === 'function'
|
|
11
|
+
? () => (state) => (0, stateHelpers_1.setStateValue)(state, conditionDef((0, stateHelpers_1.getStateValue)(state), state))
|
|
12
|
+
: (0, definitionHelpers_1.mapFunctionFromDef)(conditionDef);
|
|
10
13
|
const trueFn = (0, definitionHelpers_1.mapFunctionFromDef)(trueDef);
|
|
11
14
|
return (options) => {
|
|
15
|
+
const runCondition = conditionFn(options);
|
|
12
16
|
const runTrue = trueFn(options);
|
|
13
17
|
const runFalse = falseFn(options);
|
|
14
|
-
return (state) =>
|
|
18
|
+
return (state) => {
|
|
19
|
+
const bool = !!(0, stateHelpers_1.getStateValue)(runCondition(state));
|
|
20
|
+
return bool ? runTrue(state) : runFalse(state);
|
|
21
|
+
};
|
|
15
22
|
};
|
|
16
23
|
}
|
|
17
24
|
exports.default = default_1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifelse.js","sourceRoot":"","sources":["../../src/operations/ifelse.ts"],"names":[],"mappings":";;AACA,
|
|
1
|
+
{"version":3,"file":"ifelse.js","sourceRoot":"","sources":["../../src/operations/ifelse.ts"],"names":[],"mappings":";;AACA,wDAAoE;AACpE,kEAA+D;AAE/D,mBACE,YAAwC,EACxC,OAAuB,EACvB,QAAwB;IAExB,MAAM,OAAO,GAAG,IAAA,sCAAkB,EAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,OAAO,CAAA;KACf;IACD,MAAM,WAAW,GACf,OAAO,YAAY,KAAK,UAAU;QAChC,CAAC,CAAC,GAAG,EAAE,CACH,CAAC,KAAY,EAAS,EAAE,CACtB,IAAA,4BAAa,EACX,KAAK,EACJ,YAA2B,CAAC,IAAA,4BAAa,EAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAC1D;QACP,CAAC,CAAC,IAAA,sCAAkB,EAAC,YAAY,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,IAAA,sCAAkB,EAAC,OAAO,CAAC,CAAA;IAE1C,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAEjC,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,IAAI,GAAG,CAAC,CAAC,IAAA,4BAAa,EAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;YACjD,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAChD,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AA9BD,4BA8BC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -47,6 +47,10 @@ export interface FilterObject extends Operands {
|
|
|
47
47
|
$filter: string;
|
|
48
48
|
$direction?: string;
|
|
49
49
|
}
|
|
50
|
+
export interface IfObject extends Operands {
|
|
51
|
+
$if: string | MapDefinition;
|
|
52
|
+
$direction?: string;
|
|
53
|
+
}
|
|
50
54
|
export interface ApplyObject extends Operands {
|
|
51
55
|
$apply: string;
|
|
52
56
|
$iterate?: boolean;
|
|
@@ -57,7 +61,7 @@ export interface AltObject extends Operands {
|
|
|
57
61
|
$iterate?: boolean;
|
|
58
62
|
$direction?: string;
|
|
59
63
|
}
|
|
60
|
-
export declare type OperationObject = TransformObject | FilterObject | ApplyObject | AltObject;
|
|
64
|
+
export declare type OperationObject = TransformObject | FilterObject | IfObject | ApplyObject | AltObject;
|
|
61
65
|
export interface StateMapper {
|
|
62
66
|
(state: State): State;
|
|
63
67
|
getTarget?: (state: State) => unknown;
|
|
@@ -77,6 +81,7 @@ export interface MapObject {
|
|
|
77
81
|
$flip?: boolean;
|
|
78
82
|
$transform?: undefined;
|
|
79
83
|
$filter?: undefined;
|
|
84
|
+
$if?: undefined;
|
|
80
85
|
$apply?: undefined;
|
|
81
86
|
$alt?: undefined;
|
|
82
87
|
}
|
|
@@ -9,6 +9,7 @@ const iterate_1 = require("../operations/iterate");
|
|
|
9
9
|
const pipe_1 = require("../operations/pipe");
|
|
10
10
|
const transform_1 = require("../operations/transform");
|
|
11
11
|
const filter_1 = require("../operations/filter");
|
|
12
|
+
const ifelse_1 = require("../operations/ifelse");
|
|
12
13
|
const apply_1 = require("../operations/apply");
|
|
13
14
|
const alt_1 = require("../operations/alt");
|
|
14
15
|
const directionals_1 = require("../operations/directionals");
|
|
@@ -22,6 +23,7 @@ const isOperationType = (def, prop) => def[prop] !== undefined;
|
|
|
22
23
|
exports.isOperationType = isOperationType;
|
|
23
24
|
const hasOperationProps = (def) => (0, exports.isOperationType)(def, '$transform') ||
|
|
24
25
|
(0, exports.isOperationType)(def, '$filter') ||
|
|
26
|
+
(0, exports.isOperationType)(def, '$if') ||
|
|
25
27
|
(0, exports.isOperationType)(def, '$apply') ||
|
|
26
28
|
(0, exports.isOperationType)(def, '$alt') ||
|
|
27
29
|
(0, exports.isOperationType)(def, '$value');
|
|
@@ -57,6 +59,10 @@ const createOperation = (operationFn, fnProp, def) => (options) => {
|
|
|
57
59
|
? wrapFromDefinition(operationFn(fn(operands, options)), def)(options)
|
|
58
60
|
: functional_1.identity;
|
|
59
61
|
};
|
|
62
|
+
const createIfOperation = (def) => (options) => {
|
|
63
|
+
const { $if: conditionPipeline, then: thenPipeline, else: elsePipeline } = def;
|
|
64
|
+
return wrapFromDefinition((0, ifelse_1.default)(conditionPipeline, thenPipeline, elsePipeline), def)(options);
|
|
65
|
+
};
|
|
60
66
|
const createApplyOperation = (operationFn, def) => {
|
|
61
67
|
const pipelineId = def.$apply;
|
|
62
68
|
return wrapFromDefinition(operationFn(pipelineId), def);
|
|
@@ -71,6 +77,9 @@ const operationFromObject = (def) => {
|
|
|
71
77
|
else if ((0, exports.isOperationType)(def, '$filter')) {
|
|
72
78
|
return createOperation(filter_1.default, '$filter', def);
|
|
73
79
|
}
|
|
80
|
+
else if ((0, exports.isOperationType)(def, '$if')) {
|
|
81
|
+
return createIfOperation(def);
|
|
82
|
+
}
|
|
74
83
|
else if ((0, exports.isOperationType)(def, '$apply')) {
|
|
75
84
|
return createApplyOperation(apply_1.default, def);
|
|
76
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitionHelpers.js","sourceRoot":"","sources":["../../src/utils/definitionHelpers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"definitionHelpers.js","sourceRoot":"","sources":["../../src/utils/definitionHelpers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED