@@ -9,30 +9,25 @@ import {
9
9
ensureContainsSubscription ,
10
10
triggerEffects ,
11
11
} from './signal' ;
12
- import type { EffectSubscription } from './types' ;
12
+ import {
13
+ STORE_ALL_PROPS ,
14
+ STORE_HANDLER ,
15
+ STORE_TARGET ,
16
+ StoreFlags ,
17
+ type EffectSubscription ,
18
+ type StoreTarget ,
19
+ } from './types' ;
13
20
14
21
const DEBUG = false ;
15
22
16
23
// eslint-disable-next-line no-console
17
24
const log = ( ...args : any [ ] ) => console . log ( 'STORE' , ...args . map ( qwikDebugToString ) ) ;
18
25
19
- const STORE_TARGET = Symbol ( 'store.target' ) ;
20
- const STORE_HANDLER = Symbol ( 'store.handler' ) ;
21
- export const STORE_ALL_PROPS = Symbol ( 'store.all' ) ;
22
-
23
- export type TargetType = Record < string | symbol , any > ;
24
-
25
- export const enum StoreFlags {
26
- NONE = 0 ,
27
- RECURSIVE = 1 ,
28
- IMMUTABLE = 2 ,
29
- }
30
-
31
- export const getStoreHandler = ( value : TargetType ) : StoreHandler | null => {
26
+ export const getStoreHandler = ( value : StoreTarget ) : StoreHandler | null => {
32
27
return value [ STORE_HANDLER ] as StoreHandler | null ;
33
28
} ;
34
29
35
- export const getStoreTarget = < T extends TargetType > ( value : T ) : T | null => {
30
+ export const getStoreTarget = < T extends StoreTarget > ( value : T ) : T | null => {
36
31
return value ?. [ STORE_TARGET ] || null ;
37
32
} ;
38
33
@@ -46,7 +41,7 @@ export const unwrapStore = <T>(value: T): T => {
46
41
return getStoreTarget < any > ( value ) || value ;
47
42
} ;
48
43
49
- export const isStore = ( value : TargetType ) : boolean => {
44
+ export const isStore = ( value : StoreTarget ) : boolean => {
50
45
return STORE_TARGET in value ;
51
46
} ;
52
47
@@ -74,7 +69,7 @@ export const getOrCreateStore = <T extends object>(
74
69
return obj ;
75
70
} ;
76
71
77
- export class StoreHandler implements ProxyHandler < TargetType > {
72
+ export class StoreHandler implements ProxyHandler < StoreTarget > {
78
73
$effects$ : null | Map < string | symbol , Set < EffectSubscription > > = null ;
79
74
80
75
constructor (
@@ -86,7 +81,7 @@ export class StoreHandler implements ProxyHandler<TargetType> {
86
81
return '[Store]' ;
87
82
}
88
83
89
- get ( target : TargetType , prop : string | symbol ) {
84
+ get ( target : StoreTarget , prop : string | symbol ) {
90
85
if ( typeof prop === 'symbol' ) {
91
86
if ( prop === STORE_TARGET ) {
92
87
return target ;
@@ -141,7 +136,7 @@ export class StoreHandler implements ProxyHandler<TargetType> {
141
136
}
142
137
143
138
/** In the case of oldValue and value are the same, the effects are not triggered. */
144
- set ( target : TargetType , prop : string | symbol , value : any ) : boolean {
139
+ set ( target : StoreTarget , prop : string | symbol , value : any ) : boolean {
145
140
if ( typeof prop === 'symbol' ) {
146
141
target [ prop ] = value ;
147
142
return true ;
@@ -161,15 +156,15 @@ export class StoreHandler implements ProxyHandler<TargetType> {
161
156
return true ;
162
157
}
163
158
164
- deleteProperty ( target : TargetType , prop : string | symbol ) : boolean {
159
+ deleteProperty ( target : StoreTarget , prop : string | symbol ) : boolean {
165
160
if ( typeof prop != 'string' || ! delete target [ prop ] ) {
166
161
return false ;
167
162
}
168
163
triggerEffects ( this . $container$ , this , getEffects ( target , prop , this . $effects$ ) ) ;
169
164
return true ;
170
165
}
171
166
172
- has ( target : TargetType , prop : string | symbol ) {
167
+ has ( target : StoreTarget , prop : string | symbol ) {
173
168
if ( prop === STORE_TARGET ) {
174
169
return true ;
175
170
}
@@ -190,7 +185,7 @@ export class StoreHandler implements ProxyHandler<TargetType> {
190
185
return Object . prototype . hasOwnProperty . call ( target , prop ) ;
191
186
}
192
187
193
- ownKeys ( target : TargetType ) : ArrayLike < string | symbol > {
188
+ ownKeys ( target : StoreTarget ) : ArrayLike < string | symbol > {
194
189
const ctx = tryGetInvokeContext ( ) ;
195
190
const effectSubscriber = ctx ?. $effectSubscriber$ ;
196
191
if ( effectSubscriber ) {
@@ -200,7 +195,7 @@ export class StoreHandler implements ProxyHandler<TargetType> {
200
195
}
201
196
202
197
getOwnPropertyDescriptor (
203
- target : TargetType ,
198
+ target : StoreTarget ,
204
199
prop : string | symbol
205
200
) : PropertyDescriptor | undefined {
206
201
const descriptor = Reflect . getOwnPropertyDescriptor ( target , prop ) ;
@@ -218,7 +213,7 @@ export class StoreHandler implements ProxyHandler<TargetType> {
218
213
}
219
214
220
215
export function addStoreEffect (
221
- target : TargetType ,
216
+ target : StoreTarget ,
222
217
prop : string | symbol ,
223
218
store : StoreHandler ,
224
219
effectSubscription : EffectSubscription
0 commit comments