Skip to content

Commit

Permalink
fix(markdown): handle data uri correctly (close #1393) (#1403)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mister-Hope committed Aug 28, 2023
1 parent 90538ad commit bd8aa0a
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
3 changes: 3 additions & 0 deletions packages/markdown/src/plugins/assetsPlugin/resolveLink.ts
Expand Up @@ -8,6 +8,9 @@ export const resolveLink = (
env: MarkdownEnv,
strict = false,
): string => {
// do not resolve data uri
if (link.startsWith('data:')) return link

// decode link to ensure bundler can find the file correctly
let resolvedLink = decode(link)

Expand Down
20 changes: 20 additions & 0 deletions packages/markdown/tests/plugins/assetsPlugin.spec.ts
Expand Up @@ -34,6 +34,8 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => {
'![invalid](.../invalid.png)',
'![汉字](.../汉字.png)',
'![100%](.../100%.png)',
// data uri
'![data-uri](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==)',
]

const testCases: {
Expand Down Expand Up @@ -77,6 +79,8 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => {
'<img src="@source/sub/.../invalid.png" alt="invalid">',
'<img src="@source/sub/.../汉字.png" alt="汉字">',
'<img src="@source/sub/.../100%.png" alt="100%">',
// data uri
'<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==" alt="data-uri">',
],
},
{
Expand Down Expand Up @@ -116,6 +120,8 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => {
'<img src="@foo/sub/.../invalid.png" alt="invalid">',
'<img src="@foo/sub/.../汉字.png" alt="汉字">',
'<img src="@foo/sub/.../100%.png" alt="100%">',
// data uri
'<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==" alt="data-uri">',
],
},
{
Expand Down Expand Up @@ -152,6 +158,8 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => {
'<img src=".../invalid.png" alt="invalid">',
'<img src=".../汉字.png" alt="汉字">',
'<img src=".../100%.png" alt="100%">',
// data uri
'<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==" alt="data-uri">',
],
},
]
Expand Down Expand Up @@ -236,6 +244,9 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => {
'<img srcset="~@alias/foo.png 1x, ~@alias/汉字.png 2x, ~@alias/100%.png 3x" alt="attrs" src="~@alias/attrs.png" width="100px">',
// keep as is
'<img alt="attrs" src="" width="100px" srcset="/absolute.png 1x, no-prefix.png 2x, http://foobar.com/icon.png">',

/* data uri */
'<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==">',
]

const testCases: {
Expand Down Expand Up @@ -319,6 +330,9 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => {
'<img srcset="~@alias/foo.png 1x, ~@alias/汉字.png 2x, ~@alias/100%.png 3x" alt="attrs" src="~@alias/attrs.png" width="100px">',
// keep as is
'<img alt="attrs" src="" width="100px" srcset="/absolute.png 1x, no-prefix.png 2x, http://foobar.com/icon.png">',

/* data uri */
'<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==">',
],
},
{
Expand Down Expand Up @@ -398,6 +412,9 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => {
'<img srcset="~@alias/foo.png 1x, ~@alias/汉字.png 2x, ~@alias/100%.png 3x" alt="attrs" src="~@alias/attrs.png" width="100px">',
// keep as is
'<img alt="attrs" src="" width="100px" srcset="/absolute.png 1x, no-prefix.png 2x, http://foobar.com/icon.png">',

/* data uri */
'<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==">',
],
},
{
Expand Down Expand Up @@ -474,6 +491,9 @@ describe('@vuepress/markdown > plugins > assetsPlugin', () => {
'<img srcset="~@alias/foo.png 1x, ~@alias/汉字.png 2x, ~@alias/100%.png 3x" alt="attrs" src="~@alias/attrs.png" width="100px">',
// keep as is
'<img alt="attrs" src="" width="100px" srcset="/absolute.png 1x, no-prefix.png 2x, http://foobar.com/icon.png">',

/* data uri */
'<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wr4H/wAAAABJRU5ErkJggg==">',
],
},
]
Expand Down

0 comments on commit bd8aa0a

Please sign in to comment.