MF2 to JF2
JF2 is a simpler JSON serialization of microformats2 intended to be easier to consume than the standard microformats JSON representation.
Usage
Simple (synchronous)
import { mf2tojf2 } from "mf2tojf2";
const mf2 = {
items: [
{
type: ["h-card"],
properties: {
name: ["Paul Robert Lloyd"],
url: ["https://paulrobertlloyd.com"],
},
},
],
};
const jf2 = mf2tojf2(mf2);
return jf2;
// => {
// type: 'card',
// name: 'Paul Robert Lloyd',
// url: 'https://paulrobertlloyd.com'
// }
With references (asynchronous)
JF2 can include a references
property to exclude any non-authoritative data from the defined object.
import { mf2tojf2referenced } from "mf2tojf2";
const mf2 = {
items: [
{
type: ["h-entry"],
properties: {
name: ["What my friend ate for lunch yesterday"],
published: ["2019-02-12T10:00:00.000+00:00"],
url: ["https://my-website.example/bookmarks/lunch"],
"bookmark-of": ["https://their-website.example/notes/lunch"],
},
},
],
};
const jf2WithReferences = await mf2tojf2referenced(mf2);
return jf2WithReferences;
// => {
// type: 'entry',
// name: 'What my friend ate for lunch yesterday',
// published: '2019-02-12T10:00:00.000+00:00',
// url: 'https://my-website.example/bookmarks/lunch',
// 'bookmark-of': 'https://their-website.example/notes/lunch',
// references: {
// 'https://their-website.example/notes/lunch': {
// type: 'entry',
// name: 'What I ate for lunch',
// published: '2019-01-12T15:55:00.000+00:00',
// url: 'https://their-website.example/notes/lunch',
// content: {
// text: 'I ate a cheese sandwich, which was nice.',
// html: '<p>I ate a cheese sandwich, which was nice.</p>'
// },
// category: ['Food', 'Lunch', 'Sandwiches']
// }
// }
// }
Testing
npm test
Releasing a new version
npm run release
Credits
Based on mf2tojf2.py.