social-butterfly
Version:
Incorporate federated social network protocols easily. Used with Hello, world federated blog.
105 lines (77 loc) • 2.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _activitypub = _interopRequireDefault(require("./activitypub"));
var _comments = _interopRequireDefault(require("./comments"));
var _foaf = _interopRequireDefault(require("./foaf"));
var _feed = _interopRequireDefault(require("./feed"));
var _follow = _interopRequireDefault(require("./follow"));
var _host_meta = _interopRequireDefault(require("./host_meta"));
var _oembed = _interopRequireDefault(require("./oembed"));
var _salmon = _interopRequireDefault(require("./salmon"));
var _webfinger = _interopRequireDefault(require("./webfinger"));
var _webmention = _interopRequireDefault(require("./webmention"));
var _websub = _interopRequireDefault(require("./websub"));
var _express = _interopRequireDefault(require("express"));
var _activitystreams = require("./activitystreams");
var _nodeSchedule = _interopRequireDefault(require("node-schedule"));
var _syndicate = _interopRequireDefault(require("./syndicate"));
var _update_feeds = _interopRequireDefault(require("./update_feeds"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _default = options => {
options.webSubSubscriberServer = (0, _websub.default)(options);
const {
apiRouter,
follow,
unfollow
} = setupApi(options);
setupTasks(options);
const syndicateWithOptions = (0, _syndicate.default)(options);
const dispose = () => {
_nodeSchedule.default.cancelJob('updateFeeds');
};
return {
apiRouter,
dispose,
follow,
like: _activitystreams.like,
syndicate: syndicateWithOptions,
unfollow
};
};
exports.default = _default;
function setupApi(options) {
const {
app
} = options;
app.use('/.well-known/host-meta', _host_meta.default);
app.get('/.well-known/webfinger', (0, _webfinger.default)(options));
const {
followRouter,
follow,
unfollow
} = (0, _follow.default)(options);
const subRouter = _express.default.Router();
subRouter.use('/activitypub', (0, _activitypub.default)(options));
subRouter.get('/comments', (0, _comments.default)(options));
subRouter.get('/feed', (0, _feed.default)(options));
subRouter.get('/foaf', (0, _foaf.default)(options));
subRouter.use('/follow', followRouter);
subRouter.get('/oembed', (0, _oembed.default)(options));
subRouter.post('/salmon', (0, _salmon.default)(options));
subRouter.post('/webmention', (0, _webmention.default)(options));
const apiRouter = _express.default.Router();
apiRouter.use('/api/social', subRouter);
app.use(apiRouter);
return {
apiRouter,
follow,
unfollow
};
}
function setupTasks(options) {
// Updates at 1am every night.
_nodeSchedule.default.scheduleJob('updateFeeds', '0 1 * * *', () => (0, _update_feeds.default)(options));
}