UNPKG

@twreporter/universal-header

Version:
201 lines (198 loc) 11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkReferrer = exports.checkPathnameParent = void 0; exports.getActionLinks = getActionLinks; exports.getBookmarksLink = getBookmarksLink; exports.getChannelLinks = getChannelLinks; exports.getFooterLinks = getFooterLinks; exports.getLink = getLink; exports.getLoginLink = getLoginLink; exports.getLogoLink = getLogoLink; exports.getMemberLink = getMemberLink; exports.getMemberLinks = getMemberLinks; exports.getMyReadingLink = getMyReadingLink; exports.getSearchLink = getSearchLink; exports.getSocialMediaLinks = getSocialMediaLinks; exports.getTabBarLinks = getTabBarLinks; var _actions = require("../constants/actions"); var _footer = require("../constants/footer"); var _socialMedia = require("../constants/social-media"); var _channels = _interopRequireDefault(require("../constants/channels")); var _channelsNew = _interopRequireDefault(require("../constants/channels-new")); var _externalLinks = _interopRequireDefault(require("../constants/external-links")); var _requestOrigins = _interopRequireDefault(require("@twreporter/core/lib/constants/request-origins")); var _releaseBranch = _interopRequireDefault(require("@twreporter/core/lib/constants/release-branch")); var _featureFlag = require("@twreporter/core/lib/constants/feature-flag"); var _forEach = _interopRequireDefault(require("lodash/forEach")); var _reduce = _interopRequireDefault(require("lodash/reduce")); var _split = _interopRequireDefault(require("lodash/split")); var _indexOf = _interopRequireDefault(require("lodash/indexOf")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // import { CHANNEL_KEY, CHANNEL_PATH } from '../constants/channels' // @twreporter // lodash var _ = { forEach: _forEach["default"], reduce: _reduce["default"], split: _split["default"], indexOf: _indexOf["default"] }; var _ref = _featureFlag.LAWMAKER ? _channelsNew["default"] : _channels["default"], CHANNEL_KEY = _ref.CHANNEL_KEY, CHANNEL_PATH = _ref.CHANNEL_PATH; var originsForClient = _requestOrigins["default"].forClientSideRendering; /** * @param {string} domain - one of 'account', 'main', 'support', or 'api' * @returns {Object} */ function getOriginsByType(domain) { var baseURL = {}; _.forEach(_releaseBranch["default"], function (branch) { baseURL[branch] = originsForClient[branch][domain]; }); return baseURL; } var accountsBaseURL = getOriginsByType('accounts'); var mainBaseURL = getOriginsByType('main'); // const support = getOriginsByType('support') var defaultReleaseBranch = _releaseBranch["default"].master; var defaultIsExternal = false; function __getLink(isExternal, releaseBranch, baseURL, path) { var target = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '_self'; if (isExternal) { if (baseURL.hasOwnProperty(releaseBranch)) { return { to: baseURL[releaseBranch] + path, isExternal: isExternal, target: target }; } } return { to: path, isExternal: isExternal }; } function __getExternalLinks() { return Object.assign({}, _externalLinks["default"]); } var __composeExternalLink = function __composeExternalLink(link) { var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_self'; return { to: link, isExternal: true, target: target }; }; var checkReferrer = exports.checkReferrer = function checkReferrer() { var referrer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; try { var url = new URL(referrer); return url.origin === mainBaseURL[releaseBranch]; } catch (err) { return false; } }; var checkPathnameParent = exports.checkPathnameParent = function checkPathnameParent() { var pathname = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return _.indexOf(_.split(pathname, '/'), parent) === 1; }; function getLink() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; return __getLink(isExternal, releaseBranch, mainBaseURL, path); } function getLoginLink() { var releaseBranch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultReleaseBranch; return { to: accountsBaseURL[releaseBranch] + '/signin', isExternal: true }; } function getMemberLink() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return __getLink(isExternal, releaseBranch, mainBaseURL, '/account'); } function getBookmarksLink() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return __getLink(isExternal, releaseBranch, mainBaseURL, '/myreading/saved'); } function getMyReadingLink() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return __getLink(isExternal, releaseBranch, mainBaseURL, '/myreading'); } function getSearchLink() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return __getLink(isExternal, releaseBranch, mainBaseURL, '/search'); } function getLogoLink() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return __getLink(isExternal, releaseBranch, mainBaseURL, ''); } function getActionLinks() { var _ref2; var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return _ref2 = {}, _defineProperty(_ref2, _actions.ACTION_KEY.support, __composeExternalLink(__getExternalLinks().monthlyDonation)), _defineProperty(_ref2, _actions.ACTION_KEY.newsLetter, __getLink(isExternal, releaseBranch, mainBaseURL, '/account/email-subscription')), _ref2; } function getFooterLinks() { var _ref3; var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return _ref3 = {}, _defineProperty(_ref3, _footer.FOOTER_KEY.foundation, __getLink(isExternal, releaseBranch, mainBaseURL, _footer.FOOTER_PATH[_footer.FOOTER_KEY.foundation])), _defineProperty(_ref3, _footer.FOOTER_KEY.aboutUs, __getLink(true, releaseBranch, mainBaseURL, _footer.FOOTER_PATH[_footer.FOOTER_KEY.aboutUs], '_blank')), _defineProperty(_ref3, _footer.FOOTER_KEY.influenceReport, __getLink(isExternal, releaseBranch, mainBaseURL, _footer.FOOTER_PATH[_footer.FOOTER_KEY.influenceReport])), _defineProperty(_ref3, _footer.FOOTER_KEY.openLab, __composeExternalLink(__getExternalLinks().openLab, '_blank')), _defineProperty(_ref3, _footer.FOOTER_KEY.publicationAndMerchandise, __composeExternalLink(__getExternalLinks().publicationAndMerchandise, '_blank')), _ref3; } function getMemberLinks() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return _.reduce(_footer.MEMBER_ORDER, function (res, memberKey) { res[memberKey] = __getLink(isExternal, releaseBranch, mainBaseURL, _footer.FOOTER_PATH[memberKey]); return res; }, {}); } function getSocialMediaLinks() { var externalLinks = __getExternalLinks(); return _.reduce(_socialMedia.SOCIAL_MEDIA_KEY, function (res, key) { var link = externalLinks[key]; if (link) { res[key] = __composeExternalLink(link, '_blank'); } return res; }, {}); } function getChannelLinks() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; var links = _.reduce(CHANNEL_PATH, function (res, path, key) { var link = __getLink(isExternal, releaseBranch, mainBaseURL, path); res[key] = link; return res; }, {}); links[CHANNEL_KEY.kidsReporter] = __composeExternalLink(__getExternalLinks().kidsReporter, '_blank'); if (_featureFlag.LAWMAKER) { links[CHANNEL_KEY.lawmaker] = __composeExternalLink(__getExternalLinks().lawmaker, '_blank'); } return links; } function getTabBarLinks() { var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal; var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch; return { home: __getLink(isExternal, releaseBranch, mainBaseURL, ''), latest: __getLink(isExternal, releaseBranch, mainBaseURL, '/latest'), topic: __getLink(isExternal, releaseBranch, mainBaseURL, '/topics'), myreading: __getLink(isExternal, releaseBranch, mainBaseURL, '/myreading') }; }