UNPKG

social-butterfly

Version:

Incorporate federated social network protocols easily. Used with Hello, world federated blog.

105 lines (77 loc) 2.87 kB
"use strict"; 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)); }