SYMBOL INDEX (466 symbols across 136 files) FILE: api/setup-tests.js function wrapMocha (line 28) | function wrapMocha(onPrepare, onUnprepare) { FILE: api/src/asyncTasks.js function makeMetricKey (line 36) | function makeMetricKey(queue, event) { function trackQueueSize (line 40) | async function trackQueueSize(statsd, queue) { function AddQueueTracking (line 46) | function AddQueueTracking(queue) { function ProcessRssQueue (line 105) | function ProcessRssQueue() { function ProcessOgQueue (line 110) | function ProcessOgQueue() { function ProcessPodcastQueue (line 115) | function ProcessPodcastQueue() { function ProcessStreamQueue (line 120) | function ProcessStreamQueue() { function ProcessSocialQueue (line 125) | function ProcessSocialQueue() { function ShutDownRssQueue (line 130) | function ShutDownRssQueue() { function ShutDownPodcastQueue (line 135) | function ShutDownPodcastQueue() { function ShutDownOgQueue (line 140) | function ShutDownOgQueue() { function ShutDownSocialQueue (line 145) | function ShutDownSocialQueue() { function ShutDownStreamQueue (line 150) | function ShutDownStreamQueue() { FILE: api/src/commands/_debug-feed.js function debugFeed (line 13) | async function debugFeed(feedType, feedUrls) { FILE: api/src/commands/cleanup-follows.js function main (line 18) | async function main() { FILE: api/src/commands/denormalize-follows.js function main (line 15) | async function main() { FILE: api/src/commands/denormalize-pins.js function main (line 17) | async function main() { FILE: api/src/commands/email.js function main (line 23) | async function main() { FILE: api/src/commands/load-featured-feeds.js function main (line 37) | function main() { FILE: api/src/commands/rescrape-favicon.js function rescrapeFavicon (line 16) | async function rescrapeFavicon(publicationType, instance) { function main (line 42) | async function main() { FILE: api/src/commands/rescrape-og.js function partitionBy (line 15) | function partitionBy(collection, selector) { function main (line 35) | async function main() { FILE: api/src/commands/reset-parsing-state.js function main (line 12) | async function main() { FILE: api/src/commands/resync-follows.js function main (line 16) | async function main() { FILE: api/src/commands/winds-article.js function main (line 15) | async function main() { FILE: api/src/commands/winds-discover.js function main (line 17) | async function main() { FILE: api/src/commands/winds-merge.js function sleep (line 11) | function sleep(time) { function estimateSize (line 22) | function estimateSize(content) { function main (line 32) | async function main() { FILE: api/src/commands/winds-og.js function main (line 20) | async function main() { FILE: api/src/commands/winds-rebuild-search.js function main (line 9) | async function main() { function loadModel (line 16) | async function loadModel(Model) { FILE: api/src/commands/winds-rehash.js function main (line 8) | async function main() { function rehashModel (line 13) | async function rehashModel(Model) { FILE: api/src/commands/winds-truncate-rss-feed.js function main (line 12) | async function main() { FILE: api/src/commands/winds.js function main (line 25) | function main() { FILE: api/src/controllers/auth.js function getInterestMap (line 23) | async function getInterestMap() { FILE: api/src/controllers/email.js function createEmail (line 17) | async function createEmail(type, user) { FILE: api/src/controllers/feed.js function getContentFeed (line 9) | async function getContentFeed(req, res, type, model) { FILE: api/src/controllers/folder.js function checkRssPodcast (line 154) | async function checkRssPodcast(rssIDs, podcastIDs) { function streamFollow (line 173) | async function streamFollow(folderId, type, feedId) { function streamUnfollow (line 178) | async function streamUnfollow(folderId, type, feedId) { function streamFollowMany (line 183) | async function streamFollowMany(folder) { function streamUnfollowMany (line 188) | async function streamUnfollowMany(folder) { function generateRels (line 193) | function generateRels(folder) { FILE: api/src/controllers/opml.js function partitionBy (line 59) | function partitionBy(collection, selector) { function identifyFeedType (line 79) | async function identifyFeedType(feed) { function getOrCreateManyPublications (line 110) | async function getOrCreateManyPublications(feeds) { FILE: api/src/controllers/playlist.js function listFilter (line 6) | async function listFilter(req, res) { FILE: api/src/parsers/content.js function ParseContent (line 3) | async function ParseContent(url) { FILE: api/src/parsers/detect-language.js function DetectLanguage (line 5) | async function DetectLanguage(feedURL) { function DetectLangFromStream (line 12) | async function DetectLangFromStream(feedStream) { FILE: api/src/parsers/detect-type.js function IsPodcastStream (line 4) | async function IsPodcastStream(feedStream) { function IsPodcastURL (line 18) | async function IsPodcastURL(feedURL) { FILE: api/src/parsers/discovery.js function readRequestBody (line 37) | function readRequestBody(stream, url) { function discoverRSS (line 97) | async function discoverRSS(uri) { function discoverFromHTML (line 123) | function discoverFromHTML(body) { function isRelativeUrl (line 181) | function isRelativeUrl(str) { function getFaviconUrl (line 185) | function getFaviconUrl(uri) { function fixData (line 192) | async function fixData(res, uri) { function discoverFromFeed (line 245) | function discoverFromFeed(body) { FILE: api/src/parsers/feed.js function sanitize (line 32) | function sanitize(dirty) { function ParsePodcast (line 39) | async function ParsePodcast(podcastUrl, guidStability, limit = 1000) { function ParseFeed (line 52) | async function ParseFeed(feedURL, guidStability, limit = 1000) { function ComputeHash (line 65) | function ComputeHash(post) { function ComputePublicationHash (line 73) | function ComputePublicationHash(posts, limit = 20) { function CreateFingerPrints (line 85) | function CreateFingerPrints(posts, guidStability) { function ParsePodcastPosts (line 142) | function ParsePodcastPosts(domain, posts, guidStability, limit = 1000) { function ReadURL (line 200) | function ReadURL(url) { function sleep (line 218) | function sleep(time) { function checkHeaders (line 225) | function checkHeaders(stream, url, checkContenType = false) { function ReadPageURL (line 306) | async function ReadPageURL(url, retries = 2, backoffDelay = 100) { function ReadFeedURL (line 325) | async function ReadFeedURL(feedURL, retries = 2, backoffDelay = 100) { function ReadFeedStream (line 344) | function ReadFeedStream(feedStream) { function ParseFeedPosts (line 380) | function ParseFeedPosts(domain, posts, guidStability, limit = 1000) { function checkGuidStability (line 489) | function checkGuidStability(original, control) { FILE: api/src/parsers/og.js function ParseOG (line 7) | async function ParseOG(pageURL) { function IsValidOGUrl (line 12) | function IsValidOGUrl(url) { function parseImage (line 29) | function parseImage(html) { function parseCanonicalUrl (line 47) | function parseCanonicalUrl(html) { function ParseOGStream (line 74) | function ParseOGStream(pageStream, pageURL) { FILE: api/src/utils/analytics.js function getAnalyticsClient (line 9) | function getAnalyticsClient() { function trackEngagement (line 29) | async function trackEngagement(user, engagement) { FILE: api/src/utils/collections.js function upsertCollections (line 12) | async function upsertCollections(type, content) { function estimateSize (line 31) | function estimateSize(content) { function sendFeedToCollections (line 41) | async function sendFeedToCollections(type, feed, content) { FILE: api/src/utils/controllers.js function wrapAsync (line 1) | function wrapAsync(fn) { FILE: api/src/utils/email/context.js function dailyContextGlobal (line 13) | async function dailyContextGlobal() { function weeklyContextGlobal (line 18) | async function weeklyContextGlobal() { function dailyContextUser (line 30) | async function dailyContextUser(user) { function getRedirectUrl (line 35) | function getRedirectUrl(url, id, userID, position) { function weeklyContextUser (line 47) | async function weeklyContextUser(user) { FILE: api/src/utils/email/send.js function CreateDailyEmail (line 10) | function CreateDailyEmail(data) { function CreateWeeklyEmail (line 26) | function CreateWeeklyEmail(data) { function SendDailyEmail (line 42) | async function SendDailyEmail(data) { function SendWeeklyEmail (line 48) | async function SendWeeklyEmail(data) { function SendWelcomeEmail (line 54) | async function SendWelcomeEmail(data) { function SendPasswordResetEmail (line 68) | async function SendPasswordResetEmail(data) { function SendEmail (line 85) | async function SendEmail(obj) { FILE: api/src/utils/errors.js function sendSourceMaps (line 18) | function sendSourceMaps(data) { function captureError (line 48) | function captureError(err, msg) { FILE: api/src/utils/logger/index.js function isError (line 10) | function isError(e) { FILE: api/src/utils/logger/sentry.js class SentryWinstonTransport (line 62) | class SentryWinstonTransport extends Transport { method constructor (line 63) | constructor(options) { method log (line 85) | async log(info, done) { function createSentryTransport (line 100) | function createSentryTransport(ravenInstance) { FILE: api/src/utils/merge.js function mergeFollows (line 11) | async function mergeFollows(lhsID, rhsID, type) { function mergeArticlesAndPins (line 38) | async function mergeArticlesAndPins(lhsID, rhsID, type) { function mergeFeedUrls (line 90) | async function mergeFeedUrls(lhsID, rhsID, type) { function mergeFeeds (line 107) | async function mergeFeeds(lhsID, rhsID, type) { FILE: api/src/utils/personalization/index.js function createGlobalToken (line 11) | function createGlobalToken() { function getRecommendations (line 25) | async function getRecommendations(userID, type, limit) { function getRSSRecommendations (line 44) | async function getRSSRecommendations(userID, limit = 20) { function getPodcastRecommendations (line 58) | async function getPodcastRecommendations(userID, limit = 20) { function getEpisodeRecommendations (line 72) | async function getEpisodeRecommendations(userID, limit = 20) { function getArticleRecommendations (line 86) | async function getArticleRecommendations(userID, limit = 20) { FILE: api/src/utils/queue.js constant TTL (line 7) | const TTL = 3600; function tryAddToQueueFlagSet (line 60) | async function tryAddToQueueFlagSet(queueName, suffix, id, ttl = TTL) { function removeFromQueueFlagSet (line 67) | async function removeFromQueueFlagSet(queueName, suffix, id) { function getQueueFlagSetMembers (line 73) | async function getQueueFlagSetMembers(queueName) { function tryCreateQueueFlag (line 78) | async function tryCreateQueueFlag(queueName, suffix, id, ttl = TTL) { function removeQueueFlag (line 84) | async function removeQueueFlag(queueName, suffix, id) { FILE: api/src/utils/random.js function weightedRandom (line 3) | function weightedRandom(n = 6) { FILE: api/src/utils/rate-limiter.js function sleep (line 35) | function sleep(time) { function tick (line 39) | async function tick(userID, requestsPerDay = 3000) { function reset (line 52) | async function reset(userID) { FILE: api/src/utils/social.js function extractRedditPostID (line 7) | function extractRedditPostID(article) { function extractHackernewsPostID (line 27) | function extractHackernewsPostID(article) { function refreshAccessToken (line 38) | async function refreshAccessToken() { function sleep (line 63) | function sleep(time) { function tryRedditAPI (line 67) | async function tryRedditAPI(path, retries = 2, backoffDelay = 30) { function tryHackernewsAPI (line 99) | async function tryHackernewsAPI(path, retries = 2, backoffDelay = 30) { function tryHackernewsSearch (line 115) | async function tryHackernewsSearch(query, retries = 2, backoffDelay = 30) { function redditPost (line 138) | async function redditPost(article) { function hackernewsPost (line 144) | async function hackernewsPost(article) { function redditScore (line 150) | async function redditScore(postID) { function hackernewsScore (line 155) | async function hackernewsScore(postID) { function fetchSocialScore (line 169) | async function fetchSocialScore(article) { FILE: api/src/utils/statsd.js function getStatsDClient (line 7) | function getStatsDClient() { function timeIt (line 19) | async function timeIt(name, fn) { FILE: api/src/utils/stream.js function getStreamClient (line 6) | function getStreamClient() { FILE: api/src/utils/upsert.js function upsertManyPosts (line 21) | async function upsertManyPosts(publicationID, newPosts, schemaField) { function normalizePost (line 85) | function normalizePost(post) { function normalizedDiff (line 95) | function normalizedDiff(existingPost, newPost) { function postChanged (line 108) | function postChanged(existingPost, newPost) { FILE: api/src/utils/urls.js function getUrl (line 11) | function getUrl(urlName, ...args) { function extractHostname (line 19) | function extractHostname(request) { function ensureEncoded (line 45) | function ensureEncoded(url) { FILE: api/src/utils/validation.js function isURL (line 5) | function isURL(url) { FILE: api/src/utils/watchdog.js function startSampling (line 5) | function startSampling(metricName, sampleInterval = defaultSampleInterva... FILE: api/src/workers/conductor.js function forever (line 26) | function forever() { function getPublications (line 47) | async function getPublications( function conduct (line 71) | async function conduct() { function shutdown (line 133) | function shutdown(signal) { function failure (line 145) | function failure(reason, err) { FILE: api/src/workers/og.js function ogProcessor (line 27) | async function ogProcessor(job) { function handleOg (line 76) | async function handleOg(job) { function shutdown (line 203) | async function shutdown(signal) { function failure (line 215) | async function failure(reason, err) { FILE: api/src/workers/podcast.js function sleep (line 41) | function sleep(time) { function podcastProcessor (line 45) | async function podcastProcessor(job) { function updateFeed (line 85) | async function updateFeed(podcastID, update, episodes) { function handlePodcast (line 104) | async function handlePodcast(job) { function markDone (line 275) | async function markDone(podcastID) { function shutdown (line 283) | async function shutdown(signal) { function failure (line 295) | async function failure(reason, err) { FILE: api/src/workers/rss.js function sleep (line 40) | function sleep(time) { function rssProcessor (line 44) | async function rssProcessor(job) { function updateFeed (line 86) | async function updateFeed(rssID, update, articles) { function handleRSS (line 105) | async function handleRSS(job) { function markDone (line 273) | async function markDone(rssID) { function shutdown (line 278) | async function shutdown(signal) { function failure (line 290) | async function failure(source, err) { FILE: api/src/workers/social.js function socialProcessor (line 46) | async function socialProcessor(job) { function handleSocial (line 59) | async function handleSocial(job) { function shutdown (line 114) | async function shutdown(signal) { function failure (line 126) | async function failure(reason, err) { FILE: api/src/workers/stream.js function streamProcessor (line 23) | async function streamProcessor(job) { function handleStream (line 55) | async function handleStream(job) { function shutdown (line 79) | async function shutdown(signal) { function failure (line 91) | async function failure(reason, err) { FILE: api/src/workers/winds-hackernews.js function tryHackernewsAPI (line 9) | async function tryHackernewsAPI(path, retries = 5) { function hackernewsData (line 21) | async function hackernewsData(postID) { function hackernewsTop (line 26) | async function hackernewsTop() { function commentUrl (line 31) | function commentUrl(postID) { function main (line 35) | async function main() { FILE: api/src/workers/winds-queue-state-monitor.js function countSetElements (line 9) | function countSetElements(key) { function countLockTypes (line 13) | function countLockTypes(pattern) { function main (line 29) | async function main() { FILE: api/test-entry.js function spyOnEverything (line 19) | function spyOnEverything(module) { FILE: api/test/controllers/opml.js function AuthGetRequest (line 28) | function AuthGetRequest(getPath) { function AuthPostRequest (line 32) | function AuthPostRequest(path) { FILE: api/test/utilities/upsert.js function objectifyAndStripId (line 19) | function objectifyAndStripId(post) { FILE: api/test/utils.js function createMockFeed (line 21) | function createMockFeed(group, id) { function getMockFeed (line 35) | function getMockFeed(group, id) { function setupMocks (line 39) | function setupMocks() { function getMockClient (line 48) | function getMockClient() { function getTestFeed (line 56) | function getTestFeed(name) { function getTestPodcast (line 60) | function getTestPodcast(name) { function getTestPage (line 64) | function getTestPage(name) { function loadFixture (line 68) | async function loadFixture(...fixtures) { function withLogin (line 127) | function withLogin( function dropDBs (line 138) | async function dropDBs() { FILE: api/test/workers/conductor.js function beforeDeadline (line 11) | function beforeDeadline() { function afterDeadline (line 17) | function afterDeadline() { FILE: api/test/workers/og.js function setupHandler (line 15) | function setupHandler() { FILE: api/test/workers/podcast.js function setupHandler (line 22) | function setupHandler() { FILE: api/test/workers/rss.js function setupHandler (line 18) | function setupHandler() { function queue (line 101) | async function queue(url) { FILE: api/test/workers/social.js function setupHandler (line 14) | function setupHandler() { FILE: api/test/workers/stream.js function setupHandler (line 13) | function setupHandler() { FILE: app/public/actions.js function init (line 4) | function init() { FILE: app/public/electron.js method click (line 102) | click() { method click (line 108) | click() { method click (line 156) | click() { FILE: app/src/AppRouter.js class AppRouter (line 19) | class AppRouter extends Component { method componentDidMount (line 20) | componentDidMount() { method render (line 24) | render() { FILE: app/src/AuthedRoute.js class AuthedRoute (line 7) | class AuthedRoute extends React.Component { method render (line 8) | render() { FILE: app/src/components/AddOPMLModal.js class AddOPMLModal (line 14) | class AddOPMLModal extends React.Component { method constructor (line 15) | constructor(props) { method render (line 63) | render() { FILE: app/src/components/AddPodcastModal.js class AddPodcastModal (line 13) | class AddPodcastModal extends React.Component { method constructor (line 14) | constructor(props) { method render (line 104) | render() { FILE: app/src/components/AddRSSModal.js class AddRSSModal (line 14) | class AddRSSModal extends React.Component { method constructor (line 15) | constructor(props) { FILE: app/src/components/AliasModal.js class AliasModal (line 12) | class AliasModal extends React.Component { method constructor (line 13) | constructor(props) { method render (line 48) | render() { FILE: app/src/components/AllArticlesList.js class AllArticles (line 10) | class AllArticles extends React.Component { method constructor (line 11) | constructor(props) { method componentDidMount (line 22) | componentDidMount() { method componentDidUpdate (line 30) | componentDidUpdate() { method componentWillUnmount (line 38) | componentWillUnmount() { method getArticleFeed (line 42) | getArticleFeed() { method render (line 46) | render() { FILE: app/src/components/AllEpisodesList.js class AllEpisodesList (line 11) | class AllEpisodesList extends React.Component { method constructor (line 12) | constructor(props) { method componentDidMount (line 24) | componentDidMount() { method componentDidUpdate (line 32) | componentDidUpdate() { method componentWillUnmount (line 40) | componentWillUnmount() { method getEpisodeFeed (line 44) | getEpisodeFeed() { method render (line 48) | render() { FILE: app/src/components/ArticleListItem.js class ArticleListItem (line 9) | class ArticleListItem extends React.Component { method render (line 10) | render() { FILE: app/src/components/BookmarkPanel.js class BookmarkPanel (line 13) | class BookmarkPanel extends React.Component { method componentDidMount (line 14) | componentDidMount() { method render (line 19) | render() { FILE: app/src/components/Drawer.js class Drawer (line 4) | class Drawer extends React.Component { method constructor (line 5) | constructor(props) { method render (line 10) | render() { FILE: app/src/components/EpisodeListItem.js class EpisodeListItem (line 9) | class EpisodeListItem extends React.Component { method render (line 16) | render() { FILE: app/src/components/FeaturedItems.js class FeaturedItems (line 8) | class FeaturedItems extends React.Component { method constructor (line 9) | constructor(props) { method componentDidMount (line 17) | componentDidMount() { method render (line 21) | render() { FILE: app/src/components/FeedHeader.js class FeedHeader (line 15) | class FeedHeader extends React.Component { method render (line 16) | render() { FILE: app/src/components/FeedListItem.js class FeedListItem (line 17) | class FeedListItem extends React.Component { method render (line 18) | render() { FILE: app/src/components/Folder/DeleteModal.js class DeleteModal (line 7) | class DeleteModal extends React.Component { method constructor (line 8) | constructor(props) { method render (line 45) | render() { FILE: app/src/components/Folder/FeedToFolderModal.js class FeedToFolderModal (line 7) | class FeedToFolderModal extends React.Component { method constructor (line 8) | constructor(props) { method render (line 60) | render() { FILE: app/src/components/Folder/Folder.js class Folder (line 16) | class Folder extends React.Component { method constructor (line 17) | constructor(props) { method render (line 79) | render() { FILE: app/src/components/Folder/FolderFeeds.js class FolderFeeds (line 13) | class FolderFeeds extends React.Component { method constructor (line 14) | constructor(props) { method componentDidMount (line 29) | componentDidMount() { method componentDidUpdate (line 41) | componentDidUpdate(prevProps) { method subscribeToStreamFeed (line 56) | subscribeToStreamFeed(folderID, streamToken) { method unsubscribeFromStreamFeed (line 63) | unsubscribeFromStreamFeed() { method render (line 91) | render() { FILE: app/src/components/Folder/FolderPanel.js class FolderPanel (line 15) | class FolderPanel extends React.Component { method constructor (line 16) | constructor(props) { method render (line 28) | render() { FILE: app/src/components/Folder/FolderPopover.js class FolderPopover (line 14) | class FolderPopover extends React.Component { method constructor (line 15) | constructor(props) { method render (line 73) | render() { FILE: app/src/components/Folder/IntroFolders.js class IntroFolders (line 8) | class IntroFolders extends React.Component { method constructor (line 9) | constructor(props) { method render (line 23) | render() { FILE: app/src/components/Folder/NewFolderModal.js class NewFolderModal (line 13) | class NewFolderModal extends React.Component { method constructor (line 14) | constructor(props) { method render (line 76) | render() { FILE: app/src/components/Folder/RenameModal.js class RenameModal (line 10) | class RenameModal extends React.Component { method constructor (line 11) | constructor(props) { method render (line 44) | render() { FILE: app/src/components/Folder/SearchFeed.js class SearchFeed (line 15) | class SearchFeed extends React.Component { method constructor (line 16) | constructor(props) { method render (line 80) | render() { FILE: app/src/components/Header.js class Header (line 23) | class Header extends Component { method constructor (line 24) | constructor(props) { method render (line 106) | render() { FILE: app/src/components/HtmlRender.js class HtmlRender (line 21) | class HtmlRender extends React.Component { method constructor (line 22) | constructor(props) { method componentDidMount (line 40) | componentDidMount() { method componentDidUpdate (line 52) | componentDidUpdate(prevProps) { method componentWillUnmount (line 60) | componentWillUnmount() { method render (line 240) | render() { FILE: app/src/components/Notes/HighlightMenu.js class HighlightMenu (line 4) | class HighlightMenu extends React.Component { method constructor (line 5) | constructor(props) { method render (line 21) | render() { FILE: app/src/components/Notes/NoteInput.js class NoteInput (line 6) | class NoteInput extends React.Component { method render (line 28) | render() { FILE: app/src/components/Notes/RecentNotesPanel.js class RecentNotesPanel (line 13) | class RecentNotesPanel extends React.Component { method render (line 14) | render() { FILE: app/src/components/Panel.js class Panel (line 5) | class Panel extends React.Component { method constructor (line 6) | constructor(props) { method render (line 12) | render() { FILE: app/src/components/Player.js class Player (line 20) | class Player extends Component { method constructor (line 21) | constructor(props) { method componentDidMount (line 37) | componentDidMount() { method componentWillUnmount (line 42) | componentWillUnmount() { method componentDidUpdate (line 50) | componentDidUpdate(prevProps) { method render (line 239) | render() { FILE: app/src/components/PodcastEpisode.js class PodcastEpisode (line 14) | class PodcastEpisode extends React.Component { method constructor (line 15) | constructor(props) { method componentDidMount (line 29) | componentDidMount() { method componentDidUpdate (line 33) | componentDidUpdate(prevProps) { method render (line 125) | render() { FILE: app/src/components/PodcastEpisodesView.js class PodcastEpisodesView (line 21) | class PodcastEpisodesView extends React.Component { method constructor (line 22) | constructor(props) { method subscribeToStreamFeed (line 40) | subscribeToStreamFeed(podcastID, streamFeedToken) { method unsubscribeFromStreamFeed (line 48) | unsubscribeFromStreamFeed() { method componentDidMount (line 52) | componentDidMount() { method componentDidUpdate (line 64) | componentDidUpdate(prevProps) { method componentWillUnmount (line 80) | componentWillUnmount() { method render (line 165) | render() { FILE: app/src/components/PodcastPanels/PodcastList.js class PodcastList (line 10) | class PodcastList extends React.Component { method render (line 11) | render() { FILE: app/src/components/PodcastPanels/RecentEpisodesPanel.js class RecentEpisodesPanel (line 11) | class RecentEpisodesPanel extends React.Component { method componentDidMount (line 12) | componentDidMount() { method render (line 15) | render() { FILE: app/src/components/PodcastPanels/SuggestedPodcasts.js class SuggestedPodcasts (line 10) | class SuggestedPodcasts extends React.Component { method componentDidMount (line 11) | componentDidMount() { method render (line 16) | render() { FILE: app/src/components/RSSArticle.js function mergeSocialScore (line 15) | function mergeSocialScore(article, socialScore) { class RSSArticle (line 26) | class RSSArticle extends React.Component { method constructor (line 27) | constructor(props) { method componentDidMount (line 43) | componentDidMount() { method componentDidUpdate (line 56) | componentDidUpdate(prevProps) { method render (line 165) | render() { FILE: app/src/components/RSSArticleList.js class RSSArticleList (line 21) | class RSSArticleList extends React.Component { method constructor (line 22) | constructor(props) { method subscribeToStreamFeed (line 42) | subscribeToStreamFeed(rssFeedID, streamFeedToken) { method unsubscribeFromStreamFeed (line 50) | unsubscribeFromStreamFeed() { method componentDidMount (line 54) | componentDidMount() { method componentDidUpdate (line 67) | componentDidUpdate(prevProps) { method componentWillUnmount (line 88) | componentWillUnmount() { method render (line 177) | render() { FILE: app/src/components/RSSPanels/RecentArticlesPanel.js class RecentArticlesPanel (line 11) | class RecentArticlesPanel extends React.Component { method componentDidMount (line 12) | componentDidMount() { method render (line 16) | render() { FILE: app/src/components/RSSPanels/RssFeedList.js class RssFeedList (line 10) | class RssFeedList extends React.Component { method render (line 11) | render() { FILE: app/src/components/RSSPanels/SuggestedFeeds.js class SuggestedFeeds (line 10) | class SuggestedFeeds extends React.Component { method componentDidMount (line 11) | componentDidMount() { method render (line 15) | render() { FILE: app/src/components/SearchBar.js class SearchBar (line 45) | class SearchBar extends React.Component { method constructor (line 46) | constructor(props) { method render (line 131) | render() { FILE: app/src/components/SimpleProgressBar.js class SimpleProgressBar (line 6) | class SimpleProgressBar extends React.Component { method render (line 7) | render() { FILE: app/src/components/Tabs.js class Tabs (line 4) | class Tabs extends React.Component { method constructor (line 5) | constructor(props) { method render (line 12) | render() { FILE: app/src/components/Tag/DeleteModal.js class DeleteModal (line 7) | class DeleteModal extends React.Component { method constructor (line 8) | constructor(props) { method render (line 41) | render() { FILE: app/src/components/Tag/RenameModal.js class RenameModal (line 10) | class RenameModal extends React.Component { method constructor (line 11) | constructor(props) { method render (line 44) | render() { FILE: app/src/components/Tag/Tag.js class Tag (line 15) | class Tag extends React.Component { method constructor (line 16) | constructor(props) { method render (line 70) | render() { FILE: app/src/components/Tag/TagFeeds.js class TagFeeds (line 9) | class TagFeeds extends React.Component { method render (line 10) | render() { FILE: app/src/components/Tag/TagPanel.js class TagPanel (line 12) | class TagPanel extends React.Component { method render (line 13) | render() { FILE: app/src/components/Tag/TagView.js class TagView (line 16) | class TagView extends React.Component { method constructor (line 17) | constructor(props) { method render (line 78) | render() { FILE: app/src/components/UserProfileSettingsDrawer.js class UserProfileSettingsDrawer (line 15) | class UserProfileSettingsDrawer extends React.Component { method constructor (line 16) | constructor(props) { method componentDidMount (line 42) | componentDidMount() { method componentDidUpdate (line 46) | componentDidUpdate(prevProps) { method render (line 152) | render() { FILE: app/src/reducers.js function generateNotesOrder (line 284) | function generateNotesOrder(notes, sorted = false) { FILE: app/src/serviceWorker.js function register (line 23) | function register(config) { function registerValidSW (line 57) | function registerValidSW(swUrl, config) { function checkValidServiceWorker (line 101) | function checkValidServiceWorker(swUrl, config) { function unregister (line 129) | function unregister() { FILE: app/src/util/social.js function extractRedditPostID (line 7) | function extractRedditPostID(article) { function extractHackernewsPostID (line 27) | function extractHackernewsPostID(article) { function refreshAccessToken (line 38) | async function refreshAccessToken() { function sleep (line 60) | function sleep(time) { function tryRedditAPI (line 64) | async function tryRedditAPI(path, retries = 3, backoffDelay = 20) { function tryHackernewsAPI (line 95) | async function tryHackernewsAPI(path, retries = 3, backoffDelay = 20) { function tryHackernewsSearch (line 111) | async function tryHackernewsSearch(query, retries = 3, backoffDelay = 20) { function redditPost (line 133) | async function redditPost(article) { function hackernewsPost (line 145) | async function hackernewsPost(article) { function redditScore (line 157) | async function redditScore(postID) { function hackernewsScore (line 165) | async function hackernewsScore(postID) { function fetchSocialScore (line 182) | async function fetchSocialScore(source, article) { FILE: app/src/views/AdminView.js function compareTitles (line 8) | function compareTitles(lhs, rhs) { class AdminView (line 12) | class AdminView extends React.Component { method constructor (line 13) | constructor(props) { method componentDidMount (line 24) | componentDidMount() { method getRssFeeds (line 29) | getRssFeeds() { method getPodcasts (line 35) | getPodcasts() { method render (line 41) | render() { class PodcastRow (line 187) | class PodcastRow extends React.Component { method constructor (line 188) | constructor(props) { method render (line 198) | render() { class RssRow (line 328) | class RssRow extends React.Component { method constructor (line 329) | constructor(props) { method render (line 339) | render() { FILE: app/src/views/Dashboard.js class Dashboard (line 16) | class Dashboard extends React.Component { method render (line 17) | render() { FILE: app/src/views/FoldersView.js class FoldersView (line 18) | class FoldersView extends React.Component { method render (line 19) | render() { FILE: app/src/views/PodcastsView.js class PodcastsView (line 15) | class PodcastsView extends React.Component { method constructor (line 16) | constructor(props) { method componentDidMount (line 26) | componentDidMount() { method componentDidUpdate (line 36) | componentDidUpdate(prevProps) { method render (line 50) | render() { FILE: app/src/views/RSSFeedsView.js class RSSFeedsView (line 15) | class RSSFeedsView extends React.Component { method constructor (line 16) | constructor(props) { method componentDidMount (line 26) | componentDidMount() { method componentDidUpdate (line 36) | componentDidUpdate(prevProps) { method render (line 50) | render() { FILE: app/src/views/auth-views/Create.js class Create (line 12) | class Create extends Component { method constructor (line 13) | constructor(props) { method render (line 21) | render() { class OnboardingGrid (line 59) | class OnboardingGrid extends React.Component { method constructor (line 60) | constructor(props) { method toggleInterest (line 68) | toggleInterest(interestName) { method render (line 86) | render() { class AccountDetailsForm (line 154) | class AccountDetailsForm extends React.Component { method constructor (line 155) | constructor(props) { method render (line 239) | render() { FILE: app/src/views/auth-views/ForgotPassword.js class ForgotPassword (line 9) | class ForgotPassword extends Component { method constructor (line 10) | constructor(props) { method validateEmail (line 23) | validateEmail(e) { method requestResetPasscode (line 42) | requestResetPasscode(e) { method render (line 61) | render() { FILE: app/src/views/auth-views/Login.js class Login (line 9) | class Login extends Component { method constructor (line 10) | constructor(props) { method render (line 52) | render() { FILE: app/src/views/auth-views/ResetPassword.js class ResetPassword (line 9) | class ResetPassword extends Component { method constructor (line 10) | constructor(props) { method validateForm (line 28) | validateForm() { method validateEmail (line 36) | validateEmail(e) { method validateRecoveryCode (line 58) | validateRecoveryCode(e) { method validatePassword (line 82) | validatePassword(e) { method requestPasswordReset (line 106) | requestPasswordReset(e) { method render (line 125) | render() {