UNPKG

@sugarcube/plugin-facebook

Version:
81 lines (70 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.feedEntity = exports.userEntity = exports.pageEntity = void 0; var _fp = require("lodash/fp"); var _url = require("url"); var _path = require("path"); var _dateFns = require("date-fns"); const fileName = source => { const url = new _url.URL(source); return (0, _path.basename)(url.pathname); }; const termify = term => { switch (term) { // The cdn of fb includes changing timestamps as a query parameter. This // includes scontent.XX.fbcdn. case /(video|content).*fbcdn\.(com|net)/.test(term) ? term : null: return { term: fileName(term), href: term }; default: return { term }; } }; const pageEntity = (0, _fp.flow)([(0, _fp.merge)({ _sc_id_fields: ["id"] }), (0, _fp.omit)(["feed"])]); exports.pageEntity = pageEntity; const userEntity = pageEntity; exports.userEntity = userEntity; const feedEntity = (0, _fp.map)(m => { const created = (0, _dateFns.parse)(m.created_time); const updated = (0, _dateFns.parse)(m.updated_time); const media = [{ type: "url", term: m.permalink_url }]; if (m.link) media.push(Object.assign({ type: "url" }, termify(m.link))); if (m.picture) media.push(Object.assign({ type: "image" }, termify(m.picture))); if (m.type === "video" && m.source) { media.push(Object.assign({ type: "video" }, termify(m.source))); } return (0, _fp.flow)([(0, _fp.merge)({ _sc_pubdates: { source: created }, created_at: created, updated_at: updated, _sc_id_fields: ["id"], _sc_content_fields: ["description", "message"], _sc_media: media }), (0, _fp.omit)(["created_time", "updated_time"])])(m); }); exports.feedEntity = feedEntity; var _default = { pageEntity, userEntity, feedEntity }; exports.default = _default;