ripple 0.3.8 → 0.3.10

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 (79) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/package.json +2 -2
  3. package/src/compiler/phases/1-parse/index.js +38 -172
  4. package/src/compiler/phases/2-analyze/index.js +308 -115
  5. package/src/compiler/phases/2-analyze/prune.js +13 -5
  6. package/src/compiler/phases/3-transform/client/index.js +197 -213
  7. package/src/compiler/phases/3-transform/segments.js +0 -7
  8. package/src/compiler/phases/3-transform/server/index.js +77 -170
  9. package/src/compiler/types/acorn.d.ts +1 -1
  10. package/src/compiler/types/estree.d.ts +1 -1
  11. package/src/compiler/types/import.d.ts +0 -2
  12. package/src/compiler/types/index.d.ts +14 -18
  13. package/src/compiler/types/parse.d.ts +3 -9
  14. package/src/compiler/utils.js +154 -21
  15. package/src/runtime/element.js +39 -0
  16. package/src/runtime/index-client.js +2 -13
  17. package/src/runtime/index-server.js +2 -2
  18. package/src/runtime/internal/client/bindings.js +3 -1
  19. package/src/runtime/internal/client/composite.js +11 -6
  20. package/src/runtime/internal/client/events.js +1 -1
  21. package/src/runtime/internal/client/expression.js +218 -0
  22. package/src/runtime/internal/client/head.js +3 -4
  23. package/src/runtime/internal/client/index.js +4 -1
  24. package/src/runtime/internal/client/portal.js +12 -6
  25. package/src/runtime/internal/client/runtime.js +0 -52
  26. package/src/runtime/internal/server/index.js +57 -56
  27. package/tests/client/basic/basic.components.test.ripple +85 -87
  28. package/tests/client/basic/basic.errors.test.ripple +28 -4
  29. package/tests/client/basic/basic.reactivity.test.ripple +10 -155
  30. package/tests/client/basic/basic.rendering.test.ripple +23 -8
  31. package/tests/client/capture-error.js +12 -0
  32. package/tests/client/compiler/compiler.basic.test.ripple +107 -18
  33. package/tests/client/composite/composite.props.test.ripple +5 -9
  34. package/tests/client/composite/composite.reactivity.test.ripple +35 -36
  35. package/tests/client/composite/composite.render.test.ripple +45 -13
  36. package/tests/client/css/global-additional-cases.test.ripple +3 -3
  37. package/tests/client/dynamic-elements.test.ripple +3 -4
  38. package/tests/client/lazy-destructuring.test.ripple +69 -12
  39. package/tests/client/svg.test.ripple +4 -4
  40. package/tests/hydration/basic.test.js +23 -0
  41. package/tests/hydration/compiled/client/basic.js +118 -66
  42. package/tests/hydration/compiled/client/composite.js +90 -37
  43. package/tests/hydration/compiled/client/events.js +18 -18
  44. package/tests/hydration/compiled/client/for.js +62 -62
  45. package/tests/hydration/compiled/client/head.js +10 -10
  46. package/tests/hydration/compiled/client/hmr.js +13 -10
  47. package/tests/hydration/compiled/client/html.js +274 -236
  48. package/tests/hydration/compiled/client/if-children.js +41 -35
  49. package/tests/hydration/compiled/client/if.js +2 -2
  50. package/tests/hydration/compiled/client/mixed-control-flow.js +12 -12
  51. package/tests/hydration/compiled/client/nested-control-flow.js +46 -46
  52. package/tests/hydration/compiled/client/portal.js +8 -8
  53. package/tests/hydration/compiled/client/reactivity.js +14 -14
  54. package/tests/hydration/compiled/client/return.js +2 -2
  55. package/tests/hydration/compiled/client/try.js +4 -4
  56. package/tests/hydration/compiled/server/basic.js +64 -31
  57. package/tests/hydration/compiled/server/composite.js +62 -29
  58. package/tests/hydration/compiled/server/hmr.js +24 -37
  59. package/tests/hydration/compiled/server/html.js +472 -611
  60. package/tests/hydration/compiled/server/if-children.js +77 -103
  61. package/tests/hydration/compiled/server/portal.js +8 -8
  62. package/tests/hydration/components/basic.ripple +15 -5
  63. package/tests/hydration/components/composite.ripple +13 -1
  64. package/tests/hydration/components/hmr.ripple +1 -3
  65. package/tests/hydration/components/html.ripple +13 -35
  66. package/tests/hydration/components/if-children.ripple +4 -8
  67. package/tests/hydration/composite.test.js +11 -0
  68. package/tests/server/basic.attributes.test.ripple +50 -0
  69. package/tests/server/basic.components.test.ripple +22 -28
  70. package/tests/server/basic.test.ripple +12 -0
  71. package/tests/server/compiler.test.ripple +43 -4
  72. package/tests/server/composite.props.test.ripple +5 -9
  73. package/tests/server/dynamic-elements.test.ripple +3 -4
  74. package/tests/server/lazy-destructuring.test.ripple +68 -12
  75. package/tests/server/style-identifier.test.ripple +2 -4
  76. package/tsconfig.typecheck.json +4 -0
  77. package/types/index.d.ts +9 -21
  78. package/tests/client/__snapshots__/tracked-expression.test.ripple.snap +0 -34
  79. package/tests/client/tracked-expression.test.ripple +0 -26
@@ -2,15 +2,18 @@
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
4
  var root = _$_.template(`<div class="layout"><!></div>`, 0);
5
- var root_1 = _$_.template(`<div class="single">single</div>`, 0);
6
- var root_2 = _$_.template(`<h1>title</h1><p>description</p>`, 1, 2);
7
- var root_3 = _$_.template(`<!>`, 1, 1);
8
- var root_5 = _$_.template(`<!>`, 1, 1);
5
+ var root_1 = _$_.template(`<div class="layout">before<!>after</div>`, 0);
6
+ var root_2 = _$_.template(`<div class="single">single</div>`, 0);
7
+ var root_3 = _$_.template(`<h1>title</h1><p>description</p>`, 1, 2);
9
8
  var root_4 = _$_.template(`<!>`, 1, 1);
10
- var root_7 = _$_.template(`<!><div class="extra">extra</div>`, 1, 2);
11
9
  var root_6 = _$_.template(`<!>`, 1, 1);
10
+ var root_5 = _$_.template(`<!>`, 1, 1);
11
+ var root_8 = _$_.template(`<!><div class="extra">extra</div>`, 1, 2);
12
+ var root_7 = _$_.template(`<!>`, 1, 1);
13
+ var root_10 = _$_.template(`<!>`, 1, 1);
12
14
  var root_9 = _$_.template(`<!>`, 1, 1);
13
- var root_8 = _$_.template(`<!>`, 1, 1);
15
+ var root_12 = _$_.template(`<!>`, 1, 1);
16
+ var root_11 = _$_.template(`<!>`, 1, 1);
14
17
 
15
18
  export function Layout(__anchor, __props, __block) {
16
19
  _$_.push_component();
@@ -18,29 +21,52 @@ export function Layout(__anchor, __props, __block) {
18
21
  var div_1 = root();
19
22
 
20
23
  {
21
- var node = _$_.child(div_1);
24
+ var expression = _$_.child(div_1);
22
25
 
23
- _$_.composite(() => __props.children, node, {});
24
26
  _$_.pop(div_1);
25
27
  }
26
28
 
29
+ _$_.render(() => {
30
+ _$_.expression(expression, () => __props.children);
31
+ });
32
+
27
33
  _$_.append(__anchor, div_1);
28
34
  _$_.pop_component();
29
35
  }
30
36
 
31
- export function SingleChild(__anchor, _, __block) {
37
+ export function TextWrappedLayout(__anchor, __props, __block) {
32
38
  _$_.push_component();
33
39
 
34
40
  var div_2 = root_1();
35
41
 
42
+ {
43
+ var text = _$_.child(div_2);
44
+ var expression_1 = _$_.sibling(text);
45
+
46
+ _$_.pop(div_2);
47
+ }
48
+
49
+ _$_.render(() => {
50
+ _$_.expression(expression_1, () => __props.children);
51
+ });
52
+
36
53
  _$_.append(__anchor, div_2);
37
54
  _$_.pop_component();
38
55
  }
39
56
 
57
+ export function SingleChild(__anchor, _, __block) {
58
+ _$_.push_component();
59
+
60
+ var div_3 = root_2();
61
+
62
+ _$_.append(__anchor, div_3);
63
+ _$_.pop_component();
64
+ }
65
+
40
66
  export function MultiRootChild(__anchor, _, __block) {
41
67
  _$_.push_component();
42
68
 
43
- var fragment = root_2();
69
+ var fragment = root_3();
44
70
 
45
71
  _$_.next();
46
72
  _$_.append(__anchor, fragment, true);
@@ -50,10 +76,10 @@ export function MultiRootChild(__anchor, _, __block) {
50
76
  export function EmptyLayout(__anchor, _, __block) {
51
77
  _$_.push_component();
52
78
 
53
- var fragment_1 = root_3();
54
- var node_1 = _$_.first_child_frag(fragment_1);
79
+ var fragment_1 = root_4();
80
+ var node = _$_.first_child_frag(fragment_1);
55
81
 
56
- Layout(node_1, {}, _$_.active_block);
82
+ Layout(node, {}, _$_.active_block);
57
83
  _$_.append(__anchor, fragment_1);
58
84
  _$_.pop_component();
59
85
  }
@@ -61,22 +87,22 @@ export function EmptyLayout(__anchor, _, __block) {
61
87
  export function LayoutWithSingleChild(__anchor, _, __block) {
62
88
  _$_.push_component();
63
89
 
64
- var fragment_2 = root_4();
65
- var node_2 = _$_.first_child_frag(fragment_2);
90
+ var fragment_2 = root_5();
91
+ var node_1 = _$_.first_child_frag(fragment_2);
66
92
 
67
93
  Layout(
68
- node_2,
94
+ node_1,
69
95
  {
70
- children(__anchor, _, __block) {
96
+ children: _$_.ripple_element(function render_children(__anchor, _, __block) {
71
97
  _$_.push_component();
72
98
 
73
- var fragment_3 = root_5();
74
- var node_3 = _$_.first_child_frag(fragment_3);
99
+ var fragment_3 = root_6();
100
+ var node_2 = _$_.first_child_frag(fragment_3);
75
101
 
76
- SingleChild(node_3, {}, _$_.active_block);
102
+ SingleChild(node_2, {}, _$_.active_block);
77
103
  _$_.append(__anchor, fragment_3);
78
104
  _$_.pop_component();
79
- }
105
+ })
80
106
  },
81
107
  _$_.active_block
82
108
  );
@@ -88,22 +114,22 @@ export function LayoutWithSingleChild(__anchor, _, __block) {
88
114
  export function LayoutWithMultipleChildren(__anchor, _, __block) {
89
115
  _$_.push_component();
90
116
 
91
- var fragment_4 = root_6();
92
- var node_4 = _$_.first_child_frag(fragment_4);
117
+ var fragment_4 = root_7();
118
+ var node_3 = _$_.first_child_frag(fragment_4);
93
119
 
94
120
  Layout(
95
- node_4,
121
+ node_3,
96
122
  {
97
- children(__anchor, _, __block) {
123
+ children: _$_.ripple_element(function render_children(__anchor, _, __block) {
98
124
  _$_.push_component();
99
125
 
100
- var fragment_5 = root_7();
101
- var node_5 = _$_.first_child_frag(fragment_5);
126
+ var fragment_5 = root_8();
127
+ var node_4 = _$_.first_child_frag(fragment_5);
102
128
 
103
- SingleChild(node_5, {}, _$_.active_block);
129
+ SingleChild(node_4, {}, _$_.active_block);
104
130
  _$_.append(__anchor, fragment_5);
105
131
  _$_.pop_component();
106
- }
132
+ })
107
133
  },
108
134
  _$_.active_block
109
135
  );
@@ -115,26 +141,53 @@ export function LayoutWithMultipleChildren(__anchor, _, __block) {
115
141
  export function LayoutWithMultiRootChild(__anchor, _, __block) {
116
142
  _$_.push_component();
117
143
 
118
- var fragment_6 = root_8();
119
- var node_6 = _$_.first_child_frag(fragment_6);
144
+ var fragment_6 = root_9();
145
+ var node_5 = _$_.first_child_frag(fragment_6);
120
146
 
121
147
  Layout(
122
- node_6,
148
+ node_5,
123
149
  {
124
- children(__anchor, _, __block) {
150
+ children: _$_.ripple_element(function render_children(__anchor, _, __block) {
125
151
  _$_.push_component();
126
152
 
127
- var fragment_7 = root_9();
128
- var node_7 = _$_.first_child_frag(fragment_7);
153
+ var fragment_7 = root_10();
154
+ var node_6 = _$_.first_child_frag(fragment_7);
129
155
 
130
- MultiRootChild(node_7, {}, _$_.active_block);
156
+ MultiRootChild(node_6, {}, _$_.active_block);
131
157
  _$_.append(__anchor, fragment_7);
132
158
  _$_.pop_component();
133
- }
159
+ })
134
160
  },
135
161
  _$_.active_block
136
162
  );
137
163
 
138
164
  _$_.append(__anchor, fragment_6);
139
165
  _$_.pop_component();
166
+ }
167
+
168
+ export function LayoutWithTextAroundChildren(__anchor, _, __block) {
169
+ _$_.push_component();
170
+
171
+ var fragment_8 = root_11();
172
+ var node_7 = _$_.first_child_frag(fragment_8);
173
+
174
+ TextWrappedLayout(
175
+ node_7,
176
+ {
177
+ children: _$_.ripple_element(function render_children(__anchor, _, __block) {
178
+ _$_.push_component();
179
+
180
+ var fragment_9 = root_12();
181
+ var node_8 = _$_.first_child_frag(fragment_9);
182
+
183
+ SingleChild(node_8, {}, _$_.active_block);
184
+ _$_.append(__anchor, fragment_9);
185
+ _$_.pop_component();
186
+ })
187
+ },
188
+ _$_.active_block
189
+ );
190
+
191
+ _$_.append(__anchor, fragment_8);
192
+ _$_.pop_component();
140
193
  }
@@ -27,14 +27,14 @@ export function ClickCounter(__anchor, _, __block) {
27
27
  var span_1 = _$_.sibling(button_1);
28
28
 
29
29
  {
30
- var text = _$_.child(span_1, true);
30
+ var expression = _$_.child(span_1, true);
31
31
 
32
32
  _$_.pop(span_1);
33
33
  }
34
34
  }
35
35
 
36
36
  _$_.render(() => {
37
- _$_.set_text(text, _$_.get(lazy));
37
+ _$_.set_text(expression, _$_.get(lazy));
38
38
  });
39
39
 
40
40
  _$_.append(__anchor, div_1);
@@ -57,7 +57,7 @@ export function IncrementDecrement(__anchor, _, __block) {
57
57
  var span_2 = _$_.sibling(button_2);
58
58
 
59
59
  {
60
- var text_1 = _$_.child(span_2, true);
60
+ var expression_1 = _$_.child(span_2, true);
61
61
 
62
62
  _$_.pop(span_2);
63
63
  }
@@ -70,7 +70,7 @@ export function IncrementDecrement(__anchor, _, __block) {
70
70
  }
71
71
 
72
72
  _$_.render(() => {
73
- _$_.set_text(text_1, _$_.get(lazy_1));
73
+ _$_.set_text(expression_1, _$_.get(lazy_1));
74
74
  });
75
75
 
76
76
  _$_.append(__anchor, div_2);
@@ -98,7 +98,7 @@ export function MultipleEvents(__anchor, _, __block) {
98
98
  var span_3 = _$_.sibling(button_4);
99
99
 
100
100
  {
101
- var text_2 = _$_.child(span_3, true);
101
+ var expression_2 = _$_.child(span_3, true);
102
102
 
103
103
  _$_.pop(span_3);
104
104
  }
@@ -106,7 +106,7 @@ export function MultipleEvents(__anchor, _, __block) {
106
106
  var span_4 = _$_.sibling(span_3);
107
107
 
108
108
  {
109
- var text_3 = _$_.child(span_4, true);
109
+ var expression_3 = _$_.child(span_4, true);
110
110
 
111
111
  _$_.pop(span_4);
112
112
  }
@@ -117,13 +117,13 @@ export function MultipleEvents(__anchor, _, __block) {
117
117
  var __a = _$_.get(lazy_2);
118
118
 
119
119
  if (__prev.a !== __a) {
120
- _$_.set_text(text_2, __prev.a = __a);
120
+ _$_.set_text(expression_2, __prev.a = __a);
121
121
  }
122
122
 
123
123
  var __b = _$_.get(lazy_3);
124
124
 
125
125
  if (__prev.b !== __b) {
126
- _$_.set_text(text_3, __prev.b = __b);
126
+ _$_.set_text(expression_3, __prev.b = __b);
127
127
  }
128
128
  },
129
129
  { a: ' ', b: ' ' }
@@ -154,7 +154,7 @@ export function MultiStateUpdate(__anchor, _, __block) {
154
154
  var span_5 = _$_.sibling(button_5);
155
155
 
156
156
  {
157
- var text_4 = _$_.child(span_5, true);
157
+ var expression_4 = _$_.child(span_5, true);
158
158
 
159
159
  _$_.pop(span_5);
160
160
  }
@@ -162,7 +162,7 @@ export function MultiStateUpdate(__anchor, _, __block) {
162
162
  var span_6 = _$_.sibling(span_5);
163
163
 
164
164
  {
165
- var text_5 = _$_.child(span_6, true);
165
+ var expression_5 = _$_.child(span_6, true);
166
166
 
167
167
  _$_.pop(span_6);
168
168
  }
@@ -173,13 +173,13 @@ export function MultiStateUpdate(__anchor, _, __block) {
173
173
  var __a = _$_.get(lazy_4);
174
174
 
175
175
  if (__prev.a !== __a) {
176
- _$_.set_text(text_4, __prev.a = __a);
176
+ _$_.set_text(expression_4, __prev.a = __a);
177
177
  }
178
178
 
179
179
  var __b = _$_.get(lazy_5);
180
180
 
181
181
  if (__prev.b !== __b) {
182
- _$_.set_text(text_5, __prev.b = __b);
182
+ _$_.set_text(expression_5, __prev.b = __b);
183
183
  }
184
184
  },
185
185
  { a: ' ', b: ' ' }
@@ -203,14 +203,14 @@ export function ToggleButton(__anchor, _, __block) {
203
203
  };
204
204
 
205
205
  {
206
- var text_6 = _$_.child(button_6, true);
206
+ var expression_6 = _$_.child(button_6, true);
207
207
 
208
208
  _$_.pop(button_6);
209
209
  }
210
210
  }
211
211
 
212
212
  _$_.render(() => {
213
- _$_.set_text(text_6, _$_.get(lazy_6) ? 'ON' : 'OFF');
213
+ _$_.set_text(expression_6, _$_.get(lazy_6) ? 'ON' : 'OFF');
214
214
  });
215
215
 
216
216
  _$_.append(__anchor, div_5);
@@ -225,13 +225,13 @@ export function ChildButton(__anchor, props, __block) {
225
225
  _$_.render_event('Click', button_7, () => props.onClick);
226
226
 
227
227
  {
228
- var text_7 = _$_.child(button_7, true);
228
+ var expression_7 = _$_.child(button_7, true);
229
229
 
230
230
  _$_.pop(button_7);
231
231
  }
232
232
 
233
233
  _$_.render(() => {
234
- _$_.set_text(text_7, props.label);
234
+ _$_.set_text(expression_7, props.label);
235
235
  });
236
236
 
237
237
  _$_.append(__anchor, button_7);
@@ -261,7 +261,7 @@ export function ParentWithChildButton(__anchor, _, __block) {
261
261
  var span_7 = _$_.sibling(node);
262
262
 
263
263
  {
264
- var text_8 = _$_.child(span_7, true);
264
+ var expression_8 = _$_.child(span_7, true);
265
265
 
266
266
  _$_.pop(span_7);
267
267
  }
@@ -270,7 +270,7 @@ export function ParentWithChildButton(__anchor, _, __block) {
270
270
  }
271
271
 
272
272
  _$_.render(() => {
273
- _$_.set_text(text_8, _$_.get(lazy_7));
273
+ _$_.set_text(expression_8, _$_.get(lazy_7));
274
274
  });
275
275
 
276
276
  _$_.append(__anchor, div_6);