@@ -392,23 +392,46 @@ function systemExtend(dest={}, src={}) {
392
392
if ( isObject ( statePlugins ) ) {
393
393
for ( let namespace in statePlugins ) {
394
394
const namespaceObj = statePlugins [ namespace ]
395
- if ( ! isObject ( namespaceObj ) || ! isObject ( namespaceObj . wrapActions ) ) {
395
+ if ( ! isObject ( namespaceObj ) ) {
396
396
continue
397
397
}
398
- const { wrapActions } = namespaceObj
399
- for ( let actionName in wrapActions ) {
400
- let action = wrapActions [ actionName ]
401
-
402
- // This should only happen if dest is the first plugin, since invocations after that will ensure its an array
403
- if ( ! Array . isArray ( action ) ) {
404
- action = [ action ]
405
- wrapActions [ actionName ] = action // Put the value inside an array
406
- }
407
398
408
- if ( src && src . statePlugins && src . statePlugins [ namespace ] && src . statePlugins [ namespace ] . wrapActions && src . statePlugins [ namespace ] . wrapActions [ actionName ] ) {
409
- src . statePlugins [ namespace ] . wrapActions [ actionName ] = wrapActions [ actionName ] . concat ( src . statePlugins [ namespace ] . wrapActions [ actionName ] )
399
+ const { wrapActions, wrapSelectors } = namespaceObj
400
+
401
+ // process action wrapping
402
+ if ( isObject ( wrapActions ) ) {
403
+ for ( let actionName in wrapActions ) {
404
+ let action = wrapActions [ actionName ]
405
+
406
+ // This should only happen if dest is the first plugin, since invocations after that will ensure its an array
407
+ if ( ! Array . isArray ( action ) ) {
408
+ action = [ action ]
409
+ wrapActions [ actionName ] = action // Put the value inside an array
410
+ }
411
+
412
+ if ( src && src . statePlugins && src . statePlugins [ namespace ] && src . statePlugins [ namespace ] . wrapActions && src . statePlugins [ namespace ] . wrapActions [ actionName ] ) {
413
+ src . statePlugins [ namespace ] . wrapActions [ actionName ] = wrapActions [ actionName ] . concat ( src . statePlugins [ namespace ] . wrapActions [ actionName ] )
414
+ }
415
+
410
416
}
417
+ }
418
+
419
+ // process selector wrapping
420
+ if ( isObject ( wrapSelectors ) ) {
421
+ for ( let selectorName in wrapSelectors ) {
422
+ let selector = wrapSelectors [ selectorName ]
423
+
424
+ // This should only happen if dest is the first plugin, since invocations after that will ensure its an array
425
+ if ( ! Array . isArray ( selector ) ) {
426
+ selector = [ selector ]
427
+ wrapSelectors [ selectorName ] = selector // Put the value inside an array
428
+ }
411
429
430
+ if ( src && src . statePlugins && src . statePlugins [ namespace ] && src . statePlugins [ namespace ] . wrapSelectors && src . statePlugins [ namespace ] . wrapSelectors [ selectorName ] ) {
431
+ src . statePlugins [ namespace ] . wrapSelectors [ selectorName ] = wrapSelectors [ selectorName ] . concat ( src . statePlugins [ namespace ] . wrapSelectors [ selectorName ] )
432
+ }
433
+
434
+ }
412
435
}
413
436
}
414
437
}
0 commit comments