ripple 0.3.26 → 0.3.28

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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # ripple
2
2
 
3
+ ## 0.3.28
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ [[`e4b5555`](https://github.com/Ripple-TS/ripple/commit/e4b5555fb5b1651a2bf1bf232565c7e0e40213b8),
9
+ [`e4b5555`](https://github.com/Ripple-TS/ripple/commit/e4b5555fb5b1651a2bf1bf232565c7e0e40213b8)]:
10
+ - @tsrx/ripple@0.0.10
11
+ - ripple@0.3.28
12
+
13
+ ## 0.3.27
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies []:
18
+ - ripple@0.3.27
19
+
3
20
  ## 0.3.26
4
21
 
5
22
  ### Patch Changes
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Ripple is an elegant TypeScript UI framework",
4
4
  "license": "MIT",
5
5
  "author": "Dominic Gannaway",
6
- "version": "0.3.26",
6
+ "version": "0.3.28",
7
7
  "type": "module",
8
8
  "module": "src/runtime/index-client.js",
9
9
  "main": "src/runtime/index-client.js",
@@ -76,7 +76,7 @@
76
76
  "esm-env": "^1.2.2",
77
77
  "@types/estree": "^1.0.8",
78
78
  "@types/estree-jsx": "^1.0.5",
79
- "@tsrx/ripple": "0.0.9"
79
+ "@tsrx/ripple": "0.0.10"
80
80
  },
81
81
  "devDependencies": {
82
82
  "@types/node": "^24.3.0",
@@ -84,9 +84,9 @@
84
84
  "typescript": "^5.9.3",
85
85
  "@volar/language-core": "~2.4.28",
86
86
  "vscode-languageserver-types": "^3.17.5",
87
- "@tsrx/core": "0.0.7"
87
+ "@tsrx/core": "0.0.8"
88
88
  },
89
89
  "peerDependencies": {
90
- "ripple": "0.3.26"
90
+ "ripple": "0.3.28"
91
91
  }
92
92
  }
@@ -228,6 +228,30 @@ describe('basic client > errors', () => {
228
228
  }).toThrow('Do...while loops are not supported in components.');
229
229
  });
230
230
 
231
+ it('should allow JSX fragments in TSRX templates as <tsx> shorthand', () => {
232
+ const code = `
233
+ export default component SafeProfile() {
234
+ <b><>{111}</></b>
235
+ }
236
+ `;
237
+
238
+ expect(() => {
239
+ compile(code, 'test.tsrx');
240
+ }).not.toThrow();
241
+ });
242
+
243
+ it('should allow JSX fragments inside tsx blocks', () => {
244
+ const code = `
245
+ export default component SafeProfile() {
246
+ <tsx><>{111}</></tsx>
247
+ }
248
+ `;
249
+
250
+ expect(() => {
251
+ compile(code, 'test.tsrx');
252
+ }).not.toThrow();
253
+ });
254
+
231
255
  it('should not throw error for while loop inside a function within a component', () => {
232
256
  const code = `
233
257
  export default component App() {
@@ -1,7 +1,7 @@
1
1
  import { flushSync, track } from 'ripple';
2
2
 
3
3
  describe('tsx expression', () => {
4
- it('renders a basic tsx element', () => {
4
+ it('renders a basic fragment shorthand element', () => {
5
5
  component App() {
6
6
  const el = <tsx><div>hello world</div></tsx>;
7
7
  {el}
@@ -242,7 +242,7 @@ describe('tsx expression', () => {
242
242
  expect(div.title).toBe('Item 1');
243
243
  });
244
244
 
245
- it('renders tsx passed directly as component prop', () => {
245
+ it('renders fragment shorthand passed directly as component prop', () => {
246
246
  component Wrapper(&{ content }: { content: any }) {
247
247
  <div class="wrapper">{content}</div>
248
248
  }
@@ -257,7 +257,7 @@ describe('tsx expression', () => {
257
257
  expect(wrapper.textContent).toBe('direct prop');
258
258
  });
259
259
 
260
- it('renders tsx passed directly as children prop', () => {
260
+ it('renders fragment shorthand passed directly as children prop', () => {
261
261
  component Card(&{ title, children }: { title: any; children: any }) {
262
262
  <div class="card">
263
263
  <h2 class="card-title">{title}</h2>