ripple 0.4.1 → 0.4.3

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 (96) hide show
  1. package/CHANGELOG.md +162 -0
  2. package/package.json +9 -3
  3. package/src/constants.js +4 -0
  4. package/src/jsx-runtime.d.ts +2 -1
  5. package/src/runtime/array.js +15 -9
  6. package/src/runtime/index-client.js +25 -7
  7. package/src/runtime/index-server.js +1 -0
  8. package/src/runtime/internal/client/attributes.js +313 -0
  9. package/src/runtime/internal/client/blocks.js +4 -14
  10. package/src/runtime/internal/client/component.js +2 -5
  11. package/src/runtime/internal/client/composite.js +14 -6
  12. package/src/runtime/internal/client/constants.js +12 -6
  13. package/src/runtime/internal/client/context.js +3 -2
  14. package/src/runtime/internal/client/css.js +11 -26
  15. package/src/runtime/internal/client/errors.js +188 -0
  16. package/src/runtime/internal/client/events.js +79 -34
  17. package/src/runtime/internal/client/expression.js +21 -116
  18. package/src/runtime/internal/client/for.js +272 -222
  19. package/src/runtime/internal/client/head.js +4 -3
  20. package/src/runtime/internal/client/html.js +5 -3
  21. package/src/runtime/internal/client/hydrate.js +484 -0
  22. package/src/runtime/internal/client/hydration-enabled.js +7 -0
  23. package/src/runtime/internal/client/hydration.js +16 -97
  24. package/src/runtime/internal/client/if.js +13 -9
  25. package/src/runtime/internal/client/index.js +16 -8
  26. package/src/runtime/internal/client/operations.js +12 -9
  27. package/src/runtime/internal/client/portal.js +3 -2
  28. package/src/runtime/internal/client/render.js +75 -321
  29. package/src/runtime/internal/client/root-boundary-enabled.js +7 -0
  30. package/src/runtime/internal/client/runtime.js +129 -362
  31. package/src/runtime/internal/client/template-ns.js +47 -0
  32. package/src/runtime/internal/client/template.js +63 -140
  33. package/src/runtime/internal/client/track-async.js +356 -0
  34. package/src/runtime/internal/client/try.js +133 -319
  35. package/src/runtime/internal/client/types.d.ts +48 -24
  36. package/src/runtime/internal/server/index.js +38 -33
  37. package/src/runtime/internal/server/prerender.js +27 -0
  38. package/src/server/index.js +1 -0
  39. package/src/utils/class-name.js +28 -0
  40. package/tests/client/basic/basic.errors.test.tsrx +3 -3
  41. package/tests/client/compiler/__snapshots__/compiler.typescript.test.tsrx.snap +0 -2
  42. package/tests/client/compiler/compiler.basic.test.tsrx +4 -4
  43. package/tests/client/compiler/compiler.tracked-access.test.tsrx +3 -3
  44. package/tests/client/composite/composite.props.test.tsrx +10 -10
  45. package/tests/client/derived-release.test.tsrx +3 -3
  46. package/tests/client/for-item.test.tsrx +443 -0
  47. package/tests/client/for-selector.test.tsrx +95 -0
  48. package/tests/hydration/compiled/client/basic.js +97 -123
  49. package/tests/hydration/compiled/client/composite.js +5 -5
  50. package/tests/hydration/compiled/client/events.js +84 -79
  51. package/tests/hydration/compiled/client/for.js +229 -233
  52. package/tests/hydration/compiled/client/fragment-cursor.js +781 -481
  53. package/tests/hydration/compiled/client/head.js +23 -26
  54. package/tests/hydration/compiled/client/hmr.js +4 -4
  55. package/tests/hydration/compiled/client/html-in-template.js +5 -5
  56. package/tests/hydration/compiled/client/html.js +174 -208
  57. package/tests/hydration/compiled/client/if-children.js +71 -70
  58. package/tests/hydration/compiled/client/if-fragment-controlflow.js +46 -46
  59. package/tests/hydration/compiled/client/if.js +26 -26
  60. package/tests/hydration/compiled/client/mixed-control-flow.js +63 -105
  61. package/tests/hydration/compiled/client/nested-control-flow.js +170 -390
  62. package/tests/hydration/compiled/client/portal.js +10 -10
  63. package/tests/hydration/compiled/client/reactivity.js +36 -50
  64. package/tests/hydration/compiled/client/return.js +2 -2
  65. package/tests/hydration/compiled/client/streaming.js +34 -40
  66. package/tests/hydration/compiled/client/switch.js +25 -25
  67. package/tests/hydration/compiled/client/track-async-serialization.js +41 -41
  68. package/tests/hydration/compiled/client/try.js +15 -15
  69. package/tests/hydration/compiled/client/typed-text.js +8 -19
  70. package/tests/hydration/compiled/server/basic.js +6 -6
  71. package/tests/hydration/compiled/server/events.js +13 -61
  72. package/tests/hydration/compiled/server/for.js +23 -31
  73. package/tests/hydration/compiled/server/fragment-cursor.js +214 -366
  74. package/tests/hydration/compiled/server/head.js +6 -6
  75. package/tests/hydration/compiled/server/hmr.js +1 -1
  76. package/tests/hydration/compiled/server/html.js +1 -1
  77. package/tests/hydration/compiled/server/if-children.js +9 -9
  78. package/tests/hydration/compiled/server/if.js +5 -5
  79. package/tests/hydration/compiled/server/mixed-control-flow.js +4 -4
  80. package/tests/hydration/compiled/server/portal.js +1 -1
  81. package/tests/hydration/compiled/server/reactivity.js +9 -9
  82. package/tests/hydration/compiled/server/streaming.js +9 -9
  83. package/tests/hydration/compiled/server/switch.js +4 -4
  84. package/tests/hydration/compiled/server/track-async-serialization.js +16 -16
  85. package/tests/hydration/compiled/server/try.js +4 -4
  86. package/tests/hydration/compiled/server/typed-text.js +1 -1
  87. package/tests/hydration/components/fragment-cursor.tsrx +60 -0
  88. package/tests/hydration/components/track-async-serialization.tsrx +2 -2
  89. package/tests/hydration/fragment-cursor.test.js +34 -1
  90. package/tests/hydration/track-async-serialization.test.js +1 -1
  91. package/tests/server/basic.components.test.tsrx +3 -3
  92. package/tests/server/basic.test.tsrx +23 -0
  93. package/tests/server/track-async-serialization.test.tsrx +6 -6
  94. package/tests/utils/tracked-types.test.js +3 -3
  95. package/types/index.d.ts +8 -8
  96. package/types/server.d.ts +17 -0
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root = _$_.template(`<div class="layout"><!></div>`, 0);
4
+ var root = _$_.template(`<div class=layout><!>`);
5
5
 
6
6
  function Layout_render(__anchor, __block, { children }) {
7
7
  var div = root();
@@ -18,7 +18,7 @@ function Layout_render(__anchor, __block, { children }) {
18
18
 
19
19
  Layout[_$_.$r] = Layout_render;
20
20
 
21
- var root_1 = _$_.template(`<div class="layout">before<!>after</div>`, 0);
21
+ var root_1 = _$_.template(`<div class=layout>before<!>after`);
22
22
 
23
23
  function TextWrappedLayout_render(__anchor, __block, { children }) {
24
24
  var div_1 = root_1();
@@ -36,7 +36,7 @@ function TextWrappedLayout_render(__anchor, __block, { children }) {
36
36
 
37
37
  TextWrappedLayout[_$_.$r] = TextWrappedLayout_render;
38
38
 
39
- var root_2 = _$_.template(`<div class="single">single</div>`, 0);
39
+ var root_2 = _$_.template(`<div class=single>single`);
40
40
 
41
41
  function SingleChild_render(__anchor, __block) {
42
42
  var div_2 = root_2();
@@ -46,7 +46,7 @@ function SingleChild_render(__anchor, __block) {
46
46
 
47
47
  SingleChild[_$_.$r] = SingleChild_render;
48
48
 
49
- var root_4 = _$_.template(`<h1>title</h1><p>description</p>`, 1, 2);
49
+ var root_4 = _$_.template(`<h1>title</h1><p>description`, 1, 2);
50
50
  var root_3 = _$_.template(`<!>`, 1, 1);
51
51
 
52
52
  function MultiRootChild_render(__anchor, __block) {
@@ -81,7 +81,7 @@ function LayoutWithSingleChild_render(__anchor, __block) {
81
81
 
82
82
  LayoutWithSingleChild[_$_.$r] = LayoutWithSingleChild_render;
83
83
 
84
- var root_5 = _$_.template(`<!><div class="extra">extra</div>`, 1, 2);
84
+ var root_5 = _$_.template(`<!><div class=extra>extra`, 1, 2);
85
85
 
86
86
  function LayoutWithMultipleChildren_render(__anchor, __block) {
87
87
  _$_.render_component(Layout, __anchor, {
@@ -1,10 +1,19 @@
1
1
  // @ts-nocheck
2
2
  import * as _$_ from 'ripple/internal/client';
3
3
 
4
- var root = _$_.template(`<div><button class="increment">Increment</button><span class="count"> </span></div>`, 0);
4
+ var root = _$_.template(`<div><button class=increment>Increment</button><span class=count>`);
5
+
6
+ function render(__prev) {
7
+ var __a = __prev._a.value;
8
+
9
+ if (__prev.a !== __a) {
10
+ _$_.set_text_content(__prev._b, __a, __prev.a);
11
+ __prev.a = __a;
12
+ }
13
+ }
5
14
 
6
15
  function ClickCounter_render(__anchor, __block) {
7
- const count = _$_.track(0, __block, 'a070e3a7');
16
+ const count = _$_.track(0, __block, '18illt3');
8
17
  var div = root();
9
18
 
10
19
  {
@@ -15,24 +24,27 @@ function ClickCounter_render(__anchor, __block) {
15
24
  };
16
25
 
17
26
  var span = _$_.hydrating ? _$_.hydrate_sibling() : button.nextSibling;
18
-
19
- {
20
- var expression = _$_.hydrating ? _$_.hydrate_child() : span.firstChild;
21
-
22
- _$_.expression(expression, () => count.value);
23
- _$_.hydrating && _$_.pop(span);
24
- }
25
27
  }
26
28
 
29
+ _$_.render(render, { a: '', _a: count, _b: span });
27
30
  _$_.append(__anchor, div);
28
31
  }
29
32
 
30
33
  ClickCounter[_$_.$r] = ClickCounter_render;
31
34
 
32
- var root_1 = _$_.template(`<div><button class="decrement">-</button><span class="count"> </span><button class="increment">+</button></div>`, 0);
35
+ var root_1 = _$_.template(`<div><button class=decrement>-</button><span class=count></span><button class=increment>+`);
36
+
37
+ function render_1(__prev) {
38
+ var __a = __prev._a.value;
39
+
40
+ if (__prev.a !== __a) {
41
+ _$_.set_text_content(__prev._b, __a, __prev.a);
42
+ __prev.a = __a;
43
+ }
44
+ }
33
45
 
34
46
  function IncrementDecrement_render(__anchor, __block) {
35
- const count = _$_.track(0, __block, '87fcabdd');
47
+ const count = _$_.track(0, __block, '11qc3q5');
36
48
  var div_1 = root_1();
37
49
 
38
50
  {
@@ -43,14 +55,6 @@ function IncrementDecrement_render(__anchor, __block) {
43
55
  };
44
56
 
45
57
  var span_1 = _$_.hydrating ? _$_.hydrate_sibling() : button_1.nextSibling;
46
-
47
- {
48
- var expression_1 = _$_.hydrating ? _$_.hydrate_child() : span_1.firstChild;
49
-
50
- _$_.expression(expression_1, () => count.value);
51
- _$_.hydrating && _$_.pop(span_1);
52
- }
53
-
54
58
  var button_2 = _$_.hydrating ? _$_.hydrate_sibling() : span_1.nextSibling;
55
59
 
56
60
  button_2.__click = () => {
@@ -58,16 +62,33 @@ function IncrementDecrement_render(__anchor, __block) {
58
62
  };
59
63
  }
60
64
 
65
+ _$_.render(render_1, { a: '', _a: count, _b: span_1 });
61
66
  _$_.append(__anchor, div_1);
62
67
  }
63
68
 
64
69
  IncrementDecrement[_$_.$r] = IncrementDecrement_render;
65
70
 
66
- var root_2 = _$_.template(`<div><button class="target">Target</button><span class="clicks"> </span><span class="hovers"> </span></div>`, 0);
71
+ var root_2 = _$_.template(`<div><button class=target>Target</button><span class=clicks></span><span class=hovers>`);
72
+
73
+ function render_2(__prev) {
74
+ var __a = __prev._a.value;
75
+
76
+ if (__prev.a !== __a) {
77
+ _$_.set_text_content(__prev._b, __a, __prev.a);
78
+ __prev.a = __a;
79
+ }
80
+
81
+ var __b = __prev._c.value;
82
+
83
+ if (__prev.b !== __b) {
84
+ _$_.set_text_content(__prev._d, __b, __prev.b);
85
+ __prev.b = __b;
86
+ }
87
+ }
67
88
 
68
89
  function MultipleEvents_render(__anchor, __block) {
69
- const clicks = _$_.track(0, __block, '41b9f0b0');
70
- const hovers = _$_.track(0, __block, '72789f75');
90
+ const clicks = _$_.track(0, __block, 'i8ishc');
91
+ const hovers = _$_.track(0, __block, 'vrf59x');
71
92
  var div_2 = root_2();
72
93
 
73
94
  {
@@ -77,39 +98,34 @@ function MultipleEvents_render(__anchor, __block) {
77
98
  clicks.value++;
78
99
  };
79
100
 
80
- _$_.event('MouseEnter', button_3, () => {
101
+ _$_.listen('mouseenter', button_3, () => {
81
102
  hovers.value++;
82
103
  });
83
104
 
84
105
  var span_2 = _$_.hydrating ? _$_.hydrate_sibling() : button_3.nextSibling;
85
-
86
- {
87
- var expression_2 = _$_.hydrating ? _$_.hydrate_child() : span_2.firstChild;
88
-
89
- _$_.expression(expression_2, () => clicks.value);
90
- _$_.hydrating && _$_.pop(span_2);
91
- }
92
-
93
106
  var span_3 = _$_.hydrating ? _$_.hydrate_sibling() : span_2.nextSibling;
94
-
95
- {
96
- var expression_3 = _$_.hydrating ? _$_.hydrate_child() : span_3.firstChild;
97
-
98
- _$_.expression(expression_3, () => hovers.value);
99
- _$_.hydrating && _$_.pop(span_3);
100
- }
101
107
  }
102
108
 
109
+ _$_.render(render_2, { a: '', b: '', _a: clicks, _b: span_2, _c: hovers, _d: span_3 });
103
110
  _$_.append(__anchor, div_2);
104
111
  }
105
112
 
106
113
  MultipleEvents[_$_.$r] = MultipleEvents_render;
107
114
 
108
- var root_3 = _$_.template(`<div><button class="btn">Click</button><span class="count"> </span><span class="action"> </span></div>`, 0);
115
+ var root_3 = _$_.template(`<div><button class=btn>Click</button><span class=count></span><span class=action> `);
116
+
117
+ function render_3(__prev) {
118
+ var __a = __prev._a.value;
119
+
120
+ if (__prev.a !== __a) {
121
+ _$_.set_text_content(__prev._b, __a, __prev.a);
122
+ __prev.a = __a;
123
+ }
124
+ }
109
125
 
110
126
  function MultiStateUpdate_render(__anchor, __block) {
111
- const count = _$_.track(0, __block, '5a375160');
112
- const lastAction = _$_.track('none', __block, '3ceeb88c');
127
+ const count = _$_.track(0, __block, 'p155r4');
128
+ const lastAction = _$_.track('none', __block, 'gwmyks');
113
129
 
114
130
  const handleClick = () => {
115
131
  count.value++;
@@ -124,14 +140,6 @@ function MultiStateUpdate_render(__anchor, __block) {
124
140
  button_4.__click = handleClick;
125
141
 
126
142
  var span_4 = _$_.hydrating ? _$_.hydrate_sibling() : button_4.nextSibling;
127
-
128
- {
129
- var expression_4 = _$_.hydrating ? _$_.hydrate_child() : span_4.firstChild;
130
-
131
- _$_.expression(expression_4, () => count.value);
132
- _$_.hydrating && _$_.pop(span_4);
133
- }
134
-
135
143
  var span_5 = _$_.hydrating ? _$_.hydrate_sibling() : span_4.nextSibling;
136
144
 
137
145
  {
@@ -142,23 +150,25 @@ function MultiStateUpdate_render(__anchor, __block) {
142
150
  }
143
151
  }
144
152
 
153
+ _$_.render(render_3, { a: '', _a: count, _b: span_4 });
145
154
  _$_.append(__anchor, div_3);
146
155
  }
147
156
 
148
157
  MultiStateUpdate[_$_.$r] = MultiStateUpdate_render;
149
158
 
150
- var root_4 = _$_.template(`<div><button class="toggle"> </button></div>`, 0);
159
+ var root_4 = _$_.template(`<div><button class=toggle>`);
151
160
 
152
- function render(__prev) {
153
- var __a = __prev._isOn.value ? 'ON' : 'OFF';
161
+ function render_4(__prev) {
162
+ var __a = __prev._a.value ? 'ON' : 'OFF';
154
163
 
155
164
  if (__prev.a !== __a) {
156
- _$_.set_text(__prev._expression_6, __prev.a = __a);
165
+ _$_.set_text_content(__prev._b, __a, __prev.a);
166
+ __prev.a = __a;
157
167
  }
158
168
  }
159
169
 
160
170
  function ToggleButton_render(__anchor, __block) {
161
- const isOn = _$_.track(false, __block, 'be823ec7');
171
+ const isOn = _$_.track(false, __block, '1guxsxz');
162
172
  var div_4 = root_4();
163
173
 
164
174
  {
@@ -167,25 +177,22 @@ function ToggleButton_render(__anchor, __block) {
167
177
  button_5.__click = () => {
168
178
  isOn.value = !isOn.value;
169
179
  };
170
-
171
- {
172
- var expression_6 = _$_.hydrating ? _$_.hydrate_text() : button_5.firstChild;
173
- }
174
180
  }
175
181
 
176
- _$_.render(render, { a: ' ', _isOn: isOn, _expression_6: expression_6 });
182
+ _$_.render(render_4, { a: '', _a: isOn, _b: button_5 });
177
183
  _$_.append(__anchor, div_4);
178
184
  }
179
185
 
180
186
  ToggleButton[_$_.$r] = ToggleButton_render;
181
187
 
182
- var root_5 = _$_.template(`<button class="child-btn"> </button>`, 0);
188
+ var root_5 = _$_.template(`<button class=child-btn>`);
183
189
 
184
- function render_1(__prev) {
185
- var __a = __prev._props.label;
190
+ function render_5(__prev) {
191
+ var __a = __prev._a.label;
186
192
 
187
193
  if (__prev.a !== __a) {
188
- _$_.set_text(__prev._expression_7, __prev.a = __a);
194
+ _$_.set_text_content(__prev._b, __a, __prev.a);
195
+ __prev.a = __a;
189
196
  }
190
197
  }
191
198
 
@@ -193,21 +200,25 @@ function ChildButton_render(__anchor, __block, props) {
193
200
  var button_6 = root_5();
194
201
 
195
202
  _$_.render_event('Click', button_6, () => props.onClick);
196
-
197
- {
198
- var expression_7 = _$_.hydrating ? _$_.hydrate_text() : button_6.firstChild;
199
- }
200
-
201
- _$_.render(render_1, { a: ' ', _props: props, _expression_7: expression_7 });
203
+ _$_.render(render_5, { a: '', _a: props, _b: button_6 });
202
204
  _$_.append(__anchor, button_6);
203
205
  }
204
206
 
205
207
  ChildButton[_$_.$r] = ChildButton_render;
206
208
 
207
- var root_6 = _$_.template(`<div><!><span class="count"> </span></div>`, 0);
209
+ var root_6 = _$_.template(`<div><span class=count>`);
210
+
211
+ function render_6(__prev) {
212
+ var __a = __prev._a.value;
213
+
214
+ if (__prev.a !== __a) {
215
+ _$_.set_text_content(__prev._b, __a, __prev.a);
216
+ __prev.a = __a;
217
+ }
218
+ }
208
219
 
209
220
  function ParentWithChildButton_render(__anchor, __block) {
210
- const count = _$_.track(0, __block, 'dcc2e0f9');
221
+ const count = _$_.track(0, __block, '1p94et5');
211
222
  var div_5 = root_6();
212
223
 
213
224
  {
@@ -220,18 +231,12 @@ function ParentWithChildButton_render(__anchor, __block) {
220
231
  label: "Click me"
221
232
  });
222
233
 
223
- var span_6 = _$_.hydrating ? _$_.hydrate_sibling() : node.nextSibling;
224
-
225
- {
226
- var expression_8 = _$_.hydrating ? _$_.hydrate_child() : span_6.firstChild;
227
-
228
- _$_.expression(expression_8, () => count.value);
229
- _$_.hydrating && _$_.pop(span_6);
230
- }
234
+ var span_6 = _$_.hydrating ? _$_.hydrate_sibling() : node;
231
235
 
232
236
  _$_.hydrating && _$_.pop(div_5);
233
237
  }
234
238
 
239
+ _$_.render(render_6, { a: '', _a: count, _b: span_6 });
235
240
  _$_.append(__anchor, div_5);
236
241
  }
237
242