Skip to content

Commit 5d7ef10

Browse files
authored
fix(util-endpoints): escape tilde when evaluating template (#3934)
1 parent d5d061b commit 5d7ef10

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

packages/util-endpoints/src/utils/evaluateTemplate.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ describe(evaluateTemplate.name, () => {
1313
jest.clearAllMocks();
1414
});
1515

16+
it("should escape tilde while processing expression", () => {
17+
const template = "foo `bar` baz";
18+
// This test verifies that tilde is unescaped after processing.
19+
expect(evaluateTemplate(template, mockOptions)).toBe(template);
20+
expect(getAttr).not.toHaveBeenCalled();
21+
});
22+
1623
describe("should replace `{parameterName}` with value", () => {
1724
const parameterName = "bar";
1825
const template = "foo {parameterName} baz";

packages/util-endpoints/src/utils/evaluateTemplate.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export const evaluateTemplate = (template: string, options: EvaluateOptions) =>
3232

3333
const templateContextNames = Object.keys(templateContext);
3434
const templateContextValues = Object.values(templateContext);
35+
const templateWithTildeEscaped = templateWithAttr.replace(/\`/g, "\\`");
3536

36-
return new Function(...templateContextNames, `return \`${templateWithAttr}\``)(...templateContextValues);
37+
return new Function(...templateContextNames, `return \`${templateWithTildeEscaped}\``)(...templateContextValues);
3738
};

0 commit comments

Comments
 (0)