UNPKG

ripple

Version:

Ripple is an elegant TypeScript UI framework

1,250 lines (938 loc) 73.7 kB
# ripple ## 0.3.112 ### Patch Changes - Updated dependencies [[`98cc95c`](https://github.com/Ripple-TS/ripple/commit/98cc95ce2af7edcb9637ff56072bbeda5b837a30)]: - @tsrx/core@0.1.50 - @tsrx/ripple@0.1.51 ## 0.3.111 ### Patch Changes - Updated dependencies [[`979b230`](https://github.com/Ripple-TS/ripple/commit/979b2303a98cc85669c899bd3aff757f72a1e7c8)]: - @tsrx/core@0.1.49 - @tsrx/ripple@0.1.50 ## 0.3.110 ### Patch Changes - Updated dependencies [[`81859da`](https://github.com/Ripple-TS/ripple/commit/81859da03464b8865304c70ea2b8b1245018af2c)]: - @tsrx/core@0.1.48 - @tsrx/ripple@0.1.49 ## 0.3.109 ### Patch Changes - Updated dependencies [[`302dc74`](https://github.com/Ripple-TS/ripple/commit/302dc74143f4143ec7136c036510d258a7866c8a)]: - @tsrx/core@0.1.47 - @tsrx/ripple@0.1.48 ## 0.3.108 ## 0.3.107 ### Patch Changes - Updated dependencies [[`21a43da`](https://github.com/Ripple-TS/ripple/commit/21a43da09713f28c5d2ae73633e5ca56e4cd8d1f)]: - @tsrx/core@0.1.46 - @tsrx/ripple@0.1.47 ## 0.3.106 ### Patch Changes - Updated dependencies [[`e9e122f`](https://github.com/Ripple-TS/ripple/commit/e9e122f8620c4b52671b294364a12a65091e0c98)]: - @tsrx/core@0.1.45 - @tsrx/ripple@0.1.46 ## 0.3.105 ## 0.3.104 ## 0.3.103 ### Patch Changes - Updated dependencies [[`c66215d`](https://github.com/Ripple-TS/ripple/commit/c66215dbd13313a45bc799d5643d2599b3d70d85)]: - @tsrx/core@0.1.44 - @tsrx/ripple@0.1.45 ## 0.3.102 ## 0.3.101 ### Patch Changes - Updated dependencies [[`73f7eb4`](https://github.com/Ripple-TS/ripple/commit/73f7eb457dd9cc37364ba49b2ddfd56995fd07b0)]: - @tsrx/core@0.1.43 - @tsrx/ripple@0.1.44 ## 0.3.100 ### Patch Changes - [#1352](https://github.com/Ripple-TS/ripple/pull/1352) [`b36ec19`](https://github.com/Ripple-TS/ripple/commit/b36ec1930764f447585a6c31c17bc63b3596511a) Thanks [@leonidaz](https://github.com/leonidaz)! - various type, volar fixes and lib upgrades - Updated dependencies [[`b36ec19`](https://github.com/Ripple-TS/ripple/commit/b36ec1930764f447585a6c31c17bc63b3596511a), [`b36ec19`](https://github.com/Ripple-TS/ripple/commit/b36ec1930764f447585a6c31c17bc63b3596511a)]: - @tsrx/core@0.1.42 - @tsrx/ripple@0.1.43 ## 0.3.99 ### Patch Changes - Updated dependencies [[`5f5726d`](https://github.com/Ripple-TS/ripple/commit/5f5726d164926f480454143895bf035c9c30929b)]: - @tsrx/core@0.1.41 - @tsrx/ripple@0.1.42 ## 0.3.98 ## 0.3.97 ### Patch Changes - Updated dependencies [[`586c6df`](https://github.com/Ripple-TS/ripple/commit/586c6df1dfe52f098d6b48fd94414f69d5e2020d)]: - @tsrx/core@0.1.40 - @tsrx/ripple@0.1.41 ## 0.3.96 ### Patch Changes - Updated dependencies [[`09efc09`](https://github.com/Ripple-TS/ripple/commit/09efc09d5149b8ffe9b6334c48ea6b2b4a1795dc)]: - @tsrx/core@0.1.39 - @tsrx/ripple@0.1.40 ## 0.3.95 ## 0.3.94 ### Patch Changes - Updated dependencies [[`78502e4`](https://github.com/Ripple-TS/ripple/commit/78502e46929df2165d288dbb2483f48e9254ef35)]: - @tsrx/core@0.1.38 - @tsrx/ripple@0.1.39 ## 0.3.93 ### Patch Changes - [`9db5a49`](https://github.com/Ripple-TS/ripple/commit/9db5a49e45c2eb3bb4f6b46c65c0aaf9016633ad) Thanks [@leonidaz](https://github.com/leonidaz)! - Rename the `ripple/server` helper exports to camelCase: `create_ssr_stream` is now `createStream` and `get_css_for_hashes` is now `getCss` (returning the CSS text for the scoped style hashes collected by `render()`). The old snake_case exports are removed; update imports accordingly. The vite plugin consumes the new names internally. ## 0.3.92 ### Patch Changes - [#1326](https://github.com/Ripple-TS/ripple/pull/1326) [`fea49bf`](https://github.com/Ripple-TS/ripple/commit/fea49bfb4410a05e0c915dfa39acdaba7f542737) Thanks [@leonidaz](https://github.com/leonidaz)! - Streaming SSR: `render(App, { stream })` now streams progressively. The synchronous shell (with pending fallbacks for suspended `@try` boundaries and all CSS registered so far) is flushed immediately; each boundary's content streams out of order as a framed chunk once its async work settles, including per-chunk CSS, trackAsync envelopes and `<head>` content. A tiny inline runtime swaps chunks into their slots before hydration, and hydrated boundaries activate streamed chunks in place afterwards — claiming the streamed DOM without re-rendering. Catch-only async boundaries stream an empty slot and resolve to their body or server-rendered catch; errors whose catch region is already on the wire hand off to the client boundary via an error envelope. `render` also gains a `streamTemplate` option for document scaffolding, and the vite plugin streams render-route responses when `ssr.streaming` is enabled in ripple.config.ts (falling back to buffered SSR when index.html lacks the `<!--ssr-head-->`/`<!--ssr-body-->` markers). ## 0.3.91 ### Patch Changes - Updated dependencies [[`a109586`](https://github.com/Ripple-TS/ripple/commit/a109586774227b4026ffbd813a956e231edb1005)]: - @tsrx/core@0.1.37 - @tsrx/ripple@0.1.38 ## 0.3.90 ### Patch Changes - [#1324](https://github.com/Ripple-TS/ripple/pull/1324) [`1925074`](https://github.com/Ripple-TS/ripple/commit/1925074254de0e61c8578cba136c50ea8f89cd35) Thanks [@leonidaz](https://github.com/leonidaz)! - Minor adjustments from @tsrx/ripple moving to the parser ast vs its own version - Updated dependencies [[`1925074`](https://github.com/Ripple-TS/ripple/commit/1925074254de0e61c8578cba136c50ea8f89cd35), [`1925074`](https://github.com/Ripple-TS/ripple/commit/1925074254de0e61c8578cba136c50ea8f89cd35)]: - @tsrx/core@0.1.36 - @tsrx/ripple@0.1.37 ## 0.3.89 ### Patch Changes - Updated dependencies [[`51eed86`](https://github.com/Ripple-TS/ripple/commit/51eed869b7ea26b5554893c9f8dd363f2d2121bc)]: - @tsrx/core@0.1.35 - @tsrx/ripple@0.1.36 ## 0.3.88 ## 0.3.87 ### Patch Changes - Updated dependencies [[`cc95ffa`](https://github.com/Ripple-TS/ripple/commit/cc95ffaef3f3d3cd252176ea94308f89739f0212), [`6f78b7f`](https://github.com/Ripple-TS/ripple/commit/6f78b7ff5a5e1f9873a839b709f38e9506545a63)]: - @tsrx/core@0.1.34 - @tsrx/ripple@0.1.35 ## 0.3.86 ### Patch Changes - [#1310](https://github.com/Ripple-TS/ripple/pull/1310) [`4ebd58d`](https://github.com/Ripple-TS/ripple/commit/4ebd58dfe853c1ed945072822eaba8a7a9e19a6c) Thanks [@leonidaz](https://github.com/leonidaz)! - Fix `Cannot use 'in' operator to search for 'parent' in null` thrown from `append()` when reordering or inserting into a keyed `@for` whose item body is a single control-flow / component root (e.g. `@for (...; key ...) { <Card {item} /> }` where `Card`'s own body is a single `@if`/`@for`/component). The 0.3.85 wrapper-anchor optimization leaves such an item block's `s.start` null because its DOM is rendered through a descendant block, and keyed reconciliation read `s.start` directly as the insertion anchor. Reconciliation now resolves the real first/last DOM node by descending child blocks, so no `<!>` comment marker is reintroduced and the optimization's reduced DOM-mutation cost is preserved. The same resolution is applied to `@switch` case reordering. - Updated dependencies [[`e4e6d7b`](https://github.com/Ripple-TS/ripple/commit/e4e6d7b854786ad19a2c86276ea7e0ffb062e61a)]: - @tsrx/ripple@0.1.34 ## 0.3.85 ### Patch Changes - [#1307](https://github.com/Ripple-TS/ripple/pull/1307) [`f55466b`](https://github.com/Ripple-TS/ripple/commit/f55466bde65d0cff00c0c4525af9d68ae794ffd2) Thanks [@leonidaz](https://github.com/leonidaz)! - Skip the wrapper anchor for single control-flow / code-block / component root scopes. When a scope's entire renderable output is a single `@if`, `@switch`, `@for`, `@try`, or static child component — i.e. a component body, a control-flow branch, or a `@{}` body whose only output after setup is one of these — the compiler now renders it directly before the parent-provided `__anchor` instead of synthesizing a `<!>` fragment wrapper and an extra append + clone. For deep recursive trees this measurably cuts mount time and shrinks generated output; in the recursive-context benchmark it brought mount DOM operations to one clone + one append per element (from ~1.5×) and halved the comment-anchor nodes. Hydration is preserved. The control-flow runtimes (`if_block`/`switch_block`/`for_block`/`for_block_keyed`/`try_block`) capture the SSR boundary marker and hand it to `append()` afterward, so the existing context-aware cursor advance still runs — including for a root scope used as a child of a composite/slot with following siblings. Single-component roots need no runtime change at all, since a component's own content advances the hydration cursor. Also relaxes the compiler's text-expression detection: `string + anything` (e.g. `{a + '|' + b}`) is now recognized as text and lowered to the fast `set_text` path without requiring an explicit `as string`, since such an expression always evaluates to a string in JS. - [#1307](https://github.com/Ripple-TS/ripple/pull/1307) [`f55466b`](https://github.com/Ripple-TS/ripple/commit/f55466bde65d0cff00c0c4525af9d68ae794ffd2) Thanks [@leonidaz](https://github.com/leonidaz)! - Scope the client flush traversal to the updated subtree. Previously every flush walked the whole root block tree to find dirty subscribers, so a deeply-scoped update (e.g. mutating state read by only a small subtree) paid a cost proportional to the entire tree rather than the affected branch. `flush_updates` now descends only along the routing path to each directly-scheduled block and fully scans just that block's subtree, where its subscribers live. A tracked read from outside its owner's subtree (e.g. smuggled across sibling subtrees via a module-level variable) is detected in `register_dependency` and transparently falls back to the original full-tree scan, so behavior is unchanged. - Updated dependencies [[`ba498cd`](https://github.com/Ripple-TS/ripple/commit/ba498cde76e9f83235ce91da825f403a28441bff), [`313b351`](https://github.com/Ripple-TS/ripple/commit/313b3513e4a959dd80b546da41c798066c5ccb0f), [`35ac700`](https://github.com/Ripple-TS/ripple/commit/35ac70052d79efae41bb1df2440fee3f052ca115), [`bbe6e74`](https://github.com/Ripple-TS/ripple/commit/bbe6e7422c690558f0dfcb3abe5452d4f4cdde91), [`0e9f523`](https://github.com/Ripple-TS/ripple/commit/0e9f52358a615c2fc7759544e96c43dccb533c86), [`35ac700`](https://github.com/Ripple-TS/ripple/commit/35ac70052d79efae41bb1df2440fee3f052ca115), [`35ac700`](https://github.com/Ripple-TS/ripple/commit/35ac70052d79efae41bb1df2440fee3f052ca115), [`2b65285`](https://github.com/Ripple-TS/ripple/commit/2b65285bfcd4c6a0aa93d7fa0b25082e6ec74e1f), [`35ac700`](https://github.com/Ripple-TS/ripple/commit/35ac70052d79efae41bb1df2440fee3f052ca115), [`f55466b`](https://github.com/Ripple-TS/ripple/commit/f55466bde65d0cff00c0c4525af9d68ae794ffd2), [`b887deb`](https://github.com/Ripple-TS/ripple/commit/b887debf5f47e63d73184ac218ec8b3542a5e21c), [`3668c5f`](https://github.com/Ripple-TS/ripple/commit/3668c5fe9cdaca4862707d653d23af94780f42af), [`bbc3843`](https://github.com/Ripple-TS/ripple/commit/bbc384387e33c538234be36c07cc4b30ef6ce136)]: - @tsrx/ripple@0.1.33 - @tsrx/core@0.1.33 ## 0.3.84 ### Patch Changes - [`a5d1860`](https://github.com/Ripple-TS/ripple/commit/a5d18603beac4b15e99f9d23f4d0b18b67ffe413) Thanks [@leonidaz](https://github.com/leonidaz)! - Adds snapshot() api for non-reactive shallow copies of RippleArray and RippleObject - Updated dependencies [[`cc3176b`](https://github.com/Ripple-TS/ripple/commit/cc3176b4e40021021986830bdfa3295530715432), [`cc3176b`](https://github.com/Ripple-TS/ripple/commit/cc3176b4e40021021986830bdfa3295530715432)]: - @tsrx/core@0.1.32 - @tsrx/ripple@0.1.32 ## 0.3.83 ### Patch Changes - [#1269](https://github.com/Ripple-TS/ripple/pull/1269) [`8747e8f`](https://github.com/Ripple-TS/ripple/commit/8747e8f306628443d3c4d73bce0d79e986f5966e) Thanks [@leonidaz](https://github.com/leonidaz)! - Treat plain JS control flow inside `@{ … }` as ordinary JavaScript that returns JSX. Only `@`-directives (`@if`/`@for`/`@switch`/`@try`) lower to template control flow. Plain `if`/`for`/`for…of`/`for…in`/`while`/`do…while`/`switch`/`try` inside a code block are now compiled exactly like the same control flow in a regular `function C() { …; return <jsx> }` body — their JSX returns become `tsrx_element` values rather than being template-ized. Previously these plain statements were mis-routed into the template transform: on **ripple** an early-return guard produced a `_$_.if`/`_$_.switch`/`_$_.try` wrapper (with dead code in the `switch`/`try` cases) and plain loops threw a compile error; on **solid** they produced `<Show>`/`<Switch>`/`<For>`/`<Errored>` (dropping trailing output for `try`). They now stay as plain control flow, so early-return guards and loops behave like normal JavaScript. As part of this, the ripple client and server targets no longer emit the `return_guard` bookkeeping variable: a plain early `return` is a real early return, so subsequent template output is naturally skipped without a guard flag. On **solid**, this means a plain guard (`if (signal()) return …`) inside a component body now runs once at setup — exactly like a regular Solid component — instead of being lifted into a reactive `<Show>`. Use `@if` (or another `@`-directive) when you want reactive conditional rendering. - Updated dependencies [[`3d93339`](https://github.com/Ripple-TS/ripple/commit/3d93339e851818b547c43c29c8965700c069b037), [`5646eb4`](https://github.com/Ripple-TS/ripple/commit/5646eb4e4c101b34100acf30ea57ad4065a47720), [`8747e8f`](https://github.com/Ripple-TS/ripple/commit/8747e8f306628443d3c4d73bce0d79e986f5966e), [`8747e8f`](https://github.com/Ripple-TS/ripple/commit/8747e8f306628443d3c4d73bce0d79e986f5966e)]: - @tsrx/ripple@0.1.31 - @tsrx/core@0.1.31 ## 0.3.82 ### Patch Changes - [`67f3794`](https://github.com/Ripple-TS/ripple/commit/67f3794d2f1ffd55dd23a47327d925d9a76a4171) Thanks [@leonidaz](https://github.com/leonidaz)! - Accept a component function as the `children` prop in `mount()` and `hydrate()`. Compiled component call sites normalize `children` via `normalize_children`, but props passed through the mount options skipped that step, so a plain component function would be rendered as text. The same normalization is now applied to `options.props`, which lets bootstrap code hydrate a layout with its page as `children` without reaching into runtime internals. - Updated dependencies [[`b104604`](https://github.com/Ripple-TS/ripple/commit/b10460473fec0ee68b4963cbc2a3d9d5bb3bc633)]: - @tsrx/core@0.1.30 - @tsrx/ripple@0.1.30 ## 0.3.81 ### Patch Changes - Updated dependencies [[`67de047`](https://github.com/Ripple-TS/ripple/commit/67de047d103f39673b25910e1a97760278820999), [`3b6fb73`](https://github.com/Ripple-TS/ripple/commit/3b6fb73170d4ad6a383befdda951ce0da4fcbb46), [`1c645c8`](https://github.com/Ripple-TS/ripple/commit/1c645c8f854df23bb1271b3402d1885616b525cd), [`b1256fd`](https://github.com/Ripple-TS/ripple/commit/b1256fdb5bf279ee7dd20bf1a71dcfccc47e279c)]: - @tsrx/core@0.1.29 - @tsrx/ripple@0.1.29 ## 0.3.80 ### Patch Changes - Updated dependencies [[`f001849`](https://github.com/Ripple-TS/ripple/commit/f00184940979a77cbf6873a811caaaa436feab46), [`4af2591`](https://github.com/Ripple-TS/ripple/commit/4af259139d118a27d177531aa6a21435a3f3a015), [`4af2591`](https://github.com/Ripple-TS/ripple/commit/4af259139d118a27d177531aa6a21435a3f3a015), [`87afc5d`](https://github.com/Ripple-TS/ripple/commit/87afc5d3f4c73e604cd245865e27d29e40435482), [`87afc5d`](https://github.com/Ripple-TS/ripple/commit/87afc5d3f4c73e604cd245865e27d29e40435482), [`f1a4c10`](https://github.com/Ripple-TS/ripple/commit/f1a4c10d2ad8ed604375f36f7ae3b653fe95ed1a), [`87afc5d`](https://github.com/Ripple-TS/ripple/commit/87afc5d3f4c73e604cd245865e27d29e40435482)]: - @tsrx/core@0.1.28 - @tsrx/ripple@0.1.28 ## 0.3.79 ### Patch Changes - Updated dependencies [[`60a78c9`](https://github.com/Ripple-TS/ripple/commit/60a78c9def09eed6d706c42bc751d2d051d1d57f)]: - @tsrx/core@0.1.27 - @tsrx/ripple@0.1.27 ## 0.3.78 ### Patch Changes - [#1240](https://github.com/Ripple-TS/ripple/pull/1240) [`92982ee`](https://github.com/Ripple-TS/ripple/commit/92982ee5cd2e6d971b5b650ec1df70483c9716aa) Thanks [@leonidaz](https://github.com/leonidaz)! - Render `<{expr}>` dynamic tags directly through `_$_.composite` in the client production output instead of lowering to the `Dynamic` helper component, and fix hydration of dynamic string tags claiming the SSR-rendered element. - [#1241](https://github.com/Ripple-TS/ripple/pull/1241) [`b826234`](https://github.com/Ripple-TS/ripple/commit/b8262342111a977ba5a0d44086154e386b06f4b9) Thanks [@leonidaz](https://github.com/leonidaz)! - Remove the runtime `Dynamic` component exports; dynamic rendering is the `<{expr}>` tag syntax. The `Dynamic` type declarations remain so type-only output keeps type-checking, but the JS is gone: React and Preact production output now lowers dynamic tags to a scoped component alias (`const TsrxDynamic_N = expr;`), Ripple SSR uses the internal `_$_.dynamic_element` helper, and the imported-`Dynamic` detection for scoped CSS is removed (the element marking is now `metadata.dynamicElement`, set by the dynamic-tag lowering). - Updated dependencies [[`92982ee`](https://github.com/Ripple-TS/ripple/commit/92982ee5cd2e6d971b5b650ec1df70483c9716aa), [`92982ee`](https://github.com/Ripple-TS/ripple/commit/92982ee5cd2e6d971b5b650ec1df70483c9716aa), [`b826234`](https://github.com/Ripple-TS/ripple/commit/b8262342111a977ba5a0d44086154e386b06f4b9), [`b826234`](https://github.com/Ripple-TS/ripple/commit/b8262342111a977ba5a0d44086154e386b06f4b9), [`b826234`](https://github.com/Ripple-TS/ripple/commit/b8262342111a977ba5a0d44086154e386b06f4b9)]: - @tsrx/ripple@0.1.26 - @tsrx/core@0.1.26 ## 0.3.77 ### Patch Changes - Updated dependencies [[`d14ec84`](https://github.com/Ripple-TS/ripple/commit/d14ec84f26233e514be9e59ffc94e61db5089587), [`921fb9c`](https://github.com/Ripple-TS/ripple/commit/921fb9ce6485db41527b631f5236b7abbac74986), [`1693c9e`](https://github.com/Ripple-TS/ripple/commit/1693c9e6daf1421e71171fe3c50e37adfc858b69)]: - @tsrx/core@0.1.25 - @tsrx/ripple@0.1.25 ## 0.3.76 ### Patch Changes - [#1229](https://github.com/Ripple-TS/ripple/pull/1229) [`6fd49c9`](https://github.com/Ripple-TS/ripple/commit/6fd49c9dd737e889844e254763f66e13ea4a7241) Thanks [@leonidaz](https://github.com/leonidaz)! - Replace the removed `<@...>` dynamic tag syntax with runtime `Dynamic` helpers. Ripple now exports `Dynamic` and reuses its composite runtime path for dynamic elements/components, while React, Preact, Solid, and Vue expose target-specific `Dynamic` helpers with typed `is` props. React, Preact, Solid, and Vue now mark imported runtime `Dynamic` elements during shared JSX analysis so scoped CSS classes are applied through aliases without treating local components named `Dynamic` as runtime elements. Dynamic component prop forwarding now uses a shared core runtime helper that excludes the internal `is` prop without snapshotting getter-backed reactive props. The TSRX parser, transforms, analyzers, prettier support, and related tests no longer recognize dynamic tag syntax. Stale JSX identifier `tracked` plumbing from that parser path has also been removed. - Updated dependencies [[`6fd49c9`](https://github.com/Ripple-TS/ripple/commit/6fd49c9dd737e889844e254763f66e13ea4a7241)]: - @tsrx/core@0.1.24 - @tsrx/ripple@0.1.24 ## 0.3.75 ### Patch Changes - Updated dependencies [[`9eb4819`](https://github.com/Ripple-TS/ripple/commit/9eb4819cede6da7e93cbcd2bdf284bcb42d40464), [`88a254c`](https://github.com/Ripple-TS/ripple/commit/88a254c69953a5ace33bc10047f11052ec598672), [`ba3a7f6`](https://github.com/Ripple-TS/ripple/commit/ba3a7f6485ea163e60cc0750a8e8b06b50728009), [`ac6f358`](https://github.com/Ripple-TS/ripple/commit/ac6f3582ca0b2814004439c882d6aa735c8afe50), [`4c5f992`](https://github.com/Ripple-TS/ripple/commit/4c5f992b9a11e1f26abee476a6add89f959169bc), [`78ffa8d`](https://github.com/Ripple-TS/ripple/commit/78ffa8d90fd01e85bf34e5c6adef0e51caae8da7), [`16560cb`](https://github.com/Ripple-TS/ripple/commit/16560cb466430bdbe8749d9491bc79e69e58d02c), [`186b3b2`](https://github.com/Ripple-TS/ripple/commit/186b3b2557761ff06c9056bf2e0b7ab8c7692477), [`4be6e54`](https://github.com/Ripple-TS/ripple/commit/4be6e54bbfee20927adca473648a94aa173d7d77), [`2b67f83`](https://github.com/Ripple-TS/ripple/commit/2b67f83d7ed7eab7a39bc33524fcf73f737d977e), [`9918c52`](https://github.com/Ripple-TS/ripple/commit/9918c52e954f2b8e1a994892e7c555e8277f2d59), [`e8493be`](https://github.com/Ripple-TS/ripple/commit/e8493be0b3489f402105297251e1919c103c2360), [`c424675`](https://github.com/Ripple-TS/ripple/commit/c424675102a9edd4f1e356fb6db30124a9c2d885)]: - @tsrx/core@0.1.23 - @tsrx/ripple@0.1.23 ## 0.3.74 ### Patch Changes - [#1199](https://github.com/Ripple-TS/ripple/pull/1199) [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649) Thanks [@trueadm](https://github.com/trueadm)! - Expose Ripple's `RefValue` type from the shared TSRX ref runtime declarations. - [#1199](https://github.com/Ripple-TS/ripple/pull/1199) [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649) Thanks [@trueadm](https://github.com/trueadm)! - Add `@empty { ... }` fallbacks for TSRX `@for` loops, require prefixed template continuation clauses such as `@else`, `@empty`, `@pending`, `@catch`, `@case`, and `@default`, and reject direct `continue`, `break`, and `return` statements inside `@for` loop bodies and `@if` template branches. - [#1199](https://github.com/Ripple-TS/ripple/pull/1199) [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649) Thanks [@trueadm](https://github.com/trueadm)! - Allow JSX and shared ref helper types to accept arrays of ref functions. - Updated dependencies [[`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649), [`5d33325`](https://github.com/Ripple-TS/ripple/commit/5d3332564109d228af5e02c0f68ca4a318766649)]: - @tsrx/ripple@0.1.22 - @tsrx/core@0.1.22 ## 0.3.73 ### Patch Changes - [#1198](https://github.com/Ripple-TS/ripple/pull/1198) [`1de66b8`](https://github.com/Ripple-TS/ripple/commit/1de66b8f851849597b6078dab7af2699e49b0e21) Thanks [@trueadm](https://github.com/trueadm)! - Remove the unused namespaced TSX island feature and React bridge package. - Updated dependencies [[`e738e11`](https://github.com/Ripple-TS/ripple/commit/e738e1153694f56f35cfcab8982d897d7199d85a), [`1de66b8`](https://github.com/Ripple-TS/ripple/commit/1de66b8f851849597b6078dab7af2699e49b0e21), [`e00f596`](https://github.com/Ripple-TS/ripple/commit/e00f5961d5668c054435c8a366ef2a6da6e4a381)]: - @tsrx/ripple@0.1.21 - @tsrx/core@0.1.21 ## 0.3.72 ### Patch Changes - Updated dependencies [[`0ea87fb`](https://github.com/Ripple-TS/ripple/commit/0ea87fb3cbef21c3c00d63cc2a1f3c9f34d01c24)]: - @tsrx/core@0.1.20 - @tsrx/ripple@0.1.20 ## 0.3.71 ### Patch Changes - Updated dependencies [[`0574e73`](https://github.com/Ripple-TS/ripple/commit/0574e73830a549f515cef6aa8c0a1e38c79b06cc), [`0574e73`](https://github.com/Ripple-TS/ripple/commit/0574e73830a549f515cef6aa8c0a1e38c79b06cc)]: - @tsrx/core@0.1.19 - @tsrx/ripple@0.1.19 ## 0.3.70 ### Patch Changes - Updated dependencies [[`5c0b0ff`](https://github.com/Ripple-TS/ripple/commit/5c0b0ff031ddfb319bb048d627e2d2a2a49c1f1d)]: - @tsrx/core@0.1.18 - @tsrx/ripple@0.1.18 ## 0.3.69 ### Patch Changes - [#1177](https://github.com/Ripple-TS/ripple/pull/1177) [`054bd1e`](https://github.com/Ripple-TS/ripple/commit/054bd1e75347e395f6c096f8e293d1baf8e03549) Thanks [@trueadm](https://github.com/trueadm)! - Parse tags and bare fragments as native TSRX by default, remove `component` keyword parsing, and compile/format/lint function components that return native TSRX across the React, Preact, Solid, Vue, and Ripple targets. Ripple component compilation now only renders TSRX reachable from returned values and supports string and `null` component returns. Ripple now also preserves directly called PascalCase helpers as ordinary functions while still compiling renderable component functions used as components or render entries. The old explicit TSRX wrapper tag is no longer special; TSRX elements and fragments are the default expression syntax, and the tag name is treated like any ordinary element name. Ripple now exports a typed `Fragment` helper from its public runtimes and supports `innerHTML` on both host elements and `Fragment`. Ripple also treats `innerHTML` from element spreads as rendered content instead of serializing it as an `innerhtml` attribute. The `{html ...}` template directive has been removed. Use each target's native raw HTML prop instead, such as `innerHTML` for Ripple/Solid/Vue or `dangerouslySetInnerHTML` for React/Preact. The `{text ...}` template directive has also been removed. Text values now use ordinary `{expr}` containers, with explicit coercion written as JavaScript (`String(value)`, `value + ''`, or a typed string value). Ripple optimizes clearly string-shaped expressions and typed string props into text-node updates without requiring a TSRX-specific directive. - [#1177](https://github.com/Ripple-TS/ripple/pull/1177) [`054bd1e`](https://github.com/Ripple-TS/ripple/commit/054bd1e75347e395f6c096f8e293d1baf8e03549) Thanks [@trueadm](https://github.com/trueadm)! - Compile native TSRX functions as value-producing functions and route component syntax through runtime component helpers. - Updated dependencies [[`054bd1e`](https://github.com/Ripple-TS/ripple/commit/054bd1e75347e395f6c096f8e293d1baf8e03549), [`054bd1e`](https://github.com/Ripple-TS/ripple/commit/054bd1e75347e395f6c096f8e293d1baf8e03549)]: - @tsrx/core@0.1.17 - @tsrx/ripple@0.1.17 ## 0.3.68 ### Patch Changes - Updated dependencies [[`d045396`](https://github.com/Ripple-TS/ripple/commit/d0453962cfe1df7a98a0981b0bf3e5729195a9ae)]: - @tsrx/ripple@0.1.16 - @tsrx/core@0.1.16 ## 0.3.67 ### Patch Changes - Updated dependencies [[`ea717f2`](https://github.com/Ripple-TS/ripple/commit/ea717f2ac20901aca59946c1cea8066c28a4220c), [`d083ab8`](https://github.com/Ripple-TS/ripple/commit/d083ab8e802259fa6d8b7bf9bb64d4be899848c4)]: - @tsrx/core@0.1.15 - @tsrx/ripple@0.1.15 ## 0.3.66 ### Patch Changes - [#1166](https://github.com/Ripple-TS/ripple/pull/1166) [`1dc0331`](https://github.com/Ripple-TS/ripple/commit/1dc0331f7b7296545ee459dc31a92057871cbb0d) Thanks [@leonidaz](https://github.com/leonidaz)! - Replace all [0] and [1] compiled output with `.value` and direct `lazy` Throw runtime errors for direct `[0]` and `[1]` access on tracked and derived values. Fix type removal for non-tsx paths Remove the public `get` and `set` exports in favor of `.value` access. Ignore lazy writes past the tracked tuple length instead of creating numeric properties. - [#1169](https://github.com/Ripple-TS/ripple/pull/1169) [`bf1cb96`](https://github.com/Ripple-TS/ripple/commit/bf1cb96f2ea9b325e30f5a051c451f92659d20f9) Thanks [@leonidaz](https://github.com/leonidaz)! - Type host `ref={...}` attributes, named ref props, and generated ref keys so inline callbacks `{ref ...}` receive element-specific JSX types. Exclude `returnType` from the compiler types that use typeAnnotation instead due to the way `@sveltejs/acorn-typescript` parses them. - [#1168](https://github.com/Ripple-TS/ripple/pull/1168) [`146cbf5`](https://github.com/Ripple-TS/ripple/commit/146cbf58120aad05161d503118a47bdc566ba869) Thanks [@leonidaz](https://github.com/leonidaz)! - Add global root pending/catch boundary support and allow Ripple config routes to reference named entry exports. Refactor vite-plugin to keep code generation in one place, produce cache as necessary and generate actual files for inspection. - Updated dependencies [[`1dc0331`](https://github.com/Ripple-TS/ripple/commit/1dc0331f7b7296545ee459dc31a92057871cbb0d), [`bf1cb96`](https://github.com/Ripple-TS/ripple/commit/bf1cb96f2ea9b325e30f5a051c451f92659d20f9)]: - @tsrx/ripple@0.1.14 - @tsrx/core@0.1.14 ## 0.3.65 ### Patch Changes - Updated dependencies [[`95c2976`](https://github.com/Ripple-TS/ripple/commit/95c2976b9ec2c20c4160ad13b636c1ed03e863ef)]: - @tsrx/core@0.1.13 - @tsrx/ripple@0.1.13 ## 0.3.64 ## 0.3.63 ### Patch Changes - [#1153](https://github.com/Ripple-TS/ripple/pull/1153) [`9df9fe3`](https://github.com/Ripple-TS/ripple/commit/9df9fe3a2d26978e69172db84994ac496761cd04) Thanks [@leonidaz](https://github.com/leonidaz)! - Parse nested `<tsrx>` islands inside `<tsx>` expression containers as native TSRX so setup declarations and references keep Volar mappings, and hydrate deeply nested `<tsx>`/`<tsrx>` expression values without skipping server markers. - [#1153](https://github.com/Ripple-TS/ripple/pull/1153) [`9df9fe3`](https://github.com/Ripple-TS/ripple/commit/9df9fe3a2d26978e69172db84994ac496761cd04) Thanks [@leonidaz](https://github.com/leonidaz)! - Avoid duplicating plain text when hydrating mixed TSRX collection values. - [#1153](https://github.com/Ripple-TS/ripple/pull/1153) [`9df9fe3`](https://github.com/Ripple-TS/ripple/commit/9df9fe3a2d26978e69172db84994ac496761cd04) Thanks [@leonidaz](https://github.com/leonidaz)! - Fix to_ts output for nested `<tsrx>` islands inside `<tsx>` blocks. Type JSX expression values as `TSRXElement` so IntelliSense reports assigned TSX/TSRX fragments as renderable values instead of `void`. Fix TextMate highlighting for nested `<tsrx>` and `<tsx>` tags inside JSX expression containers. - [#1153](https://github.com/Ripple-TS/ripple/pull/1153) [`9df9fe3`](https://github.com/Ripple-TS/ripple/commit/9df9fe3a2d26978e69172db84994ac496761cd04) Thanks [@leonidaz](https://github.com/leonidaz)! - Render nested `<tsx>` and `<tsrx>` expression values, including arrays returned from JSX-style expressions. - Updated dependencies [[`2acbbea`](https://github.com/Ripple-TS/ripple/commit/2acbbea9253ac8f516fe0d3a7a38331490e6fd8b), [`9df9fe3`](https://github.com/Ripple-TS/ripple/commit/9df9fe3a2d26978e69172db84994ac496761cd04), [`9df9fe3`](https://github.com/Ripple-TS/ripple/commit/9df9fe3a2d26978e69172db84994ac496761cd04), [`9df9fe3`](https://github.com/Ripple-TS/ripple/commit/9df9fe3a2d26978e69172db84994ac496761cd04), [`9df9fe3`](https://github.com/Ripple-TS/ripple/commit/9df9fe3a2d26978e69172db84994ac496761cd04)]: - @tsrx/core@0.1.12 - @tsrx/ripple@0.1.12 ## 0.3.62 ### Patch Changes - [#1144](https://github.com/Ripple-TS/ripple/pull/1144) [`0e8baf2`](https://github.com/Ripple-TS/ripple/commit/0e8baf278e4105ae019929138956938cd5189035) Thanks [@aleclarson](https://github.com/aleclarson)! - Remove the stale self peer dependency from the Ripple runtime package. ## 0.3.61 ### Patch Changes - Updated dependencies [[`0de733f`](https://github.com/Ripple-TS/ripple/commit/0de733f05800df5d3854eb69e012e9aeaf098f8a)]: - @tsrx/core@0.1.11 - ripple@0.3.61 - @tsrx/ripple@0.1.11 ## 0.3.60 ### Patch Changes - [#1141](https://github.com/Ripple-TS/ripple/pull/1141) [`8c064c8`](https://github.com/Ripple-TS/ripple/commit/8c064c888b60e4fcf88f6828e51792b3bba5797a) Thanks [@leonidaz](https://github.com/leonidaz)! - Improve JSX event handler typings to infer specific DOM event types. Improve all JSX types for much improved typescript support. Mark self-closing JSX tokens as completion-capable so empty attribute positions can surface editor completions. Fix no intellisense on dom attributes when <style> blocks were present Share scoped CSS selector metadata across TSRX targets so class-name definitions work outside Ripple too. CMD+click now jumps to class definitions for all tsrx platforms. - Updated dependencies [[`8c064c8`](https://github.com/Ripple-TS/ripple/commit/8c064c888b60e4fcf88f6828e51792b3bba5797a)]: - @tsrx/core@0.1.10 - ripple@0.3.60 - @tsrx/ripple@0.1.10 ## 0.3.59 ### Patch Changes - Updated dependencies [[`b1d6de0`](https://github.com/Ripple-TS/ripple/commit/b1d6de05912aca4cf40af68f291851eda706140c)]: - @tsrx/core@0.1.9 - ripple@0.3.59 - @tsrx/ripple@0.1.9 ## 0.3.58 ### Patch Changes - [#1130](https://github.com/Ripple-TS/ripple/pull/1130) [`0a5f39b`](https://github.com/Ripple-TS/ripple/commit/0a5f39b6e13807dfd3dc1228f40d7bb02b933373) Thanks [@leonidaz](https://github.com/leonidaz)! - Fix client cleanup for HMR-wrapped roots that do not own their DOM range directly. - Updated dependencies [[`b54fdfc`](https://github.com/Ripple-TS/ripple/commit/b54fdfc3ebfea29ac613307b76732c5bf5f49ab5), [`0a5f39b`](https://github.com/Ripple-TS/ripple/commit/0a5f39b6e13807dfd3dc1228f40d7bb02b933373), [`165703c`](https://github.com/Ripple-TS/ripple/commit/165703c588b52f3dc0d26c06187f21700d448693)]: - @tsrx/core@0.1.8 - ripple@0.3.58 - @tsrx/ripple@0.1.8 ## 0.3.57 ### Patch Changes - [#1126](https://github.com/Ripple-TS/ripple/pull/1126) [`2b1f746`](https://github.com/Ripple-TS/ripple/commit/2b1f7469ab31713140a5baf912a19fa8eedb9234) Thanks [@leonidaz](https://github.com/leonidaz)! - Keep runtime helper imports on namespaced runtime subpaths so production app bundles do not pull in compiler-only modules. - [#1123](https://github.com/Ripple-TS/ripple/pull/1123) [`e4a04dd`](https://github.com/Ripple-TS/ripple/commit/e4a04ddb4bbc8e21a9c7c2c65b179d764b72e4fb) Thanks [@leonidaz](https://github.com/leonidaz)! - Nested lazy destructuring support for all tsrx targets. Ripple already fully supported it. - Updated dependencies [[`2b1f746`](https://github.com/Ripple-TS/ripple/commit/2b1f7469ab31713140a5baf912a19fa8eedb9234), [`e4a04dd`](https://github.com/Ripple-TS/ripple/commit/e4a04ddb4bbc8e21a9c7c2c65b179d764b72e4fb)]: - @tsrx/core@0.1.7 - ripple@0.3.57 - @tsrx/ripple@0.1.7 ## 0.3.56 ### Patch Changes - Updated dependencies [[`a59ccb8`](https://github.com/Ripple-TS/ripple/commit/a59ccb83b91257bf34fca2ba1415e77d1f815a7b)]: - @tsrx/core@0.1.6 - ripple@0.3.56 - @tsrx/ripple@0.1.6 ## 0.3.55 ### Patch Changes - Updated dependencies [[`de27e18`](https://github.com/Ripple-TS/ripple/commit/de27e182d002ea736aee992acca4cbf9873a307d), [`59e1e32`](https://github.com/Ripple-TS/ripple/commit/59e1e328607598fe342abbba35f76e5fadb9ca5c), [`1256569`](https://github.com/Ripple-TS/ripple/commit/12565695efaa3a4ad429245807721ea671c2ecb5), [`1256569`](https://github.com/Ripple-TS/ripple/commit/12565695efaa3a4ad429245807721ea671c2ecb5), [`18b4aef`](https://github.com/Ripple-TS/ripple/commit/18b4aefa8127e56a9f1b3058da2d4d2172551579)]: - @tsrx/core@0.1.5 - ripple@0.3.55 - @tsrx/ripple@0.1.5 ## 0.3.54 ### Patch Changes - Updated dependencies [[`3e84758`](https://github.com/Ripple-TS/ripple/commit/3e847588027d6254c3999a87c717e9d58fb55a26), [`3e84758`](https://github.com/Ripple-TS/ripple/commit/3e847588027d6254c3999a87c717e9d58fb55a26), [`509170b`](https://github.com/Ripple-TS/ripple/commit/509170ba3cecc611ba1798575c70555070665736)]: - @tsrx/core@0.1.4 - ripple@0.3.54 - @tsrx/ripple@0.1.4 ## 0.3.53 ### Patch Changes - Updated dependencies [[`5a59d73`](https://github.com/Ripple-TS/ripple/commit/5a59d73daf60b2652c86ffad2a4eaf3d801e40d7), [`4f360f0`](https://github.com/Ripple-TS/ripple/commit/4f360f008edf61492cf85afa646c797c80a73f22), [`c042672`](https://github.com/Ripple-TS/ripple/commit/c04267255d35945753ca8090006622c96fa0a14f), [`a9d640f`](https://github.com/Ripple-TS/ripple/commit/a9d640f0728996b3f21b452ffe6040e54d82609c), [`5a59d73`](https://github.com/Ripple-TS/ripple/commit/5a59d73daf60b2652c86ffad2a4eaf3d801e40d7), [`2ae792c`](https://github.com/Ripple-TS/ripple/commit/2ae792cdca7d466e552a330ea965cefec2b1f5a5), [`96360f3`](https://github.com/Ripple-TS/ripple/commit/96360f36306180e67ce69e464dd545773e57e8b1)]: - @tsrx/core@0.1.3 - @tsrx/ripple@0.1.3 - ripple@0.3.53 ## 0.3.52 ### Patch Changes - Updated dependencies [[`2010290`](https://github.com/Ripple-TS/ripple/commit/20102904d68951b47dce3958f88ddd1fc150e7a1)]: - @tsrx/core@0.1.2 - ripple@0.3.52 - @tsrx/ripple@0.1.2 ## 0.3.51 ### Patch Changes - [`f1b1f94`](https://github.com/Ripple-TS/ripple/commit/f1b1f9475553cbe3632a5cc9794a8f54615c29f2) Thanks [@leonidaz](https://github.com/leonidaz)! - Patch packages currently versioned at 0.3.50 to fix the bump that caused major 1.0.0 release with a minor changeset. - Updated dependencies [[`0fdf340`](https://github.com/Ripple-TS/ripple/commit/0fdf3408417a7565a00304b766e958b438b3c834), [`f1b1f94`](https://github.com/Ripple-TS/ripple/commit/f1b1f9475553cbe3632a5cc9794a8f54615c29f2)]: - @tsrx/core@0.1.1 - ripple@0.3.51 - @tsrx/ripple@0.1.1 ## 0.3.50 ### Patch Changes - Updated dependencies [[`2a85e9b`](https://github.com/Ripple-TS/ripple/commit/2a85e9bb73f4d82f2bd2273c33735b4dc7b82d5f)]: - @tsrx/core@0.1.0 - @tsrx/ripple@0.1.0 - ripple@0.3.50 ## 0.3.49 ### Patch Changes - [#1071](https://github.com/Ripple-TS/ripple/pull/1071) [`b54a72f`](https://github.com/Ripple-TS/ripple/commit/b54a72f721adb5f08a5bf3e3d006780b7e1eb471) Thanks [@leonidaz](https://github.com/leonidaz)! - Add named ref props with `prop_name={ref expr}` syntax and expose `isRefProp()` for runtime detection of named ref prop values. - Updated dependencies [[`b54a72f`](https://github.com/Ripple-TS/ripple/commit/b54a72f721adb5f08a5bf3e3d006780b7e1eb471), [`b54a72f`](https://github.com/Ripple-TS/ripple/commit/b54a72f721adb5f08a5bf3e3d006780b7e1eb471), [`b54a72f`](https://github.com/Ripple-TS/ripple/commit/b54a72f721adb5f08a5bf3e3d006780b7e1eb471)]: - ripple@0.3.49 - @tsrx/core@0.0.28 - @tsrx/ripple@0.0.30 ## 0.3.48 ### Patch Changes - Updated dependencies []: - ripple@0.3.48 ## 0.3.47 ### Patch Changes - [#1063](https://github.com/Ripple-TS/ripple/pull/1063) [`a960343`](https://github.com/Ripple-TS/ripple/commit/a960343169aee906162211c502b6cc6b74e2a124) Thanks [@leonidaz](https://github.com/leonidaz)! - Standardizes compile api across all packages, including forcing types to adhere to the standard. Adds more debug compile options to the playgrounds. - Updated dependencies [[`eae7b40`](https://github.com/Ripple-TS/ripple/commit/eae7b4047f4d8cc7a0278fb48ffe630d73a592c6), [`b34b95a`](https://github.com/Ripple-TS/ripple/commit/b34b95a808ec801109d1818f4d24ae0bbc00f66b), [`a960343`](https://github.com/Ripple-TS/ripple/commit/a960343169aee906162211c502b6cc6b74e2a124)]: - @tsrx/ripple@0.0.29 - ripple@0.3.47 ## 0.3.46 ### Patch Changes - Updated dependencies []: - ripple@0.3.46 - @tsrx/ripple@0.0.28 ## 0.3.45 ### Patch Changes - [#1047](https://github.com/Ripple-TS/ripple/pull/1047) [`d1acf12`](https://github.com/Ripple-TS/ripple/commit/d1acf129cdd0bf2ee596dbab26ec4df829a33880) Thanks [@leonidaz](https://github.com/leonidaz)! - Removes duplicate utils, moves most utils to @tsrx/core, include their tests. Fixes some types - Updated dependencies [[`d1acf12`](https://github.com/Ripple-TS/ripple/commit/d1acf129cdd0bf2ee596dbab26ec4df829a33880), [`d1acf12`](https://github.com/Ripple-TS/ripple/commit/d1acf129cdd0bf2ee596dbab26ec4df829a33880), [`3928ac8`](https://github.com/Ripple-TS/ripple/commit/3928ac8816399f9eccfd40081d480042a9d74030)]: - @tsrx/ripple@0.0.27 - ripple@0.3.45 ## 0.3.44 ### Patch Changes - Updated dependencies [[`f5a3c1b`](https://github.com/Ripple-TS/ripple/commit/f5a3c1b9e915c250c8cd1a7dcf4e80c44abe720f)]: - @tsrx/ripple@0.0.26 - ripple@0.3.44 ## 0.3.43 ### Patch Changes - Updated dependencies [[`5c6ee71`](https://github.com/Ripple-TS/ripple/commit/5c6ee71bfd4f5dc443c43eb34e631bb032606faf), [`83b19fd`](https://github.com/Ripple-TS/ripple/commit/83b19fd67aa27eb10e93205dd88c61b13ffbc523)]: - @tsrx/ripple@0.0.25 - ripple@0.3.43 ## 0.3.42 ### Patch Changes - Updated dependencies [[`b4cc83f`](https://github.com/Ripple-TS/ripple/commit/b4cc83f07d8777d5882d1e853493941a3f6224ae)]: - @tsrx/ripple@0.0.24 - ripple@0.3.42 ## 0.3.41 ### Patch Changes - Updated dependencies []: - ripple@0.3.41 - @tsrx/ripple@0.0.23 ## 0.3.40 ### Patch Changes - Updated dependencies [[`31193f2`](https://github.com/Ripple-TS/ripple/commit/31193f23aa6b6b5b79cd858f57e8aca69cd44b6d)]: - @tsrx/ripple@0.0.22 - ripple@0.3.40 ## 0.3.39 ### Patch Changes - Updated dependencies []: - ripple@0.3.39 - @tsrx/ripple@0.0.21 ## 0.3.38 ### Patch Changes - [#1007](https://github.com/Ripple-TS/ripple/pull/1007) [`088299c`](https://github.com/Ripple-TS/ripple/commit/088299ce94a6022c017ce2e56c7e1b59bd5973f7) Thanks [@trueadm](https://github.com/trueadm)! - Keep double-quoted JavaScript strings inside TSRX expression containers using normal JavaScript string semantics while preserving direct double-quoted text child parsing. - Updated dependencies [[`088299c`](https://github.com/Ripple-TS/ripple/commit/088299ce94a6022c017ce2e56c7e1b59bd5973f7)]: - @tsrx/ripple@0.0.20 - ripple@0.3.38 ## 0.3.37 ### Patch Changes - [#1002](https://github.com/Ripple-TS/ripple/pull/1002) [`c631ab0`](https://github.com/Ripple-TS/ripple/commit/c631ab0076b7e2cb30f4998101b54c3a86e78c61) Thanks [@trueadm](https://github.com/trueadm)! - Align direct double-quoted TSRX text children with quoted JSX attribute text by decoding character references and treating backslashes as literal text. Preserve the direct quoted form in the Prettier plugin and highlight it as JSX text in the TextMate grammar. - Updated dependencies [[`c631ab0`](https://github.com/Ripple-TS/ripple/commit/c631ab0076b7e2cb30f4998101b54c3a86e78c61)]: - @tsrx/ripple@0.0.19 - ripple@0.3.37 ## 0.3.36 ### Patch Changes - Updated dependencies []: - ripple@0.3.36 - @tsrx/ripple@0.0.18 ## 0.3.35 ### Patch Changes - Updated dependencies []: - ripple@0.3.35 - @tsrx/ripple@0.0.17 ## 0.3.34 ### Patch Changes - Updated dependencies [[`fee8620`](https://github.com/Ripple-TS/ripple/commit/fee8620fa4e82a7c7e4adb3e434e9db552a3e157), [`2fcacb4`](https://github.com/Ripple-TS/ripple/commit/2fcacb471d7780074f92b20c9b394f7650a941bb)]: - @tsrx/ripple@0.0.16 - ripple@0.3.34 ## 0.3.33 ### Patch Changes - [#961](https://github.com/Ripple-TS/ripple/pull/961) [`3e07109`](https://github.com/Ripple-TS/ripple/commit/3e071098508449158fa11f2ae48c912d4d673b68) Thanks [@leonidaz](https://github.com/leonidaz)! - Fix ArrayPattern source map visitor, various type fixes for tests: ripple, vite-plugin-react, vite-plugin-solid - Updated dependencies [[`3e07109`](https://github.com/Ripple-TS/ripple/commit/3e071098508449158fa11f2ae48c912d4d673b68)]: - ripple@0.3.33 - @tsrx/ripple@0.0.15 ## 0.3.32 ### Patch Changes - Updated dependencies []: - ripple@0.3.32 - @tsrx/ripple@0.0.14 ## 0.3.31 ### Patch Changes - Updated dependencies []: - ripple@0.3.31 - @tsrx/ripple@0.0.13 ## 0.3.30 ### Patch Changes - [`7f59ed8`](https://github.com/Ripple-TS/ripple/commit/7f59ed80d7b44c847fb9eb8bf00d4fe9835c3136) Thanks [@leonidaz](https://github.com/leonidaz)! - Replace `node:crypto` usage in the compiler with a pure-JS implementation so Ripple can be compiled inside browser workers (e.g. the Monaco-based playground) where `crypto.createHash` is not available. The hashing utility is split into two functions: - `simple_hash` — fast non-cryptographic djb2 (base36). Used for CSS class-name prefixes and runtime `{html}` hydration markers where the input is user content and the output multiplies across the shipped bundle. - `strong_hash` — preimage-resistant SHA-256 prefix (pure-JS via `@noble/hashes`). Used everywhere a hash is derived from a server-only filesystem path (`#server` RPC ids, `track`/`trackAsync` ids, head-element hydration markers) so the hash can't be inverted to reveal the original path. The runtime `ripple` package no longer ships its own `hashing.js` — it re-exports `simple_hash`/`strong_hash` from `@tsrx/core`, and the compiler emits `_$_.simple_hash` (previously `_$_.hash`) for dynamic `{html}` hydration markers. - Updated dependencies [[`7f59ed8`](https://github.com/Ripple-TS/ripple/commit/7f59ed80d7b44c847fb9eb8bf00d4fe9835c3136)]: - @tsrx/ripple@0.0.12 - ripple@0.3.30 ## 0.3.29 ### Patch Changes - Updated dependencies [[`4543794`](https://github.com/Ripple-TS/ripple/commit/45437944a99decfb4bc56f7171772614a7f5691a)]: - @tsrx/ripple@0.0.11 - ripple@0.3.29 ## 0.3.28 ### Patch Changes - Updated dependencies [[`e4b5555`](https://github.com/Ripple-TS/ripple/commit/e4b5555fb5b1651a2bf1bf232565c7e0e40213b8), [`e4b5555`](https://github.com/Ripple-TS/ripple/commit/e4b5555fb5b1651a2bf1bf232565c7e0e40213b8)]: - @tsrx/ripple@0.0.10 - ripple@0.3.28 ## 0.3.27 ### Patch Changes - Updated dependencies []: - ripple@0.3.27 ## 0.3.26 ### Patch Changes - [`68d80f8`](https://github.com/Ripple-TS/ripple/commit/68d80f8c7a6398692e00497b90cb3d0ba981aea3) Thanks [@leonidaz](https://github.com/leonidaz)! - Correct package versions. - Updated dependencies [[`68d80f8`](https://github.com/Ripple-TS/ripple/commit/68d80f8c7a6398692e00497b90cb3d0ba981aea3)]: - ripple@0.3.26 - @tsrx/ripple@0.0.9 ## 1.0.1 ### Patch Changes - [#886](https://github.com/Ripple-TS/ripple/pull/886) [`316cba1`](https://github.com/Ripple-TS/ripple/commit/316cba18614e5ef59dce15e0de6e720eb922955f) Thanks [@leonidaz](https://github.com/leonidaz)! - Add SSR-to-client serialization/hydration for trackAsync by emitting per-call JSON <script> envelopes (resolved payload + direct dependency hashes, or sanitized error message) and consuming/removing them during client hydration to avoid re-running the user async function. Add proper error handling routing to catch blocks with actual error messages in DEV and safe production error messages, all with correct hydration support - Updated dependencies [[`316cba1`](https://github.com/Ripple-TS/ripple/commit/316cba18614e5ef59dce15e0de6e720eb922955f)]: - ripple@1.0.1 - @tsrx/ripple@0.0.8 ## 1.0.0 ### Patch Changes - Updated dependencies []: - ripple@1.0.0 - @tsrx/ripple@0.0.7 ## 0.3.25 ### Patch Changes - Updated dependencies []: - ripple@0.3.25 ## 0.3.24 ### Patch Changes - Updated dependencies []: - ripple@0.3.24 ## 0.3.23 ### Patch Changes - Updated dependencies [[`73ceaac`](https://github.com/Ripple-TS/ripple/commit/73ceaacd029fb634a62252abdda59ab5f2bec15d)]: - @tsrx/ripple@0.0.6 - ripple@0.3.23 ## 0.3.22 ### Patch Changes - [`bc8a6ed`](https://github.com/Ripple-TS/ripple/commit/bc8a6ed53d451da90cb6eb6ff9ec564f6f0cabe8) Thanks [@trueadm](https://github.com/trueadm)! - Restore the `ripple/compiler` subpath export. The compiler was moved into `@tsrx/ripple` during the Ripple/TSRX split, which accidentally dropped `ripple/compiler` from the published `exports` map — breaking downstream tooling that imports the compiler by the public path, including `livecodes` and any playground served through `esm.sh`. The path