ripple 0.3.68 → 0.3.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/package.json +3 -3
  3. package/src/jsx-runtime.d.ts +2 -2
  4. package/src/runtime/element.js +1 -1
  5. package/src/runtime/index-client.js +11 -11
  6. package/src/runtime/index-server.js +7 -4
  7. package/src/runtime/internal/client/bindings.js +1 -1
  8. package/src/runtime/internal/client/blocks.js +13 -4
  9. package/src/runtime/internal/client/component.js +55 -0
  10. package/src/runtime/internal/client/composite.js +4 -2
  11. package/src/runtime/internal/client/expression.js +65 -7
  12. package/src/runtime/internal/client/hmr.js +54 -43
  13. package/src/runtime/internal/client/index.js +5 -1
  14. package/src/runtime/internal/client/portal.js +70 -69
  15. package/src/runtime/internal/client/render.js +3 -0
  16. package/src/runtime/internal/server/index.js +92 -8
  17. package/tests/client/__snapshots__/html.test.tsrx.snap +3 -3
  18. package/tests/client/array/array.copy-within.test.tsrx +33 -31
  19. package/tests/client/array/array.derived.test.tsrx +186 -169
  20. package/tests/client/array/array.iteration.test.tsrx +40 -37
  21. package/tests/client/array/array.mutations.test.tsrx +113 -101
  22. package/tests/client/array/array.static.test.tsrx +119 -101
  23. package/tests/client/array/array.to-methods.test.tsrx +24 -21
  24. package/tests/client/async-suspend.test.tsrx +247 -246
  25. package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +0 -1
  26. package/tests/client/basic/basic.attributes.test.tsrx +428 -423
  27. package/tests/client/basic/basic.collections.test.tsrx +109 -102
  28. package/tests/client/basic/basic.components.test.tsrx +323 -205
  29. package/tests/client/basic/basic.errors.test.tsrx +91 -91
  30. package/tests/client/basic/basic.events.test.tsrx +114 -115
  31. package/tests/client/basic/basic.get-set.test.tsrx +97 -87
  32. package/tests/client/basic/basic.hmr.test.tsrx +19 -16
  33. package/tests/client/basic/basic.reactivity.test.tsrx +199 -191
  34. package/tests/client/basic/basic.rendering.test.tsrx +272 -182
  35. package/tests/client/basic/basic.styling.test.tsrx +23 -22
  36. package/tests/client/basic/basic.utilities.test.tsrx +10 -8
  37. package/tests/client/boundaries.test.tsrx +26 -26
  38. package/tests/client/compiler/__snapshots__/compiler.assignments.test.rsrx.snap +5 -5
  39. package/tests/client/compiler/__snapshots__/compiler.assignments.test.tsrx.snap +5 -5
  40. package/tests/client/compiler/compiler.assignments.test.tsrx +77 -81
  41. package/tests/client/compiler/compiler.attributes.test.tsrx +15 -15
  42. package/tests/client/compiler/compiler.basic.test.tsrx +322 -314
  43. package/tests/client/compiler/compiler.regex.test.tsrx +44 -47
  44. package/tests/client/compiler/compiler.tracked-access.test.tsrx +38 -38
  45. package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
  46. package/tests/client/compiler/compiler.typescript.test.tsrx +2 -2
  47. package/tests/client/composite/composite.dynamic-components.test.tsrx +47 -48
  48. package/tests/client/composite/composite.generics.test.tsrx +168 -192
  49. package/tests/client/composite/composite.props.test.tsrx +97 -81
  50. package/tests/client/composite/composite.reactivity.test.tsrx +177 -147
  51. package/tests/client/composite/composite.render.test.tsrx +122 -105
  52. package/tests/client/computed-properties.test.tsrx +28 -28
  53. package/tests/client/context.test.tsrx +21 -21
  54. package/tests/client/css/global-additional-cases.test.tsrx +58 -58
  55. package/tests/client/css/global-advanced-selectors.test.tsrx +16 -16
  56. package/tests/client/css/global-at-rules.test.tsrx +10 -10
  57. package/tests/client/css/global-basic.test.tsrx +14 -14
  58. package/tests/client/css/global-classes-ids.test.tsrx +14 -14
  59. package/tests/client/css/global-combinators.test.tsrx +10 -10
  60. package/tests/client/css/global-complex-nesting.test.tsrx +14 -14
  61. package/tests/client/css/global-edge-cases.test.tsrx +18 -18
  62. package/tests/client/css/global-keyframes.test.tsrx +12 -12
  63. package/tests/client/css/global-nested.test.tsrx +10 -10
  64. package/tests/client/css/global-pseudo.test.tsrx +12 -12
  65. package/tests/client/css/global-scoping.test.tsrx +20 -20
  66. package/tests/client/css/style-identifier.test.tsrx +126 -259
  67. package/tests/client/date.test.tsrx +146 -133
  68. package/tests/client/dynamic-elements.test.tsrx +398 -365
  69. package/tests/client/events.test.tsrx +292 -290
  70. package/tests/client/for.test.tsrx +156 -153
  71. package/tests/client/head.test.tsrx +105 -96
  72. package/tests/client/html.test.tsrx +122 -26
  73. package/tests/client/input-value.test.tsrx +1361 -1314
  74. package/tests/client/lazy-array.test.tsrx +16 -13
  75. package/tests/client/lazy-destructuring.test.tsrx +257 -213
  76. package/tests/client/map.test.tsrx +65 -60
  77. package/tests/client/media-query.test.tsrx +22 -20
  78. package/tests/client/object.test.tsrx +87 -81
  79. package/tests/client/portal.test.tsrx +57 -51
  80. package/tests/client/ref.test.tsrx +233 -202
  81. package/tests/client/return.test.tsrx +71 -2560
  82. package/tests/client/set.test.tsrx +54 -45
  83. package/tests/client/svg.test.tsrx +216 -186
  84. package/tests/client/switch.test.tsrx +194 -193
  85. package/tests/client/track-async-hydration.test.tsrx +18 -14
  86. package/tests/client/tracked-index-access.test.tsrx +28 -18
  87. package/tests/client/try.test.tsrx +675 -548
  88. package/tests/client/tsx.test.tsrx +373 -311
  89. package/tests/client/typescript-generics.test.tsrx +145 -145
  90. package/tests/client/url/url.derived.test.tsrx +33 -28
  91. package/tests/client/url/url.parsing.test.tsrx +61 -51
  92. package/tests/client/url/url.partial-removal.test.tsrx +56 -48
  93. package/tests/client/url/url.reactivity.test.tsrx +142 -125
  94. package/tests/client/url/url.serialization.test.tsrx +13 -11
  95. package/tests/client/url-search-params/url-search-params.derived.test.tsrx +34 -29
  96. package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +25 -21
  97. package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +50 -45
  98. package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +111 -99
  99. package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +49 -43
  100. package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +14 -12
  101. package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +16 -14
  102. package/tests/hydration/basic.test.js +3 -3
  103. package/tests/hydration/compiled/client/basic.js +586 -651
  104. package/tests/hydration/compiled/client/composite.js +79 -104
  105. package/tests/hydration/compiled/client/events.js +140 -148
  106. package/tests/hydration/compiled/client/for.js +1005 -1018
  107. package/tests/hydration/compiled/client/head.js +124 -134
  108. package/tests/hydration/compiled/client/hmr.js +41 -48
  109. package/tests/hydration/compiled/client/html-in-template.js +38 -41
  110. package/tests/hydration/compiled/client/html.js +970 -1314
  111. package/tests/hydration/compiled/client/if-children.js +234 -249
  112. package/tests/hydration/compiled/client/if.js +182 -189
  113. package/tests/hydration/compiled/client/mixed-control-flow.js +347 -303
  114. package/tests/hydration/compiled/client/nested-control-flow.js +1084 -832
  115. package/tests/hydration/compiled/client/portal.js +65 -85
  116. package/tests/hydration/compiled/client/reactivity.js +84 -90
  117. package/tests/hydration/compiled/client/return.js +38 -1939
  118. package/tests/hydration/compiled/client/switch.js +218 -224
  119. package/tests/hydration/compiled/client/track-async-serialization.js +250 -259
  120. package/tests/hydration/compiled/client/try.js +123 -132
  121. package/tests/hydration/compiled/server/basic.js +773 -831
  122. package/tests/hydration/compiled/server/composite.js +166 -191
  123. package/tests/hydration/compiled/server/events.js +170 -184
  124. package/tests/hydration/compiled/server/for.js +851 -909
  125. package/tests/hydration/compiled/server/head.js +206 -216
  126. package/tests/hydration/compiled/server/hmr.js +64 -72
  127. package/tests/hydration/compiled/server/html-in-template.js +42 -76
  128. package/tests/hydration/compiled/server/html.js +1362 -1667
  129. package/tests/hydration/compiled/server/if-children.js +419 -445
  130. package/tests/hydration/compiled/server/if.js +194 -208
  131. package/tests/hydration/compiled/server/mixed-control-flow.js +249 -257
  132. package/tests/hydration/compiled/server/nested-control-flow.js +491 -515
  133. package/tests/hydration/compiled/server/portal.js +152 -160
  134. package/tests/hydration/compiled/server/reactivity.js +94 -106
  135. package/tests/hydration/compiled/server/return.js +28 -2172
  136. package/tests/hydration/compiled/server/switch.js +274 -286
  137. package/tests/hydration/compiled/server/track-async-serialization.js +340 -358
  138. package/tests/hydration/compiled/server/try.js +167 -185
  139. package/tests/hydration/components/basic.tsrx +320 -272
  140. package/tests/hydration/components/composite.tsrx +44 -32
  141. package/tests/hydration/components/events.tsrx +101 -91
  142. package/tests/hydration/components/for.tsrx +510 -452
  143. package/tests/hydration/components/head.tsrx +87 -80
  144. package/tests/hydration/components/hmr.tsrx +22 -17
  145. package/tests/hydration/components/html-in-template.tsrx +22 -17
  146. package/tests/hydration/components/html.tsrx +525 -443
  147. package/tests/hydration/components/if-children.tsrx +158 -148
  148. package/tests/hydration/components/if.tsrx +109 -95
  149. package/tests/hydration/components/mixed-control-flow.tsrx +100 -96
  150. package/tests/hydration/components/nested-control-flow.tsrx +215 -203
  151. package/tests/hydration/components/portal.tsrx +41 -34
  152. package/tests/hydration/components/reactivity.tsrx +37 -27
  153. package/tests/hydration/components/return.tsrx +12 -556
  154. package/tests/hydration/components/switch.tsrx +120 -114
  155. package/tests/hydration/components/track-async-serialization.tsrx +107 -91
  156. package/tests/hydration/components/try.tsrx +55 -40
  157. package/tests/hydration/html.test.js +4 -4
  158. package/tests/hydration/return.test.js +13 -532
  159. package/tests/server/await.test.tsrx +3 -3
  160. package/tests/server/basic.attributes.test.tsrx +264 -195
  161. package/tests/server/basic.components.test.tsrx +296 -169
  162. package/tests/server/basic.test.tsrx +300 -198
  163. package/tests/server/compiler.test.tsrx +62 -60
  164. package/tests/server/composite.props.test.tsrx +77 -63
  165. package/tests/server/composite.test.tsrx +168 -192
  166. package/tests/server/context.test.tsrx +18 -12
  167. package/tests/server/dynamic-elements.test.tsrx +197 -180
  168. package/tests/server/for.test.tsrx +85 -78
  169. package/tests/server/head.test.tsrx +50 -43
  170. package/tests/server/html-nesting-validation.test.tsrx +8 -8
  171. package/tests/server/if.test.tsrx +57 -51
  172. package/tests/server/lazy-destructuring.test.tsrx +366 -294
  173. package/tests/server/return.test.tsrx +76 -1355
  174. package/tests/server/streaming-ssr.test.tsrx +4 -75
  175. package/tests/server/style-identifier.test.tsrx +169 -131
  176. package/tests/server/switch.test.tsrx +91 -85
  177. package/tests/server/track-async-serialization.test.tsrx +105 -85
  178. package/tests/server/try.test.tsrx +374 -280
  179. package/tests/utils/compiler-compat-config.test.js +2 -2
  180. package/tests/utils/runtime-imports.test.js +10 -0
  181. package/types/index.d.ts +8 -0
  182. package/tests/client/__snapshots__/html.test.rsrx.snap +0 -40
@@ -2,10 +2,11 @@ import { effect, flushSync, track, untrack } from 'ripple';
2
2
 
3
3
  describe('basic client > tracked value access', () => {
4
4
  it('gets tracked value', () => {
5
- component Test() {
6
- let count = track(0);
7
-
8
- <div>{count.value}</div>
5
+ function Test() {
6
+ return <>
7
+ let count = track(0);
8
+ <div>{count.value}</div>
9
+ </>;
9
10
  }
10
11
 
11
12
  render(Test);
@@ -15,11 +16,12 @@ describe('basic client > tracked value access', () => {
15
16
  });
16
17
 
17
18
  it('gets tracked value after mutation', () => {
18
- component Test() {
19
- let &[count] = track(0);
20
-
21
- <p>{count}</p>
22
- <button onClick={() => count++}>{'increment'}</button>
19
+ function Test() {
20
+ return <>
21
+ let &[count] = track(0);
22
+ <p>{count}</p>
23
+ <button onClick={() => count++}>{'increment'}</button>
24
+ </>;
23
25
  }
24
26
 
25
27
  render(Test);
@@ -35,19 +37,20 @@ describe('basic client > tracked value access', () => {
35
37
  });
36
38
 
37
39
  it('gets tracked value after multiple mutations', () => {
38
- component Test() {
39
- let &[count] = track(0);
40
-
41
- <p>{count}</p>
42
- <button
43
- onClick={() => {
44
- count++;
45
- count++;
46
- count++;
47
- }}
48
- >
49
- {'increment'}
50
- </button>
40
+ function Test() {
41
+ return <>
42
+ let &[count] = track(0);
43
+ <p>{count}</p>
44
+ <button
45
+ onClick={() => {
46
+ count++;
47
+ count++;
48
+ count++;
49
+ }}
50
+ >
51
+ {'increment'}
52
+ </button>
53
+ </>;
51
54
  }
52
55
 
53
56
  render(Test);
@@ -63,11 +66,12 @@ describe('basic client > tracked value access', () => {
63
66
  });
64
67
 
65
68
  it('sets tracked value', () => {
66
- component Test() {
67
- let count = track(0);
68
-
69
- <p>{count.value}</p>
70
- <button onClick={() => (count.value = 10)}>{'set to 10'}</button>
69
+ function Test() {
70
+ return <>
71
+ let count = track(0);
72
+ <p>{count.value}</p>
73
+ <button onClick={() => (count.value = 10)}>{'set to 10'}</button>
74
+ </>;
71
75
  }
72
76
 
73
77
  render(Test);
@@ -83,19 +87,20 @@ describe('basic client > tracked value access', () => {
83
87
  });
84
88
 
85
89
  it('sets tracked value multiple times', () => {
86
- component Test() {
87
- let count = track(0);
88
-
89
- <p>{count.value}</p>
90
- <button
91
- onClick={() => {
92
- count.value = 5;
93
- count.value = 15;
94
- count.value = 25;
95
- }}
96
- >
97
- {'set multiple times'}
98
- </button>
90
+ function Test() {
91
+ return <>
92
+ let count = track(0);
93
+ <p>{count.value}</p>
94
+ <button
95
+ onClick={() => {
96
+ count.value = 5;
97
+ count.value = 15;
98
+ count.value = 25;
99
+ }}
100
+ >
101
+ {'set multiple times'}
102
+ </button>
103
+ </>;
99
104
  }
100
105
 
101
106
  render(Test);
@@ -111,11 +116,12 @@ describe('basic client > tracked value access', () => {
111
116
  });
112
117
 
113
118
  it('sets tracked value based on previous value', () => {
114
- component Test() {
115
- let count = track(0);
116
-
117
- <p>{count.value}</p>
118
- <button onClick={() => (count.value = count.value + 10)}>{'add 10'}</button>
119
+ function Test() {
120
+ return <>
121
+ let count = track(0);
122
+ <p>{count.value}</p>
123
+ <button onClick={() => (count.value = count.value + 10)}>{'add 10'}</button>
124
+ </>;
119
125
  }
120
126
 
121
127
  render(Test);
@@ -137,19 +143,20 @@ describe('basic client > tracked value access', () => {
137
143
  });
138
144
 
139
145
  it('sets tracked value multiple times based on previous value', () => {
140
- component Test() {
141
- let count = track(0);
142
-
143
- <p>{count.value}</p>
144
- <button
145
- onClick={() => {
146
- count.value = count.value + 5;
147
- count.value = count.value + 15;
148
- count.value = count.value + 25;
149
- }}
150
- >
151
- {'add multiple times'}
152
- </button>
146
+ function Test() {
147
+ return <>
148
+ let count = track(0);
149
+ <p>{count.value}</p>
150
+ <button
151
+ onClick={() => {
152
+ count.value = count.value + 5;
153
+ count.value = count.value + 15;
154
+ count.value = count.value + 25;
155
+ }}
156
+ >
157
+ {'add multiple times'}
158
+ </button>
159
+ </>;
153
160
  }
154
161
 
155
162
  render(Test);
@@ -175,9 +182,11 @@ describe('basic client > tracked value access', () => {
175
182
  return track(0);
176
183
  }
177
184
 
178
- component Test() {
179
- let count = store();
180
- <p>{count.value}</p>
185
+ function Test() {
186
+ return <>
187
+ let count = store();
188
+ <p>{count.value}</p>
189
+ </>;
181
190
  }
182
191
 
183
192
  render(Test);
@@ -191,11 +200,12 @@ describe('basic client > tracked value access', () => {
191
200
  return track(0);
192
201
  }
193
202
 
194
- component Test() {
195
- let count = store();
196
-
197
- <p>{count.value}</p>
198
- <button onClick={() => (count.value = 50)}>{'set to 50'}</button>
203
+ function Test() {
204
+ return <>
205
+ let count = store();
206
+ <p>{count.value}</p>
207
+ <button onClick={() => (count.value = 50)}>{'set to 50'}</button>
208
+ </>;
199
209
  }
200
210
 
201
211
  render(Test);
@@ -211,16 +221,16 @@ describe('basic client > tracked value access', () => {
211
221
  });
212
222
 
213
223
  it('works with effects', () => {
214
- component Test() {
215
- let count = track(0);
216
- let double = track(0);
217
-
218
- effect(() => {
219
- double.value = count.value * 2;
220
- });
221
-
222
- <p>{double.value}</p>
223
- <button onClick={() => (count.value = count.value + 1)}>{'increment'}</button>
224
+ function Test() {
225
+ return <>
226
+ let count = track(0);
227
+ let double = track(0);
228
+ effect(() => {
229
+ double.value = count.value * 2;
230
+ });
231
+ <p>{double.value}</p>
232
+ <button onClick={() => (count.value = count.value + 1)}>{'increment'}</button>
233
+ </>;
224
234
  }
225
235
 
226
236
  render(Test);
@@ -241,18 +251,18 @@ describe('basic client > tracked value access', () => {
241
251
  });
242
252
 
243
253
  it('works with effects and untrack', () => {
244
- component Test() {
245
- let count = track(0);
246
- let double = track(0);
247
-
248
- effect(() => {
249
- untrack(() => {
250
- double.value = count.value * 2;
254
+ function Test() {
255
+ return <>
256
+ let count = track(0);
257
+ let double = track(0);
258
+ effect(() => {
259
+ untrack(() => {
260
+ double.value = count.value * 2;
261
+ });
251
262
  });
252
- });
253
-
254
- <p>{double.value}</p>
255
- <button onClick={() => (count.value = count.value + 1)}>{'increment'}</button>
263
+ <p>{double.value}</p>
264
+ <button onClick={() => (count.value = count.value + 1)}>{'increment'}</button>
265
+ </>;
256
266
  }
257
267
 
258
268
  render(Test);
@@ -19,8 +19,8 @@ describe('basic client > hmr', () => {
19
19
  });
20
20
 
21
21
  it('removes DOM when an HMR-wrapped root is unmounted', () => {
22
- component App() {
23
- <div class="hmr-root">{'hmr root'}</div>
22
+ function App() {
23
+ return <><div class="hmr-root">{'hmr root'}</div></>;
24
24
  }
25
25
 
26
26
  const cleanup = mount(hmr(App), { target: container });
@@ -37,18 +37,19 @@ describe('basic client > hmr', () => {
37
37
  it('runs child teardowns when an HMR-wrapped root is unmounted', () => {
38
38
  let teardown_count = 0;
39
39
 
40
- component Child() {
41
- effect(() => {
42
- return () => {
43
- teardown_count++;
44
- };
45
- });
46
-
47
- <span class="hmr-child">{'child'}</span>
40
+ function Child() {
41
+ return <>
42
+ effect(() => {
43
+ return () => {
44
+ teardown_count++;
45
+ };
46
+ });
47
+ <span class="hmr-child">{'child'}</span>
48
+ </>;
48
49
  }
49
50
 
50
- component App() {
51
- <Child />
51
+ function App() {
52
+ return <><Child /></>;
52
53
  }
53
54
 
54
55
  const cleanup = mount(hmr(App), { target: container });
@@ -75,10 +76,12 @@ describe('basic client > hmr', () => {
75
76
  };
76
77
 
77
78
  try {
78
- component App() {
79
- <div class="owned-root">
80
- <span>{'child'}</span>
81
- </div>
79
+ function App() {
80
+ return <>
81
+ <div class="owned-root">
82
+ <span>{'child'}</span>
83
+ </div>
84
+ </>;
82
85
  }
83
86
 
84
87
  const cleanup = mount(App, { target: container });