ripple 0.3.11 → 0.3.13

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 (190) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/package.json +8 -2
  3. package/src/compiler/phases/1-parse/index.js +73 -30
  4. package/src/compiler/phases/2-analyze/index.js +28 -58
  5. package/src/compiler/phases/3-transform/client/index.js +127 -164
  6. package/src/compiler/phases/3-transform/segments.js +4 -8
  7. package/src/compiler/phases/3-transform/server/index.js +210 -360
  8. package/src/compiler/types/import.d.ts +0 -12
  9. package/src/compiler/types/index.d.ts +12 -5
  10. package/src/compiler/types/parse.d.ts +2 -0
  11. package/src/compiler/utils.js +39 -44
  12. package/src/helpers.d.ts +2 -0
  13. package/src/runtime/index-client.js +15 -13
  14. package/src/runtime/index-server.js +18 -11
  15. package/src/runtime/internal/client/blocks.js +19 -23
  16. package/src/runtime/internal/client/constants.js +20 -9
  17. package/src/runtime/internal/client/index.js +14 -4
  18. package/src/runtime/internal/client/runtime.js +435 -173
  19. package/src/runtime/internal/client/try.js +334 -156
  20. package/src/runtime/internal/client/types.d.ts +26 -0
  21. package/src/runtime/internal/server/blocks.js +183 -0
  22. package/src/runtime/internal/server/constants.js +7 -0
  23. package/src/runtime/internal/server/index.js +780 -148
  24. package/src/runtime/internal/server/types.d.ts +35 -0
  25. package/src/server/index.js +1 -1
  26. package/src/utils/async.js +35 -0
  27. package/src/utils/builders.js +3 -1
  28. package/tests/client/__snapshots__/computed-properties.test.rsrx.snap +49 -0
  29. package/tests/client/__snapshots__/for.test.rsrx.snap +319 -0
  30. package/tests/client/__snapshots__/html.test.rsrx.snap +40 -0
  31. package/tests/client/_etc.test.rsrx +7 -0
  32. package/tests/client/array/{array.static.test.ripple → array.static.test.rsrx} +18 -20
  33. package/tests/client/async-suspend.test.rsrx +662 -0
  34. package/tests/client/basic/__snapshots__/basic.attributes.test.rsrx.snap +60 -0
  35. package/tests/client/basic/__snapshots__/basic.rendering.test.rsrx.snap +59 -0
  36. package/tests/client/basic/{basic.errors.test.ripple → basic.errors.test.rsrx} +2 -2
  37. package/tests/client/compiler/__snapshots__/compiler.assignments.test.rsrx.snap +12 -0
  38. package/tests/client/compiler/__snapshots__/compiler.typescript.test.rsrx.snap +46 -0
  39. package/tests/client/compiler/{compiler.try-in-function.test.ripple → compiler.try-in-function.test.rsrx} +8 -6
  40. package/tests/client/composite/__snapshots__/composite.render.test.rsrx.snap +37 -0
  41. package/tests/client/{function-overload.test.ripple → function-overload.test.rsrx} +1 -1
  42. package/tests/client/try.test.rsrx +1702 -0
  43. package/tests/hydration/build-components.js +5 -3
  44. package/tests/hydration/compiled/client/head.js +11 -11
  45. package/tests/hydration/compiled/client/mixed-control-flow.js +55 -70
  46. package/tests/hydration/compiled/client/nested-control-flow.js +72 -88
  47. package/tests/hydration/compiled/client/try.js +42 -54
  48. package/tests/hydration/compiled/server/basic.js +491 -369
  49. package/tests/hydration/compiled/server/composite.js +153 -128
  50. package/tests/hydration/compiled/server/events.js +166 -145
  51. package/tests/hydration/compiled/server/for.js +821 -677
  52. package/tests/hydration/compiled/server/head.js +200 -165
  53. package/tests/hydration/compiled/server/hmr.js +62 -54
  54. package/tests/hydration/compiled/server/html-in-template.js +64 -55
  55. package/tests/hydration/compiled/server/html.js +1477 -1360
  56. package/tests/hydration/compiled/server/if-children.js +448 -408
  57. package/tests/hydration/compiled/server/if.js +204 -171
  58. package/tests/hydration/compiled/server/mixed-control-flow.js +237 -195
  59. package/tests/hydration/compiled/server/nested-control-flow.js +533 -467
  60. package/tests/hydration/compiled/server/portal.js +94 -107
  61. package/tests/hydration/compiled/server/reactivity.js +87 -64
  62. package/tests/hydration/compiled/server/return.js +1424 -1174
  63. package/tests/hydration/compiled/server/switch.js +268 -238
  64. package/tests/hydration/compiled/server/try.js +98 -87
  65. package/tests/hydration/components/{mixed-control-flow.ripple → mixed-control-flow.rsrx} +2 -2
  66. package/tests/hydration/components/{try.ripple → try.rsrx} +4 -2
  67. package/tests/hydration/mixed-control-flow.test.js +14 -0
  68. package/tests/hydration/nested-control-flow.test.js +50 -48
  69. package/tests/hydration/try.test.js +25 -0
  70. package/tests/server/__snapshots__/compiler.test.ripple.snap +0 -32
  71. package/tests/server/__snapshots__/compiler.test.rsrx.snap +95 -0
  72. package/tests/server/{compiler.test.ripple → compiler.test.rsrx} +0 -17
  73. package/tests/server/{html-nesting-validation.test.ripple → html-nesting-validation.test.rsrx} +3 -3
  74. package/tests/server/streaming-ssr.test.rsrx +115 -0
  75. package/tests/server/try.test.rsrx +503 -0
  76. package/tests/utils/compiler-compat-config.test.js +3 -3
  77. package/tests/utils/vite-plugin-config.test.js +1 -1
  78. package/tests/utils/vite-plugin-hmr.test.js +5 -5
  79. package/tsconfig.json +4 -0
  80. package/types/index.d.ts +13 -23
  81. package/types/server.d.ts +43 -16
  82. package/tests/client/_etc.test.ripple +0 -5
  83. package/tests/client/async-suspend.test.ripple +0 -94
  84. package/tests/client/try.test.ripple +0 -196
  85. package/tests/server/streaming-ssr.test.ripple +0 -68
  86. package/tests/server/try.test.ripple +0 -82
  87. /package/tests/client/array/{array.copy-within.test.ripple → array.copy-within.test.rsrx} +0 -0
  88. /package/tests/client/array/{array.derived.test.ripple → array.derived.test.rsrx} +0 -0
  89. /package/tests/client/array/{array.iteration.test.ripple → array.iteration.test.rsrx} +0 -0
  90. /package/tests/client/array/{array.mutations.test.ripple → array.mutations.test.rsrx} +0 -0
  91. /package/tests/client/array/{array.to-methods.test.ripple → array.to-methods.test.rsrx} +0 -0
  92. /package/tests/client/basic/{basic.attributes.test.ripple → basic.attributes.test.rsrx} +0 -0
  93. /package/tests/client/basic/{basic.collections.test.ripple → basic.collections.test.rsrx} +0 -0
  94. /package/tests/client/basic/{basic.components.test.ripple → basic.components.test.rsrx} +0 -0
  95. /package/tests/client/basic/{basic.events.test.ripple → basic.events.test.rsrx} +0 -0
  96. /package/tests/client/basic/{basic.get-set.test.ripple → basic.get-set.test.rsrx} +0 -0
  97. /package/tests/client/basic/{basic.hmr.test.ripple → basic.hmr.test.rsrx} +0 -0
  98. /package/tests/client/basic/{basic.reactivity.test.ripple → basic.reactivity.test.rsrx} +0 -0
  99. /package/tests/client/basic/{basic.rendering.test.ripple → basic.rendering.test.rsrx} +0 -0
  100. /package/tests/client/basic/{basic.styling.test.ripple → basic.styling.test.rsrx} +0 -0
  101. /package/tests/client/basic/{basic.utilities.test.ripple → basic.utilities.test.rsrx} +0 -0
  102. /package/tests/client/{boundaries.test.ripple → boundaries.test.rsrx} +0 -0
  103. /package/tests/client/compiler/{compiler.assignments.test.ripple → compiler.assignments.test.rsrx} +0 -0
  104. /package/tests/client/compiler/{compiler.attributes.test.ripple → compiler.attributes.test.rsrx} +0 -0
  105. /package/tests/client/compiler/{compiler.basic.test.ripple → compiler.basic.test.rsrx} +0 -0
  106. /package/tests/client/compiler/{compiler.regex.test.ripple → compiler.regex.test.rsrx} +0 -0
  107. /package/tests/client/compiler/{compiler.tracked-access.test.ripple → compiler.tracked-access.test.rsrx} +0 -0
  108. /package/tests/client/compiler/{compiler.typescript.test.ripple → compiler.typescript.test.rsrx} +0 -0
  109. /package/tests/client/composite/{composite.dynamic-components.test.ripple → composite.dynamic-components.test.rsrx} +0 -0
  110. /package/tests/client/composite/{composite.generics.test.ripple → composite.generics.test.rsrx} +0 -0
  111. /package/tests/client/composite/{composite.props.test.ripple → composite.props.test.rsrx} +0 -0
  112. /package/tests/client/composite/{composite.reactivity.test.ripple → composite.reactivity.test.rsrx} +0 -0
  113. /package/tests/client/composite/{composite.render.test.ripple → composite.render.test.rsrx} +0 -0
  114. /package/tests/client/{computed-properties.test.ripple → computed-properties.test.rsrx} +0 -0
  115. /package/tests/client/{context.test.ripple → context.test.rsrx} +0 -0
  116. /package/tests/client/css/{global-additional-cases.test.ripple → global-additional-cases.test.rsrx} +0 -0
  117. /package/tests/client/css/{global-advanced-selectors.test.ripple → global-advanced-selectors.test.rsrx} +0 -0
  118. /package/tests/client/css/{global-at-rules.test.ripple → global-at-rules.test.rsrx} +0 -0
  119. /package/tests/client/css/{global-basic.test.ripple → global-basic.test.rsrx} +0 -0
  120. /package/tests/client/css/{global-classes-ids.test.ripple → global-classes-ids.test.rsrx} +0 -0
  121. /package/tests/client/css/{global-combinators.test.ripple → global-combinators.test.rsrx} +0 -0
  122. /package/tests/client/css/{global-complex-nesting.test.ripple → global-complex-nesting.test.rsrx} +0 -0
  123. /package/tests/client/css/{global-edge-cases.test.ripple → global-edge-cases.test.rsrx} +0 -0
  124. /package/tests/client/css/{global-keyframes.test.ripple → global-keyframes.test.rsrx} +0 -0
  125. /package/tests/client/css/{global-nested.test.ripple → global-nested.test.rsrx} +0 -0
  126. /package/tests/client/css/{global-pseudo.test.ripple → global-pseudo.test.rsrx} +0 -0
  127. /package/tests/client/css/{global-scoping.test.ripple → global-scoping.test.rsrx} +0 -0
  128. /package/tests/client/css/{style-identifier.test.ripple → style-identifier.test.rsrx} +0 -0
  129. /package/tests/client/{date.test.ripple → date.test.rsrx} +0 -0
  130. /package/tests/client/{dynamic-elements.test.ripple → dynamic-elements.test.rsrx} +0 -0
  131. /package/tests/client/{events.test.ripple → events.test.rsrx} +0 -0
  132. /package/tests/client/{for.test.ripple → for.test.rsrx} +0 -0
  133. /package/tests/client/{function-overload-import.ripple → function-overload-import.rsrx} +0 -0
  134. /package/tests/client/{head.test.ripple → head.test.rsrx} +0 -0
  135. /package/tests/client/{html.test.ripple → html.test.rsrx} +0 -0
  136. /package/tests/client/{input-value.test.ripple → input-value.test.rsrx} +0 -0
  137. /package/tests/client/{lazy-destructuring.test.ripple → lazy-destructuring.test.rsrx} +0 -0
  138. /package/tests/client/{map.test.ripple → map.test.rsrx} +0 -0
  139. /package/tests/client/{media-query.test.ripple → media-query.test.rsrx} +0 -0
  140. /package/tests/client/{object.test.ripple → object.test.rsrx} +0 -0
  141. /package/tests/client/{portal.test.ripple → portal.test.rsrx} +0 -0
  142. /package/tests/client/{ref.test.ripple → ref.test.rsrx} +0 -0
  143. /package/tests/client/{return.test.ripple → return.test.rsrx} +0 -0
  144. /package/tests/client/{set.test.ripple → set.test.rsrx} +0 -0
  145. /package/tests/client/{svg.test.ripple → svg.test.rsrx} +0 -0
  146. /package/tests/client/{switch.test.ripple → switch.test.rsrx} +0 -0
  147. /package/tests/client/{tsx.test.ripple → tsx.test.rsrx} +0 -0
  148. /package/tests/client/{typescript-generics.test.ripple → typescript-generics.test.rsrx} +0 -0
  149. /package/tests/client/url/{url.derived.test.ripple → url.derived.test.rsrx} +0 -0
  150. /package/tests/client/url/{url.parsing.test.ripple → url.parsing.test.rsrx} +0 -0
  151. /package/tests/client/url/{url.partial-removal.test.ripple → url.partial-removal.test.rsrx} +0 -0
  152. /package/tests/client/url/{url.reactivity.test.ripple → url.reactivity.test.rsrx} +0 -0
  153. /package/tests/client/url/{url.serialization.test.ripple → url.serialization.test.rsrx} +0 -0
  154. /package/tests/client/url-search-params/{url-search-params.derived.test.ripple → url-search-params.derived.test.rsrx} +0 -0
  155. /package/tests/client/url-search-params/{url-search-params.initialization.test.ripple → url-search-params.initialization.test.rsrx} +0 -0
  156. /package/tests/client/url-search-params/{url-search-params.iteration.test.ripple → url-search-params.iteration.test.rsrx} +0 -0
  157. /package/tests/client/url-search-params/{url-search-params.mutation.test.ripple → url-search-params.mutation.test.rsrx} +0 -0
  158. /package/tests/client/url-search-params/{url-search-params.retrieval.test.ripple → url-search-params.retrieval.test.rsrx} +0 -0
  159. /package/tests/client/url-search-params/{url-search-params.serialization.test.ripple → url-search-params.serialization.test.rsrx} +0 -0
  160. /package/tests/client/url-search-params/{url-search-params.tracked-url.test.ripple → url-search-params.tracked-url.test.rsrx} +0 -0
  161. /package/tests/hydration/components/{basic.ripple → basic.rsrx} +0 -0
  162. /package/tests/hydration/components/{composite.ripple → composite.rsrx} +0 -0
  163. /package/tests/hydration/components/{events.ripple → events.rsrx} +0 -0
  164. /package/tests/hydration/components/{for.ripple → for.rsrx} +0 -0
  165. /package/tests/hydration/components/{head.ripple → head.rsrx} +0 -0
  166. /package/tests/hydration/components/{hmr.ripple → hmr.rsrx} +0 -0
  167. /package/tests/hydration/components/{html-in-template.ripple → html-in-template.rsrx} +0 -0
  168. /package/tests/hydration/components/{html.ripple → html.rsrx} +0 -0
  169. /package/tests/hydration/components/{if-children.ripple → if-children.rsrx} +0 -0
  170. /package/tests/hydration/components/{if.ripple → if.rsrx} +0 -0
  171. /package/tests/hydration/components/{nested-control-flow.ripple → nested-control-flow.rsrx} +0 -0
  172. /package/tests/hydration/components/{portal.ripple → portal.rsrx} +0 -0
  173. /package/tests/hydration/components/{reactivity.ripple → reactivity.rsrx} +0 -0
  174. /package/tests/hydration/components/{return.ripple → return.rsrx} +0 -0
  175. /package/tests/hydration/components/{switch.ripple → switch.rsrx} +0 -0
  176. /package/tests/server/{await.test.ripple → await.test.rsrx} +0 -0
  177. /package/tests/server/{basic.attributes.test.ripple → basic.attributes.test.rsrx} +0 -0
  178. /package/tests/server/{basic.components.test.ripple → basic.components.test.rsrx} +0 -0
  179. /package/tests/server/{basic.test.ripple → basic.test.rsrx} +0 -0
  180. /package/tests/server/{composite.props.test.ripple → composite.props.test.rsrx} +0 -0
  181. /package/tests/server/{composite.test.ripple → composite.test.rsrx} +0 -0
  182. /package/tests/server/{context.test.ripple → context.test.rsrx} +0 -0
  183. /package/tests/server/{dynamic-elements.test.ripple → dynamic-elements.test.rsrx} +0 -0
  184. /package/tests/server/{for.test.ripple → for.test.rsrx} +0 -0
  185. /package/tests/server/{head.test.ripple → head.test.rsrx} +0 -0
  186. /package/tests/server/{if.test.ripple → if.test.rsrx} +0 -0
  187. /package/tests/server/{lazy-destructuring.test.ripple → lazy-destructuring.test.rsrx} +0 -0
  188. /package/tests/server/{return.test.ripple → return.test.rsrx} +0 -0
  189. /package/tests/server/{style-identifier.test.ripple → style-identifier.test.rsrx} +0 -0
  190. /package/tests/server/{switch.test.ripple → switch.test.rsrx} +0 -0
@@ -1,303 +1,345 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/server';
3
3
 
4
- import { track } from 'ripple/server';
4
+ import { track, trackAsync } from 'ripple/server';
5
5
 
6
- export async function MixedControlFlowStatic(__output) {
7
- return _$_.async(async () => {
8
- _$_.push_component();
6
+ export function MixedControlFlowStatic() {
7
+ _$_.push_component();
9
8
 
10
- const rows = [
11
- { id: 1, kind: 'a', enabled: true },
12
- { id: 2, kind: 'b', enabled: true },
13
- { id: 3, kind: 'a', enabled: false }
14
- ];
9
+ const rows = [
10
+ { id: 1, kind: 'a', enabled: true },
11
+ { id: 2, kind: 'b', enabled: true },
12
+ { id: 3, kind: 'a', enabled: false }
13
+ ];
15
14
 
16
- __output.push('<section');
17
- __output.push(' class="mixed-static"');
18
- __output.push('>');
15
+ _$_.regular_block(() => {
16
+ _$_.output_push('<section');
17
+ _$_.output_push(' class="mixed-static"');
18
+ _$_.output_push('>');
19
19
 
20
20
  {
21
- __output.push('<!--[-->');
21
+ _$_.output_push('<!--[-->');
22
22
 
23
23
  for (const row of rows) {
24
- __output.push('<!--[-->');
24
+ _$_.output_push('<!--[-->');
25
25
 
26
26
  if (row.enabled) {
27
- __output.push('<!--[-->');
27
+ _$_.output_push('<!--[-->');
28
28
 
29
29
  switch (row.kind) {
30
30
  case 'a':
31
- __output.push('<!--[-->');
32
- var __pending_pos = __output.body.length;
33
- __output.push('<div');
34
- __output.push(_$_.attr('class', `pending pending-${row.id}`));
35
- __output.push('>');
36
- {
37
- __output.push('pending a');
38
- }
39
- __output.push('</div>');
40
- await _$_.async(async () => {
41
- __output.body = __output.body.slice(0, __pending_pos);
42
- __output.push('<div');
43
- __output.push(_$_.attr('class', `row row-${row.id} kind-a`));
44
- __output.push('>');
45
-
46
- {
47
- __output.push(_$_.escape(`A-${row.id}`));
31
+ _$_.try_block(
32
+ () => {
33
+ _$_.output_push('<!--[-->');
34
+ _$_.output_push('<div');
35
+ _$_.output_push(_$_.attr('class', `row row-${row.id} kind-a`));
36
+ _$_.output_push('>');
37
+
38
+ {
39
+ _$_.output_push(_$_.escape(`A-${row.id}`));
40
+ }
41
+
42
+ _$_.output_push('</div>');
43
+ _$_.output_push('<!--]-->');
44
+ },
45
+ null,
46
+ () => {
47
+ _$_.output_push('<!--[-->');
48
+ _$_.output_push('<div');
49
+ _$_.output_push(_$_.attr('class', `pending pending-${row.id}`));
50
+ _$_.output_push('>');
51
+
52
+ {
53
+ _$_.output_push('pending a');
54
+ }
55
+
56
+ _$_.output_push('</div>');
57
+ _$_.output_push('<!--]-->');
48
58
  }
49
-
50
- __output.push('</div>');
51
- });
52
- __output.push('<!--]-->');
59
+ );
53
60
  break;
54
61
 
55
62
  default:
56
- __output.push('<!--[-->');
57
- var __pending_pos_1 = __output.body.length;
58
- __output.push('<div');
59
- __output.push(_$_.attr('class', `pending pending-${row.id}`));
60
- __output.push('>');
61
- {
62
- __output.push('pending b');
63
- }
64
- __output.push('</div>');
65
- await _$_.async(async () => {
66
- __output.body = __output.body.slice(0, __pending_pos_1);
67
- __output.push('<div');
68
- __output.push(_$_.attr('class', `row row-${row.id} kind-b`));
69
- __output.push('>');
70
-
71
- {
72
- __output.push(_$_.escape(`B-${row.id}`));
63
+ _$_.try_block(
64
+ () => {
65
+ _$_.output_push('<!--[-->');
66
+ _$_.output_push('<div');
67
+ _$_.output_push(_$_.attr('class', `row row-${row.id} kind-b`));
68
+ _$_.output_push('>');
69
+
70
+ {
71
+ _$_.output_push(_$_.escape(`B-${row.id}`));
72
+ }
73
+
74
+ _$_.output_push('</div>');
75
+ _$_.output_push('<!--]-->');
76
+ },
77
+ null,
78
+ () => {
79
+ _$_.output_push('<!--[-->');
80
+ _$_.output_push('<div');
81
+ _$_.output_push(_$_.attr('class', `pending pending-${row.id}`));
82
+ _$_.output_push('>');
83
+
84
+ {
85
+ _$_.output_push('pending b');
86
+ }
87
+
88
+ _$_.output_push('</div>');
89
+ _$_.output_push('<!--]-->');
73
90
  }
74
-
75
- __output.push('</div>');
76
- });
77
- __output.push('<!--]-->');
91
+ );
78
92
  }
79
93
 
80
- __output.push('<!--]-->');
94
+ _$_.output_push('<!--]-->');
81
95
  }
82
96
 
83
- __output.push('<!--]-->');
97
+ _$_.output_push('<!--]-->');
84
98
  }
85
99
 
86
- __output.push('<!--]-->');
100
+ _$_.output_push('<!--]-->');
87
101
  }
88
102
 
89
- __output.push('</section>');
90
- _$_.pop_component();
103
+ _$_.output_push('</section>');
91
104
  });
92
- }
93
105
 
94
- MixedControlFlowStatic.async = true;
106
+ _$_.pop_component();
107
+ }
95
108
 
96
- export async function MixedControlFlowReactive(__output) {
97
- return _$_.async(async () => {
98
- _$_.push_component();
109
+ export function MixedControlFlowReactive() {
110
+ _$_.push_component();
99
111
 
100
- let lazy = _$_.track(true);
101
- let lazy_1 = _$_.track('a');
102
- let lazy_2 = _$_.track([{ id: 1, label: 'One' }, { id: 2, label: 'Two' }]);
112
+ let lazy = _$_.track(true);
113
+ let lazy_1 = _$_.track('a');
114
+ let lazy_2 = _$_.track([{ id: 1, label: 'One' }, { id: 2, label: 'Two' }]);
103
115
 
104
- __output.push('<button');
105
- __output.push(' class="toggle-show"');
106
- __output.push('>');
116
+ _$_.regular_block(() => {
117
+ _$_.output_push('<button');
118
+ _$_.output_push(' class="toggle-show"');
119
+ _$_.output_push('>');
107
120
 
108
121
  {
109
- __output.push('Toggle Show');
122
+ _$_.output_push('Toggle Show');
110
123
  }
111
124
 
112
- __output.push('</button>');
113
- __output.push('<button');
114
- __output.push(' class="toggle-mode"');
115
- __output.push('>');
125
+ _$_.output_push('</button>');
126
+ });
127
+
128
+ _$_.regular_block(() => {
129
+ _$_.output_push('<button');
130
+ _$_.output_push(' class="toggle-mode"');
131
+ _$_.output_push('>');
116
132
 
117
133
  {
118
- __output.push('Toggle Mode');
134
+ _$_.output_push('Toggle Mode');
119
135
  }
120
136
 
121
- __output.push('</button>');
122
- __output.push('<button');
123
- __output.push(' class="add-item"');
124
- __output.push('>');
137
+ _$_.output_push('</button>');
138
+ });
139
+
140
+ _$_.regular_block(() => {
141
+ _$_.output_push('<button');
142
+ _$_.output_push(' class="add-item"');
143
+ _$_.output_push('>');
125
144
 
126
145
  {
127
- __output.push('Add Item');
146
+ _$_.output_push('Add Item');
128
147
  }
129
148
 
130
- __output.push('</button>');
131
- __output.push('<!--[-->');
149
+ _$_.output_push('</button>');
150
+ });
151
+
152
+ _$_.regular_block(() => {
153
+ _$_.output_push('<!--[-->');
132
154
 
133
155
  if (_$_.get(lazy)) {
134
- __output.push('<div');
135
- __output.push(' class="mixed-reactive-list"');
136
- __output.push('>');
156
+ _$_.output_push('<div');
157
+ _$_.output_push(' class="mixed-reactive-list"');
158
+ _$_.output_push('>');
137
159
 
138
160
  {
139
- __output.push('<!--[-->');
161
+ _$_.output_push('<!--[-->');
140
162
 
141
163
  for (const item of _$_.get(lazy_2)) {
142
- __output.push('<!--[-->');
164
+ _$_.output_push('<!--[-->');
143
165
 
144
166
  switch (_$_.get(lazy_1)) {
145
167
  case 'a':
146
- __output.push('<!--[-->');
147
- var __pending_pos_2 = __output.body.length;
148
- __output.push('<p');
149
- __output.push(' class="pending"');
150
- __output.push('>');
151
- {
152
- __output.push('pending a');
153
- }
154
- __output.push('</p>');
155
- await _$_.async(async () => {
156
- __output.body = __output.body.slice(0, __pending_pos_2);
157
- __output.push('<p');
158
- __output.push(_$_.attr('class', `item item-${item.id}`));
159
- __output.push('>');
160
-
161
- {
162
- __output.push(_$_.escape(`A:${item.label}`));
168
+ _$_.try_block(
169
+ () => {
170
+ _$_.output_push('<!--[-->');
171
+ _$_.output_push('<p');
172
+ _$_.output_push(_$_.attr('class', `item item-${item.id}`));
173
+ _$_.output_push('>');
174
+
175
+ {
176
+ _$_.output_push(_$_.escape(`A:${item.label}`));
177
+ }
178
+
179
+ _$_.output_push('</p>');
180
+ _$_.output_push('<!--]-->');
181
+ },
182
+ null,
183
+ () => {
184
+ _$_.output_push('<!--[-->');
185
+ _$_.output_push('<p');
186
+ _$_.output_push(' class="pending"');
187
+ _$_.output_push('>');
188
+
189
+ {
190
+ _$_.output_push('pending a');
191
+ }
192
+
193
+ _$_.output_push('</p>');
194
+ _$_.output_push('<!--]-->');
163
195
  }
164
-
165
- __output.push('</p>');
166
- });
167
- __output.push('<!--]-->');
196
+ );
168
197
  break;
169
198
 
170
199
  default:
171
- __output.push('<!--[-->');
172
- var __pending_pos_3 = __output.body.length;
173
- __output.push('<p');
174
- __output.push(' class="pending"');
175
- __output.push('>');
176
- {
177
- __output.push('pending b');
178
- }
179
- __output.push('</p>');
180
- await _$_.async(async () => {
181
- __output.body = __output.body.slice(0, __pending_pos_3);
182
- __output.push('<p');
183
- __output.push(_$_.attr('class', `item item-${item.id}`));
184
- __output.push('>');
185
-
186
- {
187
- __output.push(_$_.escape(`B:${item.label}`));
200
+ _$_.try_block(
201
+ () => {
202
+ _$_.output_push('<!--[-->');
203
+ _$_.output_push('<p');
204
+ _$_.output_push(_$_.attr('class', `item item-${item.id}`));
205
+ _$_.output_push('>');
206
+
207
+ {
208
+ _$_.output_push(_$_.escape(`B:${item.label}`));
209
+ }
210
+
211
+ _$_.output_push('</p>');
212
+ _$_.output_push('<!--]-->');
213
+ },
214
+ null,
215
+ () => {
216
+ _$_.output_push('<!--[-->');
217
+ _$_.output_push('<p');
218
+ _$_.output_push(' class="pending"');
219
+ _$_.output_push('>');
220
+
221
+ {
222
+ _$_.output_push('pending b');
223
+ }
224
+
225
+ _$_.output_push('</p>');
226
+ _$_.output_push('<!--]-->');
188
227
  }
189
-
190
- __output.push('</p>');
191
- });
192
- __output.push('<!--]-->');
228
+ );
193
229
  }
194
230
 
195
- __output.push('<!--]-->');
231
+ _$_.output_push('<!--]-->');
196
232
  }
197
233
 
198
- __output.push('<!--]-->');
234
+ _$_.output_push('<!--]-->');
199
235
  }
200
236
 
201
- __output.push('</div>');
237
+ _$_.output_push('</div>');
202
238
  }
203
239
 
204
- __output.push('<!--]-->');
205
- _$_.pop_component();
240
+ _$_.output_push('<!--]-->');
206
241
  });
207
- }
208
242
 
209
- MixedControlFlowReactive.async = true;
243
+ _$_.pop_component();
244
+ }
210
245
 
211
- export async function MixedControlFlowAsyncPending(__output) {
212
- return _$_.async(async () => {
213
- _$_.push_component();
246
+ export function MixedControlFlowAsyncPending() {
247
+ _$_.push_component();
214
248
 
215
- const rows = [1, 2];
216
- const state = 'slow';
249
+ const rows = [1, 2];
250
+ const state = 'slow';
217
251
 
218
- __output.push('<div');
219
- __output.push(' class="before"');
220
- __output.push('>');
252
+ _$_.regular_block(() => {
253
+ _$_.output_push('<div');
254
+ _$_.output_push(' class="before"');
255
+ _$_.output_push('>');
221
256
 
222
257
  {
223
- __output.push('before');
258
+ _$_.output_push('before');
224
259
  }
225
260
 
226
- __output.push('</div>');
227
- __output.push('<!--[-->');
261
+ _$_.output_push('</div>');
262
+ });
263
+
264
+ _$_.regular_block(() => {
265
+ _$_.output_push('<!--[-->');
228
266
 
229
267
  for (const row of rows) {
230
- __output.push('<!--[-->');
268
+ _$_.output_push('<!--[-->');
231
269
 
232
270
  if (row === 1) {
233
- __output.push('<!--[-->');
271
+ _$_.output_push('<!--[-->');
234
272
 
235
273
  switch (state) {
236
274
  case 'slow':
237
- __output.push('<!--[-->');
238
- var __pending_pos_4 = __output.body.length;
239
- __output.push('<div');
240
- __output.push(_$_.attr('class', `pending-row pending-row-${row}`));
241
- __output.push('>');
242
- {
243
- __output.push(_$_.escape(`pending ${row}`));
244
- }
245
- __output.push('</div>');
246
- await _$_.async(async () => {
247
- __output.body = __output.body.slice(0, __pending_pos_4);
275
+ _$_.try_block(
276
+ () => {
277
+ _$_.output_push('<!--[-->');
278
+
279
+ {
280
+ const comp = AsyncRow;
281
+ const args = [{ label: `row-${row}` }];
282
+
283
+ comp(...args);
284
+ }
248
285
 
249
- {
250
- const comp = AsyncRow;
251
- const args = [__output, { label: `row-${row}` }];
286
+ _$_.output_push('<!--]-->');
287
+ },
288
+ null,
289
+ () => {
290
+ _$_.output_push('<!--[-->');
291
+ _$_.output_push('<div');
292
+ _$_.output_push(_$_.attr('class', `pending-row pending-row-${row}`));
293
+ _$_.output_push('>');
294
+
295
+ {
296
+ _$_.output_push(_$_.escape(`pending ${row}`));
297
+ }
252
298
 
253
- await comp(...args);
299
+ _$_.output_push('</div>');
300
+ _$_.output_push('<!--]-->');
254
301
  }
255
- });
256
- __output.push('<!--]-->');
302
+ );
257
303
  break;
258
304
 
259
305
  default:
260
- __output.push('<div');
261
- __output.push(' class="unexpected"');
262
- __output.push('>');
306
+ _$_.output_push('<div');
307
+ _$_.output_push(' class="unexpected"');
308
+ _$_.output_push('>');
263
309
  {
264
- __output.push('unexpected');
310
+ _$_.output_push('unexpected');
265
311
  }
266
- __output.push('</div>');
312
+ _$_.output_push('</div>');
267
313
  }
268
314
 
269
- __output.push('<!--]-->');
315
+ _$_.output_push('<!--]-->');
270
316
  }
271
317
 
272
- __output.push('<!--]-->');
318
+ _$_.output_push('<!--]-->');
273
319
  }
274
320
 
275
- __output.push('<!--]-->');
276
- _$_.pop_component();
321
+ _$_.output_push('<!--]-->');
277
322
  });
278
- }
279
-
280
- MixedControlFlowAsyncPending.async = true;
281
323
 
282
- async function AsyncRow(__output, { label }) {
283
- return _$_.async(async () => {
284
- _$_.push_component();
324
+ _$_.pop_component();
325
+ }
285
326
 
286
- let value = await Promise.resolve(label);
327
+ function AsyncRow({ label }) {
328
+ _$_.push_component();
287
329
 
288
- if (_$_.aborted()) return;
330
+ let lazy_3 = _$_.track_async(() => Promise.resolve(label));
289
331
 
290
- __output.push('<div');
291
- __output.push(' class="resolved-row"');
292
- __output.push('>');
332
+ _$_.regular_block(() => {
333
+ _$_.output_push('<div');
334
+ _$_.output_push(' class="resolved-row"');
335
+ _$_.output_push('>');
293
336
 
294
337
  {
295
- __output.push(_$_.escape(value));
338
+ _$_.output_push(_$_.escape(_$_.get(lazy_3)));
296
339
  }
297
340
 
298
- __output.push('</div>');
299
- _$_.pop_component();
341
+ _$_.output_push('</div>');
300
342
  });
301
- }
302
343
 
303
- AsyncRow.async = true;
344
+ _$_.pop_component();
345
+ }