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 #23680

(cherry picked from commit 70bc354)
  • Loading branch information
alan-agius4 authored and dgp1130 committed Aug 4, 2022
1 parent c2ba3f4 commit d0a0c59
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
Expand Up @@ -679,4 +679,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);
});
});
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 d0a0c59

Please sign in to comment.