ripple 0.3.72 → 0.3.76

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