Skip to content

Commit

Permalink
fix(@angular-devkit/build-angular): correctly handle data URIs with e…
Browse files Browse the repository at this point in the history
…scaped quotes in stylesheets

Previously, the RegExp didn't correctly handle cases where data URIs had escaped quotes like the below

```css
url("data:image/svg+xml;charset=utf-8,<svg width=/"16/" height=/"15/"></svg>")
```

Closes angular#23680
  • Loading branch information
alan-agius4 committed Aug 4, 2022
1 parent 88c3b71 commit b20cc0e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -693,4 +693,17 @@ describe('Browser Builder styles', () => {

await browserBuild(architect, host, target, { styles: ['src/styles.css'] });
});

it('works when Data URI has escaped quote', async () => {
const svgData = `"data:image/svg+xml;charset=utf-8,<svg width=/"16/" height=/"15/"></svg>"`;

host.writeMultipleFiles({
'src/styles.css': `
div { background: url(${svgData}) }
`,
});

const result = await browserBuild(architect, host, target, { styles: ['src/styles.css'] });
expect(await result.files['styles.css']).toContain(svgData);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ export default function (options?: PostcssCliResourcesOptions): Plugin {
}

const value = decl.value;
const urlRegex = /url\(\s*(?:"([^"]+)"|'([^']+)'|(.+?))\s*\)/g;
const urlRegex = /url(?:\(\s*['"]?)(.*?)(?:['"]?\s*\))/g;
const segments: string[] = [];

let match;
Expand All @@ -168,7 +168,7 @@ export default function (options?: PostcssCliResourcesOptions): Plugin {

// eslint-disable-next-line no-cond-assign
while ((match = urlRegex.exec(value))) {
const originalUrl = match[1] || match[2] || match[3];
const originalUrl = match[1];
let processedUrl;
try {
processedUrl = await process(originalUrl, context, resourceCache);
Expand Down

0 comments on commit b20cc0e

Please sign in to comment.