Skip to content

Commit 98804fd

Browse files
brandonrobertsalxhub
authored andcommitted
fix(compiler): add more specific matcher for hydrate never block (#58360)
Fixes an issue where additional characters were allowed afte the "hydrate never" block. Closes #58358 PR Close #58360
1 parent ad3fbe6 commit 98804fd

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

packages/compiler/src/render3/r3_deferred_blocks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const HYDRATE_WHEN_PATTERN = /^hydrate\s+when\s/;
3232
const HYDRATE_ON_PATTERN = /^hydrate\s+on\s/;
3333

3434
/** Pattern to identify a `hydrate never` trigger. */
35-
const HYDRATE_NEVER_PATTERN = /^hydrate\s+never\s*/;
35+
const HYDRATE_NEVER_PATTERN = /^hydrate\s+never(\s*)$/;
3636

3737
/** Pattern to identify a `minimum` parameter in a block. */
3838
const MINIMUM_PARAMETER_PATTERN = /^minimum\s/;

packages/compiler/test/render3/r3_template_transform_spec.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1419,6 +1419,32 @@ describe('R3 template transform', () => {
14191419
);
14201420
});
14211421

1422+
it('should report `hydrate never` used with additonal characters', () => {
1423+
expect(() => parse('@defer (hydrate never, and thank you) {hello}')).toThrowError(
1424+
/Unrecognized trigger/,
1425+
);
1426+
});
1427+
1428+
it('should not report an error when `hydrate never` is used with additonal blocks', () => {
1429+
expect(() => parse('@defer (hydrate never; on idle;) {hello}')).not.toThrowError(
1430+
/Unrecognized trigger/,
1431+
);
1432+
});
1433+
1434+
it('should not report an error when `hydrate never` is used with spaces', () => {
1435+
expect(() => parse('@defer(hydrate never ; on idle ;) {hello}')).not.toThrowError(
1436+
/Unrecognized trigger/,
1437+
);
1438+
});
1439+
1440+
it('should not report an error when `hydrate never` is used after another block', () => {
1441+
expect(() =>
1442+
parse(`@defer(
1443+
on idle;
1444+
hydrate never) {hello}`),
1445+
).not.toThrowError(/Unrecognized trigger/);
1446+
});
1447+
14221448
it('should report when `hydrate never` is used together with another `hydrate` trigger', () => {
14231449
// Extra trigger after `hydrate never`.
14241450
expect(() =>

0 commit comments

Comments
 (0)