@@ -121,90 +121,117 @@ describe('signalState', () => {
121
121
it ( 'does not create deep signals for iterables' , ( ) => {
122
122
const snippet = `
123
123
const arrayState = signalState<string[]>([]);
124
+ const arrayStateValue = arrayState();
124
125
declare const arrayStateKeys: keyof typeof arrayState;
125
126
126
127
const setState = signalState(new Set<number>());
128
+ const setStateValue = setState();
127
129
declare const setStateKeys: keyof typeof setState;
128
130
129
131
const mapState = signalState(new Map<number, { bar: boolean }>());
132
+ const mapStateValue = mapState();
130
133
declare const mapStateKeys: keyof typeof mapState;
131
134
132
135
const uintArrayState = signalState(new Uint8ClampedArray());
136
+ const uintArrayStateValue = uintArrayState();
133
137
declare const uintArrayStateKeys: keyof typeof uintArrayState;
134
138
` ;
135
139
136
140
expectSnippet ( snippet ) . toSucceed ( ) ;
137
141
142
+ expectSnippet ( snippet ) . toInfer ( 'arrayStateValue' , 'string[]' ) ;
138
143
expectSnippet ( snippet ) . toInfer (
139
144
'arrayStateKeys' ,
140
- 'unique symbol | keyof Signal<string[]> '
145
+ 'unique symbol | unique symbol '
141
146
) ;
142
147
148
+ expectSnippet ( snippet ) . toInfer ( 'setStateValue' , 'StateResult<Set<number>>' ) ;
143
149
expectSnippet ( snippet ) . toInfer (
144
150
'setStateKeys' ,
145
- 'unique symbol | keyof Signal<StateResult<Set<number>>> '
151
+ 'unique symbol | unique symbol '
146
152
) ;
147
153
154
+ expectSnippet ( snippet ) . toInfer (
155
+ 'mapStateValue' ,
156
+ 'StateResult<Map<number, { bar: boolean; }>>'
157
+ ) ;
148
158
expectSnippet ( snippet ) . toInfer (
149
159
'mapStateKeys' ,
150
- 'unique symbol | keyof Signal<StateResult<Map<number, { bar: boolean; }>>> '
160
+ 'unique symbol | unique symbol '
151
161
) ;
152
162
163
+ expectSnippet ( snippet ) . toInfer (
164
+ 'uintArrayStateValue' ,
165
+ 'StateResult<Uint8ClampedArray<ArrayBuffer>>'
166
+ ) ;
153
167
expectSnippet ( snippet ) . toInfer (
154
168
'uintArrayStateKeys' ,
155
- 'unique symbol | keyof Signal<StateResult<Uint8ClampedArray<ArrayBuffer>>> '
169
+ 'unique symbol | unique symbol '
156
170
) ;
157
171
} ) ;
158
172
159
173
it ( 'does not create deep signals for built-in object types' , ( ) => {
160
174
const snippet = `
161
175
const weakSetState = signalState(new WeakSet<{ foo: string }>());
176
+ const weakSetStateValue = weakSetState();
162
177
declare const weakSetStateKeys: keyof typeof weakSetState;
163
178
164
179
const dateState = signalState(new Date());
180
+ const dateStateValue = dateState();
165
181
declare const dateStateKeys: keyof typeof dateState;
166
182
167
183
const errorState = signalState(new Error());
184
+ const errorStateValue = errorState();
168
185
declare const errorStateKeys: keyof typeof errorState;
169
186
170
187
const regExpState = signalState(new RegExp(''));
188
+ const regExpStateValue = regExpState();
171
189
declare const regExpStateKeys: keyof typeof regExpState;
172
190
` ;
173
191
174
192
expectSnippet ( snippet ) . toSucceed ( ) ;
175
193
194
+ expectSnippet ( snippet ) . toInfer (
195
+ 'weakSetStateValue' ,
196
+ 'StateResult<WeakSet<{ foo: string; }>>'
197
+ ) ;
176
198
expectSnippet ( snippet ) . toInfer (
177
199
'weakSetStateKeys' ,
178
- 'unique symbol | keyof Signal<StateResult<WeakSet<{ foo: string; }>>> '
200
+ 'unique symbol | unique symbol '
179
201
) ;
180
202
203
+ expectSnippet ( snippet ) . toInfer ( 'dateStateValue' , 'StateResult<Date>' ) ;
181
204
expectSnippet ( snippet ) . toInfer (
182
205
'dateStateKeys' ,
183
- 'unique symbol | keyof Signal<StateResult<Date>> '
206
+ 'unique symbol | unique symbol '
184
207
) ;
185
208
209
+ expectSnippet ( snippet ) . toInfer ( 'errorStateValue' , 'StateResult<Error>' ) ;
186
210
expectSnippet ( snippet ) . toInfer (
187
211
'errorStateKeys' ,
188
- 'unique symbol | keyof Signal<StateResult<Error>> '
212
+ 'unique symbol | unique symbol '
189
213
) ;
190
214
215
+ expectSnippet ( snippet ) . toInfer ( 'regExpStateValue' , 'StateResult<RegExp>' ) ;
191
216
expectSnippet ( snippet ) . toInfer (
192
217
'regExpStateKeys' ,
193
- 'unique symbol | keyof Signal<StateResult<RegExp>> '
218
+ 'unique symbol | unique symbol '
194
219
) ;
195
220
} ) ;
196
221
197
222
it ( 'does not create deep signals for functions' , ( ) => {
198
223
const snippet = `
199
224
const state = signalState(() => {});
225
+ const stateValue = state();
200
226
declare const stateKeys: keyof typeof state;
201
227
` ;
202
228
203
229
expectSnippet ( snippet ) . toSucceed ( ) ;
204
230
231
+ expectSnippet ( snippet ) . toInfer ( 'stateValue' , 'StateResult<() => void>' ) ;
205
232
expectSnippet ( snippet ) . toInfer (
206
233
'stateKeys' ,
207
- 'unique symbol | keyof Signal<StateResult<() => void>> '
234
+ 'unique symbol | unique symbol '
208
235
) ;
209
236
} ) ;
210
237
@@ -282,7 +309,7 @@ describe('signalState', () => {
282
309
283
310
expectSnippet ( snippet ) . toInfer (
284
311
'state1Keys' ,
285
- 'unique symbol | keyof Signal<StateResult<{ [key: string]: number; }>> '
312
+ 'unique symbol | unique symbol '
286
313
) ;
287
314
288
315
expectSnippet ( snippet ) . toInfer (
@@ -292,7 +319,7 @@ describe('signalState', () => {
292
319
293
320
expectSnippet ( snippet ) . toInfer (
294
321
'state2Keys' ,
295
- 'unique symbol | keyof Signal<StateResult<{ [key: number]: { foo: string; }; }>> '
322
+ 'unique symbol | unique symbol '
296
323
) ;
297
324
298
325
expectSnippet ( snippet ) . toInfer (
@@ -302,7 +329,7 @@ describe('signalState', () => {
302
329
303
330
expectSnippet ( snippet ) . toInfer (
304
331
'state3Keys' ,
305
- 'unique symbol | keyof Signal<StateResult<Record<string, { bar: number; }>>> '
332
+ 'unique symbol | unique symbol '
306
333
) ;
307
334
308
335
expectSnippet ( snippet ) . toInfer (
@@ -398,10 +425,7 @@ describe('signalState', () => {
398
425
expectSnippet ( snippet ) . toSucceed ( ) ;
399
426
expectSnippet ( snippet ) . toInfer ( 'name' , 'Signal<number>' ) ;
400
427
expectSnippet ( snippet ) . toInfer ( 'length1' , 'Signal<boolean[]>' ) ;
401
- expectSnippet ( snippet ) . toInfer (
402
- 'name2' ,
403
- 'Signal<{ length: string; }> & Readonly<{ length: Signal<string>; }>'
404
- ) ;
428
+ expectSnippet ( snippet ) . toInfer ( 'name2' , 'DeepSignal<{ length: string; }>' ) ;
405
429
expectSnippet ( snippet ) . toInfer ( 'length2' , 'Signal<string>' ) ;
406
430
} ) ;
407
431
0 commit comments