ripple 0.3.68 → 0.3.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/package.json +3 -3
  3. package/src/jsx-runtime.d.ts +2 -2
  4. package/src/runtime/element.js +1 -1
  5. package/src/runtime/index-client.js +11 -11
  6. package/src/runtime/index-server.js +7 -4
  7. package/src/runtime/internal/client/bindings.js +1 -1
  8. package/src/runtime/internal/client/blocks.js +13 -4
  9. package/src/runtime/internal/client/component.js +55 -0
  10. package/src/runtime/internal/client/composite.js +4 -2
  11. package/src/runtime/internal/client/expression.js +65 -7
  12. package/src/runtime/internal/client/hmr.js +54 -43
  13. package/src/runtime/internal/client/index.js +5 -1
  14. package/src/runtime/internal/client/portal.js +70 -69
  15. package/src/runtime/internal/client/render.js +3 -0
  16. package/src/runtime/internal/server/index.js +92 -8
  17. package/tests/client/__snapshots__/html.test.tsrx.snap +3 -3
  18. package/tests/client/array/array.copy-within.test.tsrx +33 -31
  19. package/tests/client/array/array.derived.test.tsrx +186 -169
  20. package/tests/client/array/array.iteration.test.tsrx +40 -37
  21. package/tests/client/array/array.mutations.test.tsrx +113 -101
  22. package/tests/client/array/array.static.test.tsrx +119 -101
  23. package/tests/client/array/array.to-methods.test.tsrx +24 -21
  24. package/tests/client/async-suspend.test.tsrx +247 -246
  25. package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +0 -1
  26. package/tests/client/basic/basic.attributes.test.tsrx +428 -423
  27. package/tests/client/basic/basic.collections.test.tsrx +109 -102
  28. package/tests/client/basic/basic.components.test.tsrx +323 -205
  29. package/tests/client/basic/basic.errors.test.tsrx +91 -91
  30. package/tests/client/basic/basic.events.test.tsrx +114 -115
  31. package/tests/client/basic/basic.get-set.test.tsrx +97 -87
  32. package/tests/client/basic/basic.hmr.test.tsrx +19 -16
  33. package/tests/client/basic/basic.reactivity.test.tsrx +199 -191
  34. package/tests/client/basic/basic.rendering.test.tsrx +272 -182
  35. package/tests/client/basic/basic.styling.test.tsrx +23 -22
  36. package/tests/client/basic/basic.utilities.test.tsrx +10 -8
  37. package/tests/client/boundaries.test.tsrx +26 -26
  38. package/tests/client/compiler/__snapshots__/compiler.assignments.test.rsrx.snap +5 -5
  39. package/tests/client/compiler/__snapshots__/compiler.assignments.test.tsrx.snap +5 -5
  40. package/tests/client/compiler/compiler.assignments.test.tsrx +77 -81
  41. package/tests/client/compiler/compiler.attributes.test.tsrx +15 -15
  42. package/tests/client/compiler/compiler.basic.test.tsrx +322 -314
  43. package/tests/client/compiler/compiler.regex.test.tsrx +44 -47
  44. package/tests/client/compiler/compiler.tracked-access.test.tsrx +38 -38
  45. package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
  46. package/tests/client/compiler/compiler.typescript.test.tsrx +2 -2
  47. package/tests/client/composite/composite.dynamic-components.test.tsrx +47 -48
  48. package/tests/client/composite/composite.generics.test.tsrx +168 -192
  49. package/tests/client/composite/composite.props.test.tsrx +97 -81
  50. package/tests/client/composite/composite.reactivity.test.tsrx +177 -147
  51. package/tests/client/composite/composite.render.test.tsrx +122 -105
  52. package/tests/client/computed-properties.test.tsrx +28 -28
  53. package/tests/client/context.test.tsrx +21 -21
  54. package/tests/client/css/global-additional-cases.test.tsrx +58 -58
  55. package/tests/client/css/global-advanced-selectors.test.tsrx +16 -16
  56. package/tests/client/css/global-at-rules.test.tsrx +10 -10
  57. package/tests/client/css/global-basic.test.tsrx +14 -14
  58. package/tests/client/css/global-classes-ids.test.tsrx +14 -14
  59. package/tests/client/css/global-combinators.test.tsrx +10 -10
  60. package/tests/client/css/global-complex-nesting.test.tsrx +14 -14
  61. package/tests/client/css/global-edge-cases.test.tsrx +18 -18
  62. package/tests/client/css/global-keyframes.test.tsrx +12 -12
  63. package/tests/client/css/global-nested.test.tsrx +10 -10
  64. package/tests/client/css/global-pseudo.test.tsrx +12 -12
  65. package/tests/client/css/global-scoping.test.tsrx +20 -20
  66. package/tests/client/css/style-identifier.test.tsrx +126 -259
  67. package/tests/client/date.test.tsrx +146 -133
  68. package/tests/client/dynamic-elements.test.tsrx +398 -365
  69. package/tests/client/events.test.tsrx +292 -290
  70. package/tests/client/for.test.tsrx +156 -153
  71. package/tests/client/head.test.tsrx +105 -96
  72. package/tests/client/html.test.tsrx +122 -26
  73. package/tests/client/input-value.test.tsrx +1361 -1314
  74. package/tests/client/lazy-array.test.tsrx +16 -13
  75. package/tests/client/lazy-destructuring.test.tsrx +257 -213
  76. package/tests/client/map.test.tsrx +65 -60
  77. package/tests/client/media-query.test.tsrx +22 -20
  78. package/tests/client/object.test.tsrx +87 -81
  79. package/tests/client/portal.test.tsrx +57 -51
  80. package/tests/client/ref.test.tsrx +233 -202
  81. package/tests/client/return.test.tsrx +71 -2560
  82. package/tests/client/set.test.tsrx +54 -45
  83. package/tests/client/svg.test.tsrx +216 -186
  84. package/tests/client/switch.test.tsrx +194 -193
  85. package/tests/client/track-async-hydration.test.tsrx +18 -14
  86. package/tests/client/tracked-index-access.test.tsrx +28 -18
  87. package/tests/client/try.test.tsrx +675 -548
  88. package/tests/client/tsx.test.tsrx +373 -311
  89. package/tests/client/typescript-generics.test.tsrx +145 -145
  90. package/tests/client/url/url.derived.test.tsrx +33 -28
  91. package/tests/client/url/url.parsing.test.tsrx +61 -51
  92. package/tests/client/url/url.partial-removal.test.tsrx +56 -48
  93. package/tests/client/url/url.reactivity.test.tsrx +142 -125
  94. package/tests/client/url/url.serialization.test.tsrx +13 -11
  95. package/tests/client/url-search-params/url-search-params.derived.test.tsrx +34 -29
  96. package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +25 -21
  97. package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +50 -45
  98. package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +111 -99
  99. package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +49 -43
  100. package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +14 -12
  101. package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +16 -14
  102. package/tests/hydration/basic.test.js +3 -3
  103. package/tests/hydration/compiled/client/basic.js +586 -651
  104. package/tests/hydration/compiled/client/composite.js +79 -104
  105. package/tests/hydration/compiled/client/events.js +140 -148
  106. package/tests/hydration/compiled/client/for.js +1005 -1018
  107. package/tests/hydration/compiled/client/head.js +124 -134
  108. package/tests/hydration/compiled/client/hmr.js +41 -48
  109. package/tests/hydration/compiled/client/html-in-template.js +38 -41
  110. package/tests/hydration/compiled/client/html.js +970 -1314
  111. package/tests/hydration/compiled/client/if-children.js +234 -249
  112. package/tests/hydration/compiled/client/if.js +182 -189
  113. package/tests/hydration/compiled/client/mixed-control-flow.js +347 -303
  114. package/tests/hydration/compiled/client/nested-control-flow.js +1084 -832
  115. package/tests/hydration/compiled/client/portal.js +65 -85
  116. package/tests/hydration/compiled/client/reactivity.js +84 -90
  117. package/tests/hydration/compiled/client/return.js +38 -1939
  118. package/tests/hydration/compiled/client/switch.js +218 -224
  119. package/tests/hydration/compiled/client/track-async-serialization.js +250 -259
  120. package/tests/hydration/compiled/client/try.js +123 -132
  121. package/tests/hydration/compiled/server/basic.js +773 -831
  122. package/tests/hydration/compiled/server/composite.js +166 -191
  123. package/tests/hydration/compiled/server/events.js +170 -184
  124. package/tests/hydration/compiled/server/for.js +851 -909
  125. package/tests/hydration/compiled/server/head.js +206 -216
  126. package/tests/hydration/compiled/server/hmr.js +64 -72
  127. package/tests/hydration/compiled/server/html-in-template.js +42 -76
  128. package/tests/hydration/compiled/server/html.js +1362 -1667
  129. package/tests/hydration/compiled/server/if-children.js +419 -445
  130. package/tests/hydration/compiled/server/if.js +194 -208
  131. package/tests/hydration/compiled/server/mixed-control-flow.js +249 -257
  132. package/tests/hydration/compiled/server/nested-control-flow.js +491 -515
  133. package/tests/hydration/compiled/server/portal.js +152 -160
  134. package/tests/hydration/compiled/server/reactivity.js +94 -106
  135. package/tests/hydration/compiled/server/return.js +28 -2172
  136. package/tests/hydration/compiled/server/switch.js +274 -286
  137. package/tests/hydration/compiled/server/track-async-serialization.js +340 -358
  138. package/tests/hydration/compiled/server/try.js +167 -185
  139. package/tests/hydration/components/basic.tsrx +320 -272
  140. package/tests/hydration/components/composite.tsrx +44 -32
  141. package/tests/hydration/components/events.tsrx +101 -91
  142. package/tests/hydration/components/for.tsrx +510 -452
  143. package/tests/hydration/components/head.tsrx +87 -80
  144. package/tests/hydration/components/hmr.tsrx +22 -17
  145. package/tests/hydration/components/html-in-template.tsrx +22 -17
  146. package/tests/hydration/components/html.tsrx +525 -443
  147. package/tests/hydration/components/if-children.tsrx +158 -148
  148. package/tests/hydration/components/if.tsrx +109 -95
  149. package/tests/hydration/components/mixed-control-flow.tsrx +100 -96
  150. package/tests/hydration/components/nested-control-flow.tsrx +215 -203
  151. package/tests/hydration/components/portal.tsrx +41 -34
  152. package/tests/hydration/components/reactivity.tsrx +37 -27
  153. package/tests/hydration/components/return.tsrx +12 -556
  154. package/tests/hydration/components/switch.tsrx +120 -114
  155. package/tests/hydration/components/track-async-serialization.tsrx +107 -91
  156. package/tests/hydration/components/try.tsrx +55 -40
  157. package/tests/hydration/html.test.js +4 -4
  158. package/tests/hydration/return.test.js +13 -532
  159. package/tests/server/await.test.tsrx +3 -3
  160. package/tests/server/basic.attributes.test.tsrx +264 -195
  161. package/tests/server/basic.components.test.tsrx +296 -169
  162. package/tests/server/basic.test.tsrx +300 -198
  163. package/tests/server/compiler.test.tsrx +62 -60
  164. package/tests/server/composite.props.test.tsrx +77 -63
  165. package/tests/server/composite.test.tsrx +168 -192
  166. package/tests/server/context.test.tsrx +18 -12
  167. package/tests/server/dynamic-elements.test.tsrx +197 -180
  168. package/tests/server/for.test.tsrx +85 -78
  169. package/tests/server/head.test.tsrx +50 -43
  170. package/tests/server/html-nesting-validation.test.tsrx +8 -8
  171. package/tests/server/if.test.tsrx +57 -51
  172. package/tests/server/lazy-destructuring.test.tsrx +366 -294
  173. package/tests/server/return.test.tsrx +76 -1355
  174. package/tests/server/streaming-ssr.test.tsrx +4 -75
  175. package/tests/server/style-identifier.test.tsrx +169 -131
  176. package/tests/server/switch.test.tsrx +91 -85
  177. package/tests/server/track-async-serialization.test.tsrx +105 -85
  178. package/tests/server/try.test.tsrx +374 -280
  179. package/tests/utils/compiler-compat-config.test.js +2 -2
  180. package/tests/utils/runtime-imports.test.js +10 -0
  181. package/types/index.d.ts +8 -0
  182. package/tests/client/__snapshots__/html.test.rsrx.snap +0 -40
@@ -3,35 +3,37 @@ import { effect, flushSync, track, untrack } from 'ripple';
3
3
 
4
4
  describe('basic client > reactivity', () => {
5
5
  it('renders multiple reactive lexical blocks', () => {
6
- component Basic() {
7
- <div>
8
- let obj = {
9
- count: track(0),
10
- };
11
-
12
- <span>{obj.count.value}</span>
13
- </div>
14
- <div>
15
- let b = {
16
- count: track(0),
17
- };
18
-
19
- <button
20
- onClick={() => {
21
- b.count.value--;
22
- }}
23
- >
24
- {'-'}
25
- </button>
26
- <span class="count">{b.count.value}</span>
27
- <button
28
- onClick={() => {
29
- b.count.value++;
30
- }}
31
- >
32
- {'+'}
33
- </button>
34
- </div>
6
+ function Basic() {
7
+ return <>
8
+ <div>
9
+ let obj = {
10
+ count: track(0),
11
+ };
12
+
13
+ <span>{obj.count.value}</span>
14
+ </div>
15
+ <div>
16
+ let b = {
17
+ count: track(0),
18
+ };
19
+
20
+ <button
21
+ onClick={() => {
22
+ b.count.value--;
23
+ }}
24
+ >
25
+ {'-'}
26
+ </button>
27
+ <span class="count">{b.count.value}</span>
28
+ <button
29
+ onClick={() => {
30
+ b.count.value++;
31
+ }}
32
+ >
33
+ {'+'}
34
+ </button>
35
+ </div>
36
+ </>;
35
37
  }
36
38
  render(Basic);
37
39
 
@@ -49,37 +51,38 @@ describe('basic client > reactivity', () => {
49
51
  });
50
52
 
51
53
  it('renders multiple reactive lexical blocks with complexity', () => {
52
- component Basic() {
53
- const count = 'count';
54
-
55
- <div>
56
- let obj = {
57
- count: track(0),
58
- };
59
-
60
- <span>{obj[count].value}</span>
61
- </div>
62
- <div>
63
- let b = {
64
- count: track(0),
65
- };
66
-
67
- <button
68
- onClick={() => {
69
- b[count].value--;
70
- }}
71
- >
72
- {'-'}
73
- </button>
74
- <span class="count">{b[count].value}</span>
75
- <button
76
- onClick={() => {
77
- b[count].value++;
78
- }}
79
- >
80
- {'+'}
81
- </button>
82
- </div>
54
+ function Basic() {
55
+ return <>
56
+ const count = 'count';
57
+ <div>
58
+ let obj = {
59
+ count: track(0),
60
+ };
61
+
62
+ <span>{obj[count].value}</span>
63
+ </div>
64
+ <div>
65
+ let b = {
66
+ count: track(0),
67
+ };
68
+
69
+ <button
70
+ onClick={() => {
71
+ b[count].value--;
72
+ }}
73
+ >
74
+ {'-'}
75
+ </button>
76
+ <span class="count">{b[count].value}</span>
77
+ <button
78
+ onClick={() => {
79
+ b[count].value++;
80
+ }}
81
+ >
82
+ {'+'}
83
+ </button>
84
+ </div>
85
+ </>;
83
86
  }
84
87
  render(Basic);
85
88
 
@@ -97,19 +100,20 @@ describe('basic client > reactivity', () => {
97
100
  });
98
101
 
99
102
  it('renders with computed reactive state', () => {
100
- component Basic() {
101
- let &[count] = track(5);
102
-
103
- <div class="count">{count}</div>
104
- <div class="doubled">{count * 2}</div>
105
- <div class="is-even">{count % 2 === 0 ? 'Even' : 'Odd'}</div>
106
- <button
107
- onClick={() => {
108
- count++;
109
- }}
110
- >
111
- {'Increment'}
112
- </button>
103
+ function Basic() {
104
+ return <>
105
+ let &[count] = track(5);
106
+ <div class="count">{count}</div>
107
+ <div class="doubled">{count * 2}</div>
108
+ <div class="is-even">{count % 2 === 0 ? 'Even' : 'Odd'}</div>
109
+ <button
110
+ onClick={() => {
111
+ count++;
112
+ }}
113
+ >
114
+ {'Increment'}
115
+ </button>
116
+ </>;
113
117
  }
114
118
 
115
119
  render(Basic);
@@ -134,48 +138,45 @@ describe('basic client > reactivity', () => {
134
138
  it('basic reactivity with standard arrays should work', () => {
135
139
  let logs: string[] = [];
136
140
 
137
- component App() {
138
- let first = track(0);
139
- let second = track(0);
140
- const arr = [first, second];
141
-
142
- const total = track(() => arr.reduce((a, b) => a + b.value, 0));
143
-
144
- <button
145
- onClick={() => {
146
- first.value++;
147
- }}
148
- >
149
- {'first:' + first.value}
150
- </button>
151
- <button
152
- onClick={() => {
153
- second.value++;
154
- }}
155
- >
156
- {'second: ' + second.value}
157
- </button>
158
-
159
- effect(() => {
160
- let _arr: number[] = [];
161
-
162
- arr.forEach((item) => {
163
- _arr.push(item.value);
164
- });
165
-
166
- logs.push(_arr.join(', '));
167
- });
141
+ function App() {
142
+ return <>
143
+ let first = track(0);
144
+ let second = track(0);
145
+ const arr = [first, second];
146
+ const total = track(() => arr.reduce((a, b) => a + b.value, 0));
147
+ <button
148
+ onClick={() => {
149
+ first.value++;
150
+ }}
151
+ >
152
+ {'first:' + first.value}
153
+ </button>
154
+ <button
155
+ onClick={() => {
156
+ second.value++;
157
+ }}
158
+ >
159
+ {'second: ' + second.value}
160
+ </button>
161
+ effect(() => {
162
+ let _arr: number[] = [];
168
163
 
169
- effect(() => {
170
- if (arr.map((a) => a.value).includes(1)) {
171
- logs.push('arr includes 1');
172
- }
173
- });
164
+ arr.forEach((item) => {
165
+ _arr.push(item.value);
166
+ });
174
167
 
175
- <div>{'Sum: ' + total.value}</div>
176
- <div>{'Comma Separated: ' + arr.map((a) => a.value).join(', ')}</div>
177
- <div>{'Number to string: ' + arr.map((a) => String(a.value))}</div>
178
- <div>{'Even numbers: ' + arr.map((a) => a.value).filter((a) => a % 2 === 0)}</div>
168
+ logs.push(_arr.join(', '));
169
+ });
170
+ effect(() => {
171
+ if (arr.map((a) => a.value).includes(1)) {
172
+ logs.push('arr includes 1');
173
+ }
174
+ });
175
+ <div>{'Sum: ' + total.value}</div>
176
+ <div>{'Comma Separated: ' + arr.map((a) => a.value).join(', ')}</div>
177
+ <div>{'Number to string: ' + arr.map((a) => String(a.value))}</div>
178
+ <div>{'Even numbers: ' + arr.map((a) => a.value).filter((a) => a % 2 === 0)}</div>
179
+ </>;
179
180
  }
180
181
 
181
182
  render(App);
@@ -210,17 +211,18 @@ describe('basic client > reactivity', () => {
210
211
  });
211
212
 
212
213
  it('uses track get and set where both mutate value', () => {
213
- component App() {
214
- let &[count] = track(0, (v) => v + 1, (v) => v * 2);
215
-
216
- <div class="count">{count}</div>
217
- <button
218
- onClick={() => {
219
- count++;
220
- }}
221
- >
222
- {'Increment'}
223
- </button>
214
+ function App() {
215
+ return <>
216
+ let &[count] = track(0, (v) => v + 1, (v) => v * 2);
217
+ <div class="count">{count}</div>
218
+ <button
219
+ onClick={() => {
220
+ count++;
221
+ }}
222
+ >
223
+ {'Increment'}
224
+ </button>
225
+ </>;
224
226
  }
225
227
 
226
228
  render(App);
@@ -236,17 +238,18 @@ describe('basic client > reactivity', () => {
236
238
  });
237
239
 
238
240
  it('uses track get and set where set only mutates value', () => {
239
- component App() {
240
- let &[count] = track(1, (v) => v, (v) => v * 2);
241
-
242
- <div class="count">{count}</div>
243
- <button
244
- onClick={() => {
245
- count++;
246
- }}
247
- >
248
- {'Increment'}
249
- </button>
241
+ function App() {
242
+ return <>
243
+ let &[count] = track(1, (v) => v, (v) => v * 2);
244
+ <div class="count">{count}</div>
245
+ <button
246
+ onClick={() => {
247
+ count++;
248
+ }}
249
+ >
250
+ {'Increment'}
251
+ </button>
252
+ </>;
250
253
  }
251
254
 
252
255
  render(App);
@@ -262,17 +265,18 @@ describe('basic client > reactivity', () => {
262
265
  });
263
266
 
264
267
  it('uses track get and set where get only mutates value', () => {
265
- component App() {
266
- let &[count] = track(0, (v) => v + 1, (v) => v);
267
-
268
- <div class="count">{count}</div>
269
- <button
270
- onClick={() => {
271
- count++;
272
- }}
273
- >
274
- {'Increment'}
275
- </button>
268
+ function App() {
269
+ return <>
270
+ let &[count] = track(0, (v) => v + 1, (v) => v);
271
+ <div class="count">{count}</div>
272
+ <button
273
+ onClick={() => {
274
+ count++;
275
+ }}
276
+ >
277
+ {'Increment'}
278
+ </button>
279
+ </>;
276
280
  }
277
281
 
278
282
  render(App);
@@ -290,19 +294,20 @@ describe('basic client > reactivity', () => {
290
294
  it('passes in next and prev to track set function', () => {
291
295
  let logs: number[] = [];
292
296
 
293
- component App() {
294
- let &[count] = track(0, (v) => v, (next, prev) => {
295
- logs.push(prev, next);
296
- return next;
297
- });
298
-
299
- <button
300
- onClick={() => {
301
- count++;
302
- }}
303
- >
304
- {'Increment'}
305
- </button>
297
+ function App() {
298
+ return <>
299
+ let &[count] = track(0, (v) => v, (next, prev) => {
300
+ logs.push(prev, next);
301
+ return next;
302
+ });
303
+ <button
304
+ onClick={() => {
305
+ count++;
306
+ }}
307
+ >
308
+ {'Increment'}
309
+ </button>
310
+ </>;
306
311
  }
307
312
 
308
313
  render(App);
@@ -315,15 +320,15 @@ describe('basic client > reactivity', () => {
315
320
  });
316
321
 
317
322
  it('doesn\'t error on mutating a tracked variable in track() setter', () => {
318
- component Basic() {
319
- let &[count] = track(0);
320
-
321
- const &[doubled] = track(0, undefined, (value) => {
322
- count += value;
323
- return value;
324
- });
325
-
326
- <p>{doubled}</p>
323
+ function Basic() {
324
+ return <>
325
+ let &[count] = track(0);
326
+ const &[doubled] = track(0, undefined, (value) => {
327
+ count += value;
328
+ return value;
329
+ });
330
+ <p>{doubled}</p>
331
+ </>;
327
332
  }
328
333
 
329
334
  render(Basic);
@@ -334,12 +339,13 @@ describe('basic client > reactivity', () => {
334
339
  it('unwraps tracked values inside effect', () => {
335
340
  let state: { count?: number } = {};
336
341
 
337
- component Basic() {
338
- let &[count] = track(0);
339
-
340
- effect(() => {
341
- state.count = count;
342
- });
342
+ function Basic() {
343
+ return <>
344
+ let &[count] = track(0);
345
+ effect(() => {
346
+ state.count = count;
347
+ });
348
+ </>;
343
349
  }
344
350
 
345
351
  render(Basic);
@@ -358,19 +364,20 @@ describe('basic client > reactivity', () => {
358
364
  finalValue?: number;
359
365
  } = {};
360
366
 
361
- component Basic() {
362
- let &[count] = track(5);
363
-
364
- effect(() => {
365
- untrack(() => {
366
- state.initialValue = count;
367
- state.preIncrement = ++count;
368
- state.postIncrement = count++;
369
- state.preDecrement = --count;
370
- state.postDecrement = count--;
371
- state.finalValue = count;
367
+ function Basic() {
368
+ return <>
369
+ let &[count] = track(5);
370
+ effect(() => {
371
+ untrack(() => {
372
+ state.initialValue = count;
373
+ state.preIncrement = ++count;
374
+ state.postIncrement = count++;
375
+ state.preDecrement = --count;
376
+ state.postDecrement = count--;
377
+ state.finalValue = count;
378
+ });
372
379
  });
373
- });
380
+ </>;
374
381
  }
375
382
 
376
383
  render(Basic);
@@ -385,11 +392,12 @@ describe('basic client > reactivity', () => {
385
392
  });
386
393
 
387
394
  it('returns the same tracked object if plain track is called with a tracked object', () => {
388
- component App() {
389
- const t = track({ a: 1, b: 2, c: 3 });
390
- const doublet = track(t);
391
-
392
- <pre>{t === doublet}</pre>
395
+ function App() {
396
+ return <>
397
+ const t = track({ a: 1, b: 2, c: 3 });
398
+ const doublet = track(t);
399
+ <pre>{t === doublet}</pre>
400
+ </>;
393
401
  }
394
402
 
395
403
  render(App);