Skip to content

Commit 936fd1f

Browse files
committed
fix(desktop): prevent injectTitle from expanding JS replacement patterns in titles
1 parent 180bef2 commit 936fd1f

3 files changed

Lines changed: 11 additions & 6 deletions

File tree

apps/daemon/src/routes/static-resource.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1488,7 +1488,7 @@ function normalizeDesignSystemCraftApplies(value: unknown): string[] | undefined
14881488
export function assembleExample(templateHtml: string, slidesHtml: string, title: string) {
14891489
return templateHtml
14901490
.replace('<!-- SLIDES_HERE -->', slidesHtml)
1491-
.replace(/<title>.*?<\/title>/, `<title>${title} | Open Design Example</title>`);
1491+
.replace(/<title>.*?<\/title>/, () => `<title>${title} | Open Design Example</title>`);
14921492
}
14931493

14941494
export function rewriteSkillAssetUrls(

apps/desktop/src/main/artifact-export.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,10 @@ function injectBaseHref(doc: string, baseHref: string | undefined): string {
114114

115115
function injectTitle(doc: string, title: string): string {
116116
const tag = `<title>${escapeText(title)}</title>`;
117-
if (/<title[^>]*>.*?<\/title>/is.test(doc)) return doc.replace(/<title[^>]*>.*?<\/title>/is, tag);
118-
if (/<head[^>]*>/i.test(doc)) return doc.replace(/<head[^>]*>/i, (m) => `${m}${tag}`);
117+
if (/<title[^>]*>.*?<\/title>/is.test(doc))
118+
return doc.replace(/<title[^>]*>.*?<\/title>/is, () => tag);
119+
if (/<head[^>]*>/i.test(doc))
120+
return doc.replace(/<head[^>]*>/i, (m) => `${m}${tag}`);
119121
return doc;
120122
}
121123

apps/desktop/src/main/pdf-export.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,12 @@ function injectBaseHref(doc: string, baseHref: string | undefined): string {
266266

267267
function injectTitle(doc: string, title: string): string {
268268
const tag = `<title>${escapeHtmlText(title)}</title>`;
269-
if (/<title[^>]*>.*?<\/title>/is.test(doc)) return doc.replace(/<title[^>]*>.*?<\/title>/is, tag);
270-
if (/<head[^>]*>/i.test(doc)) return doc.replace(/<head[^>]*>/i, (match) => `${match}${tag}`);
271-
if (/<html[^>]*>/i.test(doc)) return doc.replace(/<html[^>]*>/i, (match) => `${match}<head>${tag}</head>`);
269+
if (/<title[^>]*>.*?<\/title>/is.test(doc))
270+
return doc.replace(/<title[^>]*>.*?<\/title>/is, () => tag);
271+
if (/<head[^>]*>/i.test(doc))
272+
return doc.replace(/<head[^>]*>/i, (match) => `${match}${tag}`);
273+
if (/<html[^>]*>/i.test(doc))
274+
return doc.replace(/<html[^>]*>/i, (match) => `${match}<head>${tag}</head>`);
272275
return `<!doctype html><html><head>${tag}</head><body>${doc}</body></html>`;
273276
}
274277

0 commit comments

Comments
 (0)