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.
- package/CHANGELOG.md +57 -0
- package/package.json +3 -3
- package/src/jsx-runtime.d.ts +2 -2
- package/src/runtime/element.js +1 -1
- package/src/runtime/index-client.js +11 -11
- package/src/runtime/index-server.js +7 -4
- package/src/runtime/internal/client/bindings.js +1 -1
- package/src/runtime/internal/client/blocks.js +13 -4
- package/src/runtime/internal/client/component.js +55 -0
- package/src/runtime/internal/client/composite.js +4 -2
- package/src/runtime/internal/client/expression.js +65 -7
- package/src/runtime/internal/client/hmr.js +54 -43
- package/src/runtime/internal/client/index.js +5 -1
- package/src/runtime/internal/client/portal.js +70 -69
- package/src/runtime/internal/client/render.js +3 -0
- package/src/runtime/internal/server/index.js +92 -8
- package/tests/client/__snapshots__/html.test.tsrx.snap +3 -3
- package/tests/client/array/array.copy-within.test.tsrx +33 -31
- package/tests/client/array/array.derived.test.tsrx +186 -169
- package/tests/client/array/array.iteration.test.tsrx +40 -37
- package/tests/client/array/array.mutations.test.tsrx +113 -101
- package/tests/client/array/array.static.test.tsrx +119 -101
- package/tests/client/array/array.to-methods.test.tsrx +24 -21
- package/tests/client/async-suspend.test.tsrx +247 -246
- package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +0 -1
- package/tests/client/basic/basic.attributes.test.tsrx +428 -423
- package/tests/client/basic/basic.collections.test.tsrx +109 -102
- package/tests/client/basic/basic.components.test.tsrx +323 -205
- package/tests/client/basic/basic.errors.test.tsrx +91 -91
- package/tests/client/basic/basic.events.test.tsrx +114 -115
- package/tests/client/basic/basic.get-set.test.tsrx +97 -87
- package/tests/client/basic/basic.hmr.test.tsrx +19 -16
- package/tests/client/basic/basic.reactivity.test.tsrx +199 -191
- package/tests/client/basic/basic.rendering.test.tsrx +272 -182
- package/tests/client/basic/basic.styling.test.tsrx +23 -22
- package/tests/client/basic/basic.utilities.test.tsrx +10 -8
- package/tests/client/boundaries.test.tsrx +26 -26
- package/tests/client/compiler/__snapshots__/compiler.assignments.test.rsrx.snap +5 -5
- package/tests/client/compiler/__snapshots__/compiler.assignments.test.tsrx.snap +5 -5
- package/tests/client/compiler/compiler.assignments.test.tsrx +77 -81
- package/tests/client/compiler/compiler.attributes.test.tsrx +15 -15
- package/tests/client/compiler/compiler.basic.test.tsrx +322 -314
- package/tests/client/compiler/compiler.regex.test.tsrx +44 -47
- package/tests/client/compiler/compiler.tracked-access.test.tsrx +38 -38
- package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
- package/tests/client/compiler/compiler.typescript.test.tsrx +2 -2
- package/tests/client/composite/composite.dynamic-components.test.tsrx +47 -48
- package/tests/client/composite/composite.generics.test.tsrx +168 -192
- package/tests/client/composite/composite.props.test.tsrx +97 -81
- package/tests/client/composite/composite.reactivity.test.tsrx +177 -147
- package/tests/client/composite/composite.render.test.tsrx +122 -105
- package/tests/client/computed-properties.test.tsrx +28 -28
- package/tests/client/context.test.tsrx +21 -21
- package/tests/client/css/global-additional-cases.test.tsrx +58 -58
- package/tests/client/css/global-advanced-selectors.test.tsrx +16 -16
- package/tests/client/css/global-at-rules.test.tsrx +10 -10
- package/tests/client/css/global-basic.test.tsrx +14 -14
- package/tests/client/css/global-classes-ids.test.tsrx +14 -14
- package/tests/client/css/global-combinators.test.tsrx +10 -10
- package/tests/client/css/global-complex-nesting.test.tsrx +14 -14
- package/tests/client/css/global-edge-cases.test.tsrx +18 -18
- package/tests/client/css/global-keyframes.test.tsrx +12 -12
- package/tests/client/css/global-nested.test.tsrx +10 -10
- package/tests/client/css/global-pseudo.test.tsrx +12 -12
- package/tests/client/css/global-scoping.test.tsrx +20 -20
- package/tests/client/css/style-identifier.test.tsrx +126 -259
- package/tests/client/date.test.tsrx +146 -133
- package/tests/client/dynamic-elements.test.tsrx +398 -365
- package/tests/client/events.test.tsrx +292 -290
- package/tests/client/for.test.tsrx +156 -153
- package/tests/client/head.test.tsrx +105 -96
- package/tests/client/html.test.tsrx +122 -26
- package/tests/client/input-value.test.tsrx +1361 -1314
- package/tests/client/lazy-array.test.tsrx +16 -13
- package/tests/client/lazy-destructuring.test.tsrx +257 -213
- package/tests/client/map.test.tsrx +65 -60
- package/tests/client/media-query.test.tsrx +22 -20
- package/tests/client/object.test.tsrx +87 -81
- package/tests/client/portal.test.tsrx +57 -51
- package/tests/client/ref.test.tsrx +233 -202
- package/tests/client/return.test.tsrx +71 -2560
- package/tests/client/set.test.tsrx +54 -45
- package/tests/client/svg.test.tsrx +216 -186
- package/tests/client/switch.test.tsrx +194 -193
- package/tests/client/track-async-hydration.test.tsrx +18 -14
- package/tests/client/tracked-index-access.test.tsrx +28 -18
- package/tests/client/try.test.tsrx +675 -548
- package/tests/client/tsx.test.tsrx +373 -311
- package/tests/client/typescript-generics.test.tsrx +145 -145
- package/tests/client/url/url.derived.test.tsrx +33 -28
- package/tests/client/url/url.parsing.test.tsrx +61 -51
- package/tests/client/url/url.partial-removal.test.tsrx +56 -48
- package/tests/client/url/url.reactivity.test.tsrx +142 -125
- package/tests/client/url/url.serialization.test.tsrx +13 -11
- package/tests/client/url-search-params/url-search-params.derived.test.tsrx +34 -29
- package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +25 -21
- package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +50 -45
- package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +111 -99
- package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +49 -43
- package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +14 -12
- package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +16 -14
- package/tests/hydration/basic.test.js +3 -3
- package/tests/hydration/compiled/client/basic.js +586 -651
- package/tests/hydration/compiled/client/composite.js +79 -104
- package/tests/hydration/compiled/client/events.js +140 -148
- package/tests/hydration/compiled/client/for.js +1005 -1018
- package/tests/hydration/compiled/client/head.js +124 -134
- package/tests/hydration/compiled/client/hmr.js +41 -48
- package/tests/hydration/compiled/client/html-in-template.js +38 -41
- package/tests/hydration/compiled/client/html.js +970 -1314
- package/tests/hydration/compiled/client/if-children.js +234 -249
- package/tests/hydration/compiled/client/if.js +182 -189
- package/tests/hydration/compiled/client/mixed-control-flow.js +347 -303
- package/tests/hydration/compiled/client/nested-control-flow.js +1084 -832
- package/tests/hydration/compiled/client/portal.js +65 -85
- package/tests/hydration/compiled/client/reactivity.js +84 -90
- package/tests/hydration/compiled/client/return.js +38 -1939
- package/tests/hydration/compiled/client/switch.js +218 -224
- package/tests/hydration/compiled/client/track-async-serialization.js +250 -259
- package/tests/hydration/compiled/client/try.js +123 -132
- package/tests/hydration/compiled/server/basic.js +773 -831
- package/tests/hydration/compiled/server/composite.js +166 -191
- package/tests/hydration/compiled/server/events.js +170 -184
- package/tests/hydration/compiled/server/for.js +851 -909
- package/tests/hydration/compiled/server/head.js +206 -216
- package/tests/hydration/compiled/server/hmr.js +64 -72
- package/tests/hydration/compiled/server/html-in-template.js +42 -76
- package/tests/hydration/compiled/server/html.js +1362 -1667
- package/tests/hydration/compiled/server/if-children.js +419 -445
- package/tests/hydration/compiled/server/if.js +194 -208
- package/tests/hydration/compiled/server/mixed-control-flow.js +249 -257
- package/tests/hydration/compiled/server/nested-control-flow.js +491 -515
- package/tests/hydration/compiled/server/portal.js +152 -160
- package/tests/hydration/compiled/server/reactivity.js +94 -106
- package/tests/hydration/compiled/server/return.js +28 -2172
- package/tests/hydration/compiled/server/switch.js +274 -286
- package/tests/hydration/compiled/server/track-async-serialization.js +340 -358
- package/tests/hydration/compiled/server/try.js +167 -185
- package/tests/hydration/components/basic.tsrx +320 -272
- package/tests/hydration/components/composite.tsrx +44 -32
- package/tests/hydration/components/events.tsrx +101 -91
- package/tests/hydration/components/for.tsrx +510 -452
- package/tests/hydration/components/head.tsrx +87 -80
- package/tests/hydration/components/hmr.tsrx +22 -17
- package/tests/hydration/components/html-in-template.tsrx +22 -17
- package/tests/hydration/components/html.tsrx +525 -443
- package/tests/hydration/components/if-children.tsrx +158 -148
- package/tests/hydration/components/if.tsrx +109 -95
- package/tests/hydration/components/mixed-control-flow.tsrx +100 -96
- package/tests/hydration/components/nested-control-flow.tsrx +215 -203
- package/tests/hydration/components/portal.tsrx +41 -34
- package/tests/hydration/components/reactivity.tsrx +37 -27
- package/tests/hydration/components/return.tsrx +12 -556
- package/tests/hydration/components/switch.tsrx +120 -114
- package/tests/hydration/components/track-async-serialization.tsrx +107 -91
- package/tests/hydration/components/try.tsrx +55 -40
- package/tests/hydration/html.test.js +4 -4
- package/tests/hydration/return.test.js +13 -532
- package/tests/server/await.test.tsrx +3 -3
- package/tests/server/basic.attributes.test.tsrx +264 -195
- package/tests/server/basic.components.test.tsrx +296 -169
- package/tests/server/basic.test.tsrx +300 -198
- package/tests/server/compiler.test.tsrx +62 -60
- package/tests/server/composite.props.test.tsrx +77 -63
- package/tests/server/composite.test.tsrx +168 -192
- package/tests/server/context.test.tsrx +18 -12
- package/tests/server/dynamic-elements.test.tsrx +197 -180
- package/tests/server/for.test.tsrx +85 -78
- package/tests/server/head.test.tsrx +50 -43
- package/tests/server/html-nesting-validation.test.tsrx +8 -8
- package/tests/server/if.test.tsrx +57 -51
- package/tests/server/lazy-destructuring.test.tsrx +366 -294
- package/tests/server/return.test.tsrx +76 -1355
- package/tests/server/streaming-ssr.test.tsrx +4 -75
- package/tests/server/style-identifier.test.tsrx +169 -131
- package/tests/server/switch.test.tsrx +91 -85
- package/tests/server/track-async-serialization.test.tsrx +105 -85
- package/tests/server/try.test.tsrx +374 -280
- package/tests/utils/compiler-compat-config.test.js +2 -2
- package/tests/utils/runtime-imports.test.js +10 -0
- package/types/index.d.ts +8 -0
- 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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
51
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
<
|
|
81
|
-
|
|
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 });
|