Skip to content

Commit d0468b9

Browse files
author
Charlotte Beebee
committed
FIX Throw error during merge if encounter duplicate keys
1 parent dc92870 commit d0468b9

File tree

1 file changed

+14
-1
lines changed
  • packages/node_modules/overmind/src/config

1 file changed

+14
-1
lines changed

packages/node_modules/overmind/src/config/index.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,20 @@ export function merge(...configurations: IConfiguration[]): IConfiguration {
110110
[] as any[]
111111
)
112112

113-
return configurations.reduce(
113+
const reducedConfigurations = configurations.reduce(
114114
(aggr, config) => {
115+
let stateDuplicates = aggr.state ? Object.keys(aggr.state).some( key => config.state ? Object.keys(config.state).includes(key) : false) : false;
116+
let actionsDuplicates = aggr.actions ? Object.keys(aggr.actions).some( key => config.actions ? Object.keys(config.actions).includes(key) : false) : false;
117+
let effectsDuplicates = aggr.effects ? Object.keys(aggr.effects).some( key => config.effects ? Object.keys(config.effects).includes(key) : false) : false;
118+
if (stateDuplicates){
119+
throw "OVERMIND ERRROR: At least one state definition contains a duplicate key"
120+
}
121+
if (actionsDuplicates) {
122+
throw "OVERMIND ERRROR: At least one actions definition contains a duplicate key"
123+
}
124+
if (effectsDuplicates) {
125+
throw "OVERMIND ERRROR: At least one effects definition contains a duplicate key"
126+
}
115127
return {
116128
onInitialize: aggr.onInitialize,
117129
state: {
@@ -138,6 +150,7 @@ export function merge(...configurations: IConfiguration[]): IConfiguration {
138150
actions: {},
139151
}
140152
)
153+
return reducedConfigurations
141154
}
142155

143156
/*

0 commit comments

Comments
 (0)