ripple 0.2.208 → 0.2.210
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 +43 -0
- package/README.md +2 -1
- package/package.json +2 -6
- package/shims/rollup-estree-types.d.ts +1 -1
- package/src/compiler/index.d.ts +1 -0
- package/src/compiler/index.js +7 -1
- package/src/compiler/phases/1-parse/index.js +15 -6
- package/src/compiler/phases/2-analyze/css-analyze.js +100 -104
- package/src/compiler/phases/2-analyze/index.js +215 -2
- package/src/compiler/phases/3-transform/client/index.js +388 -50
- package/src/compiler/phases/3-transform/segments.js +123 -39
- package/src/compiler/phases/3-transform/server/index.js +266 -13
- package/src/compiler/types/index.d.ts +16 -3
- package/src/compiler/utils.js +1 -15
- package/src/constants.js +0 -2
- package/src/helpers.d.ts +4 -0
- package/src/html-tree-validation.js +211 -0
- package/src/jsx-runtime.d.ts +260 -259
- package/src/jsx-runtime.js +12 -12
- package/src/runtime/array.js +17 -17
- package/src/runtime/create-subscriber.js +1 -1
- package/src/runtime/index-client.js +1 -5
- package/src/runtime/index-server.js +15 -0
- package/src/runtime/internal/client/compat.js +3 -3
- package/src/runtime/internal/client/composite.js +6 -1
- package/src/runtime/internal/client/head.js +50 -4
- package/src/runtime/internal/client/html.js +73 -12
- package/src/runtime/internal/client/hydration.js +12 -0
- package/src/runtime/internal/client/index.js +1 -1
- package/src/runtime/internal/client/portal.js +54 -29
- package/src/runtime/internal/client/rpc.js +3 -1
- package/src/runtime/internal/client/switch.js +5 -0
- package/src/runtime/internal/client/template.js +117 -11
- package/src/runtime/internal/client/try.js +1 -0
- package/src/runtime/internal/server/index.js +113 -1
- package/src/runtime/internal/server/rpc.js +4 -4
- package/src/runtime/map.js +2 -2
- package/src/runtime/object.js +6 -6
- package/src/runtime/proxy.js +12 -11
- package/src/runtime/reactive-value.js +9 -1
- package/src/runtime/set.js +12 -7
- package/src/runtime/url-search-params.js +0 -1
- package/src/server/index.js +4 -0
- package/src/utils/hashing.js +15 -0
- package/src/utils/normalize_css_property_name.js +1 -1
- package/tests/client/array/array.mutations.test.ripple +8 -8
- package/tests/client/basic/basic.errors.test.ripple +28 -0
- package/tests/client/basic/basic.events.test.ripple +6 -3
- package/tests/client/basic/basic.utilities.test.ripple +1 -1
- package/tests/client/compiler/compiler.regex.test.ripple +10 -8
- package/tests/client/composite/composite.generics.test.ripple +5 -2
- package/tests/client/dynamic-elements.test.ripple +30 -1
- package/tests/client/function-overload-import.ripple +6 -7
- package/tests/client/html.test.ripple +0 -1
- package/tests/client/object.test.ripple +2 -2
- package/tests/client/portal.test.ripple +3 -3
- package/tests/client/return.test.ripple +2500 -0
- package/tests/client/try.test.ripple +69 -0
- package/tests/client/typescript-generics.test.ripple +1 -1
- package/tests/client/url/url.derived.test.ripple +1 -1
- package/tests/client/url/url.parsing.test.ripple +3 -3
- package/tests/client/url/url.partial-removal.test.ripple +7 -7
- package/tests/client/url/url.reactivity.test.ripple +15 -15
- package/tests/client/url/url.serialization.test.ripple +2 -2
- package/tests/hydration/basic.test.js +23 -0
- package/tests/hydration/build-components.js +10 -4
- package/tests/hydration/compiled/client/basic.js +165 -3
- package/tests/hydration/compiled/client/for.js +1140 -23
- package/tests/hydration/compiled/client/head.js +234 -0
- package/tests/hydration/compiled/client/html.js +135 -0
- package/tests/hydration/compiled/client/portal.js +172 -0
- package/tests/hydration/compiled/client/reactivity.js +3 -1
- package/tests/hydration/compiled/client/return.js +1976 -0
- package/tests/hydration/compiled/client/switch.js +162 -0
- package/tests/hydration/compiled/server/basic.js +249 -0
- package/tests/hydration/compiled/server/events.js +1 -1
- package/tests/hydration/compiled/server/for.js +891 -1
- package/tests/hydration/compiled/server/head.js +291 -0
- package/tests/hydration/compiled/server/html.js +133 -0
- package/tests/hydration/compiled/server/if.js +1 -1
- package/tests/hydration/compiled/server/portal.js +250 -0
- package/tests/hydration/compiled/server/reactivity.js +1 -1
- package/tests/hydration/compiled/server/return.js +1969 -0
- package/tests/hydration/compiled/server/switch.js +130 -0
- package/tests/hydration/components/basic.ripple +55 -0
- package/tests/hydration/components/for.ripple +403 -0
- package/tests/hydration/components/head.ripple +111 -0
- package/tests/hydration/components/html.ripple +38 -0
- package/tests/hydration/components/portal.ripple +49 -0
- package/tests/hydration/components/return.ripple +564 -0
- package/tests/hydration/components/switch.ripple +51 -0
- package/tests/hydration/for.test.js +363 -0
- package/tests/hydration/head.test.js +105 -0
- package/tests/hydration/html.test.js +46 -0
- package/tests/hydration/portal.test.js +71 -0
- package/tests/hydration/return.test.js +544 -0
- package/tests/hydration/switch.test.js +42 -0
- package/tests/server/basic.attributes.test.ripple +1 -1
- package/tests/server/compiler.test.ripple +22 -0
- package/tests/server/composite.test.ripple +5 -2
- package/tests/server/html-nesting-validation.test.ripple +237 -0
- package/tests/server/return.test.ripple +1379 -0
- package/tests/setup-hydration.js +6 -1
- package/tests/utils/escaping.test.js +3 -1
- package/tests/utils/normalize_css_property_name.test.js +0 -1
- package/tests/utils/patterns.test.js +6 -2
- package/tests/utils/sanitize_template_string.test.js +3 -2
- package/types/server.d.ts +16 -0
package/tests/setup-hydration.js
CHANGED
|
@@ -29,11 +29,16 @@ export async function hydrateComponent(serverComponent, clientComponent) {
|
|
|
29
29
|
/**
|
|
30
30
|
* Strips hydration markers from HTML for testing purposes.
|
|
31
31
|
* Hydration markers are: <!--[--> <!--[!--> <!--]-->
|
|
32
|
+
* Also strips HTML block markers: hash comments and empty comment end markers
|
|
32
33
|
* @param {string} html - The HTML string with hydration markers
|
|
33
34
|
* @returns {string} The HTML string without hydration markers
|
|
34
35
|
*/
|
|
35
36
|
export function stripHydrationMarkers(html) {
|
|
36
|
-
return html
|
|
37
|
+
return html
|
|
38
|
+
.replace(/<!--\[!?-->/g, '') // Remove <!--[--> and <!--[!-->
|
|
39
|
+
.replace(/<!--\]-->/g, '') // Remove <!--]-->
|
|
40
|
+
.replace(/<!--[a-z0-9]+-->/g, '') // Remove hash comments like <!--usbxy9-->
|
|
41
|
+
.replace(/<!---->/g, ''); // Remove empty comment end markers
|
|
37
42
|
}
|
|
38
43
|
|
|
39
44
|
// Extend expect with a custom matcher for HTML comparison that strips hydration markers
|
|
@@ -90,7 +90,9 @@ describe('escape utility', () => {
|
|
|
90
90
|
});
|
|
91
91
|
|
|
92
92
|
it('should handle mixed escaping', () => {
|
|
93
|
-
expect(escape('<div class="foo & bar">', true)).toBe(
|
|
93
|
+
expect(escape('<div class="foo & bar">', true)).toBe(
|
|
94
|
+
'<div class="foo & bar">',
|
|
95
|
+
);
|
|
94
96
|
});
|
|
95
97
|
});
|
|
96
98
|
|
|
@@ -256,8 +256,12 @@ describe('patterns utility', () => {
|
|
|
256
256
|
it('should remove invalid identifier characters', () => {
|
|
257
257
|
expect('123abc'.replace(patterns.regex_invalid_identifier_chars, '_')).toBe('_23abc');
|
|
258
258
|
expect('my-var'.replace(patterns.regex_invalid_identifier_chars, '_')).toBe('my_var');
|
|
259
|
-
expect('hello.world'.replace(patterns.regex_invalid_identifier_chars, '_')).toBe(
|
|
260
|
-
|
|
259
|
+
expect('hello.world'.replace(patterns.regex_invalid_identifier_chars, '_')).toBe(
|
|
260
|
+
'hello_world',
|
|
261
|
+
);
|
|
262
|
+
expect('\t\r\nhello.world'.replace(patterns.regex_invalid_identifier_chars, '_')).toBe(
|
|
263
|
+
'___hello_world',
|
|
264
|
+
);
|
|
261
265
|
expect('my\tvar'.replace(patterns.regex_invalid_identifier_chars, '_')).toBe('my_var');
|
|
262
266
|
expect('my\rvar'.replace(patterns.regex_invalid_identifier_chars, '_')).toBe('my_var');
|
|
263
267
|
expect(''.replace(patterns.regex_invalid_identifier_chars, '_')).toBe('');
|
|
@@ -39,7 +39,9 @@ describe('sanitize_template_string utility', () => {
|
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
it('should handle mixed content', () => {
|
|
42
|
-
expect(sanitize_template_string('Path: C:\\Users\\${name}`')).toBe(
|
|
42
|
+
expect(sanitize_template_string('Path: C:\\Users\\${name}`')).toBe(
|
|
43
|
+
'Path: C:\\\\Users\\\\\\${name}\\`',
|
|
44
|
+
);
|
|
43
45
|
});
|
|
44
46
|
|
|
45
47
|
it('should handle complex template literals', () => {
|
|
@@ -48,4 +50,3 @@ describe('sanitize_template_string utility', () => {
|
|
|
48
50
|
expect(sanitize_template_string(input)).toBe(expected);
|
|
49
51
|
});
|
|
50
52
|
});
|
|
51
|
-
|
package/types/server.d.ts
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { Props } from '#public';
|
|
2
2
|
import type { Readable } from 'node:stream';
|
|
3
3
|
|
|
4
|
+
// Re-export runtime types for server-compiled components
|
|
5
|
+
export {
|
|
6
|
+
track,
|
|
7
|
+
untrack,
|
|
8
|
+
flushSync,
|
|
9
|
+
effect,
|
|
10
|
+
tick,
|
|
11
|
+
Context,
|
|
12
|
+
TrackedArray,
|
|
13
|
+
TrackedSet,
|
|
14
|
+
TrackedMap,
|
|
15
|
+
TrackedDate,
|
|
16
|
+
TrackedURL,
|
|
17
|
+
TrackedURLSearchParams,
|
|
18
|
+
} from './index.js';
|
|
19
|
+
|
|
4
20
|
export interface SSRRenderOutput {
|
|
5
21
|
head: string;
|
|
6
22
|
body: string;
|