ripple 0.3.71 → 0.3.74

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 (165) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/package.json +3 -3
  3. package/src/jsx-runtime.d.ts +2 -8
  4. package/src/runtime/index-client.js +3 -13
  5. package/src/runtime/internal/client/blocks.js +3 -25
  6. package/src/runtime/internal/client/for.js +80 -5
  7. package/src/runtime/internal/client/index.js +0 -2
  8. package/src/runtime/internal/client/types.d.ts +0 -10
  9. package/tests/client/__snapshots__/computed-properties.test.tsrx.snap +8 -0
  10. package/tests/client/__snapshots__/for.test.tsrx.snap +22 -0
  11. package/tests/client/__snapshots__/html.test.tsrx.snap +4 -0
  12. package/tests/client/array/array.copy-within.test.tsrx +19 -19
  13. package/tests/client/array/array.derived.test.tsrx +97 -109
  14. package/tests/client/array/array.iteration.test.tsrx +28 -28
  15. package/tests/client/array/array.mutations.test.tsrx +68 -68
  16. package/tests/client/array/array.static.test.tsrx +82 -92
  17. package/tests/client/array/array.to-methods.test.tsrx +15 -15
  18. package/tests/client/async-suspend.test.tsrx +180 -179
  19. package/tests/client/basic/__snapshots__/basic.attributes.test.tsrx.snap +2 -0
  20. package/tests/client/basic/__snapshots__/basic.rendering.test.tsrx.snap +4 -0
  21. package/tests/client/basic/basic.attributes.test.tsrx +273 -317
  22. package/tests/client/basic/basic.collections.test.tsrx +59 -71
  23. package/tests/client/basic/basic.components.test.tsrx +196 -222
  24. package/tests/client/basic/basic.errors.test.tsrx +72 -78
  25. package/tests/client/basic/basic.events.test.tsrx +80 -85
  26. package/tests/client/basic/basic.get-set.test.tsrx +54 -64
  27. package/tests/client/basic/basic.hmr.test.tsrx +15 -19
  28. package/tests/client/basic/basic.reactivity.test.tsrx +121 -135
  29. package/tests/client/basic/basic.rendering.test.tsrx +273 -178
  30. package/tests/client/basic/basic.utilities.test.tsrx +8 -10
  31. package/tests/client/boundaries.test.tsrx +18 -18
  32. package/tests/client/compiler/compiler.assignments.test.tsrx +77 -76
  33. package/tests/client/compiler/compiler.attributes.test.tsrx +18 -14
  34. package/tests/client/compiler/compiler.basic.test.tsrx +364 -296
  35. package/tests/client/compiler/compiler.regex.test.tsrx +40 -44
  36. package/tests/client/compiler/compiler.tracked-access.test.tsrx +57 -38
  37. package/tests/client/compiler/compiler.try-in-function.test.tsrx +16 -16
  38. package/tests/client/compiler/compiler.typescript.test.tsrx +4 -3
  39. package/tests/client/composite/composite.dynamic-components.test.tsrx +41 -44
  40. package/tests/client/composite/composite.generics.test.tsrx +165 -167
  41. package/tests/client/composite/composite.props.test.tsrx +66 -74
  42. package/tests/client/composite/composite.reactivity.test.tsrx +132 -166
  43. package/tests/client/composite/composite.render.test.tsrx +92 -101
  44. package/tests/client/computed-properties.test.tsrx +14 -18
  45. package/tests/client/context.test.tsrx +14 -18
  46. package/tests/client/css/global-additional-cases.test.tsrx +491 -437
  47. package/tests/client/css/global-advanced-selectors.test.tsrx +169 -153
  48. package/tests/client/css/global-at-rules.test.tsrx +71 -66
  49. package/tests/client/css/global-basic.test.tsrx +105 -98
  50. package/tests/client/css/global-classes-ids.test.tsrx +128 -114
  51. package/tests/client/css/global-combinators.test.tsrx +83 -78
  52. package/tests/client/css/global-complex-nesting.test.tsrx +134 -120
  53. package/tests/client/css/global-edge-cases.test.tsrx +138 -120
  54. package/tests/client/css/global-keyframes.test.tsrx +108 -96
  55. package/tests/client/css/global-nested.test.tsrx +88 -78
  56. package/tests/client/css/global-pseudo.test.tsrx +104 -98
  57. package/tests/client/css/global-scoping.test.tsrx +145 -125
  58. package/tests/client/css/style-identifier.test.tsrx +62 -69
  59. package/tests/client/date.test.tsrx +83 -83
  60. package/tests/client/dynamic-elements.test.tsrx +227 -283
  61. package/tests/client/events.test.tsrx +252 -266
  62. package/tests/client/for.test.tsrx +120 -127
  63. package/tests/client/head.test.tsrx +40 -48
  64. package/tests/client/html.test.tsrx +37 -49
  65. package/tests/client/input-value.test.tsrx +1125 -1354
  66. package/tests/client/lazy-array.test.tsrx +10 -16
  67. package/tests/client/lazy-destructuring.test.tsrx +169 -221
  68. package/tests/client/map.test.tsrx +39 -41
  69. package/tests/client/media-query.test.tsrx +15 -19
  70. package/tests/client/object.test.tsrx +46 -56
  71. package/tests/client/portal.test.tsrx +31 -37
  72. package/tests/client/ref.test.tsrx +173 -193
  73. package/tests/client/return.test.tsrx +62 -37
  74. package/tests/client/set.test.tsrx +33 -33
  75. package/tests/client/svg.test.tsrx +195 -215
  76. package/tests/client/switch.test.tsrx +201 -191
  77. package/tests/client/track-async-hydration.test.tsrx +14 -18
  78. package/tests/client/tracked-index-access.test.tsrx +18 -28
  79. package/tests/client/try.test.tsrx +494 -619
  80. package/tests/client/tsx.test.tsrx +290 -371
  81. package/tests/client/typescript-generics.test.tsrx +121 -129
  82. package/tests/client/url/url.derived.test.tsrx +21 -25
  83. package/tests/client/url/url.parsing.test.tsrx +35 -35
  84. package/tests/client/url/url.partial-removal.test.tsrx +32 -32
  85. package/tests/client/url/url.reactivity.test.tsrx +68 -72
  86. package/tests/client/url/url.serialization.test.tsrx +8 -8
  87. package/tests/client/url-search-params/url-search-params.derived.test.tsrx +21 -27
  88. package/tests/client/url-search-params/url-search-params.initialization.test.tsrx +16 -16
  89. package/tests/client/url-search-params/url-search-params.iteration.test.tsrx +37 -37
  90. package/tests/client/url-search-params/url-search-params.mutation.test.tsrx +56 -60
  91. package/tests/client/url-search-params/url-search-params.retrieval.test.tsrx +32 -34
  92. package/tests/client/url-search-params/url-search-params.serialization.test.tsrx +9 -9
  93. package/tests/client/url-search-params/url-search-params.tracked-url.test.tsrx +10 -10
  94. package/tests/hydration/compiled/client/basic.js +396 -325
  95. package/tests/hydration/compiled/client/composite.js +52 -44
  96. package/tests/hydration/compiled/client/for.js +734 -604
  97. package/tests/hydration/compiled/client/head.js +183 -103
  98. package/tests/hydration/compiled/client/html.js +93 -86
  99. package/tests/hydration/compiled/client/if-children.js +95 -71
  100. package/tests/hydration/compiled/client/if.js +113 -89
  101. package/tests/hydration/compiled/client/mixed-control-flow.js +225 -209
  102. package/tests/hydration/compiled/client/nested-control-flow.js +94 -98
  103. package/tests/hydration/compiled/client/reactivity.js +26 -24
  104. package/tests/hydration/compiled/client/return.js +8 -42
  105. package/tests/hydration/compiled/client/switch.js +208 -173
  106. package/tests/hydration/compiled/client/track-async-serialization.js +176 -128
  107. package/tests/hydration/compiled/client/try.js +29 -21
  108. package/tests/hydration/compiled/server/basic.js +210 -221
  109. package/tests/hydration/compiled/server/composite.js +13 -14
  110. package/tests/hydration/compiled/server/for.js +427 -444
  111. package/tests/hydration/compiled/server/head.js +199 -189
  112. package/tests/hydration/compiled/server/html.js +33 -41
  113. package/tests/hydration/compiled/server/if-children.js +114 -117
  114. package/tests/hydration/compiled/server/if.js +77 -83
  115. package/tests/hydration/compiled/server/mixed-control-flow.js +145 -150
  116. package/tests/hydration/compiled/server/nested-control-flow.js +10 -0
  117. package/tests/hydration/compiled/server/reactivity.js +24 -22
  118. package/tests/hydration/compiled/server/return.js +6 -18
  119. package/tests/hydration/compiled/server/switch.js +179 -176
  120. package/tests/hydration/compiled/server/track-async-serialization.js +88 -70
  121. package/tests/hydration/compiled/server/try.js +31 -35
  122. package/tests/hydration/components/basic.tsrx +216 -286
  123. package/tests/hydration/components/composite.tsrx +32 -42
  124. package/tests/hydration/components/events.tsrx +81 -101
  125. package/tests/hydration/components/for.tsrx +270 -336
  126. package/tests/hydration/components/head.tsrx +43 -39
  127. package/tests/hydration/components/hmr.tsrx +16 -22
  128. package/tests/hydration/components/html-in-template.tsrx +15 -21
  129. package/tests/hydration/components/html.tsrx +442 -526
  130. package/tests/hydration/components/if-children.tsrx +107 -125
  131. package/tests/hydration/components/if.tsrx +68 -90
  132. package/tests/hydration/components/mixed-control-flow.tsrx +65 -72
  133. package/tests/hydration/components/nested-control-flow.tsrx +202 -216
  134. package/tests/hydration/components/portal.tsrx +33 -41
  135. package/tests/hydration/components/reactivity.tsrx +26 -34
  136. package/tests/hydration/components/return.tsrx +4 -6
  137. package/tests/hydration/components/switch.tsrx +73 -78
  138. package/tests/hydration/components/track-async-serialization.tsrx +83 -93
  139. package/tests/hydration/components/try.tsrx +37 -51
  140. package/tests/hydration/switch.test.js +8 -8
  141. package/tests/server/await.test.tsrx +3 -3
  142. package/tests/server/basic.attributes.test.tsrx +120 -167
  143. package/tests/server/basic.components.test.tsrx +163 -197
  144. package/tests/server/basic.test.tsrx +298 -220
  145. package/tests/server/compiler.test.tsrx +142 -72
  146. package/tests/server/composite.props.test.tsrx +54 -58
  147. package/tests/server/composite.test.tsrx +165 -167
  148. package/tests/server/context.test.tsrx +13 -17
  149. package/tests/server/dynamic-elements.test.tsrx +103 -135
  150. package/tests/server/for.test.tsrx +115 -84
  151. package/tests/server/head.test.tsrx +31 -31
  152. package/tests/server/html-nesting-validation.test.tsrx +16 -8
  153. package/tests/server/if.test.tsrx +49 -59
  154. package/tests/server/lazy-destructuring.test.tsrx +288 -366
  155. package/tests/server/return.test.tsrx +58 -36
  156. package/tests/server/streaming-ssr.test.tsrx +4 -4
  157. package/tests/server/style-identifier.test.tsrx +58 -66
  158. package/tests/server/switch.test.tsrx +89 -97
  159. package/tests/server/track-async-serialization.test.tsrx +85 -103
  160. package/tests/server/try.test.tsrx +275 -360
  161. package/tests/utils/ref-types.test.js +72 -0
  162. package/tests/utils/vite-plugin-config.test.js +41 -74
  163. package/types/index.d.ts +1 -0
  164. package/src/runtime/internal/client/compat.js +0 -40
  165. package/tests/utils/compiler-compat-config.test.js +0 -38
@@ -14,22 +14,20 @@ describe('basic client > collections', () => {
14
14
  }
15
15
 
16
16
  it('renders with simple reactive objects', () => {
17
- function Basic() {
18
- return <>
19
- let &[user] = track({
20
- name: 'John',
21
- age: 25,
22
- });
17
+ function Basic() @{
18
+ let &[user] = track({
19
+ name: 'John',
20
+ age: 25,
21
+ });
22
+ <>
23
23
  <div class="name">{user.name}</div>
24
24
  <div class="age">{user.age}</div>
25
25
  <button
26
26
  onClick={() => {
27
27
  user = { ...user, name: 'Jane', age: 30 };
28
28
  }}
29
- >
30
- {'Update User'}
31
- </button>
32
- </>;
29
+ >{'Update User'}</button>
30
+ </>
33
31
  }
34
32
 
35
33
  render(Basic);
@@ -49,12 +47,12 @@ describe('basic client > collections', () => {
49
47
  });
50
48
 
51
49
  it('renders with nested reactive objects', () => {
52
- function Basic() {
53
- return <>
54
- let &[user] = track({
55
- name: track('John'),
56
- age: track(25),
57
- });
50
+ function Basic() @{
51
+ let &[user] = track({
52
+ name: track('John'),
53
+ age: track(25),
54
+ });
55
+ <>
58
56
  <div class="name">{user.name.value}</div>
59
57
  <div class="age">{user.age.value}</div>
60
58
  <button
@@ -62,10 +60,8 @@ describe('basic client > collections', () => {
62
60
  user.name.value = 'Jane';
63
61
  user.age.value = 30;
64
62
  }}
65
- >
66
- {'Update User'}
67
- </button>
68
- </>;
63
+ >{'Update User'}</button>
64
+ </>
69
65
  }
70
66
 
71
67
  render(Basic);
@@ -85,21 +81,21 @@ describe('basic client > collections', () => {
85
81
  });
86
82
 
87
83
  it('works as a reactive RippleArray when constructed using # syntactic sugar', () => {
88
- function App() {
89
- return <>
90
- const array = new RippleArray(1, 2, 3);
84
+ function App() @{
85
+ const array = new RippleArray(1, 2, 3);
86
+ <>
91
87
  <pre>{String(array[3])}</pre>
92
88
  <pre>{array[0]}</pre>
93
- <pre>{TRACKED_ARRAY in array}</pre>
89
+ <pre>
90
+ {TRACKED_ARRAY in array}
91
+ </pre>
94
92
  <button
95
93
  onClick={() => {
96
94
  array.push(array.length + 1);
97
95
  array[0] = array[0] + 1;
98
96
  }}
99
- >
100
- {'Add'}
101
- </button>
102
- </>;
97
+ >{'Add'}</button>
98
+ </>
103
99
  }
104
100
 
105
101
  render(App);
@@ -121,36 +117,30 @@ describe('basic client > collections', () => {
121
117
  });
122
118
 
123
119
  it('cleans up mixed tsrx collection sentinels and trailing text on rerender', () => {
124
- function App() {
125
- return <>
126
- let &[primary] = track(true);
120
+ function App() @{
121
+ let &[primary] = track(true);
122
+ <>
127
123
  <div class="frame">
128
- {<tsx>
124
+ {<>
129
125
  {primary
130
126
  ? [
131
127
  'first:',
132
- <strong class="middle">
133
- {'one'}
134
- </strong>,
128
+ <strong class="middle">{'one'}</strong>,
135
129
  ':tail',
136
130
  ]
137
131
  : [
138
132
  'second:',
139
- <strong class="middle">
140
- {'two'}
141
- </strong>,
133
+ <strong class="middle">{'two'}</strong>,
142
134
  ':done',
143
135
  ]}
144
- </tsx>}
136
+ </>}
145
137
  </div>
146
138
  <button
147
139
  onClick={() => {
148
140
  primary = !primary;
149
141
  }}
150
- >
151
- {'toggle'}
152
- </button>
153
- </>;
142
+ >{'toggle'}</button>
143
+ </>
154
144
  }
155
145
 
156
146
  render(App);
@@ -178,21 +168,17 @@ describe('basic client > collections', () => {
178
168
  });
179
169
 
180
170
  it('flattens nested primitive arrays inside mixed tsrx collections', () => {
181
- function App() {
182
- return <>
183
- <div class="frame">
184
- {<tsx>
185
- {[
186
- 'start:',
187
- ['one', 2, true, null, false],
188
- <strong>
189
- {'!'}
190
- </strong>,
191
- ':end',
192
- ]}
193
- </tsx>}
194
- </div>
195
- </>;
171
+ function App() @{
172
+ <div class="frame">
173
+ {<>
174
+ {[
175
+ 'start:',
176
+ ['one', 2, true, null, false],
177
+ <strong>{'!'}</strong>,
178
+ ':end',
179
+ ]}
180
+ </>}
181
+ </div>
196
182
  }
197
183
 
198
184
  render(App);
@@ -201,12 +187,14 @@ describe('basic client > collections', () => {
201
187
  });
202
188
 
203
189
  it('flattens direct primitive array expressions', () => {
204
- function App() {
205
- return <>
206
- const items = ['start:', ['one', 2], null, true, false, ':end'];
207
- <div class="frame">{['start:', ['one', 2], null, true, false, ':end']}</div>
190
+ function App() @{
191
+ const items = ['start:', ['one', 2], null, true, false, ':end'];
192
+ <>
193
+ <div class="frame">
194
+ {['start:', ['one', 2], null, true, false, ':end']}
195
+ </div>
208
196
  <div class="bound-frame">{items}</div>
209
- </>;
197
+ </>
210
198
  }
211
199
 
212
200
  render(App);
@@ -216,16 +204,16 @@ describe('basic client > collections', () => {
216
204
  });
217
205
 
218
206
  it('flattens conditional primitive array expressions', () => {
219
- function App() {
220
- return <>
221
- const condition = true;
222
- const ternary_items = condition
223
- ? ['start:', ['one', 2], null, true, false, ':end']
224
- : ['fallback'];
225
- const logical_items = condition && ['start:', ['one', 2], null, true, false, ':end'];
207
+ function App() @{
208
+ const condition = true;
209
+ const ternary_items = condition
210
+ ? ['start:', ['one', 2], null, true, false, ':end']
211
+ : ['fallback'];
212
+ const logical_items = condition && ['start:', ['one', 2], null, true, false, ':end'];
213
+ <>
226
214
  <div class="ternary-frame">{ternary_items}</div>
227
215
  <div class="logical-frame">{logical_items}</div>
228
- </>;
216
+ </>
229
217
  }
230
218
 
231
219
  render(App);