ripple 0.3.25 → 0.3.26

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 (49) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/package.json +5 -5
  3. package/src/runtime/index-client.js +4 -0
  4. package/src/runtime/internal/client/hmr.js +1 -1
  5. package/src/runtime/internal/client/hydration.js +14 -0
  6. package/src/runtime/internal/client/runtime.js +127 -31
  7. package/src/runtime/internal/client/types.d.ts +3 -33
  8. package/src/runtime/internal/server/blocks.js +21 -1
  9. package/src/runtime/internal/server/index.js +299 -34
  10. package/src/runtime/internal/server/types.d.ts +3 -31
  11. package/src/runtime/reactive-value.js +1 -0
  12. package/src/utils/escaping.js +11 -0
  13. package/src/utils/track-async-serialization.js +9 -0
  14. package/tests/client/async-suspend.test.tsrx +11 -1
  15. package/tests/client/compiler/compiler.basic.test.tsrx +18 -3
  16. package/tests/client/track-async-hydration.test.tsrx +54 -0
  17. package/tests/hydration/compiled/client/basic.js +1 -1
  18. package/tests/hydration/compiled/client/events.js +8 -8
  19. package/tests/hydration/compiled/client/for.js +22 -24
  20. package/tests/hydration/compiled/client/head.js +6 -6
  21. package/tests/hydration/compiled/client/hmr.js +1 -1
  22. package/tests/hydration/compiled/client/html.js +1 -1
  23. package/tests/hydration/compiled/client/if-children.js +7 -7
  24. package/tests/hydration/compiled/client/if.js +5 -5
  25. package/tests/hydration/compiled/client/mixed-control-flow.js +4 -4
  26. package/tests/hydration/compiled/client/portal.js +1 -1
  27. package/tests/hydration/compiled/client/reactivity.js +9 -9
  28. package/tests/hydration/compiled/client/return.js +23 -23
  29. package/tests/hydration/compiled/client/switch.js +4 -4
  30. package/tests/hydration/compiled/client/track-async-serialization.js +390 -0
  31. package/tests/hydration/compiled/client/try.js +2 -2
  32. package/tests/hydration/compiled/server/basic.js +1 -1
  33. package/tests/hydration/compiled/server/events.js +8 -8
  34. package/tests/hydration/compiled/server/for.js +34 -28
  35. package/tests/hydration/compiled/server/head.js +6 -6
  36. package/tests/hydration/compiled/server/hmr.js +1 -1
  37. package/tests/hydration/compiled/server/html.js +1 -1
  38. package/tests/hydration/compiled/server/if-children.js +7 -7
  39. package/tests/hydration/compiled/server/if.js +5 -5
  40. package/tests/hydration/compiled/server/mixed-control-flow.js +4 -4
  41. package/tests/hydration/compiled/server/portal.js +1 -1
  42. package/tests/hydration/compiled/server/reactivity.js +9 -9
  43. package/tests/hydration/compiled/server/return.js +11 -11
  44. package/tests/hydration/compiled/server/switch.js +4 -4
  45. package/tests/hydration/compiled/server/track-async-serialization.js +502 -0
  46. package/tests/hydration/compiled/server/try.js +2 -2
  47. package/tests/hydration/components/track-async-serialization.tsrx +116 -0
  48. package/tests/hydration/track-async-serialization.test.js +127 -0
  49. package/tests/server/track-async-serialization.test.tsrx +185 -0
@@ -1,6 +1,6 @@
1
1
  import { parse, compile, compile_to_volar_mappings } from '@tsrx/ripple';
2
- import { obfuscateIdentifier } from '@tsrx/core';
3
2
  import type * as AST from 'estree';
3
+ import type * as ESTreeJSX from 'estree-jsx';
4
4
 
5
5
  function count_occurrences(string: string, subString: string): number {
6
6
  let count = 0;
@@ -697,14 +697,14 @@ export component App() {
697
697
  const ast = parse(source);
698
698
  const comp = ast.body[0] as unknown as AST.Component;
699
699
  const ul = comp.body.find((n) => n.type === 'Element') as AST.Element;
700
- expect(ul.id.name).toBe('ul');
700
+ expect((ul.id as AST.Identifier).name).toBe('ul');
701
701
  expect(ul.children).toHaveLength(1);
702
702
  const decl = ul.children[0] as unknown as AST.VariableDeclaration;
703
703
  expect(decl.type).toBe('VariableDeclaration');
704
704
  expect(decl.kind).toBe('var');
705
705
  expect((decl.declarations[0].id as AST.Identifier).name).toBe('a');
706
706
  expect((decl.declarations[0].init as AST.Literal).value).toBe('123');
707
- expect(ul.closingElement?.name?.name).toBe('ul');
707
+ expect((ul.closingElement?.name as ESTreeJSX.JSXIdentifier)?.name).toBe('ul');
708
708
  },
709
709
  );
710
710
 
@@ -725,4 +725,19 @@ export component App() {
725
725
 
726
726
  expect(result).toContain('_$_.spread_props(');
727
727
  });
728
+
729
+ it('parses less-than comparisons at line start in element children without whitespace', () => {
730
+ const source = `component TodoList({ items }: { items: { text: string }[] }) {
731
+ <ul>var a = 3
732
+ <4;</ul>
733
+ }`;
734
+
735
+ const ast = parse(source);
736
+ const comp = ast.body[0] as unknown as AST.Component;
737
+ const ul = comp.body.find((n) => n.type === 'Element') as AST.Element;
738
+ expect(ul.id.name).toBe('ul');
739
+ expect(ul.children.length).toBeGreaterThanOrEqual(1);
740
+ const decl = ul.children[0] as unknown as AST.VariableDeclaration;
741
+ expect(decl.type).toBe('VariableDeclaration');
742
+ });
728
743
  });
@@ -0,0 +1,54 @@
1
+ import { trackAsync, flushSync, SUSPENSE_PENDING, peek } from 'ripple';
2
+
3
+ describe('trackAsync hydration from serialized data (client)', () => {
4
+ it('reads serialized data from script tag during hydration simulation', async () => {
5
+ // This test verifies the client runtime can parse the serialized script tags
6
+ // The full hydration round-trip is tested in hydration tests
7
+
8
+ component App() {
9
+ try {
10
+ let &[data] = trackAsync(() => Promise.resolve('fallback'));
11
+ <p class="result">{data}</p>
12
+ } pending {
13
+ <p class="loading">{'loading...'}</p>
14
+ }
15
+ }
16
+
17
+ render(App);
18
+
19
+ // Without hydration, this should go through normal async flow
20
+ // Need to wait for the pending state to render
21
+ await new Promise((resolve) => setTimeout(resolve, 0));
22
+ flushSync();
23
+
24
+ // Promise resolves immediately so should show result
25
+ expect(container.querySelector('.result')?.textContent).toBe('fallback');
26
+ });
27
+
28
+ it('trackAsync resolves normally when no script tag is present', async () => {
29
+ let resolve_fn: (value: number) => void;
30
+ const promise = new Promise<number>((r) => (resolve_fn = r));
31
+
32
+ component App() {
33
+ try {
34
+ let &[value] = trackAsync(() => promise);
35
+ <span class="value">{value}</span>
36
+ } pending {
37
+ <span class="pending">{'waiting'}</span>
38
+ }
39
+ }
40
+
41
+ render(App);
42
+
43
+ await new Promise((r) => setTimeout(r, 0));
44
+ flushSync();
45
+
46
+ expect(container.querySelector('.pending')?.textContent).toBe('waiting');
47
+
48
+ resolve_fn!(42);
49
+ await new Promise((r) => setTimeout(r, 0));
50
+ flushSync();
51
+
52
+ expect(container.querySelector('.value')?.textContent).toBe('42');
53
+ });
54
+ });
@@ -202,7 +202,7 @@ function TextProp(__anchor, __props, __block) {
202
202
  export function TextPropWithToggle(__anchor, _, __block) {
203
203
  _$_.push_component();
204
204
 
205
- let lazy = _$_.track(false, void 0, void 0, __block);
205
+ let lazy = _$_.track(false, __block, 'b5de6402');
206
206
  var fragment_5 = root_13();
207
207
  var node_4 = _$_.first_child_frag(fragment_5);
208
208
 
@@ -14,7 +14,7 @@ import { track } from 'ripple';
14
14
  export function ClickCounter(__anchor, _, __block) {
15
15
  _$_.push_component();
16
16
 
17
- let lazy = _$_.track(0, void 0, void 0, __block);
17
+ let lazy = _$_.track(0, __block, 'a070e3a7');
18
18
  var div_1 = root();
19
19
 
20
20
  {
@@ -41,7 +41,7 @@ export function ClickCounter(__anchor, _, __block) {
41
41
  export function IncrementDecrement(__anchor, _, __block) {
42
42
  _$_.push_component();
43
43
 
44
- let lazy_1 = _$_.track(0, void 0, void 0, __block);
44
+ let lazy_1 = _$_.track(0, __block, '87fcabdd');
45
45
  var div_2 = root_1();
46
46
 
47
47
  {
@@ -74,8 +74,8 @@ export function IncrementDecrement(__anchor, _, __block) {
74
74
  export function MultipleEvents(__anchor, _, __block) {
75
75
  _$_.push_component();
76
76
 
77
- let lazy_2 = _$_.track(0, void 0, void 0, __block);
78
- let lazy_3 = _$_.track(0, void 0, void 0, __block);
77
+ let lazy_2 = _$_.track(0, __block, '41b9f0b0');
78
+ let lazy_3 = _$_.track(0, __block, '72789f75');
79
79
  var div_3 = root_2();
80
80
 
81
81
  {
@@ -115,8 +115,8 @@ export function MultipleEvents(__anchor, _, __block) {
115
115
  export function MultiStateUpdate(__anchor, _, __block) {
116
116
  _$_.push_component();
117
117
 
118
- let lazy_4 = _$_.track(0, void 0, void 0, __block);
119
- let lazy_5 = _$_.track('none', void 0, void 0, __block);
118
+ let lazy_4 = _$_.track(0, __block, '5a375160');
119
+ let lazy_5 = _$_.track('none', __block, '3ceeb88c');
120
120
 
121
121
  const handleClick = () => {
122
122
  _$_.update(lazy_4);
@@ -156,7 +156,7 @@ export function MultiStateUpdate(__anchor, _, __block) {
156
156
  export function ToggleButton(__anchor, _, __block) {
157
157
  _$_.push_component();
158
158
 
159
- let lazy_6 = _$_.track(false, void 0, void 0, __block);
159
+ let lazy_6 = _$_.track(false, __block, 'be823ec7');
160
160
  var div_5 = root_4();
161
161
 
162
162
  {
@@ -199,7 +199,7 @@ export function ChildButton(__anchor, props, __block) {
199
199
  export function ParentWithChildButton(__anchor, _, __block) {
200
200
  _$_.push_component();
201
201
 
202
- let lazy_7 = _$_.track(0, void 0, void 0, __block);
202
+ let lazy_7 = _$_.track(0, __block, 'dcc2e0f9');
203
203
  var div_6 = root_6();
204
204
 
205
205
  {
@@ -171,7 +171,7 @@ export function KeyedForLoop(__anchor, _, __block) {
171
171
  export function ReactiveForLoopAdd(__anchor, _, __block) {
172
172
  _$_.push_component();
173
173
 
174
- let lazy = _$_.track(['A', 'B'], void 0, void 0, __block);
174
+ let lazy = _$_.track(['A', 'B'], __block, 'e145678a');
175
175
  var fragment = root_6();
176
176
  var button_1 = _$_.first_child_frag(fragment);
177
177
 
@@ -211,7 +211,7 @@ export function ReactiveForLoopAdd(__anchor, _, __block) {
211
211
  export function ReactiveForLoopRemove(__anchor, _, __block) {
212
212
  _$_.push_component();
213
213
 
214
- let lazy_1 = _$_.track(['A', 'B', 'C'], void 0, void 0, __block);
214
+ let lazy_1 = _$_.track(['A', 'B', 'C'], __block, 'b4e9bd54');
215
215
  var fragment_1 = root_8();
216
216
  var button_2 = _$_.first_child_frag(fragment_1);
217
217
 
@@ -251,7 +251,7 @@ export function ReactiveForLoopRemove(__anchor, _, __block) {
251
251
  export function ForLoopInteractive(__anchor, _, __block) {
252
252
  _$_.push_component();
253
253
 
254
- let lazy_2 = _$_.track([0, 0, 0], void 0, void 0, __block);
254
+ let lazy_2 = _$_.track([0, 0, 0], __block, '36f563df');
255
255
  var div_1 = root_10();
256
256
 
257
257
  {
@@ -447,9 +447,8 @@ export function KeyedForLoopReorder(__anchor, _, __block) {
447
447
  { id: 2, name: 'Second' },
448
448
  { id: 3, name: 'Third' }
449
449
  ],
450
- void 0,
451
- void 0,
452
- __block
450
+ __block,
451
+ 'e7abc6a3'
453
452
  );
454
453
 
455
454
  var fragment_2 = root_19();
@@ -496,7 +495,7 @@ export function KeyedForLoopReorder(__anchor, _, __block) {
496
495
  export function KeyedForLoopUpdate(__anchor, _, __block) {
497
496
  _$_.push_component();
498
497
 
499
- let lazy_4 = _$_.track([{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }], void 0, void 0, __block);
498
+ let lazy_4 = _$_.track([{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }], __block, '7a2c2ada');
500
499
  var fragment_3 = root_21();
501
500
  var button_5 = _$_.first_child_frag(fragment_3);
502
501
 
@@ -541,7 +540,7 @@ export function KeyedForLoopUpdate(__anchor, _, __block) {
541
540
  export function ForLoopMixedOperations(__anchor, _, __block) {
542
541
  _$_.push_component();
543
542
 
544
- let lazy_5 = _$_.track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
543
+ let lazy_5 = _$_.track(['A', 'B', 'C', 'D'], __block, '3dd7c7b6');
545
544
  var fragment_4 = root_23();
546
545
  var button_6 = _$_.first_child_frag(fragment_4);
547
546
 
@@ -583,8 +582,8 @@ export function ForLoopMixedOperations(__anchor, _, __block) {
583
582
  export function ForLoopInsideIf(__anchor, _, __block) {
584
583
  _$_.push_component();
585
584
 
586
- let lazy_6 = _$_.track(true, void 0, void 0, __block);
587
- let lazy_7 = _$_.track(['X', 'Y', 'Z'], void 0, void 0, __block);
585
+ let lazy_6 = _$_.track(true, __block, '0528df30');
586
+ let lazy_7 = _$_.track(['X', 'Y', 'Z'], __block, 'bf375103');
588
587
  var fragment_5 = root_25();
589
588
  var button_7 = _$_.first_child_frag(fragment_5);
590
589
 
@@ -641,7 +640,7 @@ export function ForLoopInsideIf(__anchor, _, __block) {
641
640
  export function ForLoopEmptyToPopulated(__anchor, _, __block) {
642
641
  _$_.push_component();
643
642
 
644
- let lazy_8 = _$_.track([], void 0, void 0, __block);
643
+ let lazy_8 = _$_.track([], __block, '525c5dbc');
645
644
  var fragment_6 = root_28();
646
645
  var button_9 = _$_.first_child_frag(fragment_6);
647
646
 
@@ -681,7 +680,7 @@ export function ForLoopEmptyToPopulated(__anchor, _, __block) {
681
680
  export function ForLoopPopulatedToEmpty(__anchor, _, __block) {
682
681
  _$_.push_component();
683
682
 
684
- let lazy_9 = _$_.track(['One', 'Two', 'Three'], void 0, void 0, __block);
683
+ let lazy_9 = _$_.track(['One', 'Two', 'Three'], __block, 'ee47f078');
685
684
  var fragment_7 = root_30();
686
685
  var button_10 = _$_.first_child_frag(fragment_7);
687
686
 
@@ -721,7 +720,7 @@ export function ForLoopPopulatedToEmpty(__anchor, _, __block) {
721
720
  export function NestedForLoopReactive(__anchor, _, __block) {
722
721
  _$_.push_component();
723
722
 
724
- let lazy_10 = _$_.track([[1, 2], [3, 4]], void 0, void 0, __block);
723
+ let lazy_10 = _$_.track([[1, 2], [3, 4]], __block, 'a2f41fb3');
725
724
  var fragment_8 = root_32();
726
725
  var button_11 = _$_.first_child_frag(fragment_8);
727
726
 
@@ -905,7 +904,7 @@ export function ForLoopDeeplyNested(__anchor, _, __block) {
905
904
  export function ForLoopIndexUpdate(__anchor, _, __block) {
906
905
  _$_.push_component();
907
906
 
908
- let lazy_11 = _$_.track(['First', 'Second', 'Third'], void 0, void 0, __block);
907
+ let lazy_11 = _$_.track(['First', 'Second', 'Third'], __block, 'f61e31e6');
909
908
  var fragment_9 = root_39();
910
909
  var button_13 = _$_.first_child_frag(fragment_9);
911
910
 
@@ -955,9 +954,8 @@ export function KeyedForLoopWithIndex(__anchor, _, __block) {
955
954
  { id: 'b', value: 'Beta' },
956
955
  { id: 'c', value: 'Gamma' }
957
956
  ],
958
- void 0,
959
- void 0,
960
- __block
957
+ __block,
958
+ '3467975a'
961
959
  );
962
960
 
963
961
  var fragment_10 = root_41();
@@ -1021,7 +1019,7 @@ export function KeyedForLoopWithIndex(__anchor, _, __block) {
1021
1019
  export function ForLoopWithSiblings(__anchor, _, __block) {
1022
1020
  _$_.push_component();
1023
1021
 
1024
- let lazy_13 = _$_.track(['A', 'B'], void 0, void 0, __block);
1022
+ let lazy_13 = _$_.track(['A', 'B'], __block, '3c7e8152');
1025
1023
  var fragment_11 = root_43();
1026
1024
  var div_13 = _$_.first_child_frag(fragment_11);
1027
1025
 
@@ -1112,7 +1110,7 @@ export function ForLoopItemState(__anchor, _, __block) {
1112
1110
  function TodoItem(__anchor, props, __block) {
1113
1111
  _$_.push_component();
1114
1112
 
1115
- let lazy_14 = _$_.track(false, void 0, void 0, __block);
1113
+ let lazy_14 = _$_.track(false, __block, '4f2402a4');
1116
1114
  var div_16 = root_47();
1117
1115
 
1118
1116
  {
@@ -1194,7 +1192,7 @@ export function ForLoopSingleItem(__anchor, _, __block) {
1194
1192
  export function ForLoopAddAtBeginning(__anchor, _, __block) {
1195
1193
  _$_.push_component();
1196
1194
 
1197
- let lazy_15 = _$_.track(['B', 'C'], void 0, void 0, __block);
1195
+ let lazy_15 = _$_.track(['B', 'C'], __block, '1561403a');
1198
1196
  var fragment_13 = root_50();
1199
1197
  var button_16 = _$_.first_child_frag(fragment_13);
1200
1198
 
@@ -1236,7 +1234,7 @@ export function ForLoopAddAtBeginning(__anchor, _, __block) {
1236
1234
  export function ForLoopAddInMiddle(__anchor, _, __block) {
1237
1235
  _$_.push_component();
1238
1236
 
1239
- let lazy_16 = _$_.track(['A', 'C'], void 0, void 0, __block);
1237
+ let lazy_16 = _$_.track(['A', 'C'], __block, '1bc60b46');
1240
1238
  var fragment_14 = root_52();
1241
1239
  var button_17 = _$_.first_child_frag(fragment_14);
1242
1240
 
@@ -1281,7 +1279,7 @@ export function ForLoopAddInMiddle(__anchor, _, __block) {
1281
1279
  export function ForLoopRemoveFromMiddle(__anchor, _, __block) {
1282
1280
  _$_.push_component();
1283
1281
 
1284
- let lazy_17 = _$_.track(['A', 'B', 'C'], void 0, void 0, __block);
1282
+ let lazy_17 = _$_.track(['A', 'B', 'C'], __block, '1c87f95f');
1285
1283
  var fragment_15 = root_54();
1286
1284
  var button_18 = _$_.first_child_frag(fragment_15);
1287
1285
 
@@ -1359,7 +1357,7 @@ export function ForLoopLargeList(__anchor, _, __block) {
1359
1357
  export function ForLoopSwap(__anchor, _, __block) {
1360
1358
  _$_.push_component();
1361
1359
 
1362
- let lazy_18 = _$_.track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
1360
+ let lazy_18 = _$_.track(['A', 'B', 'C', 'D'], __block, '5f8d152f');
1363
1361
  var fragment_16 = root_58();
1364
1362
  var button_19 = _$_.first_child_frag(fragment_16);
1365
1363
 
@@ -1404,7 +1402,7 @@ export function ForLoopSwap(__anchor, _, __block) {
1404
1402
  export function ForLoopReverse(__anchor, _, __block) {
1405
1403
  _$_.push_component();
1406
1404
 
1407
- let lazy_19 = _$_.track(['A', 'B', 'C', 'D'], void 0, void 0, __block);
1405
+ let lazy_19 = _$_.track(['A', 'B', 'C', 'D'], __block, '24602e64');
1408
1406
  var fragment_17 = root_60();
1409
1407
  var button_20 = _$_.first_child_frag(fragment_17);
1410
1408
 
@@ -33,7 +33,7 @@ export function StaticTitle(__anchor, _, __block) {
33
33
  export function ReactiveTitle(__anchor, _, __block) {
34
34
  _$_.push_component();
35
35
 
36
- let lazy = _$_.track('Initial Title', void 0, void 0, __block);
36
+ let lazy = _$_.track('Initial Title', __block, 'cbca63e3');
37
37
  var div_2 = root_1();
38
38
 
39
39
  {
@@ -77,7 +77,7 @@ export function MultipleHeadElements(__anchor, _, __block) {
77
77
  export function ReactiveMetaTags(__anchor, _, __block) {
78
78
  _$_.push_component();
79
79
 
80
- let lazy_1 = _$_.track('Initial description', void 0, void 0, __block);
80
+ let lazy_1 = _$_.track('Initial description', __block, '38bfa3b2');
81
81
  var div_4 = root_4();
82
82
 
83
83
  {
@@ -102,7 +102,7 @@ export function ReactiveMetaTags(__anchor, _, __block) {
102
102
  export function TitleWithTemplate(__anchor, _, __block) {
103
103
  _$_.push_component();
104
104
 
105
- let lazy_2 = _$_.track('World', void 0, void 0, __block);
105
+ let lazy_2 = _$_.track('World', __block, 'f3925cd5');
106
106
  var div_5 = root_6();
107
107
 
108
108
  {
@@ -138,8 +138,8 @@ export function EmptyTitle(__anchor, _, __block) {
138
138
  export function ConditionalTitle(__anchor, _, __block) {
139
139
  _$_.push_component();
140
140
 
141
- let lazy_3 = _$_.track(true, void 0, void 0, __block);
142
- let lazy_4 = _$_.track('Main Page', void 0, void 0, __block);
141
+ let lazy_3 = _$_.track(true, __block, 'ff71bf1f');
142
+ let lazy_4 = _$_.track('Main Page', __block, '7cd7d671');
143
143
  var div_7 = root_8();
144
144
 
145
145
  {
@@ -162,7 +162,7 @@ export function ConditionalTitle(__anchor, _, __block) {
162
162
  export function ComputedTitle(__anchor, _, __block) {
163
163
  _$_.push_component();
164
164
 
165
- let lazy_5 = _$_.track(0, void 0, void 0, __block);
165
+ let lazy_5 = _$_.track(0, __block, 'b6a48610');
166
166
  let prefix = 'Count: ';
167
167
  var div_8 = root_9();
168
168
 
@@ -33,7 +33,7 @@ export function Layout(__anchor, { children }, __block) {
33
33
  export function Content(__anchor, _, __block) {
34
34
  _$_.push_component();
35
35
 
36
- let lazy = _$_.track(true, void 0, void 0, __block);
36
+ let lazy = _$_.track(true, __block, '0bdb1500');
37
37
  var div_2 = root_1();
38
38
 
39
39
  {
@@ -862,7 +862,7 @@ function NavItem(__anchor, { href, text: label, active = false }, __block) {
862
862
  function SidebarSection(__anchor, { title, children }, __block) {
863
863
  _$_.push_component();
864
864
 
865
- let lazy = _$_.track(true, void 0, void 0, __block);
865
+ let lazy = _$_.track(true, __block, '6ac6906f');
866
866
  var section_2 = root_38();
867
867
 
868
868
  {
@@ -27,7 +27,7 @@ import { track } from 'ripple';
27
27
  export function IfWithChildren(__anchor, { children }, __block) {
28
28
  _$_.push_component();
29
29
 
30
- let lazy = _$_.track(true, void 0, void 0, __block);
30
+ let lazy = _$_.track(true, __block, 'c64714b1');
31
31
  var div_1 = root();
32
32
 
33
33
  {
@@ -110,7 +110,7 @@ export function TestIfWithChildren(__anchor, _, __block) {
110
110
  export function IfWithStaticChildren(__anchor, _, __block) {
111
111
  _$_.push_component();
112
112
 
113
- let lazy_1 = _$_.track(true, void 0, void 0, __block);
113
+ let lazy_1 = _$_.track(true, __block, '3bba8f77');
114
114
  var div_5 = root_5();
115
115
 
116
116
  {
@@ -142,7 +142,7 @@ export function IfWithStaticChildren(__anchor, _, __block) {
142
142
  export function IfWithSiblingsAndChildren(__anchor, { children }, __block) {
143
143
  _$_.push_component();
144
144
 
145
- let lazy_2 = _$_.track(true, void 0, void 0, __block);
145
+ let lazy_2 = _$_.track(true, __block, 'a1b8fb4c');
146
146
  var section_1 = root_7();
147
147
 
148
148
  {
@@ -210,7 +210,7 @@ export function TestIfWithSiblingsAndChildren(__anchor, _, __block) {
210
210
  export function ElementWithChildrenThenIf(__anchor, _, __block) {
211
211
  _$_.push_component();
212
212
 
213
- let lazy_3 = _$_.track(true, void 0, void 0, __block);
213
+ let lazy_3 = _$_.track(true, __block, '7cd4817b');
214
214
  var fragment_4 = root_11();
215
215
  var div_11 = _$_.first_child_frag(fragment_4);
216
216
 
@@ -247,7 +247,7 @@ export function ElementWithChildrenThenIf(__anchor, _, __block) {
247
247
  export function DeepNestingThenIf(__anchor, _, __block) {
248
248
  _$_.push_component();
249
249
 
250
- let lazy_4 = _$_.track(true, void 0, void 0, __block);
250
+ let lazy_4 = _$_.track(true, __block, '923116be');
251
251
  var fragment_5 = root_13();
252
252
  var section_2 = _$_.first_child_frag(fragment_5);
253
253
 
@@ -284,7 +284,7 @@ export function DeepNestingThenIf(__anchor, _, __block) {
284
284
  export function DomElementChildrenThenSibling(__anchor, _, __block) {
285
285
  _$_.push_component();
286
286
 
287
- let lazy_5 = _$_.track('code', void 0, void 0, __block);
287
+ let lazy_5 = _$_.track('code', __block, '33a1e97f');
288
288
  var div_13 = root_15();
289
289
 
290
290
  {
@@ -353,7 +353,7 @@ export function DomElementChildrenThenSibling(__anchor, _, __block) {
353
353
  export function DomChildrenThenStaticSiblings(__anchor, _, __block) {
354
354
  _$_.push_component();
355
355
 
356
- let lazy_6 = _$_.track(0, void 0, void 0, __block);
356
+ let lazy_6 = _$_.track(0, __block, '0ea64305');
357
357
  var fragment_6 = root_18();
358
358
  var div_17 = _$_.first_child_frag(fragment_6);
359
359
 
@@ -102,7 +102,7 @@ export function IfElse(__anchor, _, __block) {
102
102
  export function ReactiveIf(__anchor, _, __block) {
103
103
  _$_.push_component();
104
104
 
105
- let lazy = _$_.track(true, void 0, void 0, __block);
105
+ let lazy = _$_.track(true, __block, '19a16ff0');
106
106
  var fragment_3 = root_7();
107
107
  var button_1 = _$_.first_child_frag(fragment_3);
108
108
 
@@ -131,7 +131,7 @@ export function ReactiveIf(__anchor, _, __block) {
131
131
  export function ReactiveIfElse(__anchor, _, __block) {
132
132
  _$_.push_component();
133
133
 
134
- let lazy_1 = _$_.track(false, void 0, void 0, __block);
134
+ let lazy_1 = _$_.track(false, __block, '41177f39');
135
135
  var fragment_4 = root_9();
136
136
  var button_2 = _$_.first_child_frag(fragment_4);
137
137
 
@@ -166,8 +166,8 @@ export function ReactiveIfElse(__anchor, _, __block) {
166
166
  export function NestedIf(__anchor, _, __block) {
167
167
  _$_.push_component();
168
168
 
169
- let lazy_2 = _$_.track(true, void 0, void 0, __block);
170
- let lazy_3 = _$_.track(true, void 0, void 0, __block);
169
+ let lazy_2 = _$_.track(true, __block, '7894e1df');
170
+ let lazy_3 = _$_.track(true, __block, 'f21b8c26');
171
171
  var fragment_5 = root_12();
172
172
  var button_3 = _$_.first_child_frag(fragment_5);
173
173
 
@@ -221,7 +221,7 @@ export function NestedIf(__anchor, _, __block) {
221
221
  export function IfElseIfChain(__anchor, _, __block) {
222
222
  _$_.push_component();
223
223
 
224
- let lazy_4 = _$_.track('loading', void 0, void 0, __block);
224
+ let lazy_4 = _$_.track('loading', __block, '4c69c94a');
225
225
  var div_9 = root_15();
226
226
 
227
227
  {
@@ -168,9 +168,9 @@ export function MixedControlFlowStatic(__anchor, _, __block) {
168
168
  export function MixedControlFlowReactive(__anchor, _, __block) {
169
169
  _$_.push_component();
170
170
 
171
- let lazy = _$_.track(true, void 0, void 0, __block);
172
- let lazy_1 = _$_.track('a', void 0, void 0, __block);
173
- let lazy_2 = _$_.track([{ id: 1, label: 'One' }, { id: 2, label: 'Two' }], void 0, void 0, __block);
171
+ let lazy = _$_.track(true, __block, '5ae53d26');
172
+ let lazy_1 = _$_.track('a', __block, '5b53eda2');
173
+ let lazy_2 = _$_.track([{ id: 1, label: 'One' }, { id: 2, label: 'Two' }], __block, '7890dad6');
174
174
  var fragment_4 = root_9();
175
175
  var button_1 = _$_.first_child_frag(fragment_4);
176
176
 
@@ -403,7 +403,7 @@ export function MixedControlFlowAsyncPending(__anchor, _, __block) {
403
403
  function AsyncRow(__anchor, { label }, __block) {
404
404
  _$_.push_component();
405
405
 
406
- let lazy_3 = _$_.track_async(() => _$_.with_scope(__block, () => Promise.resolve(label)), __block);
406
+ let lazy_3 = _$_.track_async(() => _$_.with_scope(__block, () => Promise.resolve(label)), __block, '10cc79a0');
407
407
  var div_9 = root_25();
408
408
 
409
409
  {
@@ -48,7 +48,7 @@ export function SimplePortal(__anchor, _, __block) {
48
48
  export function ConditionalPortal(__anchor, _, __block) {
49
49
  _$_.push_component();
50
50
 
51
- let lazy = _$_.track(true, void 0, void 0, __block);
51
+ let lazy = _$_.track(true, __block, '4f6df174');
52
52
  var div_3 = root_2();
53
53
 
54
54
  {
@@ -13,7 +13,7 @@ import { track } from 'ripple';
13
13
  export function TrackedState(__anchor, _, __block) {
14
14
  _$_.push_component();
15
15
 
16
- let lazy = _$_.track(0, void 0, void 0, __block);
16
+ let lazy = _$_.track(0, __block, 'c1818584');
17
17
  var div_1 = root();
18
18
 
19
19
  {
@@ -30,7 +30,7 @@ export function TrackedState(__anchor, _, __block) {
30
30
  export function CounterWithInitial(__anchor, props, __block) {
31
31
  _$_.push_component();
32
32
 
33
- let lazy_1 = _$_.track(props.initial, void 0, void 0, __block);
33
+ let lazy_1 = _$_.track(props.initial, __block, '03ea4348');
34
34
  var div_2 = root_1();
35
35
 
36
36
  {
@@ -62,8 +62,8 @@ export function CounterWrapper(__anchor, _, __block) {
62
62
  export function ComputedValues(__anchor, _, __block) {
63
63
  _$_.push_component();
64
64
 
65
- let lazy_2 = _$_.track(2, void 0, void 0, __block);
66
- let lazy_3 = _$_.track(3, void 0, void 0, __block);
65
+ let lazy_2 = _$_.track(2, __block, 'b78281db');
66
+ let lazy_3 = _$_.track(3, __block, 'a0cf6c6d');
67
67
  const sum = () => _$_.get(lazy_2) + _$_.get(lazy_3);
68
68
  var div_3 = root_3();
69
69
 
@@ -81,9 +81,9 @@ export function ComputedValues(__anchor, _, __block) {
81
81
  export function MultipleTracked(__anchor, _, __block) {
82
82
  _$_.push_component();
83
83
 
84
- let lazy_4 = _$_.track(10, void 0, void 0, __block);
85
- let lazy_5 = _$_.track(20, void 0, void 0, __block);
86
- let lazy_6 = _$_.track(30, void 0, void 0, __block);
84
+ let lazy_4 = _$_.track(10, __block, '843522de');
85
+ let lazy_5 = _$_.track(20, __block, '1308996d');
86
+ let lazy_6 = _$_.track(30, __block, '048c3fd0');
87
87
  var fragment_1 = root_4();
88
88
  var div_4 = _$_.first_child_frag(fragment_1);
89
89
 
@@ -120,8 +120,8 @@ export function MultipleTracked(__anchor, _, __block) {
120
120
  export function DerivedState(__anchor, _, __block) {
121
121
  _$_.push_component();
122
122
 
123
- let lazy_7 = _$_.track('John', void 0, void 0, __block);
124
- let lazy_8 = _$_.track('Doe', void 0, void 0, __block);
123
+ let lazy_7 = _$_.track('John', __block, '6015eeca');
124
+ let lazy_8 = _$_.track('Doe', __block, '4fa9a20e');
125
125
  const fullName = () => `${_$_.get(lazy_7)} ${_$_.get(lazy_8)}`;
126
126
  var div_7 = root_5();
127
127