Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle dvclive's embedded base64 #1390

Merged
merged 5 commits into from
Jun 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions assets/test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### test
![embed](data:image/png;base64,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WZjgAetIhkwqRa52+8W6VZBgk32iUdFi5B4/vdMVymoeMtTvVaOIraxk/wDLP72PTd/hiuepiKcOtzGSudvqninTdJ3I8vmzj/llHyR9fT8a891jxDf61J+/k2QjgQoSF69/U1lMxZizElicknvSVwVa8qmnQlRSCiiisCgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAfFLJDIJIpGjcdGQ4I/Gu68I3E1zpszzzSSsJiAXYsQNo9aKK78EbUjpBTqKK9AtmT4nmlt9AuJIZHjkBXDIxBHzDuK83nuZ7pw9xNJK4GA0jFjj05oorgxhlMiooorzzMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//ZAHWWGjwAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDctMzBUMTI6MzI6MDIrMDA6MDDi40UVAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA3LTMwVDEyOjMyOjAyKzAwOjAwk779qQAAABp0RVh0ZXhpZjpCaXRzUGVyU2FtcGxlADgsIDgsIDgS7T4nAAAAEXRFWHRleGlmOkNvbG9yU3BhY2UAMQ+bAkkAAAAhdEVYdGV4aWY6RGF0ZVRpbWUAMjAyMDowNzowOSAxNjoxNDoxOWHSjSwAAAATdEVYdGV4aWY6RXhpZk9mZnNldAAxNzjc1lZ+AAAAFHRFWHRleGlmOkltYWdlTGVuZ3RoADE0M4D8vbsAAAATdEVYdGV4aWY6SW1hZ2VXaWR0aAAyNTDR1HOUAAAAGnRFWHRleGlmOlNvZnR3YXJlAEdJTVAgMi4xMC4yMAYQhsIAAAAkdEVYdGV4aWY6dGh1bWJuYWlsOkJpdHNQZXJTYW1wbGUAOCwgOCwgOCAb9FMAAAAcdEVYdGV4aWY6dGh1bWJuYWlsOkNvbXByZXNzaW9uADb5ZXBXAAAAHnRFWHRleGlmOnRodW1ibmFpbDpJbWFnZUxlbmd0aAAxNDZLLb8bAAAAHXRFWHRleGlmOnRodW1ibmFpbDpJbWFnZVdpZHRoADI1NogG+hQAAAAodEVYdGV4aWY6dGh1bWJuYWlsOkpQRUdJbnRlcmNoYW5nZUZvcm1hdAAzMDSsR89oAAAAL3RFWHRleGlmOnRodW1ibmFpbDpKUEVHSW50ZXJjaGFuZ2VGb3JtYXRMZW5ndGgANTMyOY6ptrMAAAAqdEVYdGV4aWY6dGh1bWJuYWlsOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24ANhIVihoAAAAgdEVYdGV4aWY6dGh1bWJuYWlsOlNhbXBsZXNQZXJQaXhlbAAz4dfNWgAAABt0RVh0aWNjOmNvcHlyaWdodABQdWJsaWMgRG9tYWlutpExWwAAACJ0RVh0aWNjOmRlc2NyaXB0aW9uAEdJTVAgYnVpbHQtaW4gc1JHQkxnQRMAAAAVdEVYdGljYzptYW51ZmFjdHVyZXIAR0lNUEyekMoAAAAOdEVYdGljYzptb2RlbABzUkdCW2BJQwAAAABJRU5ErkJggg==
dacbd marked this conversation as resolved.
Show resolved Hide resolved
)
11 changes: 11 additions & 0 deletions src/cml.e2e.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,17 @@ describe('Github tests', () => {
expect(output.includes('cml=png')).toBe(true);
});

test('Publish image embedded in markdown', async () => {
const path = `${__dirname}/../assets/test.md`;
const title = 'my title';

const output = await new CML().publish({ path, md: true, title });

expect(output.startsWith(`[${title}](https://`)).toBe(true);
expect(output.endsWith(')')).toBe(true);
expect(output.includes('cml=plain')).toBe(true);
});

test('Publish a non image file in markdown', async () => {
const path = `${__dirname}/../assets/logo.pdf`;
const title = 'my title';
Expand Down
41 changes: 30 additions & 11 deletions src/cml.js
Original file line number Diff line number Diff line change
Expand Up @@ -220,21 +220,40 @@ class CML {
};
const visitor = async (node) => {
if (node.url && !isWatermark(node)) {
const absolutePath = path.resolve(
path.dirname(markdownFile),
node.url
);
if (!triggerFile && watch) watcher.add(absolutePath);
try {
// Check for embedded images from dvclive
if (node.url.startsWith('data:image/')) {
winston.debug(
`found already embedded image, head: ${node.url.slice(0, 25)}`
);
const encodedData = node.url.slice(node.url.indexOf(',') + 1);
const mimeType = node.url.slice(
node.url.indexOf(':') + 1,
node.url.indexOf(';')
);
const data = Buffer.from(encodedData, 'base64');
node.url = await this.publish({
...opts,
path: absolutePath,
mimeType: mimeType,
buffer: data,
url: publishUrl
});
} catch (err) {
if (err.code === 'ENOENT')
winston.debug(`file not found: ${node.url} (${absolutePath})`);
else throw err;
} else {
const absolutePath = path.resolve(
path.dirname(markdownFile),
node.url
);
if (!triggerFile && watch) watcher.add(absolutePath);
try {
node.url = await this.publish({
...opts,
path: absolutePath,
url: publishUrl
});
} catch (err) {
if (err.code === 'ENOENT')
winston.debug(`file not found: ${node.url} (${absolutePath})`);
else throw err;
}
}
}
};
Expand Down
2 changes: 0 additions & 2 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ const fetchUploadData = async (opts) => {
const size = path ? (await fs.promises.stat(path)).size : buffer.length;
const data = path ? fs.createReadStream(path) : buffer;
const mime = mimeTypeIn || (await mimeType(opts));

return { mime, size, data };
};

Expand All @@ -88,7 +87,6 @@ const upload = async (opts) => {
};

if (session) headers['Content-Address-Seed'] = `${session}:${path}`;

const response = await fetch(url, { method: 'POST', headers, body });
const uri = await response.text();

Expand Down