1- import { StoreInstance } from '../type/store-types' ;
1+ import { StoreInstance , StoreSubscriber } from '../type/store-types' ;
22import { logger } from '../services/logger-service' ;
3+ import { trigger } from '../core/effect' ;
34
45export const flattenStore = <
56 S extends object ,
@@ -9,6 +10,8 @@ export const flattenStore = <
910 state : S ;
1011 getters : G ;
1112 actions : A ;
13+ subscribe ?: ( cb : StoreSubscriber ) => ( ) => void ;
14+ notifyAll ?: ( ) => void ;
1215} ) : StoreInstance < S , G , A > => {
1316 try {
1417 const flattenedProxy = new Proxy ( store , {
@@ -48,13 +51,17 @@ export const flattenStore = <
4851 } ,
4952 set ( target , prop : string , value , receiver ) {
5053 try {
51- // If the property exists in state, update it there
52- if ( prop in target . state ) {
53- return Reflect . set ( target . state , prop , value ) ;
54+ const wasInState = prop in target . state ;
55+ const result = wasInState
56+ ? Reflect . set ( target . state , prop , value ) // Mutate reactive state
57+ : Reflect . set ( target , prop , value , receiver ) ; // Fallback
58+ if ( result && wasInState ) {
59+ // Trigger core reactivity (per-key)
60+ trigger ( target . state , prop ) ;
61+ // Broad notify via notifyAll (global subs for frameworks)
62+ target . notifyAll ?.( ) ;
5463 }
55-
56- // Otherwise, fallback to setting the property on the target
57- return Reflect . set ( target , prop , value , receiver ) ;
64+ return result ;
5865 } catch ( error ) {
5966 logger . error (
6067 `FlattenStore: Failed to set property "${ prop } ": ${ error instanceof Error ? error . message : String ( error ) } ` ,
0 commit comments