@@ -134,31 +134,36 @@ const selector =
134134export function signalStore < State extends object > (
135135 initialState :
136136 | Partial < State >
137- | ( ( storeApi : Pick < NgtSignalStore < State > , 'get' | 'set' | 'patch' > ) => Partial < State > ) = { } ,
137+ | ( ( storeApi : Pick < NgtSignalStore < State > , 'get' | 'set' | 'patch' | 'select' > ) => Partial < State > ) = { } ,
138138 options ?: CreateSignalOptions < State > ,
139139) : NgtSignalStore < State > {
140140 let source : WritableSignal < State > ;
141141 let set : NgtSignalStore < State > [ 'set' ] ;
142142 let get : NgtSignalStore < State > [ 'get' ] ;
143143 let patch : NgtSignalStore < State > [ 'patch' ] ;
144+ let select : NgtSignalStore < State > [ 'select' ] ;
145+ let state : Signal < State > ;
146+
147+ const computedCache = new Map ( ) ;
144148
145149 if ( typeof initialState === 'function' ) {
146150 source = signal ( { } as State , options ) ;
151+ state = source . asReadonly ( ) ;
147152 get = getter ( source ) ;
148153 set = setter ( source ) ;
149154 patch = patcher ( source ) ;
150- source . set ( initialState ( { set, get, patch } ) as State ) ;
155+ select = selector ( state , computedCache ) ;
156+ source . set ( initialState ( { set, get, patch, select } ) as State ) ;
151157 } else {
152158 source = signal ( initialState as State , options ) ;
159+ state = source . asReadonly ( ) ;
153160 get = getter ( source ) ;
154161 set = setter ( source ) ;
155162 patch = patcher ( source ) ;
163+ select = selector ( state , computedCache ) ;
156164 }
157165
158- const state = source . asReadonly ( ) ;
159- const computedCache = new Map ( ) ;
160-
161- const store = { select : selector ( state , computedCache ) , get, set, patch, state } ;
166+ const store = { select, get, set, patch, state } ;
162167
163168 // NOTE: internal _snapshot to debug current state
164169 Object . defineProperty ( store , '_snapshot' , {
0 commit comments