map-transform 0.3.11 → 0.4.0-alpha.10
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/LICENSE +1 -1
- package/README.md +626 -98
- package/ava-dist.config.cjs +3 -0
- package/ava.config.cjs +5 -0
- package/dist/functions/compare.d.ts +6 -5
- package/dist/functions/compare.js +21 -16
- package/dist/functions/compare.js.map +1 -1
- package/dist/functions/explode.d.ts +7 -0
- package/dist/functions/explode.js +53 -0
- package/dist/functions/explode.js.map +1 -0
- package/dist/functions/get.d.ts +2 -2
- package/dist/functions/get.js +4 -2
- package/dist/functions/get.js.map +1 -1
- package/dist/functions/index.d.ts +16 -3
- package/dist/functions/index.js +17 -4
- package/dist/functions/index.js.map +1 -1
- package/dist/functions/join.d.ts +2 -2
- package/dist/functions/join.js +1 -1
- package/dist/functions/join.js.map +1 -1
- package/dist/functions/joinSplit.d.ts +8 -0
- package/dist/functions/joinSplit.js +32 -0
- package/dist/functions/joinSplit.js.map +1 -0
- package/dist/functions/logical.d.ts +7 -0
- package/dist/functions/logical.js +24 -0
- package/dist/functions/logical.js.map +1 -0
- package/dist/functions/map.d.ts +8 -0
- package/dist/functions/map.js +43 -0
- package/dist/functions/map.js.map +1 -0
- package/dist/functions/not.d.ts +2 -2
- package/dist/functions/not.js.map +1 -1
- package/dist/functions/sort.d.ts +7 -0
- package/dist/functions/sort.js +33 -0
- package/dist/functions/sort.js.map +1 -0
- package/dist/functions/template.d.ts +7 -0
- package/dist/functions/template.js +29 -0
- package/dist/functions/template.js.map +1 -0
- package/dist/functions/validate.d.ts +2 -2
- package/dist/functions/validate.js +1 -1
- package/dist/functions/validate.js.map +1 -1
- package/dist/functions/value.d.ts +4 -0
- package/dist/functions/value.js +20 -0
- package/dist/functions/value.js.map +1 -0
- package/dist/index.d.ts +8 -7
- package/dist/index.js +44 -28
- package/dist/index.js.map +1 -1
- package/dist/operations/alt.js +4 -9
- package/dist/operations/alt.js.map +1 -1
- package/dist/operations/apply.d.ts +2 -0
- package/dist/operations/apply.js +15 -0
- package/dist/operations/apply.js.map +1 -0
- package/dist/operations/concat.js +5 -5
- package/dist/operations/concat.js.map +1 -1
- package/dist/operations/directionals.d.ts +1 -1
- package/dist/operations/directionals.js +6 -5
- package/dist/operations/directionals.js.map +1 -1
- package/dist/operations/filter.d.ts +2 -2
- package/dist/operations/filter.js +10 -5
- package/dist/operations/filter.js.map +1 -1
- package/dist/operations/fixed.d.ts +2 -2
- package/dist/operations/fixed.js +5 -1
- package/dist/operations/fixed.js.map +1 -1
- package/dist/operations/getSet.d.ts +3 -3
- package/dist/operations/getSet.js +23 -24
- package/dist/operations/getSet.js.map +1 -1
- package/dist/operations/ifelse.d.ts +2 -0
- package/dist/operations/ifelse.js +20 -0
- package/dist/operations/ifelse.js.map +1 -0
- package/dist/operations/iterate.d.ts +2 -0
- package/dist/operations/iterate.js +21 -0
- package/dist/operations/iterate.js.map +1 -0
- package/dist/operations/lookup.js +3 -3
- package/dist/operations/lookup.js.map +1 -1
- package/dist/operations/merge.d.ts +3 -0
- package/dist/operations/merge.js +43 -0
- package/dist/operations/merge.js.map +1 -0
- package/dist/operations/modify.d.ts +2 -0
- package/dist/operations/modify.js +18 -0
- package/dist/operations/modify.js.map +1 -0
- package/dist/operations/mutate.js +72 -7
- package/dist/operations/mutate.js.map +1 -1
- package/dist/operations/pipe.js +19 -5
- package/dist/operations/pipe.js.map +1 -1
- package/dist/operations/plug.js +1 -1
- package/dist/operations/plug.js.map +1 -1
- package/dist/operations/root.js +3 -2
- package/dist/operations/root.js.map +1 -1
- package/dist/operations/transform.js +4 -4
- package/dist/operations/transform.js.map +1 -1
- package/dist/operations/value.d.ts +2 -2
- package/dist/operations/value.js +5 -1
- package/dist/operations/value.js.map +1 -1
- package/dist/types.d.ts +51 -23
- package/dist/utils/array.d.ts +2 -0
- package/dist/utils/array.js +12 -0
- package/dist/utils/array.js.map +1 -0
- package/dist/utils/definitionHelpers.d.ts +8 -9
- package/dist/utils/definitionHelpers.js +80 -46
- package/dist/utils/definitionHelpers.js.map +1 -1
- package/dist/utils/functional.d.ts +3 -0
- package/dist/utils/functional.js +10 -0
- package/dist/utils/functional.js.map +1 -0
- package/dist/utils/is.d.ts +1 -0
- package/dist/utils/is.js +6 -0
- package/dist/utils/is.js.map +1 -0
- package/dist/utils/pathGetter.d.ts +5 -3
- package/dist/utils/pathGetter.js +21 -11
- package/dist/utils/pathGetter.js.map +1 -1
- package/dist/utils/pathSetter.d.ts +5 -4
- package/dist/utils/pathSetter.js +36 -43
- package/dist/utils/pathSetter.js.map +1 -1
- package/dist/utils/stateHelpers.d.ts +8 -36
- package/dist/utils/stateHelpers.js +26 -10
- package/dist/utils/stateHelpers.js.map +1 -1
- package/package.json +16 -56
- package/dist/functions/alt.d.ts +0 -6
- package/dist/functions/alt.js +0 -10
- package/dist/functions/alt.js.map +0 -1
- package/dist/utils/objectToMapFunction.d.ts +0 -2
- package/dist/utils/objectToMapFunction.js +0 -34
- package/dist/utils/objectToMapFunction.js.map +0 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
|
|
1
|
+
import { Path } from '../types';
|
|
2
|
+
export interface Getter {
|
|
3
|
+
(object?: unknown): unknown;
|
|
4
|
+
}
|
|
5
|
+
export default function pathGetter(path: Path | null): Getter;
|
package/dist/utils/pathGetter.js
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const definitionHelpers_1 = require("./definitionHelpers");
|
|
4
|
+
const is_1 = require("./is");
|
|
5
|
+
const array_1 = require("./array");
|
|
6
|
+
const functional_1 = require("./functional");
|
|
4
7
|
const numberOrString = (val) => {
|
|
5
8
|
const num = Number.parseInt(val, 10);
|
|
6
|
-
return
|
|
9
|
+
return Number.isNaN(num) ? val : num;
|
|
7
10
|
};
|
|
8
|
-
const split = (str) => str.split(/\[|]?\.|]/).filter((str) => str !== '')
|
|
9
|
-
const getProp = (prop) => (object) => (object) ? object[prop] : undefined;
|
|
10
|
-
const getArrayIndex = (index) => (arr) =>
|
|
11
|
-
const getObjectOrArray = (fn) => (object) =>
|
|
12
|
-
|
|
13
|
-
const
|
|
11
|
+
const split = (str) => str.split(/\[|]?\.|]/).filter((str) => str !== '');
|
|
12
|
+
const getProp = (prop) => (object) => (0, is_1.isObject)(object) ? object[prop] : undefined;
|
|
13
|
+
const getArrayIndex = (index) => (arr) => Array.isArray(arr) ? arr[index] : undefined;
|
|
14
|
+
const getObjectOrArray = (fn) => (object) => Array.isArray(object) ? object.flatMap(fn) : fn(object);
|
|
15
|
+
function createGetter(part) {
|
|
16
|
+
const prop = numberOrString(part);
|
|
17
|
+
return typeof prop === 'number'
|
|
18
|
+
? getArrayIndex(prop)
|
|
19
|
+
: getObjectOrArray(getProp(prop));
|
|
20
|
+
}
|
|
14
21
|
function pathGetter(path) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
:
|
|
22
|
+
if ((0, definitionHelpers_1.isPath)(path)) {
|
|
23
|
+
const getters = split(path).map(createGetter);
|
|
24
|
+
const fn = getters.length === 0 ? functional_1.identity : (0, functional_1.pipe)(...getters);
|
|
25
|
+
return path.includes('[]') ? (value) => (0, array_1.ensureArray)(fn(value)) : fn;
|
|
26
|
+
}
|
|
27
|
+
return functional_1.identity;
|
|
18
28
|
}
|
|
19
29
|
exports.default = pathGetter;
|
|
20
30
|
//# sourceMappingURL=pathGetter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathGetter.js","sourceRoot":"","sources":["../../src/utils/pathGetter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"pathGetter.js","sourceRoot":"","sources":["../../src/utils/pathGetter.ts"],"names":[],"mappings":";;AAEA,2DAA4C;AAC5C,6BAA+B;AAC/B,mCAAqC;AACrC,6CAA6C;AAM7C,MAAM,cAAc,GAAG,CAAC,GAAW,EAAmB,EAAE;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACpC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,GAAS,EAAY,EAAE,CACpC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAA;AAEpD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,MAAe,EAAE,EAAE,CACpD,IAAA,aAAQ,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAE7C,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,GAAY,EAAE,EAAE,CACxD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAE7C,MAAM,gBAAgB,GACpB,CAAC,EAAgC,EAAE,EAAE,CAAC,CAAC,MAAe,EAAE,EAAE,CACxD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;AAE3D,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IACjC,OAAO,OAAO,IAAI,KAAK,QAAQ;QAC7B,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AACrC,CAAC;AAQD,SAAwB,UAAU,CAAC,IAAiB;IAClD,IAAI,IAAA,0BAAM,EAAC,IAAI,CAAC,EAAE;QAChB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC7C,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAQ,CAAC,CAAC,CAAC,IAAA,iBAAI,EAAC,GAAG,OAAO,CAAC,CAAA;QAE7D,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;KACpE;IACD,OAAO,qBAAQ,CAAA;AACjB,CAAC;AARD,6BAQC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Path } from '../types';
|
|
2
|
+
export interface Setter {
|
|
3
|
+
(value: unknown, target: unknown): unknown;
|
|
4
|
+
}
|
|
5
|
+
export default function pathSetter(path: Path): Setter;
|
package/dist/utils/pathSetter.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const functional_1 = require("./functional");
|
|
4
|
+
const is_1 = require("./is");
|
|
5
|
+
const array_1 = require("./array");
|
|
4
6
|
const preparePathPart = (part, isAfterOpenArray) => isAfterOpenArray ? `]${part}` : part;
|
|
5
7
|
const pathSplitter = function* (path) {
|
|
6
8
|
const regEx = /([^[\].]+|\[\w*])/g;
|
|
@@ -10,59 +12,50 @@ const pathSplitter = function* (path) {
|
|
|
10
12
|
match = regEx.exec(path);
|
|
11
13
|
if (match) {
|
|
12
14
|
yield preparePathPart(match[0], isAfterOpenArray);
|
|
13
|
-
isAfterOpenArray =
|
|
15
|
+
isAfterOpenArray = match[0] === '[]';
|
|
14
16
|
}
|
|
15
17
|
} while (match !== null);
|
|
16
18
|
};
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return arr;
|
|
19
|
+
const createObjectSetter = (prop, next) => function setOnObject(value, target) {
|
|
20
|
+
const obj = (0, is_1.isObject)(target) ? target : {};
|
|
21
|
+
return {
|
|
22
|
+
...obj,
|
|
23
|
+
[prop]: next(value, obj[prop]),
|
|
24
|
+
};
|
|
24
25
|
};
|
|
25
|
-
const
|
|
26
|
-
const index = parseInt(prop.
|
|
27
|
-
|
|
26
|
+
const createArraySetter = (prop, next) => function setOnArray(value, target) {
|
|
27
|
+
const index = Number.parseInt(prop.slice(1), 10);
|
|
28
|
+
if (Number.isNaN(index)) {
|
|
29
|
+
return (0, array_1.ensureArray)(next ? next(value, target) : value);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const arr = (0, array_1.cloneAsArray)(target);
|
|
33
|
+
arr[index] = next(value, arr[index]);
|
|
34
|
+
return arr;
|
|
35
|
+
}
|
|
28
36
|
};
|
|
29
|
-
|
|
30
|
-
const
|
|
37
|
+
function createSubArraySetter(prop, nextNext) {
|
|
38
|
+
const next = createSetter(prop.slice(1), nextNext);
|
|
39
|
+
return function setOnSubArray(value, target) {
|
|
40
|
+
const arr = (0, array_1.cloneAsArray)(target);
|
|
41
|
+
(0, array_1.ensureArray)(value).forEach((val, index) => {
|
|
42
|
+
arr[index] = next(val, arr[index]);
|
|
43
|
+
});
|
|
44
|
+
return arr;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function createSetter(prop, next) {
|
|
31
48
|
switch (prop[0]) {
|
|
32
49
|
case '[':
|
|
33
|
-
return
|
|
50
|
+
return createArraySetter(prop, next);
|
|
34
51
|
case ']':
|
|
35
|
-
return
|
|
52
|
+
return createSubArraySetter(prop, next);
|
|
36
53
|
default:
|
|
37
|
-
return
|
|
54
|
+
return createObjectSetter(prop, next);
|
|
38
55
|
}
|
|
39
|
-
}
|
|
40
|
-
const ensureArray = (value) => (Array.isArray(value) ? value : [value]);
|
|
41
|
-
const isObject = (value) => typeof value === 'object' && value !== null;
|
|
42
|
-
const mergeArrays = (left, right) => right.reduce((arr, value, index) => {
|
|
43
|
-
arr[index] = exports.merge(left[index], value);
|
|
44
|
-
return arr;
|
|
45
|
-
}, left);
|
|
46
|
-
const mergeExisting = (left, right) => Array.isArray(right) ? mergeArrays(ensureArray(left), right) : right;
|
|
47
|
-
exports.merge = (left, right) => left === undefined || right === undefined
|
|
48
|
-
? right === undefined
|
|
49
|
-
? left
|
|
50
|
-
: right
|
|
51
|
-
: Array.isArray(right)
|
|
52
|
-
? mergeArrays(ensureArray(left), right)
|
|
53
|
-
: isObject(right)
|
|
54
|
-
? ramda_1.mergeDeepWith(mergeExisting, left, right)
|
|
55
|
-
: right;
|
|
56
|
+
}
|
|
56
57
|
function pathSetter(path) {
|
|
57
|
-
|
|
58
|
-
if (setters.length === 0) {
|
|
59
|
-
return ramda_1.identity;
|
|
60
|
-
}
|
|
61
|
-
const setterFn = ramda_1.apply(ramda_1.compose, setters);
|
|
62
|
-
return (value, object) => {
|
|
63
|
-
const data = setterFn(value);
|
|
64
|
-
return exports.merge(object, data);
|
|
65
|
-
};
|
|
58
|
+
return [...pathSplitter(path)].reduceRight((next, part) => createSetter(part, next), functional_1.identity);
|
|
66
59
|
}
|
|
67
60
|
exports.default = pathSetter;
|
|
68
61
|
//# sourceMappingURL=pathSetter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathSetter.js","sourceRoot":"","sources":["../../src/utils/pathSetter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"pathSetter.js","sourceRoot":"","sources":["../../src/utils/pathSetter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,8 @@
|
|
|
1
|
-
import { State,
|
|
2
|
-
export declare const setStateValue: (state: State, value:
|
|
3
|
-
export declare const getStateValue: (state: State) =>
|
|
4
|
-
export declare const setValueFromState: (state: State, { value }: State) =>
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
onlyMapped?: boolean | undefined;
|
|
10
|
-
arr?: boolean | undefined;
|
|
11
|
-
};
|
|
12
|
-
export declare const liftState: (state: State) => {
|
|
13
|
-
context: Data;
|
|
14
|
-
value: undefined;
|
|
15
|
-
arr: boolean;
|
|
16
|
-
root: Data;
|
|
17
|
-
rev?: boolean | undefined;
|
|
18
|
-
onlyMapped?: boolean | undefined;
|
|
19
|
-
};
|
|
20
|
-
export declare const lowerState: (state: State) => {
|
|
21
|
-
value: Data;
|
|
22
|
-
root: Data;
|
|
23
|
-
context: Data;
|
|
24
|
-
rev?: boolean | undefined;
|
|
25
|
-
onlyMapped?: boolean | undefined;
|
|
26
|
-
arr?: boolean | undefined;
|
|
27
|
-
};
|
|
28
|
-
export declare const contextFromState: ({ rev, onlyMapped }: State) => {
|
|
29
|
-
rev: boolean;
|
|
30
|
-
onlyMappedValues: boolean;
|
|
31
|
-
};
|
|
32
|
-
export declare const pipeMapFns: (fns: StateMapper[]) => (state: State) => State;
|
|
33
|
-
export declare const populateState: ({ rev, onlyMapped }: {
|
|
34
|
-
rev?: boolean | undefined;
|
|
35
|
-
onlyMapped?: boolean | undefined;
|
|
36
|
-
}) => (data: Data) => State;
|
|
1
|
+
import { State, Options, Context } from '../types';
|
|
2
|
+
export declare const setStateValue: (state: State, value: unknown) => State;
|
|
3
|
+
export declare const getStateValue: (state: State) => any;
|
|
4
|
+
export declare const setValueFromState: (state: State, { value }: State) => State;
|
|
5
|
+
export declare const setTargetOnState: (state: State, target?: unknown) => State;
|
|
6
|
+
export declare const contextFromState: ({ rev, onlyMapped, }: State) => Context;
|
|
7
|
+
export declare const populateState: ({ rev, onlyMapped }: Partial<State>) => (data: unknown) => State;
|
|
8
|
+
export declare const shouldSkipMutation: ({ mutateNull }: Options) => (state: State) => boolean;
|
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.
|
|
3
|
+
exports.shouldSkipMutation = exports.populateState = exports.contextFromState = exports.setTargetOnState = exports.setValueFromState = exports.getStateValue = exports.setStateValue = void 0;
|
|
4
|
+
const setStateValue = (state, value) => ({
|
|
5
|
+
...state,
|
|
6
|
+
value,
|
|
7
|
+
});
|
|
8
|
+
exports.setStateValue = setStateValue;
|
|
9
|
+
const getStateValue = (state) => state.value;
|
|
10
|
+
exports.getStateValue = getStateValue;
|
|
11
|
+
const setValueFromState = (state, { value }) => ({
|
|
12
|
+
...state,
|
|
13
|
+
value,
|
|
14
|
+
});
|
|
15
|
+
exports.setValueFromState = setValueFromState;
|
|
16
|
+
const setTargetOnState = (state, target) => ({
|
|
17
|
+
...state,
|
|
18
|
+
target,
|
|
19
|
+
});
|
|
20
|
+
exports.setTargetOnState = setTargetOnState;
|
|
21
|
+
const contextFromState = ({ rev = false, onlyMapped = false, }) => ({
|
|
9
22
|
rev,
|
|
10
|
-
onlyMappedValues: onlyMapped
|
|
23
|
+
onlyMappedValues: onlyMapped,
|
|
11
24
|
});
|
|
12
|
-
exports.
|
|
13
|
-
|
|
25
|
+
exports.contextFromState = contextFromState;
|
|
26
|
+
const populateState = ({ rev = false, onlyMapped = false }) => (data) => ({
|
|
14
27
|
root: data,
|
|
15
28
|
context: data,
|
|
16
29
|
value: data,
|
|
17
30
|
rev,
|
|
18
|
-
onlyMapped
|
|
31
|
+
onlyMapped,
|
|
19
32
|
});
|
|
33
|
+
exports.populateState = populateState;
|
|
34
|
+
const shouldSkipMutation = ({ mutateNull = true }) => (state) => state.value === undefined || (!mutateNull && state.value === null);
|
|
35
|
+
exports.shouldSkipMutation = shouldSkipMutation;
|
|
20
36
|
//# sourceMappingURL=stateHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateHelpers.js","sourceRoot":"","sources":["../../src/utils/stateHelpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stateHelpers.js","sourceRoot":"","sources":["../../src/utils/stateHelpers.ts"],"names":[],"mappings":";;;AAGO,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,KAAc,EAAS,EAAE,CAAC,CAAC;IACrE,GAAG,KAAK;IACR,KAAK;CACN,CAAC,CAAA;AAHW,QAAA,aAAa,iBAGxB;AACK,MAAM,aAAa,GAAG,CAAC,KAAY,EAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAA;AAAlD,QAAA,aAAa,iBAAqC;AAExD,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAE,EAAE,KAAK,EAAS,EAAS,EAAE,CAAC,CAAC;IAC3E,GAAG,KAAK;IACR,KAAK;CACN,CAAC,CAAA;AAHW,QAAA,iBAAiB,qBAG5B;AAEK,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAE,MAAgB,EAAS,EAAE,CAAC,CAAC;IAC1E,GAAG,KAAK;IACR,MAAM;CACP,CAAC,CAAA;AAHW,QAAA,gBAAgB,oBAG3B;AAEK,MAAM,gBAAgB,GAAG,CAAC,EAC/B,GAAG,GAAG,KAAK,EACX,UAAU,GAAG,KAAK,GACZ,EAAW,EAAE,CAAC,CAAC;IACrB,GAAG;IACH,gBAAgB,EAAE,UAAU;CAC7B,CAAC,CAAA;AANW,QAAA,gBAAgB,oBAM3B;AAEK,MAAM,aAAa,GACxB,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAkB,EAAE,EAAE,CACxD,CAAC,IAAa,EAAS,EAAE,CAAC,CAAC;IACzB,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,GAAG;IACH,UAAU;CACX,CAAC,CAAA;AARS,QAAA,aAAa,iBAQtB;AAEG,MAAM,kBAAkB,GAC7B,CAAC,EAAE,UAAU,GAAG,IAAI,EAAW,EAAE,EAAE,CACnC,CAAC,KAAY,EAAW,EAAE,CACxB,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;AAHzD,QAAA,kBAAkB,sBAGuC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "map-transform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-alpha.10",
|
|
4
4
|
"description": "Map and transform objects with mapping definitions",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
5
|
"author": "Kjell-Morten Bratsberg Thorsen <post@kjellmorten.no>",
|
|
8
6
|
"license": "ISC",
|
|
9
7
|
"keywords": [
|
|
@@ -13,80 +11,42 @@
|
|
|
13
11
|
"object",
|
|
14
12
|
"path"
|
|
15
13
|
],
|
|
14
|
+
"main": "dist/index.js",
|
|
15
|
+
"types": "dist/index.d.ts",
|
|
16
16
|
"scripts": {
|
|
17
|
-
"
|
|
18
|
-
"test": "nyc --reporter=text-summary ava dist/**/*.test.js",
|
|
19
|
-
"test:watch": "npm run dev",
|
|
17
|
+
"test": "npm run lint && npm run build && nyc --reporter=text-summary ava --config ./ava-dist.config.js",
|
|
20
18
|
"test:inspect": "node --inspect node_modules/ava/profile.js",
|
|
19
|
+
"test:watch": "npm run dev",
|
|
21
20
|
"dev": "ava --watch",
|
|
22
21
|
"build": "tsc",
|
|
23
|
-
"
|
|
22
|
+
"prepublish": "npm run build",
|
|
24
23
|
"coverage": "nyc report --reporter=text-lcov | coveralls",
|
|
25
|
-
"nyc:report": "nyc report",
|
|
26
|
-
"lint": "
|
|
27
|
-
},
|
|
28
|
-
"ava": {
|
|
29
|
-
"compileEnhancements": false,
|
|
30
|
-
"extensions": [
|
|
31
|
-
"ts"
|
|
32
|
-
],
|
|
33
|
-
"require": [
|
|
34
|
-
"ts-node/register/transpile-only"
|
|
35
|
-
],
|
|
36
|
-
"files": [
|
|
37
|
-
"src/**/*.test.ts"
|
|
38
|
-
],
|
|
39
|
-
"sources": [
|
|
40
|
-
"src/**/!(*.test).ts"
|
|
41
|
-
]
|
|
42
|
-
},
|
|
43
|
-
"nyc": {
|
|
44
|
-
"extension": [
|
|
45
|
-
".ts",
|
|
46
|
-
".js"
|
|
47
|
-
],
|
|
48
|
-
"include": [
|
|
49
|
-
"**/!(*.test).js",
|
|
50
|
-
"**/!(*.test|*.d).ts"
|
|
51
|
-
]
|
|
52
|
-
},
|
|
53
|
-
"prettier": {
|
|
54
|
-
"semi": false,
|
|
55
|
-
"singleQuote": true,
|
|
56
|
-
"jsxSingleQuote": true
|
|
24
|
+
"nyc:report": "nyc report --reporter=text --reporter=html",
|
|
25
|
+
"lint": "eslint --ext .ts src"
|
|
57
26
|
},
|
|
58
27
|
"repository": {
|
|
59
28
|
"type": "git",
|
|
60
29
|
"url": "git+https://github.com/integreat-io/map-transform.git"
|
|
61
30
|
},
|
|
62
31
|
"engines": {
|
|
63
|
-
"node": ">=
|
|
64
|
-
"npm": ">= 5.4"
|
|
32
|
+
"node": ">= 14"
|
|
65
33
|
},
|
|
66
34
|
"bugs": {
|
|
67
35
|
"url": "https://github.com/integreat-io/map-transform/issues"
|
|
68
36
|
},
|
|
69
37
|
"homepage": "https://github.com/integreat-io/map-transform#readme",
|
|
70
38
|
"dependencies": {
|
|
71
|
-
"@types/
|
|
72
|
-
"ajv": "^6.
|
|
39
|
+
"@types/mustache": "^4.1.2",
|
|
40
|
+
"ajv": "^6.12.6",
|
|
41
|
+
"deepmerge": "^4.2.2",
|
|
73
42
|
"map-any": "^0.2.1",
|
|
74
|
-
"
|
|
43
|
+
"mustache": "^4.2.0"
|
|
75
44
|
},
|
|
76
45
|
"devDependencies": {
|
|
46
|
+
"@integreat/ts-dev-setup": "^2.2.0",
|
|
77
47
|
"@types/deep-freeze": "^0.1.2",
|
|
78
|
-
"@types/sinon": "^
|
|
79
|
-
"ava": "^2.4.0",
|
|
80
|
-
"coveralls": "^3.0.9",
|
|
48
|
+
"@types/sinon": "^10.0.11",
|
|
81
49
|
"deep-freeze": "0.0.1",
|
|
82
|
-
"
|
|
83
|
-
"prettier": "^1.19.1",
|
|
84
|
-
"sinon": "^8.1.1",
|
|
85
|
-
"ts-node": "^8.6.2",
|
|
86
|
-
"tslint": "^6.0.0",
|
|
87
|
-
"tslint-config-prettier": "^1.18.0",
|
|
88
|
-
"tslint-config-security": "^1.16.0",
|
|
89
|
-
"tslint-config-standard": "^9.0.0",
|
|
90
|
-
"typescript": "^3.7.5"
|
|
50
|
+
"sinon": "^13.0.1"
|
|
91
51
|
}
|
|
92
52
|
}
|
package/dist/functions/alt.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Data, Operands, Context } from '../types';
|
|
2
|
-
interface Options extends Operands {
|
|
3
|
-
value?: Data;
|
|
4
|
-
}
|
|
5
|
-
export default function alt({ value }: Options): (data: Data, context?: Context | undefined) => string | number | boolean | object | null | undefined;
|
|
6
|
-
export {};
|
package/dist/functions/alt.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function alt({ value }) {
|
|
4
|
-
return (data, context) => {
|
|
5
|
-
const { onlyMappedValues = false } = context || {};
|
|
6
|
-
return typeof data === 'undefined' && !onlyMappedValues ? value : data;
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
exports.default = alt;
|
|
10
|
-
//# sourceMappingURL=alt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alt.js","sourceRoot":"","sources":["../../src/functions/alt.ts"],"names":[],"mappings":";;AAOA,SAAwB,GAAG,CAAC,EAAE,KAAK,EAAW;IAC5C,OAAO,CAAC,IAAU,EAAE,OAAiB,EAAE,EAAE;QACvC,MAAM,EAAE,gBAAgB,GAAG,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAClD,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACxE,CAAC,CAAA;AACH,CAAC;AALD,sBAKC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const ramda_1 = require("ramda");
|
|
4
|
-
const stateHelpers_1 = require("./stateHelpers");
|
|
5
|
-
const getSet_1 = require("../operations/getSet");
|
|
6
|
-
const directionals_1 = require("../operations/directionals");
|
|
7
|
-
const pipe_1 = require("../operations/pipe");
|
|
8
|
-
const definitionHelpers_1 = require("./definitionHelpers");
|
|
9
|
-
const pathSetter_1 = require("./pathSetter");
|
|
10
|
-
const appendToPath = (path, fragment) => [...path, fragment];
|
|
11
|
-
const runAndMergeState = (fn) => (options) => (state) => {
|
|
12
|
-
const nextState = fn(options)(stateHelpers_1.lowerState(state));
|
|
13
|
-
return stateHelpers_1.setStateValue(state, pathSetter_1.merge(state.value, nextState.value));
|
|
14
|
-
};
|
|
15
|
-
const concatToArray = (existing, setFn) => (Array.isArray(existing) ? [...existing, setFn] : [existing, setFn]);
|
|
16
|
-
function pipeWithSetPath(existing, options, pathArray) {
|
|
17
|
-
const [path, index] = pathArray.join('.').split('/');
|
|
18
|
-
const fn = runAndMergeState(pipe_1.default(concatToArray(existing, getSet_1.set(path))));
|
|
19
|
-
return index === undefined ? [fn(options)] : [directionals_1.rev(fn)(options)];
|
|
20
|
-
}
|
|
21
|
-
const extractSetFns = (def, options, path = []) => definitionHelpers_1.isMapObject(def)
|
|
22
|
-
? Object.keys(def).reduce((sets, key) => [
|
|
23
|
-
...sets,
|
|
24
|
-
...extractSetFns(def[key], options, appendToPath(path, key))
|
|
25
|
-
], [])
|
|
26
|
-
: def === null || def === undefined
|
|
27
|
-
? []
|
|
28
|
-
: pipeWithSetPath(def, options, path);
|
|
29
|
-
function objectToMapFunction(def, options) {
|
|
30
|
-
const fns = extractSetFns(def, options);
|
|
31
|
-
return ramda_1.compose(stateHelpers_1.pipeMapFns(fns), stateHelpers_1.liftState);
|
|
32
|
-
}
|
|
33
|
-
exports.default = objectToMapFunction;
|
|
34
|
-
//# sourceMappingURL=objectToMapFunction.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"objectToMapFunction.js","sourceRoot":"","sources":["../../src/utils/objectToMapFunction.ts"],"names":[],"mappings":";;AAAA,iCAA+B;AAY/B,iDAKuB;AACvB,iDAA0C;AAC1C,6DAAgD;AAChD,6CAAqC;AACrC,2DAAiD;AACjD,6CAAoC;AAEpC,MAAM,YAAY,GAAG,CAAC,IAAc,EAAE,QAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAA;AAE9E,MAAM,gBAAgB,GAAG,CAAC,EAAa,EAAE,EAAE,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,CAChE,KAAY,EACL,EAAE;IACT,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,yBAAU,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,OAAO,4BAAa,CAAC,KAAK,EAAE,kBAAK,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAClE,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CACpB,QAAsD,EACtD,KAAgB,EAChB,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;AAEzE,SAAS,eAAe,CACtB,QAAsD,EACtD,OAAgB,EAChB,SAAiB;IAEjB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACpD,MAAM,EAAE,GAAG,gBAAgB,CAAC,cAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,aAAa,GAAG,CACpB,GAA8B,EAC9B,OAAgB,EAChB,OAAiB,EAAE,EACJ,EAAE,CACjB,+BAAW,CAAC,GAAG,CAAC;IACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACrB,CAAC,IAAmB,EAAE,GAAW,EAAE,EAAE,CAAC;QACpC,GAAG,IAAI;QACP,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC7D,EACD,EAAE,CACH;IACH,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QACnC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAEzC,SAAwB,mBAAmB,CAAC,GAAc,EAAE,OAAgB;IAC1E,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACvC,OAAO,eAAO,CAAC,yBAAU,CAAC,GAAG,CAAC,EAAE,wBAAS,CAAC,CAAA;AAC5C,CAAC;AAHD,sCAGC"}
|