map-transform 0.4.0-alpha.13 → 0.4.0-alpha.16
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 +39 -8
- package/dist/functions/compare.js +9 -1
- package/dist/functions/compare.js.map +1 -1
- package/dist/functions/map.js +3 -2
- package/dist/functions/map.js.map +1 -1
- package/dist/operations/apply.js +1 -4
- package/dist/operations/apply.js.map +1 -1
- 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/dist/utils/escape.d.ts +2 -0
- package/dist/utils/escape.js +8 -0
- package/dist/utils/escape.js.map +1 -0
- package/package.json +2 -2
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`
|
|
@@ -622,6 +645,9 @@ When an id is passed to the apply operation as `pipelinedId`, the pipeline will
|
|
|
622
645
|
be applied in the place of the apply operation and executed as if it was part of
|
|
623
646
|
the pipeline definition in the first place.
|
|
624
647
|
|
|
648
|
+
When no pipeline is provided, e.g. because the id is unknown, no pipeline will
|
|
649
|
+
be applied and the data will pass through untouched.
|
|
650
|
+
|
|
625
651
|
```javascript
|
|
626
652
|
import { mapTransform, apply, transform } from 'map-transform'
|
|
627
653
|
|
|
@@ -1044,8 +1070,9 @@ data.
|
|
|
1044
1070
|
|
|
1045
1071
|
The default is to compare the values resulting from `path` and `match` or
|
|
1046
1072
|
`matchPath` with equality, but other operations may be set on the `operator`
|
|
1047
|
-
property. Alternatives: `'='`, `'!='`, `'>'`, `'>='`, `'<'`, or `'<='`,
|
|
1048
|
-
|
|
1073
|
+
property. Alternatives: `'='`, `'!='`, `'>'`, `'>='`, `'<'`, or `'<='`, `in`, or
|
|
1074
|
+
`exists`. `in` requires equality to at least one of the elements in an array,
|
|
1075
|
+
and `exists` requires any value besides `undefined`.
|
|
1049
1076
|
|
|
1050
1077
|
If the `path` points to an array, the value is expected to be one of the values
|
|
1051
1078
|
in the array.
|
|
@@ -1079,6 +1106,9 @@ const def19o = [
|
|
|
1079
1106
|
]
|
|
1080
1107
|
```
|
|
1081
1108
|
|
|
1109
|
+
When you define the `compare` function as a transform object in JSON and need to
|
|
1110
|
+
compare to `undefined`, use `**undefined**` instead.
|
|
1111
|
+
|
|
1082
1112
|
#### `explode()` function
|
|
1083
1113
|
|
|
1084
1114
|
Given an object, the `explode` helper function will return an array with one
|
|
@@ -1139,7 +1169,8 @@ is returned instead.
|
|
|
1139
1169
|
|
|
1140
1170
|
The `map` function only supports primitive values, so any object will be mapped to
|
|
1141
1171
|
`undefined` or the value given by the wildcard in the dictionary. Arrays will be
|
|
1142
|
-
iterated to map each value in the array.
|
|
1172
|
+
iterated to map each value in the array. To map to or from `undefined` with a
|
|
1173
|
+
dictionary defined in JSON, use the value `**undefined**`.
|
|
1143
1174
|
|
|
1144
1175
|
Example:
|
|
1145
1176
|
|
|
@@ -1158,7 +1189,7 @@ const def28 = {
|
|
|
1158
1189
|
}
|
|
1159
1190
|
```
|
|
1160
1191
|
|
|
1161
|
-
When using `map` in an operation object, you may
|
|
1192
|
+
When using `map` in an operation object, you may provide a dictionary array
|
|
1162
1193
|
or a named dictionary on the `dictionary` property. An example of with a named
|
|
1163
1194
|
dictionary:
|
|
1164
1195
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const mapAny = require("map-any");
|
|
3
4
|
const pathGetter_1 = require("../utils/pathGetter");
|
|
5
|
+
const escape_1 = require("../utils/escape");
|
|
4
6
|
const not = (comparer) => (value, match) => !comparer(value, match);
|
|
5
7
|
const compareArrayOrValue = (comparer) => (value, match) => Array.isArray(value)
|
|
6
8
|
? value.some((value) => comparer(value, match))
|
|
@@ -11,6 +13,7 @@ const compareEqual = compareArrayOrValue((value, match) => value === match);
|
|
|
11
13
|
const compareIn = (value, match) => Array.isArray(match)
|
|
12
14
|
? match.some((item) => compareEqual(value, item))
|
|
13
15
|
: compareEqual(value, match);
|
|
16
|
+
const exists = (value) => value !== undefined;
|
|
14
17
|
function createComparer(operator) {
|
|
15
18
|
switch (operator) {
|
|
16
19
|
case '=':
|
|
@@ -27,6 +30,8 @@ function createComparer(operator) {
|
|
|
27
30
|
return compareArrayOrValueNumeric((value, match) => value <= match);
|
|
28
31
|
case 'in':
|
|
29
32
|
return compareIn;
|
|
33
|
+
case 'exists':
|
|
34
|
+
return exists;
|
|
30
35
|
default:
|
|
31
36
|
return (_value, _match) => false;
|
|
32
37
|
}
|
|
@@ -35,7 +40,10 @@ function compare({ path = '.', operator = '=', match, matchPath, not = false, })
|
|
|
35
40
|
const getValue = (0, pathGetter_1.default)(path);
|
|
36
41
|
const useRoot = typeof matchPath === 'string' && matchPath[0] === '^';
|
|
37
42
|
const realMatchPath = useRoot ? matchPath.slice(1) : matchPath;
|
|
38
|
-
const
|
|
43
|
+
const realMatchValue = mapAny(escape_1.unescapeValue, match);
|
|
44
|
+
const getMatch = typeof realMatchPath === 'string'
|
|
45
|
+
? (0, pathGetter_1.default)(realMatchPath)
|
|
46
|
+
: () => realMatchValue;
|
|
39
47
|
const comparer = createComparer(operator);
|
|
40
48
|
return (data, state) => {
|
|
41
49
|
const value = getValue(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/functions/compare.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/functions/compare.ts"],"names":[],"mappings":"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"}
|
package/dist/functions/map.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const mapAny = require("map-any");
|
|
4
|
+
const escape_1 = require("../utils/escape");
|
|
4
5
|
const isSupportedValue = (data) => ['string', 'number', 'boolean'].includes(typeof data) ||
|
|
5
6
|
data === null ||
|
|
6
7
|
data === undefined;
|
|
@@ -35,8 +36,8 @@ function map(operands, options) {
|
|
|
35
36
|
}
|
|
36
37
|
return (data, state) => {
|
|
37
38
|
const { rev = false } = state;
|
|
38
|
-
const match = translate(data, dictionary, rev);
|
|
39
|
-
return match === '*' ? data : match;
|
|
39
|
+
const match = translate((0, escape_1.escapeValue)(data), dictionary, rev);
|
|
40
|
+
return match === '*' ? data : (0, escape_1.unescapeValue)(match);
|
|
40
41
|
};
|
|
41
42
|
}
|
|
42
43
|
exports.default = map;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/functions/map.ts"],"names":[],"mappings":";;AAAA,kCAAkC;
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/functions/map.ts"],"names":[],"mappings":";;AAAA,kCAAkC;AAClC,4CAA4D;AAO5D,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAA2B,EAAE,CAClE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC;IACrD,IAAI,KAAK,IAAI;IACb,IAAI,KAAK,SAAS,CAAA;AAEpB,SAAS,cAAc,CACrB,KAAsB,EACtB,UAAsB,EACtB,SAAgB;IAGhB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAA;IAClE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,IAAa,EAAE,UAAsB,EAAE,GAAY;IACpE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAU,CAAA;IACtC,OAAO,MAAM,CAAC,CAAC,IAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QACvD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;YAC5D,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;SACnD;QACD,OAAO,KAAK,CAAA;IACd,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAgC,EAChC,YAA2B;IAE3B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,CAAA;KAChD;SAAM;QACL,OAAO,UAAU,CAAA;KAClB;AACH,CAAC;AAED,SAAwB,GAAG,CACzB,QAAkB,EAClB,OAAyC;IAEzC,MAAM,UAAU,GAAG,iBAAiB,CAClC,QAAQ,CAAC,UAAU,EACnB,OAAO,IAAI,OAAO,CAAC,YAAY,CAChC,CAAA;IACD,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,GAAG,EAAE,CAAC,SAAS,CAAA;KACvB;IACD,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,KAAK,CAAA;QAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QAC3D,OAAO,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,sBAAa,EAAC,KAAK,CAAC,CAAA;IACpD,CAAC,CAAA;AACH,CAAC;AAhBD,sBAgBC"}
|
package/dist/operations/apply.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const definitionHelpers_1 = require("../utils/definitionHelpers");
|
|
4
|
-
const stateHelpers_1 = require("../utils/stateHelpers");
|
|
5
4
|
const extractPipeline = (pipelineId, { pipelines }) => pipelineId && pipelines ? pipelines[pipelineId] : undefined;
|
|
6
5
|
function apply(pipelineId) {
|
|
7
6
|
return (options) => {
|
|
8
7
|
const pipeline = extractPipeline(pipelineId, options);
|
|
9
|
-
return pipeline
|
|
10
|
-
? (0, definitionHelpers_1.mapFunctionFromDef)(pipeline)(options)
|
|
11
|
-
: (state) => (0, stateHelpers_1.setStateValue)(state, undefined);
|
|
8
|
+
return pipeline ? (0, definitionHelpers_1.mapFunctionFromDef)(pipeline)(options) : (state) => state;
|
|
12
9
|
};
|
|
13
10
|
}
|
|
14
11
|
exports.default = apply;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/operations/apply.ts"],"names":[],"mappings":";;AACA,kEAA+D;
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/operations/apply.ts"],"names":[],"mappings":";;AACA,kEAA+D;AAE/D,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,EAAE,SAAS,EAAW,EAAE,EAAE,CACrE,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAE7D,SAAwB,KAAK,CAAC,UAAkB;IAC9C,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACrD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,sCAAkB,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAA;IAC5E,CAAC,CAAA;AACH,CAAC;AALD,wBAKC"}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unescapeValue = exports.escapeValue = void 0;
|
|
4
|
+
const escapeValue = (value) => value === undefined ? '**undefined**' : value;
|
|
5
|
+
exports.escapeValue = escapeValue;
|
|
6
|
+
const unescapeValue = (value) => value === '**undefined**' ? undefined : value;
|
|
7
|
+
exports.unescapeValue = unescapeValue;
|
|
8
|
+
//# sourceMappingURL=escape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/utils/escape.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,EAAE,CAC5C,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAA;AADlC,QAAA,WAAW,eACuB;AAExC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,EAAE,CAC9C,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;AADlC,QAAA,aAAa,iBACqB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "map-transform",
|
|
3
|
-
"version": "0.4.0-alpha.
|
|
3
|
+
"version": "0.4.0-alpha.16",
|
|
4
4
|
"description": "Map and transform objects with mapping definitions",
|
|
5
5
|
"author": "Kjell-Morten Bratsberg Thorsen <post@kjellmorten.no>",
|
|
6
6
|
"license": "ISC",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@integreat/ts-dev-setup": "^2.3.0",
|
|
47
47
|
"@types/deep-freeze": "^0.1.2",
|
|
48
|
-
"@types/sinon": "^10.0.
|
|
48
|
+
"@types/sinon": "^10.0.12",
|
|
49
49
|
"deep-freeze": "0.0.1",
|
|
50
50
|
"sinon": "^14.0.0"
|
|
51
51
|
}
|