import _ from 'lodash'; import dedent from 'dedent'; import moment from 'moment'; import { Observable } from 'rx'; import debugFactory from 'debug'; import { frontEndChallengeId, dataVisChallengeId, backEndChallengeId } from '../utils/constantStrings.json'; import certTypes from '../utils/certTypes.json'; import { ifNoUser401, ifNoUserRedirectTo } from '../utils/middleware'; import { observeQuery } from '../utils/rx'; import { calcCurrentStreak, calcLongestStreak } from '../utils/user-stats'; const debug = debugFactory('freecc:boot:user'); const sendNonUserToMap = ifNoUserRedirectTo('/map'); const certIds = { [certTypes.frontEnd]: frontEndChallengeId, [certTypes.dataVis]: dataVisChallengeId, [certTypes.backEnd]: backEndChallengeId }; const certViews = { [certTypes.frontEnd]: 'certificate/front-end.jade', [certTypes.dataVis]: 'certificate/data-vis.jade', [certTypes.backEnd]: 'certificate/back-end.jade', [certTypes.fullStack]: 'certificate/full-stack.jade' }; const certText = { [certTypes.fronEnd]: 'Front End certified', [certTypes.dataVis]: 'Data Vis Certified', [certTypes.backEnd]: 'Back End Certified', [certTypes.fullStack]: 'Full Stack Certified' }; function replaceScriptTags(value) { return value .replace(/