buildInitial
This commit is contained in:
parent
c96a6ea07c
commit
003a1309bd
11
package.json
11
package.json
@ -1,10 +1,13 @@
|
|||||||
{
|
{
|
||||||
|
"type": "module",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@yanick/updeep": "../updeep",
|
||||||
"lodash": "^4.17.15",
|
"lodash": "^4.17.15",
|
||||||
|
"lodash-es": "^4.17.21",
|
||||||
"redux": "^4.0.5",
|
"redux": "^4.0.5",
|
||||||
"ts-action": "^11.0.0",
|
"ts-action": "^11.0.0",
|
||||||
"ts-node": "^8.6.2",
|
"ts-node": "^8.6.2",
|
||||||
"@yanick/updeep": "^2.2.0"
|
"updeep": "^1.2.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.8.4",
|
"@babel/cli": "^7.8.4",
|
||||||
@ -16,6 +19,7 @@
|
|||||||
"@typescript-eslint/eslint-plugin": "^2.23.0",
|
"@typescript-eslint/eslint-plugin": "^2.23.0",
|
||||||
"@typescript-eslint/parser": "^2.23.0",
|
"@typescript-eslint/parser": "^2.23.0",
|
||||||
"babel-jest": "^25.1.0",
|
"babel-jest": "^25.1.0",
|
||||||
|
"chai": "^4.3.4",
|
||||||
"docsify": "^4.11.2",
|
"docsify": "^4.11.2",
|
||||||
"docsify-cli": "^4.4.0",
|
"docsify-cli": "^4.4.0",
|
||||||
"docsify-tools": "^1.0.20",
|
"docsify-tools": "^1.0.20",
|
||||||
@ -29,12 +33,13 @@
|
|||||||
"promake": "^3.1.3",
|
"promake": "^3.1.3",
|
||||||
"sinon": "^9.0.1",
|
"sinon": "^9.0.1",
|
||||||
"standard-version": "^8.0.0",
|
"standard-version": "^8.0.0",
|
||||||
"tap": "^14.10.6",
|
"tap": "15",
|
||||||
"ts-jest": "^25.2.1",
|
"ts-jest": "^25.2.1",
|
||||||
"tsd": "^0.11.0",
|
"tsd": "^0.11.0",
|
||||||
"typedoc": "0.17.7",
|
"typedoc": "0.17.7",
|
||||||
"typedoc-plugin-markdown": "^2.2.17",
|
"typedoc-plugin-markdown": "^2.2.17",
|
||||||
"typescript": "^4.2.0"
|
"typescript": "^4.2.0",
|
||||||
|
"uvu": "^0.5.1"
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
15
src/buildInitial/index.js
Normal file
15
src/buildInitial/index.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { isPlainObject, mapValues } from 'lodash-es';
|
||||||
|
import u from '@yanick/updeep';
|
||||||
|
|
||||||
|
export function buildInitial(initial, subduxes = {}) {
|
||||||
|
if (!isPlainObject(initial) && Object.keys(subduxes).length > 0)
|
||||||
|
throw new Error(
|
||||||
|
"can't have subduxes on a dux which state is not an object"
|
||||||
|
);
|
||||||
|
|
||||||
|
const subInitial = mapValues(subduxes, ({ initial }, key) =>
|
||||||
|
key === '*' ? [] : initial
|
||||||
|
);
|
||||||
|
|
||||||
|
return u(initial, subInitial);
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
import fp from 'lodash/fp';
|
|
||||||
import u from '@yanick/updeep';
|
|
||||||
|
|
||||||
function buildInitial(initial: any, coduxes: any = [], subduxes: any = {}) {
|
|
||||||
if (!fp.isPlainObject(initial)) return initial;
|
|
||||||
|
|
||||||
return fp.flow(
|
|
||||||
[
|
|
||||||
u(fp.omit(['*'], subduxes)),
|
|
||||||
coduxes.map(i => u(i)),
|
|
||||||
u(initial),
|
|
||||||
].flat()
|
|
||||||
)({});
|
|
||||||
}
|
|
||||||
|
|
||||||
export default buildInitial;
|
|
12
src/buildInitial/test.js
Normal file
12
src/buildInitial/test.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import { test } from 'tap';
|
||||||
|
|
||||||
|
import { buildInitial } from './index.js';
|
||||||
|
|
||||||
|
test('basic', async (t) => {
|
||||||
|
t.same(
|
||||||
|
buildInitial({ a: 1 }, { b: { initial: { c: 2 } } })
|
||||||
|
,{
|
||||||
|
a: 1,
|
||||||
|
b: { c: 3 },
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user