SYMBOL INDEX (1960 symbols across 336 files) FILE: docs/sql_queries.sql type articles_with_counts (line 4) | CREATE VIEW articles_with_counts AS type category_ids_with_counts (line 13) | CREATE VIEW category_ids_with_counts AS type categories_with_counts (line 22) | CREATE VIEW categories_with_counts AS FILE: packages/backend-api/src/actions/assignment_updaters.ts function getUserCategoryAssignment (line 21) | function getUserCategoryAssignment(userIds: Array, categoryId: n... function getArticleAssignmentArray (line 30) | function getArticleAssignmentArray(userIds: Array, articleIdsInC... function removeArticleAssignments (line 41) | async function removeArticleAssignments(userIds: Array, articleI... function updateCategoryAssignments (line 54) | async function updateCategoryAssignments(categoryId: number, userIds: Ar... function updateArticleAssignments (line 107) | async function updateArticleAssignments(articleId: number, userIds: Set<... FILE: packages/backend-api/src/actions/object_updaters.ts type ModelType (line 20) | type ModelType = 'moderation_rule' | 'preselect' | 'tagging_sensitivity'; function checkModelType (line 22) | function checkModelType(type: string): type is ModelType { function processRangeData (line 32) | async function processRangeData( function createRangeObject (line 77) | async function createRangeObject( function modifyRangeObject (line 115) | async function modifyRangeObject( function deleteRangeObject (line 147) | async function deleteRangeObject(type: ModelType | 'tag', objectId: numb... function createTagObject (line 165) | async function createTagObject( function modifyTagObject (line 187) | async function modifyTagObject( FILE: packages/backend-api/src/api/assistant/index.ts function createAssistant (line 30) | function createAssistant(): express.Router { function createAssistantRouter (line 76) | function createAssistantRouter(): express.Router { FILE: packages/backend-api/src/api/constants.ts constant REPLY_SUCCESS_VALUE (line 19) | const REPLY_SUCCESS_VALUE = 'success'; constant REPLY_SUCCESS (line 20) | const REPLY_SUCCESS = { status: REPLY_SUCCESS_VALUE}; FILE: packages/backend-api/src/api/router.ts function createApiRouter (line 23) | function createApiRouter(authenticator: any) { FILE: packages/backend-api/src/api/services/assignments.ts function countAssignments (line 26) | async function countAssignments(user: User) { function createAssignmentsService (line 31) | function createAssignmentsService(): express.Router { FILE: packages/backend-api/src/api/services/authorCounts.ts type IAuthorCounts (line 41) | interface IAuthorCounts { function getAuthorCounts (line 46) | async function getAuthorCounts(authorSourceId: string): Promise): Array { function scoresToChart (line 75) | async function scoresToChart( function createHistogramScoresService (line 111) | function createHistogramScoresService(): express.Router { FILE: packages/backend-api/src/api/services/histogramScores/util.ts type ICommentScoredOrDated (line 27) | interface ICommentScoredOrDated { type ICommentScored (line 31) | interface ICommentScored extends ICommentScoredOrDated { type ICommentDated (line 35) | interface ICommentDated extends ICommentScoredOrDated { class NotFoundError (line 39) | class NotFoundError extends Error { function sortComments (line 45) | async function sortComments(data: Array... function getHistogramScoresForAllCategories (line 74) | async function getHistogramScoresForAllCategories(tagId: number): Promis... function getHistogramScoresForAllCategoriesByDate (line 98) | async function getHistogramScoresForAllCategoriesByDate(): Promise; function createSearchService (line 34) | function createSearchService(): express.Router { FILE: packages/backend-api/src/api/services/serializer.ts constant TAG_FIELDS (line 20) | const TAG_FIELDS = ['id', 'color', 'description', 'key', 'label', 'isInB... constant RANGE_FIELDS (line 21) | const RANGE_FIELDS = ['id', 'categoryId', 'lowerThreshold', 'upperThresh... constant TAGGING_SENSITIVITY_FIELDS (line 22) | const TAGGING_SENSITIVITY_FIELDS = RANGE_FIELDS; constant RULE_FIELDS (line 23) | const RULE_FIELDS = ['action', 'createdBy', ...RANGE_FIELDS]; constant PRESELECT_FIELDS (line 24) | const PRESELECT_FIELDS = RANGE_FIELDS; constant USER_FIELDS (line 25) | const USER_FIELDS = ['id', 'name', 'email', 'avatarURL', 'group', 'isAct... constant COMMENTSET_FIELDS (line 27) | const COMMENTSET_FIELDS = ['id', 'updatedAt', 'allCount', 'unprocessedCo... constant CATEGORY_FIELDS (line 30) | const CATEGORY_FIELDS = [...COMMENTSET_FIELDS, 'label', 'ownerId', 'isAc... constant ARTICLE_FIELDS (line 31) | const ARTICLE_FIELDS = [...COMMENTSET_FIELDS, 'title', 'url', 'categoryI... constant COMMENT_FIELDS (line 34) | const COMMENT_FIELDS = ['id', 'sourceId', 'replyToSourceId', 'replyId', ... constant SUMMARY_SCORE_FIELDS (line 39) | const SUMMARY_SCORE_FIELDS = ['tagId', 'score']; constant SCORE_FIELDS (line 40) | const SCORE_FIELDS = ['id', 'commentId', 'confirmedUserId', 'tagId', 'sc... constant FLAG_FIELDS (line 42) | const FLAG_FIELDS = ['id', 'label', 'detail', 'isRecommendation', 'comme... constant ID_FIELDS (line 45) | const ID_FIELDS = new Set(['id', 'categoryId', 'articleId', 'tagId', 'ow... type serializedData (line 48) | type serializedData = {[key: string]: {} | Array | string | numb... function serialiseObject (line 51) | function serialiseObject( FILE: packages/backend-api/src/api/services/simple.ts function createSimpleRESTService (line 62) | function createSimpleRESTService(): express.Router { FILE: packages/backend-api/src/api/services/textSizes.ts type ITextSizesResponse (line 28) | interface ITextSizesResponse { function createTextSizesService (line 39) | function createTextSizesService(): express.Router { FILE: packages/backend-api/src/api/services/updateNotifications.ts constant SEND_TEST_UPDATE_PACKETS (line 19) | const SEND_TEST_UPDATE_PACKETS = false; type ISystemData (line 51) | interface ISystemData { type IAllArticlesData (line 59) | interface IAllArticlesData { type IArticleUpdateData (line 64) | interface IArticleUpdateData { type IPerUserData (line 69) | interface IPerUserData { type IMessage (line 73) | interface IMessage { function getSystemData (line 78) | async function getSystemData() { function getGlobalData (line 116) | async function getGlobalData() { function getCategoryUpdate (line 143) | async function getCategoryUpdate(categoryId: number) { function getArticleUpdate (line 160) | async function getArticleUpdate(articleId: number) { function getPerUserData (line 186) | async function getPerUserData(userId: number) { type ISocketItem (line 198) | interface ISocketItem { function refreshSystemMessage (line 208) | async function refreshSystemMessage(): Promise { function removeSocket (line 223) | function removeSocket(si: ISocketItem, ws: WebSocket) { function refreshMessages (line 233) | async function refreshMessages(alwaysSend: boolean) { function maybeSendUpdateToUser (line 238) | async function maybeSendUpdateToUser(si: ISocketItem, function maybeSendUpdates (line 266) | async function maybeSendUpdates() { function sendUpdate (line 273) | async function sendUpdate(type: string, update: string) { function sendGlobal (line 285) | async function sendGlobal() { function sendCategoryUpdate (line 290) | async function sendCategoryUpdate(categoryId: number) { function sendArticleUpdate (line 295) | async function sendArticleUpdate(articleId: number) { function sendTestUpdatePackets (line 300) | function sendTestUpdatePackets(si: ISocketItem) { function processNotification (line 359) | async function processNotification(data: INotificationData) { function createUpdateNotificationService (line 380) | function createUpdateNotificationService(): express.Router { function destroyUpdateNotificationService (line 426) | function destroyUpdateNotificationService() { FILE: packages/backend-api/src/api/util/permissions.ts function onlyAdmin (line 21) | function onlyAdmin(req: express.Request, res: express.Response, next: ex... function onlyServices (line 35) | function onlyServices(req: express.Request, res: express.Response, next:... function onlyAdminAndServices (line 50) | function onlyAdminAndServices(req: express.Request, res: express.Respons... FILE: packages/backend-api/src/api/util/server.ts function getExpressAppWithPreprocessors (line 53) | function getExpressAppWithPreprocessors(testMode?: boolean) { function applyCommonPostprocessors (line 80) | function applyCommonPostprocessors(app: express.Application, testMode?: ... function makeServer (line 106) | function makeServer(testMode?: boolean): { FILE: packages/backend-api/src/api/util/sortCommentIds.ts function sortCommentIds (line 20) | async function sortCommentIds( FILE: packages/backend-api/src/api/util/validation.ts function dataSchema (line 20) | function dataSchema(type: any) { function validateRequest (line 33) | function validateRequest(schema: Joi.Schema) { function validateAndSendResponse (line 49) | function validateAndSendResponse(schema: Joi.Schema) { FILE: packages/backend-api/src/auth/config.ts type IGoogleOAuthConfiguration (line 19) | interface IGoogleOAuthConfiguration { function getOAuthConfiguration (line 24) | async function getOAuthConfiguration() { function setOAuthConfiguration (line 28) | async function setOAuthConfiguration(oauthConfig: IGoogleOAuthConfigurat... function setOAuthGood (line 34) | async function setOAuthGood(isGood: boolean) { function isOAuthGood (line 38) | async function isOAuthGood() { FILE: packages/backend-api/src/auth/providers/google.ts class AuthError (line 24) | class AuthError extends Error { type IGoogleProfile (line 28) | interface IGoogleProfile { function mapAuthDataToUser (line 47) | function mapAuthDataToUser(profile: IGoogleProfile) { function mapAuthDataToUserSocialAuth (line 59) | function mapAuthDataToUserSocialAuth(accessToken: string, refreshToken: ... function verifyGoogleToken (line 77) | async function verifyGoogleToken(accessToken: string, refreshToken: stri... function getGoogleStrategy (line 109) | function getGoogleStrategy( FILE: packages/backend-api/src/auth/providers/jwt.ts function verifyJWT (line 29) | async function verifyJWT(jwtPayload: any): Promise { function getJwtStrategy (line 58) | async function getJwtStrategy() { FILE: packages/backend-api/src/auth/router.ts function redirectToFrontend (line 35) | function redirectToFrontend( function createHealthcheckRouter (line 61) | function createHealthcheckRouter(oauthConfig: IGoogleOAuthConfiguration ... function createAuthConfigRouter (line 89) | function createAuthConfigRouter(): express.Router { function createAuthRouter (line 125) | function createAuthRouter(): express.Router { FILE: packages/backend-api/src/auth/tokens.ts type ITokenConfiguration (line 29) | interface ITokenConfiguration { function getTokenConfiguration (line 37) | async function getTokenConfiguration(): Promise { type ITokenPayload (line 65) | interface ITokenPayload { function isValidToken (line 71) | function isValidToken(tokenPayload: ITokenPayload): boolean { function isExpired (line 83) | async function isExpired(user: User, tokenPayload: ITokenPayload): Promi... function createToken (line 101) | async function createToken(userId: number, email?: string): Promise { function refreshToken (line 139) | async function refreshToken(token: string): Promise { FILE: packages/backend-api/src/auth/users.ts function isValidUser (line 29) | function isValidUser(user: User): boolean { function findOrCreateUserSocialAuth (line 41) | async function findOrCreateUserSocialAuth( function isFirstUserInitialised (line 62) | async function isFirstUserInitialised() { function ensureFirstUser (line 67) | async function ensureFirstUser({name, email}: {name: string, email: stri... function saveYouTubeUserToken (line 96) | async function saveYouTubeUserToken({name, email}: {name: string, email:... FILE: packages/backend-api/src/auth/utils.ts function generateServerCSRF (line 23) | async function generateServerCSRF(req: express.Request, res: express.Res... function getClientCSRF (line 44) | async function getClientCSRF(req: express.Request): FILE: packages/backend-api/src/auth/youtube.ts function createYouTubeRouter (line 25) | function createYouTubeRouter( FILE: packages/backend-api/src/commands/articles/delete.ts function builder (line 26) | function builder(args: yargs.Argv) { function handler (line 31) | async function handler() { FILE: packages/backend-api/src/commands/comments/calculate_text_size.ts function builder (line 26) | function builder(args: yargs.Argv) { function handler (line 37) | async function handler(argv: any) { FILE: packages/backend-api/src/commands/comments/data_helpers.ts function guid (line 13) | function guid() { function createOwner (line 22) | async function createOwner(name: string) { function createCategory (line 34) | async function createCategory(owner: User | null, label: string) { function createArticle (line 52) | async function createArticle( function createComment (line 81) | async function createComment( FILE: packages/backend-api/src/commands/comments/delete.ts function builder (line 26) | function builder(args: yargs.Argv) { function handler (line 31) | async function handler() { FILE: packages/backend-api/src/commands/comments/flag.ts function builder (line 27) | function builder(args: yargs.Argv) { function handler (line 40) | async function handler(argv: any) { FILE: packages/backend-api/src/commands/comments/generate.ts constant PREEXISTING_CATEGORIES (line 27) | const PREEXISTING_CATEGORIES = 5; constant PREEXISTING_ARTICLES (line 28) | const PREEXISTING_ARTICLES = 20; constant NEW_CATEGORIES (line 29) | const NEW_CATEGORIES = 1; constant NEW_ARTICLES (line 30) | const NEW_ARTICLES = 5; constant NEW_COMMENTS (line 31) | const NEW_COMMENTS = 20; function builder (line 40) | function builder(args: yargs.Argv) { function isAlnum (line 55) | function isAlnum(data: string, offset: number): boolean { function isInternalPunctuation (line 66) | function isInternalPunctuation(data: string, offset: number): boolean { function find_start_of_sentence (line 70) | function find_start_of_sentence(data: string, offset: number): number { function find_end_of_sentence (line 77) | function find_end_of_sentence(data: string, offset: number): number { function find_start_of_word (line 85) | function find_start_of_word(data: string, offset: number): number { function find_end_of_word (line 92) | function find_end_of_word(data: string, offset: number): number { function get_sentences (line 100) | function get_sentences(data: string, count: number): string { function get_words (line 116) | function get_words(data: string, count: number): string { function handler (line 132) | async function handler(argv: any) { FILE: packages/backend-api/src/commands/comments/import.ts constant FILES (line 27) | const FILES = ['brexit', 'climate', 'election', 'wikipedia']; function builder (line 29) | function builder(args: yargs.Argv) { constant METADATA (line 37) | const METADATA = { function processFile (line 61) | async function processFile(owner: User, fname: string) { function handler (line 74) | async function handler(argv: any) { FILE: packages/backend-api/src/commands/comments/rebuild_reply_relations.ts function builder (line 27) | function builder(args: yargs.Argv) { function handler (line 32) | async function handler() { FILE: packages/backend-api/src/commands/comments/recalculate_text_sizes.ts function builder (line 27) | function builder(args: yargs.Argv) { function handler (line 35) | async function handler(argv: any) { FILE: packages/backend-api/src/commands/comments/recalculate_top_scores.ts function builder (line 26) | function builder(args: yargs.Argv) { function handler (line 31) | async function handler() { FILE: packages/backend-api/src/commands/comments/rescore.ts function builder (line 26) | function builder(args: yargs.Argv) { function handler (line 31) | async function handler() { FILE: packages/backend-api/src/commands/comments/send_to_scorer.ts function builder (line 31) | function builder(args: yargs.Argv) { function handler (line 51) | async function handler(argv: any) { FILE: packages/backend-api/src/commands/denormalize.ts function builder (line 30) | function builder(args: yargs.Argv) { function handler (line 36) | async function handler(argv: any) { FILE: packages/backend-api/src/commands/tests/youtube.ts function builder (line 27) | function builder(args: yargs.Argv) { function handler (line 32) | async function handler() { FILE: packages/backend-api/src/commands/users/create.ts function builder (line 35) | function builder(args: yargs.Argv) { function handler (line 60) | async function handler(argv: any) { FILE: packages/backend-api/src/commands/users/get_token.ts function builder (line 27) | function builder(args: yargs.Argv) { function handler (line 47) | async function handler(argv: any) { FILE: packages/backend-api/src/domain/articles/countDenormalization.ts function denormalizeCommentCountsForArticle (line 27) | async function denormalizeCommentCountsForArticle(article: Article | nul... FILE: packages/backend-api/src/domain/categories/countDenormalization.ts function denormalizeCommentCountsForCategory (line 22) | async function denormalizeCommentCountsForCategory(category: Category) { FILE: packages/backend-api/src/domain/commentScores/index.ts type ITopScore (line 30) | interface ITopScore { type ITopScores (line 40) | interface ITopScores { function calculateTopScore (line 47) | function calculateTopScore(scores: Array): CommentScore | ... function calculateTopScores (line 60) | async function calculateTopScores(comments: Array, tagId: numbe... function cacheCommentTopScore (line 86) | async function cacheCommentTopScore(comment: Comment, tag: Tag): Promise... function cacheCommentTopScores (line 107) | async function cacheCommentTopScores(comment: Comment) { FILE: packages/backend-api/src/domain/comments/countDenormalization.ts function denormalizeCountsForComment (line 25) | async function denormalizeCountsForComment(comment: Comment) { FILE: packages/backend-api/src/domain/comments/textSizes.ts constant FONT_FAMILY (line 25) | const FONT_FAMILY = 'Georgia'; constant TYPE_DEF (line 26) | const TYPE_DEF = { constant FONT_FILE (line 33) | const FONT_FILE = path.join(__dirname, '..', '..', '..', 'fonts', 'Georg... function getTextHeight (line 44) | function getTextHeight(lines: Array, _wordWrapWidth: number, sty... function measureText (line 50) | function measureText(word: string): number { function wordWrap (line 57) | function wordWrap(text: string, wordWrapWidth: number): Array { function calculateTextSize (line 94) | async function calculateTextSize(comment: Comment, width: number): Promi... function cacheTextSize (line 100) | async function cacheTextSize(comment: Comment, width: number): Promise { FILE: packages/backend-api/src/integrations/decisions.ts function getDecisionForComment (line 25) | async function getDecisionForComment( function foreachPendingDecision (line 37) | async function foreachPendingDecision( function markDecisionExecuted (line 54) | async function markDecisionExecuted(decision: Decision) { FILE: packages/backend-api/src/integrations/youtube/actions.ts function youtubeActivateChannel (line 22) | async function youtubeActivateChannel( function youtubeSynchronizeChannel (line 32) | async function youtubeSynchronizeChannel( FILE: packages/backend-api/src/integrations/youtube/authenticate.ts constant SCOPES (line 24) | const SCOPES = ['https://www.googleapis.com/auth/youtube.force-ssl']; function for_one_youtube_user (line 26) | async function for_one_youtube_user( function for_all_youtube_users (line 42) | async function for_all_youtube_users( FILE: packages/backend-api/src/integrations/youtube/channels.ts function sync_page_of_channels (line 27) | async function sync_page_of_channels(owner: User, auth: OAuth2Client, pa... function sync_channels (line 60) | async function sync_channels( function activate_channel (line 71) | async function activate_channel( function get_playlist_for_channel (line 120) | async function get_playlist_for_channel(owner: User, auth: OAuth2Client,... function get_article_id_map_for_channel (line 143) | async function get_article_id_map_for_channel( function for_each_active_channel (line 158) | async function for_each_active_channel( FILE: packages/backend-api/src/integrations/youtube/comments.ts function sync_page_of_comments (line 35) | async function sync_page_of_comments( function sync_comment_threads_for_channel (line 88) | async function sync_comment_threads_for_channel( function sync_comment_threads (line 108) | async function sync_comment_threads( function implement_moderation_decision (line 119) | async function implement_moderation_decision( function implement_moderation_decisions (line 149) | async function implement_moderation_decisions( FILE: packages/backend-api/src/integrations/youtube/hooks.ts method commentModerated (line 24) | async commentModerated(owner: User, comment: Comment) { FILE: packages/backend-api/src/integrations/youtube/objectmap.ts function youtubeSetTestOnly (line 34) | function youtubeSetTestOnly(c: typeof testCallback) { function saveError (line 39) | async function saveError(owner: User, error: Error) { function clearError (line 51) | async function clearError(owner: User) { function mapChannelToCategory (line 58) | async function mapChannelToCategory(owner: User, channel: any) { function setChannelActive (line 134) | async function setChannelActive(owner: User, channelId: string, branding... function foreachActiveChannel (line 147) | async function foreachActiveChannel(owner: User, callback: (channelId: s... function mapVideoItemToArticle (line 174) | async function mapVideoItemToArticle( function mapCommentToComment (line 226) | async function mapCommentToComment( function mapCommentThreadToComments (line 289) | async function mapCommentThreadToComments( FILE: packages/backend-api/src/integrations/youtube/task.ts constant CHANNEL_SYNC_INTERVAL (line 24) | const CHANNEL_SYNC_INTERVAL = 60 * 24; constant COMMENT_SYNC_INTERVAL (line 25) | const COMMENT_SYNC_INTERVAL = 5; function syncYoutubeTask (line 27) | async function syncYoutubeTask(tick: number) { FILE: packages/backend-api/src/integrations/youtube/videos.ts function sync_page_of_videos (line 28) | async function sync_page_of_videos( function sync_playlists (line 68) | async function sync_playlists( function sync_individual_videos (line 96) | async function sync_individual_videos( function sync_known_videos (line 145) | async function sync_known_videos( function get_article_id_from_youtube_id (line 173) | async function get_article_id_from_youtube_id( FILE: packages/backend-api/src/models/article.ts class Article (line 25) | class Article extends Model { FILE: packages/backend-api/src/models/category.ts class Category (line 23) | class Category extends Model { FILE: packages/backend-api/src/models/comment.ts class Decision (line 29) | class Decision extends Model {} type IAuthorAttributes (line 31) | interface IAuthorAttributes { constant FLAGS_COUNT (line 38) | const FLAGS_COUNT = 0; constant UNRESOLVED_FLAGS_COUNT (line 39) | const UNRESOLVED_FLAGS_COUNT = 1; constant RECOMMENDATIONS_COUNT (line 40) | const RECOMMENDATIONS_COUNT = 2; type IFlagSummary (line 42) | interface IFlagSummary { class Comment (line 46) | class Comment extends Model { FILE: packages/backend-api/src/models/comment_flag.ts class CommentFlag (line 23) | class CommentFlag extends Model { FILE: packages/backend-api/src/models/comment_score.ts constant SCORE_SOURCE_TYPES (line 25) | const SCORE_SOURCE_TYPES = [ class CommentScore (line 31) | class CommentScore extends Model { FILE: packages/backend-api/src/models/comment_score_request.ts class CommentScoreRequest (line 23) | class CommentScoreRequest extends Model { FILE: packages/backend-api/src/models/comment_size.ts class CommentSize (line 22) | class CommentSize extends Model { FILE: packages/backend-api/src/models/comment_summary_score.ts class CommentSummaryScore (line 24) | class CommentSummaryScore extends Model { FILE: packages/backend-api/src/models/comment_top_score.ts class CommentTopScore (line 21) | class CommentTopScore extends Model { FILE: packages/backend-api/src/models/configuration.ts constant CONFIGURATION_TOKEN (line 31) | const CONFIGURATION_TOKEN = 'token'; constant CONFIGURATION_GOOGLE_OAUTH (line 32) | const CONFIGURATION_GOOGLE_OAUTH = 'google-oauth'; class Configuration (line 34) | class Configuration extends Model { function getConfigItem (line 54) | async function getConfigItem(itemId: string): Promise { function setConfigItem (line 63) | async function setConfigItem(itemId: string, data: object): Promise { FILE: packages/backend-api/src/models/constants.ts constant MODERATION_ACTION_ACCEPT (line 17) | const MODERATION_ACTION_ACCEPT = 'Accept'; constant MODERATION_ACTION_REJECT (line 18) | const MODERATION_ACTION_REJECT = 'Reject'; constant MODERATION_ACTION_DEFER (line 19) | const MODERATION_ACTION_DEFER = 'Defer'; constant MODERATION_ACTION_HIGHLIGHT (line 20) | const MODERATION_ACTION_HIGHLIGHT = 'Highlight'; type IResolution (line 22) | type IResolution = 'Accept' | 'Reject' | 'Defer'; type IAction (line 24) | type IAction = 'Accept' | 'Reject' | 'Defer' | 'Highlight'; constant RESET_COUNTS (line 26) | const RESET_COUNTS = { FILE: packages/backend-api/src/models/csrf.ts class CSRF (line 21) | class CSRF extends Model { FILE: packages/backend-api/src/models/decision.ts class Decision (line 33) | class Decision extends Model { FILE: packages/backend-api/src/models/moderation_rule.ts constant MODERATION_RULE_ACTION_TYPES (line 32) | const MODERATION_RULE_ACTION_TYPES = [ constant MODERATION_RULE_ACTION_TYPES_SET (line 39) | const MODERATION_RULE_ACTION_TYPES_SET = new Set(MODERATION_RULE_ACTION_... class ModerationRule (line 41) | class ModerationRule extends Model { function isModerationRule (line 111) | function isModerationRule(instance: any) { FILE: packages/backend-api/src/models/moderator_assignment.ts class ModeratorAssignment (line 26) | class ModeratorAssignment extends Model { FILE: packages/backend-api/src/models/preselect.ts class Preselect (line 24) | class Preselect extends Model { FILE: packages/backend-api/src/models/tag.ts constant SUMMARY_SCORE_TAG (line 24) | const SUMMARY_SCORE_TAG = 'SUMMARY_SCORE'; class Tag (line 29) | class Tag extends Model { function findOrCreateTagByKey (line 100) | async function findOrCreateTagByKey(key: string) { FILE: packages/backend-api/src/models/tagging_sensitivity.ts class TaggingSensitivity (line 24) | class TaggingSensitivity extends Model { FILE: packages/backend-api/src/models/user.ts constant USER_GROUP_GENERAL (line 24) | const USER_GROUP_GENERAL = 'general'; constant USER_GROUP_ADMIN (line 25) | const USER_GROUP_ADMIN = 'admin'; constant USER_GROUP_SERVICE (line 26) | const USER_GROUP_SERVICE = 'service'; constant USER_GROUP_YOUTUBE (line 27) | const USER_GROUP_YOUTUBE = 'youtube'; constant USER_GROUP_MODERATOR (line 28) | const USER_GROUP_MODERATOR = 'moderator'; constant USER_GROUPS (line 30) | const USER_GROUPS = [ constant ENDPOINT_TYPE_API (line 39) | const ENDPOINT_TYPE_API = 'perspective-api'; type IRequestedAttributes (line 41) | interface IRequestedAttributes { type IScorerExtra (line 48) | interface IScorerExtra { type IIntegrationExtra (line 56) | interface IIntegrationExtra { type IServiceExtra (line 62) | interface IServiceExtra { class User (line 66) | class User extends Model { method requireEmailForHumans (line 142) | requireEmailForHumans() { function isUser (line 159) | function isUser(instance: Model | null): boolean { FILE: packages/backend-api/src/models/user_category_assignment.ts class UserCategoryAssignment (line 21) | class UserCategoryAssignment extends Model { FILE: packages/backend-api/src/models/user_social_auth.ts class UserSocialAuth (line 22) | class UserSocialAuth extends Model { FILE: packages/backend-api/src/notification_router.ts constant REDIS_NOTIFICATION_CHANNEL (line 24) | const REDIS_NOTIFICATION_CHANNEL = 'update-notification'; type INotificationData (line 26) | interface INotificationData { type IInterestListener (line 32) | interface IInterestListener { function setTestMode (line 39) | function setTestMode() { type NotificationObjectType (line 43) | type NotificationObjectType = 'global' | 'category' | 'article' | 'user'... type NotificationAction (line 44) | type NotificationAction = 'create' | 'modify' | 'delete'; function createSendNotificationHook (line 46) | function createSendNotificationHook( function processNotification (line 57) | function processNotification(data: INotificationData) { function sendNotification (line 63) | async function sendNotification( function receiveNotifications (line 78) | async function receiveNotifications() { function registerInterest (line 95) | function registerInterest(interestListener: IInterestListener) { function clearInterested (line 102) | function clearInterested() { FILE: packages/backend-api/src/pipeline/apiShim.ts type ITextEntry (line 35) | interface ITextEntry { type IAnalyzeCommentRequest (line 39) | interface IAnalyzeCommentRequest { type ISpanScore (line 49) | interface ISpanScore { type IAttributeScores (line 55) | interface IAttributeScores { type IAnalyzeCommentResponse (line 62) | interface IAnalyzeCommentResponse { function StripAttributeVersion (line 69) | function StripAttributeVersion(attributeName: string): string { function createShim (line 79) | async function createShim( FILE: packages/backend-api/src/pipeline/hooks.ts type IPipelineHook (line 20) | interface IPipelineHook { type IHookData (line 26) | interface IHookData { function getOwnerData (line 31) | async function getOwnerData(ownerId: number) { function executeCommentModeratedTask (line 42) | async function executeCommentModeratedTask(data: IHookData) { function registerHooks (line 53) | function registerHooks(ownerType: string, hook: IPipelineHook) { function commentModeratedHook (line 58) | async function commentModeratedHook(comment: Comment) { FILE: packages/backend-api/src/pipeline/pipeline.ts function sendToScorer (line 58) | async function sendToScorer(comment: Comment, scorer: User) { function checkScoringDone (line 101) | async function checkScoringDone(comment: Comment): Promise { function sendForScoring (line 115) | async function sendForScoring(comment: Comment): Promise { function resendCutoff (line 141) | function resendCutoff() { function getCommentsToResendForScoring (line 149) | async function getCommentsToResendForScoring( function resendForScoring (line 171) | async function resendForScoring(comment: Comment): Promise { function processMachineScore (line 180) | async function processMachineScore( function updateMaxSummaryScore (line 247) | async function updateMaxSummaryScore(comment: Comment): Promise { function completeMachineScoring (line 276) | async function completeMachineScoring(commentId: number): Promise { function compileScoresData (line 294) | function compileScoresData(sourceType: string, userId: number, scoreData... function compileSummaryScoresData (line 327) | function compileSummaryScoresData(scoreData: ISummaryScores, comment: Co... function findOrCreateTagsByKey (line 351) | async function findOrCreateTagsByKey( function recordDecision (line 362) | async function recordDecision( function postProcessComment (line 393) | async function postProcessComment(comment: Comment): Promise { FILE: packages/backend-api/src/pipeline/rules.ts type ICompiledScores (line 42) | interface ICompiledScores { function compileScores (line 50) | function compileScores(commentScores: Array): IComp... function resolveComment (line 70) | async function resolveComment( function processRulesForComment (line 204) | async function processRulesForComment(comment: Comment): Promise... function getIsDoneScoring (line 81) | async function getIsDoneScoring(commentId: number) { type ICommentStateParams (line 91) | type ICommentStateParams = Pick< function getDefaultStateData (line 99) | function getDefaultStateData(): ICommentStateParams { function getApproveStateData (line 114) | function getApproveStateData(): Partial { function getRejectStateData (line 125) | function getRejectStateData(): Partial { function getDeferStateData (line 136) | function getDeferStateData(): Partial { function getHighlightStateData (line 147) | function getHighlightStateData(): Partial { function getUnHighlightStateData (line 156) | function getUnHighlightStateData(): Partial { function setCommentState (line 166) | async function setCommentState( function approve (line 195) | async function approve( function reject (line 211) | async function reject( function defer (line 227) | async function defer( function highlight (line 243) | async function highlight( function reset (line 266) | function reset(comment: Comment, source: User | ModerationRule | null ):... function addScore (line 277) | async function addScore(comment: Comment, tag: Tag, user?: User | null):... FILE: packages/backend-api/src/processing/api/index.ts function mountTaskAPI (line 26) | function mountTaskAPI(): express.Router { function processingTriggers (line 37) | function processingTriggers(): express.Router { FILE: packages/backend-api/src/processing/api/known_tasks.ts function createKnownTasksRouter (line 33) | function createKnownTasksRouter(): express.Router { FILE: packages/backend-api/src/processing/api/permissions.ts function verifyAppEngineCron (line 19) | function verifyAppEngineCron(req: express.Request, res: express.Response... FILE: packages/backend-api/src/processing/dashboard.ts function mountQueueDashboard (line 20) | function mountQueueDashboard(): Application { FILE: packages/backend-api/src/processing/tasks/comment_actions.ts type CommentActions (line 22) | type CommentActions = type ICommentActionData (line 32) | interface ICommentActionData { function executeAcceptCommentsTask (line 38) | async function executeAcceptCommentsTask(data: ICommentActionData) { function executeAcceptCommentsAndFlagsTask (line 50) | async function executeAcceptCommentsAndFlagsTask(data: ICommentActionDat... function executeRejectCommentsTask (line 62) | async function executeRejectCommentsTask(data: ICommentActionData) { function executeRejectCommentsAndFlagsTask (line 74) | async function executeRejectCommentsAndFlagsTask(data: ICommentActionDat... function executeDeferCommentsTask (line 86) | async function executeDeferCommentsTask(data: ICommentActionData) { function executeHighlightCommentsTask (line 97) | async function executeHighlightCommentsTask(data: ICommentActionData) { function executeResetCommentsTask (line 107) | async function executeResetCommentsTask(data: ICommentActionData) { function executeResolveFlagsTask (line 114) | async function executeResolveFlagsTask(data: ICommentActionData) { function enqueueCommentAction (line 132) | async function enqueueCommentAction( FILE: packages/backend-api/src/processing/tasks/db_operations.ts function getUser (line 32) | async function getUser(userId?: number | null | undefined) { function getComment (line 45) | async function getComment(commentId: number) { function getTag (line 60) | async function getTag(tagId: number) { function resolveComment (line 70) | async function resolveComment( function resolveFlags (line 85) | async function resolveFlags( function resolveFlagsAndDenormalize (line 101) | async function resolveFlagsAndDenormalize( function resolveCommentAndFlags (line 116) | async function resolveCommentAndFlags( FILE: packages/backend-api/src/processing/tasks/heartbeat.ts constant HEARTBEAT_INTERVAL (line 23) | const HEARTBEAT_INTERVAL = 10; constant PROCESS_COMMENT_LIMIT (line 24) | const PROCESS_COMMENT_LIMIT = 10; function heartbeatTask (line 26) | async function heartbeatTask(tick: number) { function resendComments (line 32) | async function resendComments() { FILE: packages/backend-api/src/processing/tasks/index.ts function startProcessing (line 20) | function startProcessing() { FILE: packages/backend-api/src/processing/tasks/process_machine_score.ts type IProcessMachineScoreData (line 25) | interface IProcessMachineScoreData { function executeProcessMachineScoreTask (line 31) | async function executeProcessMachineScoreTask(data: IProcessMachineScore... function enqueueProcessMachineScoreTask (line 47) | async function enqueueProcessMachineScoreTask(commentId: number, userId:... FILE: packages/backend-api/src/processing/tasks/process_tagging.ts type IProcessTagData (line 25) | interface IProcessTagData { type IProcessTagAdditionData (line 31) | interface IProcessTagAdditionData extends IProcessTagData { function lookUpCommentBySourceId (line 35) | function lookUpCommentBySourceId(sid: string ) { function executeProcessTagAdditionTask (line 42) | async function executeProcessTagAdditionTask(data: IProcessTagAdditionDa... function enqueueProcessTagAdditionTask (line 85) | async function enqueueProcessTagAdditionTask(data: IProcessTagData, runI... function executeProcessTagRevocationTask (line 89) | async function executeProcessTagRevocationTask(data: IProcessTagData) { function enqueueProcessTagRevocationTask (line 120) | async function enqueueProcessTagRevocationTask(data: IProcessTagData, ru... FILE: packages/backend-api/src/processing/tasks/score_actions.ts type ScoreActions (line 27) | type ScoreActions = type ITagCommentsData (line 33) | interface ITagCommentsData { function executeTagCommentsTask (line 39) | async function executeTagCommentsTask(data: ITagCommentsData) { function executeTagCommentSummaryScoresTask (line 50) | async function executeTagCommentSummaryScoresTask(data: ITagCommentsData) { function executeConfirmCommentSummaryScoreTask (line 68) | async function executeConfirmCommentSummaryScoreTask(data: ITagCommentsD... function executeRejectCommentSummaryScoreTask (line 90) | async function executeRejectCommentSummaryScoreTask(data: ITagCommentsDa... function enqueueScoreAction (line 117) | async function enqueueScoreAction( FILE: packages/backend-api/src/processing/tasks/score_tag_actions.ts type IAddTagData (line 24) | interface IAddTagData { type ICommentScoreData (line 32) | interface ICommentScoreData { type IUserCommentScoreData (line 36) | interface IUserCommentScoreData { function executeAddTagTask (line 41) | async function executeAddTagTask(data: IAddTagData) { function executeRemoveTagTask (line 71) | async function executeRemoveTagTask(data: ICommentScoreData) { function executeResetTagTask (line 96) | async function executeResetTagTask(data: ICommentScoreData) { function executeConfirmTagTask (line 111) | async function executeConfirmTagTask(data: IUserCommentScoreData) { function executeRejectTagTask (line 127) | async function executeRejectTagTask(data: IUserCommentScoreData) { function enqueueAddTagTask (line 148) | async function enqueueAddTagTask( function enqueueRemoveTagTask (line 159) | async function enqueueRemoveTagTask(commentScoreId: number, runImmediate... function enqueueResetTagTask (line 163) | async function enqueueResetTagTask(commentScoreId: number, runImmediatel... function enqueueConfirmTagTask (line 167) | async function enqueueConfirmTagTask(userId: number, commentScoreId: num... function enqueueRejectTagTask (line 171) | async function enqueueRejectTagTask(userId: number, commentScoreId: numb... FILE: packages/backend-api/src/processing/tasks/send_comment_for_scoring.ts type ISendCommentForScoringTaskData (line 22) | interface ISendCommentForScoringTaskData { function executeSendCommentForScoringTask (line 26) | async function executeSendCommentForScoringTask(data: ISendCommentForSco... function enqueueSendCommentForScoringTask (line 53) | async function enqueueSendCommentForScoringTask(commentId: number) { FILE: packages/backend-api/src/processing/util.ts function getQueueSingleton (line 26) | function getQueueSingleton(): Queue { function enqueue (line 39) | function enqueue(name: string, data: T, runImmediately = false): Job ... type IQueueHandler (line 55) | interface IQueueHandler { function registerTask (line 59) | function registerTask(name: string, fn: IQueueHandler) { function processKnownTasks (line 63) | function processKnownTasks() { FILE: packages/backend-api/src/processing/worker.ts constant WORK_POLL_INTERVAL (line 43) | const WORK_POLL_INTERVAL = 60 * 1000; constant REDIS_WORK_TRIGGER_CHANNEL (line 44) | const REDIS_WORK_TRIGGER_CHANNEL = 'work_trigger'; type REDIS_WORK_TRIGGER_TYPE (line 45) | type REDIS_WORK_TRIGGER_TYPE = 'kick' | 'start' | 'reset' | 'stop'; function registerWorkItem (line 49) | function registerWorkItem(itemName: string, item: (tick: number) => Prom... function processWorkItems (line 57) | async function processWorkItems() { function startWorking (line 81) | async function startWorking() { function stopWorking (line 88) | async function stopWorking() { function startWorker (line 93) | async function startWorker() { function kickWorker (line 115) | async function kickWorker(type: REDIS_WORK_TRIGGER_TYPE) { function runTask (line 119) | async function runTask(task: string) { FILE: packages/backend-api/src/server-management.ts function registerServer (line 25) | function registerServer(iserver: https.Server | http.Server) { function registerInit (line 29) | function registerInit(iinit: () => void) { function restartService (line 33) | function restartService() { FILE: packages/backend-api/src/server.ts constant STANDALONE (line 62) | const STANDALONE = api_url.startsWith(frontend_url); function init (line 67) | async function init() { FILE: packages/backend-api/src/test/auth/tokens.spec.ts function getExpiredTimestamp (line 49) | function getExpiredTimestamp() { function getRefreshableTimestamp (line 151) | function getRefreshableTimestamp() { FILE: packages/backend-api/src/test/auth/users.spec.ts function assertUser (line 202) | async function assertUser(user: any) { FILE: packages/backend-api/src/test/domain/comments/fixture.ts type IAttributes (line 42) | interface IAttributes { function getCategoryData (line 47) | function getCategoryData(data: IAttributes = {}): IAttributes { function createCategory (line 55) | async function createCategory(obj: Partial = {}): Promise = {}): IAttributes { function createArticle (line 74) | async function createArticle(obj: Partial = {}): Promise = {}): IAttributes { function createComment (line 89) | async function createComment(data?: any): Promise { function getCommentScoreRequestData (line 95) | function getCommentScoreRequestData(data: Partial = {}): IA... function createCommentScoreRequest (line 105) | async function createCommentScoreRequest(data?: object): Promise { function createServiceUser (line 121) | async function createServiceUser(data: IAttributes = {}): Promise { function createModeratorUser (line 130) | async function createModeratorUser(data: IAttributes = {}): Promise { function getCommentScoreData (line 146) | function getCommentScoreData(data: IAttributes = {}): IAttributes { function createCommentScore (line 157) | async function createCommentScore(data?: object): Promise { function getCommentSummaryScoreData (line 163) | function getCommentSummaryScoreData(data: IAttributes = {}): IAttributes { function createCommentSummaryScore (line 172) | async function createCommentSummaryScore(data?: object): Promise { FILE: packages/backend-api/src/test/fixture.ts function makeArticle (line 43) | async function makeArticle(obj = {}): Promise
{ function makeUser (line 57) | async function makeUser(obj = {}): Promise { function makeTag (line 67) | async function makeTag(obj = {}) { function makeTaggingSensitivity (line 75) | async function makeTaggingSensitivity(obj = {}): Promise { function makeCommentScore (line 100) | async function makeCommentScore(obj = {}): Promise { function makeCommentTopScore (line 112) | async function makeCommentTopScore(score: CommentScore): Promise { function makeCommentSummaryScore (line 120) | async function makeCommentSummaryScore( function makeCategory (line 129) | async function makeCategory(obj = {}): Promise { function makeRule (line 137) | async function makeRule(tag: Tag, obj = {}): Promise { function makePreselect (line 147) | async function makePreselect(obj = {}): Promise { function makeFlag (line 155) | async function makeFlag(obj: {}): Promise { function sleep (line 163) | async function sleep(ms: number) { function assertSystemMessage (line 167) | function assertSystemMessage(body: any) { function assertGlobalMessage (line 170) | function assertGlobalMessage(body: any) { function assertArticleUpdateMessage (line 173) | function assertArticleUpdateMessage(body: any) { function assertUserMessage (line 176) | function assertUserMessage(body: any) { function listenForMessages (line 180) | async function listenForMessages( FILE: packages/backend-api/src/test/integration/api/actions.spec.ts constant BASE_URL (line 39) | const BASE_URL = `/services/commentActions`; function checkArticle (line 52) | async function checkArticle( function checkComment (line 66) | async function checkComment( function checkFlag (line 87) | async function checkFlag(x: string, id: number, resolved: boolean, resol... function actOnAComment (line 93) | async function actOnAComment(url: string) { FILE: packages/backend-api/src/test/integration/api/assignments.spec.ts constant BASE_URL (line 42) | const BASE_URL = `/services/assignments`; FILE: packages/backend-api/src/test/integration/api/assistant.spec.ts constant BASE_URL (line 34) | const BASE_URL = `/assistant`; FILE: packages/backend-api/src/test/integration/api/authorCounts.spec.ts constant BASE_URL (line 31) | const BASE_URL = `/services/authorCounts`; function fakeAuthor (line 33) | async function fakeAuthor(authorSourceId: string, approvedCount: number,... FILE: packages/backend-api/src/test/integration/api/editComment.spec.ts constant URL (line 32) | const URL = `/services/editComment`; FILE: packages/backend-api/src/test/integration/api/histogramScores.spec.ts constant BASE_URL (line 39) | const BASE_URL = `/services/histogramScores`; FILE: packages/backend-api/src/test/integration/api/simple-comment.spec.ts constant BASE_URL (line 40) | const BASE_URL = `/services/simple`; FILE: packages/backend-api/src/test/integration/api/simple-ranges.spec.ts constant BASE_URL (line 36) | const BASE_URL = `/services/simple`; FILE: packages/backend-api/src/test/integration/api/simple-user.spec.ts constant BASE_URL (line 23) | const BASE_URL = `/services/simple`; FILE: packages/backend-api/src/test/integration/api/test_helper.ts function setAuthenticatedUser (line 41) | function setAuthenticatedUser(u: User) { FILE: packages/backend-api/src/test/integration/websocket/assign_moderators.spec.ts function assignCategoryModerator (line 78) | async function assignCategoryModerator(data: Array) { function assignArticleModerator (line 128) | async function assignArticleModerator(data: Array) { FILE: packages/backend-api/src/test/integration/websocket/update_notifications.spec.ts function setArticleAttributes (line 76) | async function setArticleAttributes(isCommentingEnabled: boolean, isAuto... FILE: packages/backend-api/src/test/pipeline/state.spec.ts function shouldRecordDecision (line 52) | async function shouldRecordDecision( FILE: packages/backend-api/src/test/test_helper.ts constant TEST_ENVS (line 24) | const TEST_ENVS = ['test', 'circle_ci']; function isTestEnv (line 26) | function isTestEnv() { function cleanDatabase (line 41) | async function cleanDatabase(isRoot?: boolean) { function dropDatabase (line 55) | async function dropDatabase() { FILE: packages/backend-api/src/test/unit/services/histogramScores.spec.ts function createScore (line 54) | async function createScore(categoryLabel: string, scoreValue: number) { function createScore (line 100) | async function createScore(scoreValue: number, category: Category) { function createScore (line 163) | async function createScore(scoreValue: number, article: Article) { FILE: packages/backend-api/src/test/unit/util/notifications.spec.ts function awaitNotification (line 55) | async function awaitNotification(action: () => Promise): Promise = ThunkAction; type IAppDispatch (line 28) | type IAppDispatch = ThunkDispatch; FILE: packages/frontend-web/src/app/auth.ts function setAxiosToken (line 37) | function setAxiosToken(token: string): void { function decodeToken (line 52) | function decodeToken(token: string): any { function connectWebsocket (line 56) | async function connectWebsocket( function completeAuthentication (line 98) | async function completeAuthentication( function verifyCSRF (line 112) | function verifyCSRF(csrf?: string): void { function handleLoginRedirect (line 127) | async function handleLoginRedirect( function start (line 150) | async function start( function logout (line 218) | function logout() { FILE: packages/frontend-web/src/app/components/Arrow/Arrow.tsx constant STYLES (line 22) | const STYLES = stylesheet({ type IArrowProps (line 70) | interface IArrowProps { class Arrow (line 80) | class Arrow extends React.PureComponent { method render (line 82) | render() { FILE: packages/frontend-web/src/app/components/AspectRatio/AspectRatio.tsx type IAspectRatioProps (line 22) | interface IAspectRatioProps extends React.HTMLProps { type IAspectRatioState (line 27) | interface IAspectRatioState { class AspectRatio (line 32) | class AspectRatio extends React.PureComponent< method render (line 40) | render() { method componentDidMount (line 54) | componentDidMount() { method componentWillUnmount (line 60) | componentWillUnmount() { method onResize (line 65) | private onResize() { FILE: packages/frontend-web/src/app/components/AssignModerators/AssignModerators.tsx constant STYLES (line 33) | const STYLES = stylesheet({ function ModeratorListItem (line 53) | function ModeratorListItem(props: { function ModeratorList (line 86) | function ModeratorList(props: { type IAssignModeratorsProps (line 116) | interface IAssignModeratorsProps { function AssignModerators (line 126) | function AssignModerators(props: IAssignModeratorsProps) { FILE: packages/frontend-web/src/app/components/AssignTagsForm.tsx constant STYLES (line 46) | const STYLES = stylesheet({ type IAssignTagsFormProps (line 84) | interface IAssignTagsFormProps { function AssignTagsForm (line 91) | function AssignTagsForm(props: IAssignTagsFormProps) { FILE: packages/frontend-web/src/app/components/Avatar/Avatar.tsx constant AVATAR_TEXT_SCALE_FACTOR (line 27) | const AVATAR_TEXT_SCALE_FACTOR = 2; function Avatar (line 38) | function Avatar(props: { function PseudoAvatar (line 74) | function PseudoAvatar(props: { FILE: packages/frontend-web/src/app/components/Button/Button.tsx constant STYLES (line 29) | const STYLES = stylesheet({ type IButtonProps (line 50) | interface IButtonProps { class Button (line 57) | class Button extends React.PureComponent { method render (line 58) | render() { FILE: packages/frontend-web/src/app/components/CanvasTruncate/CanvasTruncate.tsx function clampLines (line 26) | function clampLines(text: string, width: number, fontStyles: ITypeStyle,... function memoizedClampLines (line 50) | function memoizedClampLines(text: string, width: number, fontStyles: ITy... type ICanvasTruncateProps (line 60) | interface ICanvasTruncateProps { type ICanvasTruncateState (line 67) | interface ICanvasTruncateState { class CanvasTruncate (line 71) | class CanvasTruncate extends React.PureComponent { function CheckboxRow (line 77) | function CheckboxRow(props: ICheckboxRowProps) { FILE: packages/frontend-web/src/app/components/CommentActionButton/CommentActionButton.tsx constant ICON_SIZE (line 31) | const ICON_SIZE = 24; constant STYLES (line 33) | const STYLES = stylesheet({ type ICommentActionProps (line 84) | interface ICommentActionProps { type ICommentActionState (line 96) | interface ICommentActionState { class CommentActionButton (line 101) | class CommentActionButton method render (line 109) | render() { method onMouseEnter (line 159) | onMouseEnter() { method onMouseLeave (line 164) | onMouseLeave() { method onFocus (line 169) | onFocus() { method onBlur (line 174) | onBlur() { FILE: packages/frontend-web/src/app/components/CommentList/CommentList.tsx constant ARROW_SIZE (line 44) | const ARROW_SIZE = 6; constant STYLES (line 46) | const STYLES = stylesheet({ constant ROW_FLEX_STYLE (line 88) | const ROW_FLEX_STYLE = { constant DEFAULT_ROW_HEIGHT (line 94) | const DEFAULT_ROW_HEIGHT = 180; constant ROW_PADDING_WITH_TITLE (line 95) | const ROW_PADDING_WITH_TITLE = 200; constant ROW_PADDING_WITHOUT_TITLE (line 96) | const ROW_PADDING_WITHOUT_TITLE = 130; constant SELECT_ALL_ID (line 98) | const SELECT_ALL_ID = 'select-all-checkbox'; type ICommentListProps (line 100) | interface ICommentListProps { function CommentList (line 129) | function CommentList(props: ICommentListProps) { FILE: packages/frontend-web/src/app/components/CommentList/components/CheckboxColumn/CheckboxColumn.tsx constant STYLES (line 32) | const STYLES = stylesheet({ type ICheckboxColumnProps (line 51) | interface ICheckboxColumnProps { function CheckboxColumn (line 59) | function CheckboxColumn(props: ICheckboxColumnProps) { FILE: packages/frontend-web/src/app/components/CommentList/components/SortColumn/SortColumn.tsx type ISortColumnProps (line 30) | interface ISortColumnProps extends React.HTMLProps { function SortColumn (line 37) | function SortColumn(props: ISortColumnProps) { FILE: packages/frontend-web/src/app/components/CommentText.tsx function linkifyLink (line 29) | function linkifyLink(decoratedHref: string, decoratedText: string, key: ... function CommentText (line 37) | function CommentText(props: { FILE: packages/frontend-web/src/app/components/ConfirmationCircle/ConfirmationCircle.tsx constant STYLES (line 28) | const STYLES = stylesheet({ type IConfirmationCircleProps (line 47) | interface IConfirmationCircleProps { class ConfirmationCircle (line 54) | class ConfirmationCircle extends React.PureComponent) { FILE: packages/frontend-web/src/app/components/ErrorRootStory.tsx function noop (line 20) | function noop() {/**/} FILE: packages/frontend-web/src/app/components/FlagsSummary.tsx function FlagsSummary (line 21) | function FlagsSummary(props: { FILE: packages/frontend-web/src/app/components/HeaderBar.tsx constant STYLES (line 37) | const STYLES = stylesheet({ type IHeaderBarProps (line 91) | interface IHeaderBarProps { function HeaderBar (line 98) | function HeaderBar(props: IHeaderBarProps) { FILE: packages/frontend-web/src/app/components/Icons/IconBase.tsx type IIconBaseProps (line 24) | interface IIconBaseProps { FILE: packages/frontend-web/src/app/components/Icons/index.tsx function makeIcon (line 22) | function makeIcon(contents: JSX.Element): React.ComponentClass { function renderSwatch (line 120) | function renderSwatch() { FILE: packages/frontend-web/src/app/components/LazyLoadComment/CommentBodyStory.tsx function doNothing (line 60) | async function doNothing() {/**/} FILE: packages/frontend-web/src/app/components/LazyLoadComment/LazyLoadComment.tsx constant AVATAR_SIZE (line 54) | const AVATAR_SIZE = 24; type ILinkTargetGetter (line 56) | type ILinkTargetGetter = (commentId: ModelId) => string; type IBasicBodyProps (line 58) | interface IBasicBodyProps { type IBasicBodyState (line 71) | interface IBasicBodyState { class BasicBody (line 76) | class BasicBody extends React.PureComponent { method isModerated (line 114) | isModerated() { method onClickModerateActions (line 121) | onClickModerateActions(action: IConfirmationAction): void { method render (line 138) | render() { type ILinkedBasicBodyProps (line 299) | interface ILinkedBasicBodyProps extends Omit { function LinkedBasicBody (line 304) | function LinkedBasicBody(props: ILinkedBasicBodyProps) { FILE: packages/frontend-web/src/app/components/LazyLoadComment/components.tsx function ArticleTitle (line 28) | function ArticleTitle({articleId}: {articleId: ModelId}) { FILE: packages/frontend-web/src/app/components/MagicTimestamp.tsx function MagicTimestamp (line 21) | function MagicTimestamp(props: { FILE: packages/frontend-web/src/app/components/ModerateButtons/ModerateButtons.tsx constant STYLES (line 43) | const STYLES = stylesheet({ type IModerateButtonsProps (line 88) | interface IModerateButtonsProps { function ModerateButtons (line 102) | function ModerateButtons(props: IModerateButtonsProps) { FILE: packages/frontend-web/src/app/components/NavigationTab/NavigationTab.tsx constant STYLES (line 30) | const STYLES = stylesheet({ type INavigationTabProps (line 92) | interface INavigationTabProps { class NavigationTab (line 101) | class NavigationTab method render (line 104) | render() { FILE: packages/frontend-web/src/app/components/NavigationTab/NavigationTabStory.tsx constant STYLES (line 37) | const STYLES = { FILE: packages/frontend-web/src/app/components/OverflowContainer/OverflowContainer.tsx constant STYLES (line 34) | const STYLES = stylesheet({ type IContainerHeaderProps (line 81) | interface IContainerHeaderProps { function ContainerHeader (line 86) | function ContainerHeader(props: IContainerHeaderProps) { type IContainerFooterProps (line 97) | interface IContainerFooterProps { function ContainerFooter (line 102) | function ContainerFooter(props: IContainerFooterProps) { type IOverflowContainerProps (line 117) | interface IOverflowContainerProps { class OverflowContainer (line 123) | class OverflowContainer extends React.PureComponent): Array { type IRuleBarsProps (line 84) | interface IRuleBarsProps { class RuleBars (line 89) | class RuleBars extends React.Component { method render (line 90) | render() { FILE: packages/frontend-web/src/app/components/ScoresList/ScoresList.tsx constant SCORE_ROW_STYLES (line 36) | const SCORE_ROW_STYLES = stylesheet({ type IScoreRowProps (line 52) | interface IScoreRowProps { constant STYLES (line 72) | const STYLES = stylesheet({ type IScoresListProps (line 106) | interface IScoresListProps { function ScoresList (line 113) | function ScoresList(props: IScoresListProps) { FILE: packages/frontend-web/src/app/components/Scrim/Scrim.tsx constant STYLES (line 23) | const STYLES = stylesheet({ type IScrimProps (line 39) | interface IScrimProps extends React.HTMLProps { class Scrim (line 46) | class Scrim extends React.PureComponent { method render (line 47) | render() { FILE: packages/frontend-web/src/app/components/Scrim/ScrimStory.tsx constant STYLES (line 23) | const STYLES = { FILE: packages/frontend-web/src/app/components/SearchAttribute/SearchAttribute.tsx constant STYLES (line 24) | const STYLES = stylesheet({ type ISearchAttributeProps (line 53) | interface ISearchAttributeProps { class SearchAttribute (line 58) | class SearchAttribute extends React.PureComponent { method render (line 59) | render() { FILE: packages/frontend-web/src/app/components/SearchHeader/SearchHeader.tsx constant STYLES (line 29) | const STYLES = stylesheet({ function HeaderItem (line 79) | function HeaderItem(props: React.PropsWithChildren<{ function SearchHeader (line 95) | function SearchHeader(props: React.PropsWithChildren<{ FILE: packages/frontend-web/src/app/components/SearchHeader/SearchHeaderStory.tsx constant STORY_STYLES (line 34) | const STORY_STYLES = { FILE: packages/frontend-web/src/app/components/SingleComment/SingleComment.tsx constant AVATAR_SIZE (line 80) | const AVATAR_SIZE = 60; constant REPLY_WIDTH (line 82) | const REPLY_WIDTH = 642; constant COMMENT_BODY_STYLES (line 86) | const COMMENT_BODY_STYLES = ` constant STYLES (line 143) | const STYLES = stylesheet({ constant PROFILE_STYLES (line 218) | const PROFILE_STYLES = stylesheet({ constant COMMENT_STYLES (line 292) | const COMMENT_STYLES = stylesheet({ type ISingleCommentProps (line 356) | interface ISingleCommentProps { type ISingleCommentState (line 375) | interface ISingleCommentState { class SingleComment (line 381) | class SingleComment extends React.PureComponent) { method cancelEditedCommentText (line 438) | cancelEditedCommentText(e: React.FormEvent) { method onEditMouseEnter (line 446) | onEditMouseEnter() { method onEditMouseLeave (line 451) | onEditMouseLeave() { method onEditFocus (line 456) | onEditFocus() { method onEditBlur (line 461) | onEditBlur() { method focusText (line 466) | focusText() { method focusName (line 471) | focusName() { method focusLocation (line 476) | focusLocation() { method renderAuthor (line 480) | renderAuthor() { method render (line 548) | render() { FILE: packages/frontend-web/src/app/components/SingleComment/SingleCommentStory.tsx constant STORY_STYLES (line 49) | const STORY_STYLES = { FILE: packages/frontend-web/src/app/components/SingleComment/components/AnnotatedCommentText.tsx constant TOOLTIP_ARROW_SIZE (line 46) | const TOOLTIP_ARROW_SIZE = 16; constant STYLES (line 48) | const STYLES = stylesheet({ type IAnnotatedCommentTextProps (line 133) | interface IAnnotatedCommentTextProps { type IAnnotatedCommentTextState (line 143) | interface IAnnotatedCommentTextState { class AnnotatedCommentText (line 163) | class AnnotatedCommentText extends React.PureComponent): JSX.Elem... method addRange (line 575) | addRange( FILE: packages/frontend-web/src/app/components/SingleComment/components/AuthorCounts.tsx type IAuthorCountsProps (line 26) | interface IAuthorCountsProps { function AuthorCounts (line 30) | function AuthorCounts(props: IAuthorCountsProps) { FILE: packages/frontend-web/src/app/components/SingleComment/components/CommentTags.tsx constant ICON_SIZE (line 42) | const ICON_SIZE = 24; constant STYLES (line 44) | const STYLES = stylesheet({ type ICommentTagsProps (line 132) | interface ICommentTagsProps { type ICommentTagsState (line 139) | interface ICommentTagsState { class CommentTags (line 149) | class CommentTags extends React.PureComponent { type IRangeBarState (line 45) | interface IRangeBarState { class RangeBar (line 49) | class RangeBar extends method render (line 55) | render() { method componentDidMount (line 71) | componentDidMount() { method componentWillUnmount (line 77) | componentWillUnmount() { method onResize (line 82) | onResize() { FILE: packages/frontend-web/src/app/components/Slider/Slider.tsx constant HANDLE_SIZE (line 38) | const HANDLE_SIZE = 22; constant HANDLE_HIT_CONTAINER_SIZE (line 39) | const HANDLE_HIT_CONTAINER_SIZE = 44; constant BAR_HEIGHT (line 40) | const BAR_HEIGHT = 6; constant HANDLE_STYLES (line 42) | const HANDLE_STYLES = stylesheet({ type IHandleProps (line 95) | interface IHandleProps extends React.HTMLProps { type IHandleState (line 102) | interface IHandleState { class Handle (line 106) | class Handle extends React.PureComponent { method render (line 111) | render() { method onMouseEnter (line 152) | onMouseEnter() { method onMouseLeave (line 159) | onMouseLeave() { method onFocus (line 166) | onFocus() { method onBlur (line 171) | onBlur() { type IDraggableHandleProps (line 176) | interface IDraggableHandleProps { type IDraggableHandleState (line 184) | interface IDraggableHandleState { class DraggableHandle (line 188) | class DraggableHandle extends method saveSliderRef (line 197) | saveSliderRef(ref: HTMLDivElement) { method render (line 201) | render() { method onKeyUp (line 224) | onKeyUp(e: React.KeyboardEvent) { method componentDidMount (line 232) | componentDidMount() { method componentWillUnmount (line 238) | componentWillUnmount() { method onResize (line 243) | onResize() { method onDragStart (line 253) | onDragStart(_: any, { x }: { x: number }) { method onDragUpdate (line 262) | onDragUpdate(_: any, { x }: { x: number }) { method onDragEnd (line 271) | onDragEnd(_: any, { x }: { x: number }) { method convertToPercentage (line 283) | convertToPercentage(x: number): number { constant SLIDER_STYLES (line 288) | const SLIDER_STYLES = { type ISliderProps (line 297) | interface ISliderProps extends React.HTMLProps { class Slider (line 301) | class Slider extends React.PureComponent { method render (line 302) | render() { FILE: packages/frontend-web/src/app/components/SplashRoot.tsx constant SPLASH_STYLES (line 21) | const SPLASH_STYLES = stylesheet({ function Bubbles (line 73) | function Bubbles() { function SplashFrame (line 99) | function SplashFrame(props: React.PropsWithChildren<{}>) { function SplashRoot (line 119) | function SplashRoot(props: React.PropsWithChildren<{}>) { FILE: packages/frontend-web/src/app/components/TagLabelRow/TagLabelRow.tsx constant STYLES (line 35) | const STYLES = stylesheet({ type ITagLabelRowProps (line 95) | interface ITagLabelRowProps extends IContextPathParams { type ITagLabelRowState (line 104) | interface ITagLabelRowState { class TagLabelRow (line 108) | class TagLabelRow method handleRowEnter (line 116) | handleRowEnter() { method handleRowLeave (line 123) | handleRowLeave() { method render (line 129) | render() { FILE: packages/frontend-web/src/app/components/TagLabelRow/TagLabelRowStory.tsx constant ACTION_STYLES (line 40) | const ACTION_STYLES = { constant SNAPSHOT_WIDTH (line 49) | const SNAPSHOT_WIDTH = 264; constant SNAPSHOT_HEIGHT (line 50) | const SNAPSHOT_HEIGHT = 76; FILE: packages/frontend-web/src/app/components/ThemeRoot.tsx class ThemeRoot (line 40) | class ThemeRoot extends React.Component { method render (line 41) | render() { FILE: packages/frontend-web/src/app/components/Toast/Toast.tsx constant STYLES (line 21) | const STYLES = stylesheet({ type IToastProps (line 46) | interface IToastProps { class Toast (line 51) | class Toast extends React.PureComponent { method render (line 52) | render() { FILE: packages/frontend-web/src/app/components/Toast/ToastMessage.tsx constant STYLES (line 28) | const STYLES = stylesheet({ type IToastMessageProps (line 58) | interface IToastMessageProps { class ToastMessage (line 64) | class ToastMessage extends React.PureComponent { method render (line 65) | render() { FILE: packages/frontend-web/src/app/components/Toast/ToastStory.tsx constant STORY_STYLES (line 37) | const STORY_STYLES = { FILE: packages/frontend-web/src/app/components/ToolTip/ToolTip.tsx constant BUFFER (line 25) | const BUFFER = 16; function makeArrowStyles (line 33) | function makeArrowStyles(direction: string, color: string, size: number)... function setTranslation (line 178) | function setTranslation(direction = 'topCenter', size: number) { constant STYLES (line 245) | const STYLES = stylesheet({ type ArrowPosition (line 254) | type ArrowPosition = 'topLeft' | 'topCenter' | 'topRight' | 'rightTop' | type IToolTipProps (line 258) | interface IToolTipProps { type IToolTipState (line 273) | interface IToolTipState { class ToolTip (line 277) | class ToolTip extends React.PureComponent { method componentDidMount (line 284) | componentDidMount() { method componentWillUpdate (line 290) | componentWillUpdate(nextProps: IToolTipProps) { method componentWillUnmount (line 298) | componentWillUnmount() { method saveContainerRef (line 303) | saveContainerRef(el: HTMLDivElement) { method checkClick (line 308) | checkClick(e: any) { method render (line 321) | render() { FILE: packages/frontend-web/src/app/components/ToolTip/ToolTipStory.tsx type IToolTipTagProps (line 30) | interface IToolTipTagProps { constant GREY_COLOR (line 34) | const GREY_COLOR = '#efefef'; constant TARGET_POSITION (line 36) | const TARGET_POSITION = { constant CONTAINER_STYLES (line 41) | const CONTAINER_STYLES = { constant MULTIPLE_TAG_STYLES (line 53) | const MULTIPLE_TAG_STYLES = { constant SINGLE_TAG_STYLES (line 79) | const SINGLE_TAG_STYLES = { constant INFO_TOOLTIP_STYLES (line 102) | const INFO_TOOLTIP_STYLES = { class ToolTipWithTag (line 114) | class ToolTipWithTag extends React.PureComponent { method render (line 115) | render() { class ToolTipWithTags (line 144) | class ToolTipWithTags extends React.PureComponent { method render (line 145) | render() { class InfoToolTip (line 209) | class InfoToolTip extends React.PureComponent { method render (line 210) | render() { constant TARGET_STYLE (line 221) | const TARGET_STYLE = { class ToolTipTarget (line 232) | class ToolTipTarget extends React.PureComponent { method render (line 233) | render() { FILE: packages/frontend-web/src/app/components/article_controls.tsx type IControlFlagProps (line 40) | interface IControlFlagProps { class ControlFlag (line 45) | class ControlFlag extends React.Component { method render (line 46) | render() { type IControlPopupProps (line 68) | interface IControlPopupProps { type IControlPopupState (line 74) | interface IControlPopupState { class ArticleControlPopup (line 79) | class ArticleControlPopup extends React.Component) { method handleCommentingEnabledClicked (line 89) | handleCommentingEnabledClicked() { method handleAutoModeratedClicked (line 94) | handleAutoModeratedClicked() { method saveControls (line 102) | saveControls() { method render (line 106) | render() { type IArticleControlIconProps (line 151) | interface IArticleControlIconProps { class ArticleControlIcon (line 163) | class ArticleControlIcon extends React.Component>) { FILE: packages/frontend-web/src/app/platform/dataService.ts type IValidModelNames (line 46) | type IValidModelNames = function serializeParams (line 55) | function serializeParams(originalParams?: Partial | null): stri... constant BASE_RANGE_ATTRIBUTES (line 70) | const BASE_RANGE_ATTRIBUTES = ['categoryId', 'tagId', 'lowerThreshold', ... constant AUTH_URL (line 75) | const AUTH_URL = `/auth`; constant SERVICES_URL (line 80) | const SERVICES_URL = `/services`; function serviceURL (line 85) | function serviceURL(service: string, path?: string | null, params?: Part... function listTextSizesByIds (line 89) | async function listTextSizesByIds( function packCommentScoreData (line 102) | function packCommentScoreData(data: Array<{ commentId: ModelId, score: n... function packCommentDateData (line 106) | function packCommentDateData(data: Array<{ commentId: ModelId, date: str... function listHistogramScoresByArticle (line 113) | async function listHistogramScoresByArticle( function listMaxSummaryScoreByArticle (line 125) | async function listMaxSummaryScoreByArticle( function listHistogramScoresByArticleByDate (line 136) | async function listHistogramScoresByArticleByDate( function listHistogramScoresByCategory (line 147) | async function listHistogramScoresByCategory( function listMaxHistogramScoresByCategory (line 159) | async function listMaxHistogramScoresByCategory( function listHistogramScoresByCategoryByDate (line 170) | async function listHistogramScoresByCategoryByDate( function getComments (line 181) | async function getComments( function search (line 192) | async function search( function editAndRescoreCommentRequest (line 209) | async function editAndRescoreCommentRequest( function updateCategoryModerators (line 227) | async function updateCategoryModerators(categoryId: ModelId, moderatorId... function updateArticleModerators (line 232) | async function updateArticleModerators(articleId: ModelId, moderatorIds:... type IModeratedComments (line 237) | type IModeratedComments = Readonly<{ function getModeratedCommentIdsForArticle (line 248) | async function getModeratedCommentIdsForArticle( function getModeratedCommentIdsForCategory (line 259) | async function getModeratedCommentIdsForCategory( function getArticles (line 270) | async function getArticles(ids: Array): Promise { function checkAuthorization (line 413) | async function checkAuthorization(): Promise { function makeCommentAction (line 419) | async function makeCommentAction(path: string, ids: Array): Prom... function makeCommentActionForId (line 430) | async function makeCommentActionForId(path: string, commentId: string): ... function deleteCommentScoreRequest (line 435) | async function deleteCommentScoreRequest(commentId: string, commentScore... function highlightCommentsRequest (line 440) | function highlightCommentsRequest(ids: Array): Promise { function resetCommentsRequest (line 444) | function resetCommentsRequest(ids: Array): Promise { function approveCommentsRequest (line 448) | function approveCommentsRequest(ids: Array): Promise { function approveFlagsAndCommentsRequest (line 452) | function approveFlagsAndCommentsRequest(ids: Array): Promise): Promise { function deferCommentsRequest (line 460) | function deferCommentsRequest(ids: Array): Promise { function rejectCommentsRequest (line 464) | function rejectCommentsRequest(ids: Array): Promise { function rejectFlagsAndCommentsRequest (line 468) | function rejectFlagsAndCommentsRequest(ids: Array): Promise { function tagCommentsRequest (line 472) | function tagCommentsRequest(ids: Array, tagId: string): Promise<... function tagCommentSummaryScoresRequest (line 476) | function tagCommentSummaryScoresRequest(ids: Array, tagId: strin... function confirmCommentSummaryScoreRequest (line 480) | async function confirmCommentSummaryScoreRequest(commentId: string, tagI... function rejectCommentSummaryScoreRequest (line 485) | async function rejectCommentSummaryScoreRequest(commentId: string, tagId... function tagCommentsAnnotationRequest (line 489) | async function tagCommentsAnnotationRequest(commentId: string, tagId: st... function confirmCommentScoreRequest (line 501) | async function confirmCommentScoreRequest(commentId: string, commentScor... function rejectCommentScoreRequest (line 506) | async function rejectCommentScoreRequest(commentId: string, commentScore... function resetCommentScoreRequest (line 511) | async function resetCommentScoreRequest(commentId: string, commentScoreI... function listAuthorCounts (line 516) | async function listAuthorCounts( function listSystemUsers (line 527) | async function listSystemUsers(type: string): Promise> { function kickProcessor (line 535) | async function kickProcessor(type: string): Promise { function activateCommentSource (line 539) | async function activateCommentSource(categoryId: ModelId, activate: bool... function syncCommentSource (line 543) | async function syncCommentSource(categoryId: ModelId): Promise { type IApiConfiguration (line 547) | interface IApiConfiguration { function getOAuthConfig (line 552) | async function getOAuthConfig(): Promise { function updateOAuthConfig (line 557) | async function updateOAuthConfig(config: IApiConfiguration): Promise { method handleScoreClick (line 969) | handleScoreClick(scoreClicked: ICommentSummaryScoreModel) { method onPressEscape (line 984) | onPressEscape() { FILE: packages/frontend-web/src/app/scenes/Comments/components/CommentDetail/index.ts type ICommentDetailOwnProps (line 41) | type ICommentDetailOwnProps = Pick; function hashString (line 110) | function hashString(str: string): string { function getCommentPagingRecord (line 151) | function getCommentPagingRecord(state: IAppState) { function getPagingIsFromBatch (line 155) | function getPagingIsFromBatch(state: IAppState) { function getPagingSource (line 160) | function getPagingSource(state: IAppState, currentHash: string) { function getPagingLink (line 167) | function getPagingLink(state: IAppState, currentHash: string) { function getPagingHash (line 174) | function getPagingHash(state: IAppState) { function getPagingCommentIds (line 179) | function getPagingCommentIds(state: IAppState) { function getPagingCommentIndexes (line 184) | function getPagingCommentIndexes(state: IAppState) { function getCurrentCommentIndex (line 189) | function getCurrentCommentIndex(state: IAppState, currentHash: string, c... function getNextCommentId (line 202) | function getNextCommentId(state: IAppState, currentHash: string, comment... function getPreviousCommentId (line 218) | function getPreviousCommentId(state: IAppState, currentHash: string, com... type ICommentDetailState (line 234) | type ICommentDetailState = Readonly<{ function getScores (line 246) | function getScores(state: IAppState) { FILE: packages/frontend-web/src/app/scenes/Comments/components/ModeratedComments/ModeratedComments.tsx constant ARROW_SIZE (line 83) | const ARROW_SIZE = 6; constant MODERATION_CONTAINER_HEIGHT (line 85) | const MODERATION_CONTAINER_HEIGHT = 269; constant MODERATION_CONTAINER_HEIGHT_SHORT (line 86) | const MODERATION_CONTAINER_HEIGHT_SHORT = 202; constant TOAST_DELAY (line 87) | const TOAST_DELAY = 6000; constant ACTION_PLURAL (line 107) | const ACTION_PLURAL: { constant STYLES (line 117) | const STYLES = stylesheet({ constant LOADING_COMMENTS_MESSAGING (line 245) | const LOADING_COMMENTS_MESSAGING = 'Loading comments.'; constant NO_COMMENTS_MESSAGING (line 246) | const NO_COMMENTS_MESSAGING = 'No matching comments found.'; type IModeratedCommentsProps (line 265) | interface IModeratedCommentsProps extends RouteComponentProps { method confirmationClose (line 632) | confirmationClose() { method triggerActionToast (line 637) | triggerActionToast(action: ICommentAction, count: number, callback?: (... method onTagButtonClick (line 664) | onTagButtonClick(tagId: string) { method onTableScroll (line 671) | onTableScroll(position: number) { method calculateTaggingTriggerPosition (line 677) | calculateTaggingTriggerPosition(ref: any) { method toggleTaggingToolTip (line 693) | toggleTaggingToolTip() { method handleAssignTagsSubmit (line 700) | async handleAssignTagsSubmit(commentId: ModelId, selectedTagIds: Set) { method getSortOptions (line 758) | getSortOptions(): List { method onSelectAllChange (line 776) | async onSelectAllChange() { method onSelectionChange (line 781) | async onSelectionChange(id: string) { method openPopup (line 786) | openPopup() { method closePopup (line 791) | closePopup() { method applyRules (line 796) | applyRules(isCommentingEnabled: boolean, isAutoModerated: boolean): vo... FILE: packages/frontend-web/src/app/scenes/Comments/components/ModeratedComments/index.ts type IModeratedCommentsDispatchProps (line 44) | type IModeratedCommentsDispatchProps = Pick< function mapDispatchToProps (line 72) | function mapDispatchToProps(dispatch: IAppDispatch): IModeratedCommentsD... FILE: packages/frontend-web/src/app/scenes/Comments/components/ModeratedComments/store/commentListLoader.ts function loadCommentList (line 35) | function loadCommentList( FILE: packages/frontend-web/src/app/scenes/Comments/components/ModeratedComments/store/index.ts type IModeratedCommentsGlobalState (line 24) | type IModeratedCommentsGlobalState = Readonly<{ FILE: packages/frontend-web/src/app/scenes/Comments/components/ModeratedComments/store/moderatedComments.ts constant ACTION_PLURAL (line 30) | const ACTION_PLURAL: { type ILoadModeratedCommentsForArticleCompletePayload (line 44) | type ILoadModeratedCommentsForArticleCompletePayload = { type ILoadModeratedCommentsForCategoriesCompletePayload (line 52) | type ILoadModeratedCommentsForCategoriesCompletePayload = { type ISetCommentsModerationForArticlesPayload (line 60) | type ISetCommentsModerationForArticlesPayload = { type ISetCommentsModerationForCategoriesPayload (line 70) | type ISetCommentsModerationForCategoriesPayload = { function loadModeratedCommentsForArticle (line 80) | async function loadModeratedCommentsForArticle( function loadModeratedCommentsForCategory (line 90) | async function loadModeratedCommentsForCategory( function setCommentsModerationStatus (line 100) | function setCommentsModerationStatus( function shouldRemoveFromList (line 125) | function shouldRemoveFromList(currentModeration: string, moderationActio... type IModeratedCommentsState (line 134) | type IModeratedCommentsState = Readonly<{ function getRecord (line 252) | function getRecord(state: IAppState) { function getIsLoading (line 256) | function getIsLoading(state: IAppState) { function getModeratedComments (line 261) | function getModeratedComments(state: IAppState, params: IModeratedCommen... FILE: packages/frontend-web/src/app/scenes/Comments/components/NewComments/NewComments.tsx constant ARROW_SIZE (line 106) | const ARROW_SIZE = 6; constant TOAST_DELAY (line 107) | const TOAST_DELAY = 6000; constant ACTION_PLURAL (line 109) | const ACTION_PLURAL: { constant LOADING_COMMENTS_MESSAGING (line 119) | const LOADING_COMMENTS_MESSAGING = 'Loading comments.'; constant NO_COMMENTS_MESSAGING (line 120) | const NO_COMMENTS_MESSAGING = 'No matching comments found.'; constant STYLES (line 122) | const STYLES = stylesheet({ type INewCommentsProps (line 263) | interface INewCommentsProps extends RouteComponentProps { method confirmationClose (line 908) | confirmationClose() { method onRuleInfoClose (line 913) | onRuleInfoClose() { method handleUndoClick (line 918) | handleUndoClick() { method setQueryStringParam (line 924) | setQueryStringParam(pos1: number, pos2: number, sort: string): void { method saveCommentRow (line 943) | saveCommentRow(commentId: string): void { method onSortChange (line 948) | onSortChange(event: React.FormEvent) { method onBatchCommentsChangeEnd (line 955) | onBatchCommentsChangeEnd(_commentIds: Array, pos1: number, pos... method onSelectAllChange (line 960) | async onSelectAllChange() { method onSelectionChange (line 965) | async onSelectionChange(id: string) { method onTableScroll (line 970) | onTableScroll(position: number) { method openPopup (line 976) | openPopup() { method closePopup (line 981) | closePopup() { method applyRules (line 986) | applyRules(isCommentingEnabled: boolean, isAutoModerated: boolean): vo... FILE: packages/frontend-web/src/app/scenes/Comments/components/NewComments/components/BatchSelector/BatchSelector.tsx constant ARROW_SIZE (line 46) | const ARROW_SIZE = 6; constant STYLES (line 48) | const STYLES = stylesheet({ type IBatchSelectorProps (line 88) | interface IBatchSelectorProps { type IBatchSelectorState (line 100) | interface IBatchSelectorState { class BatchSelector (line 107) | class BatchSelector method componentWillUpdate (line 119) | componentWillUpdate(nextProps: IBatchSelectorProps) { method render (line 142) | render() { method getSelectedComments (line 213) | private getSelectedComments(selectionPosition1: number, selectionPosit... method onHandle1Change (line 237) | onHandle1Change(num: number) { method onHandle2Change (line 248) | onHandle2Change(num: number) { method onHandle1ChangeEnd (line 259) | onHandle1ChangeEnd(num: number) { method onHandle2ChangeEnd (line 266) | onHandle2ChangeEnd(num: number) { method onDataChange (line 272) | onDataChange(pos1: number, pos2: number): void { method onDataChangeEnd (line 282) | onDataChangeEnd(pos1: number, pos2: number): void { method convertPositionToLabel (line 292) | private convertPositionToLabel(x: number) { FILE: packages/frontend-web/src/app/scenes/Comments/components/NewComments/index.ts function mapDispatchToProps (line 49) | function mapDispatchToProps(dispatch: IAppDispatch): Partial { function getSelectedTag (line 43) | function getSelectedTag(state: IAppState, tag?: string): ITagModel | null { function getCommentIDsInRange (line 47) | function getCommentIDsInRange( FILE: packages/frontend-web/src/app/scenes/Comments/components/Shortcuts/Shortcuts.tsx constant KEY (line 38) | const KEY = 'alt'; constant STYLES (line 40) | const STYLES = stylesheet({ type IShortcutProps (line 106) | interface IShortcutProps { class Shortcuts (line 110) | class Shortcuts extends React.Component { method render (line 111) | render() { FILE: packages/frontend-web/src/app/scenes/Comments/components/SubheaderBar.tsx constant STYLES (line 36) | const STYLES = stylesheet({ constant CELLS (line 83) | const CELLS = [ function SubheaderBar (line 93) | function SubheaderBar(_props: {}) { function SettingsSubheaderBar (line 144) | function SettingsSubheaderBar(_props: {}) { FILE: packages/frontend-web/src/app/scenes/Comments/components/TagSelector/TagSelector.tsx constant ACTION_STYLES (line 43) | const ACTION_STYLES = { constant SNAPSHOT_WIDTH (line 76) | const SNAPSHOT_WIDTH = 264; constant SNAPSHOT_HEIGHT (line 77) | const SNAPSHOT_HEIGHT = 76; function getImagePath (line 86) | function getImagePath(base: string, id: string, tagId: string) { type ITagSelectorProps (line 105) | interface ITagSelectorProps extends RouteComponentProps { method onCloseClick (line 111) | onCloseClick(e: React.MouseEvent) { method render (line 116) | render() { FILE: packages/frontend-web/src/app/scenes/Comments/components/ThreadedCommentDetail/ThreadedCommentDetail.tsx constant HEADER_HEIGHT (line 44) | const HEADER_HEIGHT = 75; constant STYLES (line 46) | const STYLES = stylesheet({ function ThreadedCommentDetail (line 91) | function ThreadedCommentDetail() { FILE: packages/frontend-web/src/app/scenes/Comments/components/ThreadedCommentDetail/components/ThreadedComment/ThreadedComment.tsx constant STYLES (line 44) | const STYLES = stylesheet({ type IReplyItemProps (line 96) | interface IReplyItemProps { function ReplyItem (line 105) | function ReplyItem(props: IReplyItemProps) { type IThreadedCommentProps (line 134) | interface IThreadedCommentProps { function ThreadedComment (line 139) | function ThreadedComment(props: IThreadedCommentProps) { FILE: packages/frontend-web/src/app/scenes/Comments/components/ThreadedCommentDetail/components/ThreadedComment/ThreadedCommentStory.tsx function doNothing (line 26) | async function doNothing() {/**/} constant STORY_STYLES (line 102) | const STORY_STYLES = { FILE: packages/frontend-web/src/app/scenes/Comments/scoreFilters.ts function getSensitivitiesForCategory (line 26) | function getSensitivitiesForCategory( function isSummaryAboveThreshold (line 35) | function isSummaryAboveThreshold( function isScoreAboveThreshold (line 51) | function isScoreAboveThreshold( function getSummaryScoresAboveThreshold (line 67) | function getSummaryScoresAboveThreshold( function getSummaryScoresBelowThreshold (line 78) | function getSummaryScoresBelowThreshold( function dedupeScoreTypes (line 89) | function dedupeScoreTypes(scores: Array): Array { type ISearchResultsState (line 222) | interface ISearchResultsState { class SearchResults (line 239) | class SearchResults extends React.Component) { method onSelectAllChange (line 294) | async onSelectAllChange() { method onSelectionChange (line 299) | async onSelectionChange(id: string) { method matchAction (line 303) | matchAction(action: ICommentAction) { method onConfirmationClose (line 320) | onConfirmationClose() { method handleUndoClick (line 325) | handleUndoClick() { method dispatchConfirmedAction (line 331) | async dispatchConfirmedAction(action: ICommentAction, ids?: Array { method calculateTaggingTriggerPosition (line 344) | calculateTaggingTriggerPosition(ref: HTMLElement) { method toggleTaggingToolTip (line 360) | toggleTaggingToolTip() { method confirmationClose (line 367) | confirmationClose() { method onTagButtonClick (line 372) | onTagButtonClick(tagId: string) { method triggerActionToast (line 379) | triggerActionToast(action: ICommentAction, count: number, callback: (a... method handleAssignTagsSubmit (line 406) | async handleAssignTagsSubmit(commentId: ModelId, selectedTagIds: Set; type IAllCommentIDsState (line 35) | type IAllCommentIDsState = Readonly<{ function getStateRecord (line 62) | function getStateRecord(state: IAppState) { function getAllCommentIds (line 66) | function getAllCommentIds(state: IAppState) { function getIsLoading (line 70) | function getIsLoading(state: IAppState) { FILE: packages/frontend-web/src/app/scenes/Search/types.ts type ISearchScope (line 17) | interface ISearchScope { FILE: packages/frontend-web/src/app/scenes/Settings/Ranges.tsx function StatusScrim (line 37) | function StatusScrim(props: {visible: boolean, submitStatus: string}) { type IRangesProps (line 51) | interface IRangesProps { type IRangesState (line 54) | interface IRangesState { class Ranges (line 59) | class Ranges extends React.Component { method componentWillReceiveProps (line 64) | componentWillReceiveProps(_: Readonly) { method setSaving (line 73) | setSaving(isSaving: boolean) { method setError (line 88) | setError(message: string) { method render (line 95) | render() { FILE: packages/frontend-web/src/app/scenes/Settings/Settings.tsx function StatusScrim (line 79) | function StatusScrim(props: {visible: boolean, submitStatus: string}) { function loadSystemUsers (line 93) | async function loadSystemUsers(dispatch: IAppDispatch, type: string): Pr... function Settings (line 99) | function Settings(_props: {}) { FILE: packages/frontend-web/src/app/scenes/Settings/components/AddUsers.tsx type IAddUsersProps (line 37) | interface IAddUsersProps { type IAddUsersState (line 43) | interface IAddUsersState { class AddUsers (line 48) | class AddUsers extends React.Component { method isNewUserValid (line 55) | isNewUserValid(user: IUserModel): boolean { method onInputChange (line 73) | onInputChange(inputType: 'name' | 'email' | 'group' | 'isActive', valu... method onSubmit (line 89) | onSubmit() { method render (line 93) | render() { FILE: packages/frontend-web/src/app/scenes/Settings/components/ColorSelect/ColorSelect.tsx constant STYLES (line 26) | const STYLES = stylesheet({ type IColorSelectProps (line 53) | interface IColorSelectProps { class ColorSelect (line 59) | class ColorSelect extends React.Component { method onChange (line 61) | onChange(e: React.ChangeEvent) { method render (line 67) | render() { FILE: packages/frontend-web/src/app/scenes/Settings/components/EditUsers.tsx constant STYLES (line 37) | const STYLES = stylesheet({ type IEditUsersProps (line 44) | interface IEditUsersProps { type IEditUsersState (line 50) | interface IEditUsersState { class EditUsers (line 55) | class EditUsers extends React.Component { method isUserValid (line 63) | isUserValid(user: IUserModel): boolean { method onInputChange (line 81) | onInputChange(inputType: 'name' | 'email' | 'group' | 'isActive', valu... method iseEditedUserValid (line 97) | iseEditedUserValid(user: IUserModel): boolean { method onSubmit (line 102) | onSubmit() { method render (line 106) | render() { FILE: packages/frontend-web/src/app/scenes/Settings/components/EditYouTubeUser.tsx constant STYLES (line 38) | const STYLES = stylesheet({ type IYoutubeCategoryProps (line 96) | interface IYoutubeCategoryProps { function YoutubeCategory (line 100) | function YoutubeCategory(props: IYoutubeCategoryProps) { type IEditYouTubeUserProps (line 145) | interface IEditYouTubeUserProps { function EditYouTubeUser (line 151) | function EditYouTubeUser(props: IEditYouTubeUserProps) { FILE: packages/frontend-web/src/app/scenes/Settings/components/LabelSettings/LabelSettings.tsx constant SMALLER_SCREEN (line 40) | const SMALLER_SCREEN = window.innerWidth < 1200; constant STYLES (line 41) | const STYLES = stylesheet({ type ILabelSettingsProps (line 75) | interface ILabelSettingsProps { class LabelSettings (line 84) | class LabelSettings extends React.Component { method onLabelChange (line 86) | onLabelChange(e: React.ChangeEvent) { method onDescriptionChange (line 92) | onDescriptionChange(e: React.ChangeEvent) { method onColorChange (line 98) | onColorChange(color: string) { method onTagIsInBatchViewChange (line 103) | onTagIsInBatchViewChange(e: React.MouseEvent) { method onTagIsTaggableChange (line 110) | onTagIsTaggableChange(e: React.MouseEvent) { method onTagInSummaryScoreChange (line 117) | onTagInSummaryScoreChange(e: React.MouseEvent) { method onDeletePress (line 124) | onDeletePress(e: React.MouseEvent) { method render (line 129) | render() { FILE: packages/frontend-web/src/app/scenes/Settings/components/ManageAutomatedRules.tsx function ManageAutomatedRules (line 42) | function ManageAutomatedRules(props: { FILE: packages/frontend-web/src/app/scenes/Settings/components/ManagePreselects.tsx function ManagePreselects (line 42) | function ManagePreselects(props: { FILE: packages/frontend-web/src/app/scenes/Settings/components/ManageSensitivities.tsx function ManageSensitivities (line 42) | function ManageSensitivities(props: { FILE: packages/frontend-web/src/app/scenes/Settings/components/ManageTags.tsx constant SMALLER_SCREEN (line 34) | const SMALLER_SCREEN = window.innerWidth < 1200; constant LOCAL_STYLES (line 35) | const LOCAL_STYLES: any = stylesheet({ function validateColor (line 58) | function validateColor(color: string): boolean { function ManageTags (line 68) | function ManageTags(props: { FILE: packages/frontend-web/src/app/scenes/Settings/components/OAuthConfig.tsx type IOAuthConfigProps (line 32) | interface IOAuthConfigProps extends IApiConfiguration { function OAuthConfig (line 44) | function OAuthConfig(props: IOAuthConfigProps) { function EditOAuthScrim (line 119) | function EditOAuthScrim(props: { FILE: packages/frontend-web/src/app/scenes/Settings/components/RuleRow/RuleRow.tsx constant INPUT_HEIGHT (line 53) | const INPUT_HEIGHT = 36; constant STYLES (line 54) | const STYLES = stylesheet({ type IRuleRowProps (line 86) | interface IRuleRowProps { class RuleRow (line 108) | class RuleRow extends React.Component { method onNumberFieldChange (line 111) | onNumberFieldChange(callback: ((value: number) => any), e: React.Chang... method onCategoryFieldChange (line 117) | onCategoryFieldChange(callback: ((value: string) => any), e: React.Cha... method notifyWrapperOfActionChange (line 123) | notifyWrapperOfActionChange(action: IModerationAction) { method render (line 134) | render() { FILE: packages/frontend-web/src/app/scenes/Settings/components/SaveButtons.tsx constant STYLES (line 25) | const STYLES: any = stylesheet({ function SaveButtons (line 34) | function SaveButtons(props: { FILE: packages/frontend-web/src/app/scenes/Settings/components/UserForm.tsx type IAddUsersProps (line 31) | interface IAddUsersProps { constant GROUPS (line 36) | const GROUPS = List([ class UserForm (line 41) | class UserForm extends React.Component { method onValueChange (line 44) | onValueChange(property: 'name' | 'email' | 'group' , e: React.ChangeEv... method onIsActiveChange (line 50) | onIsActiveChange(e: React.ChangeEvent) { method render (line 54) | render() { FILE: packages/frontend-web/src/app/scenes/Settings/components/rows.tsx type IUserProps (line 34) | interface IUserProps { function UserRow (line 39) | function UserRow({ user, handleEditUser }: IUserProps) { function ServiceUserRow (line 69) | function ServiceUserRow({ user, handleEditUser }: IUserProps) { function ModeratorUserRow (line 110) | function ModeratorUserRow({ user }: {user: IUserModel}) { function YoutubeUserRow (line 129) | function YoutubeUserRow({ user, handleEditUser }: IUserProps) { FILE: packages/frontend-web/src/app/scenes/Settings/components/users.tsx function UserSettings (line 42) | function UserSettings(props: { function ServiceUserSettings (line 97) | function ServiceUserSettings(props: { function ModeratorSettings (line 151) | function ModeratorSettings(props: { function YouTubeUsersSettings (line 195) | function YouTubeUsersSettings(props: { function AddUserScrim (line 260) | function AddUserScrim(props: { function EditUserScrim (line 294) | function EditUserScrim(props: { function EditYouTubeScrim (line 328) | function EditYouTubeScrim(props: { FILE: packages/frontend-web/src/app/scenes/Settings/settingsStyles.ts constant ARROW_SIZE (line 28) | const ARROW_SIZE = 6; constant ROW_HEIGHT (line 29) | const ROW_HEIGHT = 42; constant SETTINGS_STYLES (line 31) | const SETTINGS_STYLES = { FILE: packages/frontend-web/src/app/scenes/Settings/store.ts function diff (line 43) | function diff(original: List, current: List<... function addUser (line 68) | async function addUser(user: IUserModel): Promise { function modifyUser (line 72) | async function modifyUser(user: IUserModel): Promise { function addTag (line 76) | async function addTag(tag: ITagModel): Promise { function modifyTag (line 83) | async function modifyTag(tag: ITagModel): Promise { function deleteTag (line 87) | async function deleteTag(tagId: ModelId): Promise { function updateTags (line 91) | async function updateTags(oldTags: List, newTags: List { function modifyRule (line 104) | async function modifyRule(rule: IRuleModel): Promise { function deleteRule (line 108) | async function deleteRule(ruleId: ModelId): Promise { function updateRules (line 112) | async function updateRules(oldRules: List, newRules: List { function modifyPreselect (line 125) | async function modifyPreselect(preselect: IPreselectModel): Promise { function deletePreselect (line 129) | async function deletePreselect(preselectId: ModelId): Promise { function updatePreselects (line 133) | async function updatePreselects(oldPreselects: List, ne... function addTaggingSensitivity (line 142) | async function addTaggingSensitivity(taggingSensitivity: ITaggingSensiti... function modifyTaggingSensitivity (line 146) | async function modifyTaggingSensitivity(taggingSensitivity: ITaggingSens... function deleteTaggingSensitivity (line 150) | async function deleteTaggingSensitivity(taggingSensitivityId: ModelId): ... function updateTaggingSensitivities (line 154) | async function updateTaggingSensitivities(oldRules: List) { function sortArticles (line 346) | function sortArticles(articles: Array, sort: Array { method componentDidMount (line 166) | componentDidMount(): void { method render (line 174) | render() { FILE: packages/frontend-web/src/app/scenes/Tables/FilterSidebar.tsx constant SIDEBAR_WIDTH (line 75) | const SIDEBAR_WIDTH = 350; constant STYLES (line 77) | const STYLES = stylesheet({ type IFilterSidebarProps (line 124) | interface IFilterSidebarProps { type IFilterSidebarState (line 136) | interface IFilterSidebarState { constant DATE_FILTER_RANGE (line 153) | const DATE_FILTER_RANGE = 'custom'; class FilterSidebar (line 155) | class FilterSidebar extends React.Component, ... method setFilter (line 232) | setFilter(key: string) { method changeTitleFilter (line 239) | changeTitleFilter(e: SyntheticEvent) { method setTitleFilter (line 244) | setTitleFilter() { method checkForTitleEnter (line 249) | checkForTitleEnter(e: KeyboardEvent) { method changeDateFilter (line 256) | changeDateFilter(currentFilter: Array, key: string, value... method changeDateFilterKey (line 261) | changeDateFilterKey(e: React.ChangeEvent) { method changeDateFilterSelect (line 286) | changeDateFilterSelect(e: React.ChangeEvent) { method changeDateFilterFrom (line 313) | changeDateFilterFrom(e: SyntheticEvent) { method changeDateFilterTo (line 319) | changeDateFilterTo(e: SyntheticEvent) { method setModerator (line 325) | setModerator(id: string) { method setModeratorUnassigned (line 335) | setModeratorUnassigned() { method clearFilters (line 340) | clearFilters() { method renderModerator (line 345) | renderModerator(u: IUserModel) { method renderCustomDateControls (line 361) | renderCustomDateControls() { method render (line 391) | render() { FILE: packages/frontend-web/src/app/scenes/Tables/TableFrame.tsx type ITableFrameProps (line 49) | interface ITableFrameProps extends RouteComponentProps { function updateFilter (line 43) | function updateFilter(filterList: Array, newKey: string, ne... function getFilterString (line 51) | function getFilterString(filterList: Array): string { function getFilterValue (line 59) | function getFilterValue(filterList: Array, key: string) { type IFilterContext (line 67) | interface IFilterContext { constant FILTER_TITLE (line 71) | const FILTER_TITLE = 'title'; constant FILTER_CATEGORY (line 72) | const FILTER_CATEGORY = 'category'; constant FILTER_CATEGORY_NONE (line 73) | const FILTER_CATEGORY_NONE = 'none'; constant FILTER_MODERATORS (line 74) | const FILTER_MODERATORS = 'moderators'; constant FILTER_MODERATORS_UNASSIGNED (line 75) | const FILTER_MODERATORS_UNASSIGNED = 'unassigned'; constant FILTER_TOGGLE_ON (line 78) | const FILTER_TOGGLE_ON = 'yes'; constant FILTER_TOGGLE_OFF (line 79) | const FILTER_TOGGLE_OFF = 'no'; constant FILTER_TO_REVIEW (line 80) | const FILTER_TO_REVIEW = 'commentsToReview'; constant FILTER_TO_REVIEW_ANY (line 81) | const FILTER_TO_REVIEW_ANY = 'any'; constant FILTER_TO_REVIEW_NEW (line 82) | const FILTER_TO_REVIEW_NEW = 'new'; constant FILTER_TO_REVIEW_DEFERRED (line 83) | const FILTER_TO_REVIEW_DEFERRED = 'deferred'; constant FILTER_DATE_SINCE (line 87) | const FILTER_DATE_SINCE = 'since-'; constant FILTER_DATE_PRIOR (line 88) | const FILTER_DATE_PRIOR = 'prior-'; function articleMatchesModerators (line 90) | function articleMatchesModerators(context: IFilterContext, article: IArt... function executeFilter (line 106) | function executeFilter(filterList: Array, context: IFilterC... function resetFilterToRoot (line 221) | function resetFilterToRoot(filter: Array): Array): boolean { function filterDateSince (line 237) | function filterDateSince(hours: number) { function filterDatePrior (line 241) | function filterDatePrior(hours: number) { function filterDateRangeValues (line 245) | function filterDateRangeValues(value: string) { function filterDateRange (line 253) | function filterDateRange(from: string, to: string) { function parseSort (line 259) | function parseSort(sort: string | undefined) { function updateSort (line 266) | function updateSort(sortList: Array, newSort: string): Array) { constant SORT_TITLE (line 287) | const SORT_TITLE = 'title'; constant SORT_NEW (line 288) | const SORT_NEW = 'new'; constant SORT_APPROVED (line 289) | const SORT_APPROVED = 'approved'; constant SORT_REJECTED (line 290) | const SORT_REJECTED = 'rejected'; constant SORT_DEFERRED (line 291) | const SORT_DEFERRED = 'deferred'; constant SORT_HIGHLIGHTED (line 292) | const SORT_HIGHLIGHTED = 'highlighted'; constant SORT_FLAGGED (line 293) | const SORT_FLAGGED = 'flagged'; constant SORT_SOURCE_CREATED (line 294) | const SORT_SOURCE_CREATED = 'sourceCreatedAt'; constant SORT_UPDATED (line 295) | const SORT_UPDATED = 'updatedAt'; constant SORT_LAST_MODERATED (line 296) | const SORT_LAST_MODERATED = 'lastModeratedAt'; function executeSort (line 298) | function executeSort(sortList: Array) { FILE: packages/frontend-web/src/app/scenes/appstate.ts type IScenesState (line 20) | type IScenesState = Readonly<{ FILE: packages/frontend-web/src/app/scenes/index.tsx function redirect (line 38) | function redirect(to: string) { function AppRoot (line 44) | function AppRoot() { FILE: packages/frontend-web/src/app/scenes/routes.ts type IDashboardPathParams (line 21) | interface IDashboardPathParams { function dashboardLink (line 27) | function dashboardLink(params: IDashboardPathParams) { function settingsLink (line 44) | function settingsLink() { function rangesLink (line 49) | function rangesLink() { type ISearchQueryParams (line 53) | interface ISearchQueryParams { function searchLink (line 61) | function searchLink(params: ISearchQueryParams) { type IContextPathParams (line 78) | interface IContextPathParams { function isArticleContext (line 83) | function isArticleContext(params: IContextPathParams) { type INewCommentsPathParams (line 87) | interface INewCommentsPathParams extends IContextPathParams { type INewCommentsQueryParams (line 91) | interface INewCommentsQueryParams { type IModeratedCommentsPathParams (line 97) | interface IModeratedCommentsPathParams extends IContextPathParams { type IModeratedCommentsQueryParams (line 101) | interface IModeratedCommentsQueryParams { constant NEW_COMMENTS_DEFAULT_TAG (line 107) | const NEW_COMMENTS_DEFAULT_TAG = 'SUMMARY_SCORE'; function newCommentsPageLink (line 108) | function newCommentsPageLink( function moderatedCommentsPageLink (line 116) | function moderatedCommentsPageLink( type ITagSelectorPathParams (line 124) | interface ITagSelectorPathParams extends IContextPathParams { function tagSelectorLink (line 129) | function tagSelectorLink({context, contextId, tag}: ITagSelectorPathPara... type ICommentDetailsPathParams (line 133) | interface ICommentDetailsPathParams extends IContextPathParams { type ICommentDetailsQueryParams (line 137) | interface ICommentDetailsQueryParams { function commentDetailsPageLink (line 141) | function commentDetailsPageLink ( function commentRepliesDetailsLink (line 149) | function commentRepliesDetailsLink( function commentSearchDetailsPageLink (line 155) | function commentSearchDetailsPageLink( FILE: packages/frontend-web/src/app/stores/appstate.ts type IGlobalState (line 28) | type IGlobalState = Readonly<{ FILE: packages/frontend-web/src/app/stores/articles.ts function getArticleMap (line 25) | function getArticleMap(state: IAppState): Map { function getArticles (line 29) | function getArticles(state: IAppState): Array { function getArticle (line 33) | function getArticle(state: IAppState, articleId: ModelId): IArticleModel { type IArticlesState (line 37) | interface IArticlesState { FILE: packages/frontend-web/src/app/stores/categories.ts function getCategoryMap (line 25) | function getCategoryMap(state: IAppState): Map { function getCategories (line 29) | function getCategories(state: IAppState): Array { function getActiveCategories (line 33) | function getActiveCategories(state: IAppState): Array { function getCategory (line 37) | function getCategory(state: IAppState, categoryId: ModelId): ICategoryMo... type ISummaryCounts (line 41) | interface ISummaryCounts { function getGlobalCounts (line 52) | function getGlobalCounts(state: IAppState): ISummaryCounts { type ICategoriesState (line 78) | interface ICategoriesState { FILE: packages/frontend-web/src/app/stores/commentActions.ts function fetchComments (line 55) | async function fetchComments(commentIds: Array) { function highlightComments (line 60) | async function highlightComments(commentIds: Array) { function resetComments (line 65) | async function resetComments(commentIds: Array) { function approveComments (line 70) | async function approveComments(commentIds: Array) { function approveFlagsAndComments (line 75) | async function approveFlagsAndComments(commentIds: Array) { function resolveFlags (line 80) | async function resolveFlags(commentIds: Array) { function deferComments (line 85) | async function deferComments(commentIds: Array) { function rejectComments (line 90) | async function rejectComments(commentIds: Array) { function rejectFlagsAndComments (line 95) | async function rejectFlagsAndComments(commentIds: Array) { function sendAddScoreAction (line 100) | function sendAddScoreAction(commentId: ModelId, tagId: ModelId, start?: ... function tagComment (line 119) | async function tagComment(commentId: ModelId, tagId: ModelId) { function tagCommentWithAnnotation (line 124) | async function tagCommentWithAnnotation(commentId: string, tagId: string... function untagComment (line 129) | async function untagComment(commentId: ModelId, commentScoreId: string) { function tagCommentSummaryScores (line 134) | async function tagCommentSummaryScores(commentIds: Array, tagId... function confirmCommentSummaryScore (line 138) | async function confirmCommentSummaryScore(commentId: ModelId, tagId: str... function rejectCommentSummaryScore (line 142) | async function rejectCommentSummaryScore(commentId: ModelId, tagId: stri... function resetCommentScore (line 146) | async function resetCommentScore(commentId: ModelId, commentScoreId: str... function confirmCommentScore (line 155) | async function confirmCommentScore(commentId: ModelId, commentScoreId: s... function rejectCommentScore (line 164) | async function rejectCommentScore(commentId: ModelId, commentScoreId: st... function editAndRescoreComment (line 173) | async function editAndRescoreComment( type ICommentActionFunction (line 185) | type ICommentActionFunction = (ids: Array, tagId?: string) => Pr... FILE: packages/frontend-web/src/app/stores/comments.ts function executeFetch (line 28) | function executeFetch(commentFetcher: (commentIds: Array) => vo... function ensureCache (line 35) | function ensureCache(commentId: ModelId, commentFetcher: (commentIds: Ar... function clearCommentFetchQueue (line 47) | function clearCommentFetchQueue() { function resolveFlags (line 55) | function resolveFlags(flagsSummary?: Map>) { type ICommentsState (line 66) | interface ICommentsState { function getComment (line 114) | function getComment(state: IAppState, commentId: ModelId) { FILE: packages/frontend-web/src/app/stores/counts.ts type ICountsState (line 23) | type ICountsState = Readonly<{ function getAssignments (line 27) | function getAssignments(state: IAppState) { FILE: packages/frontend-web/src/app/stores/globalActions.ts type ICommentAttributesUpdateDetails (line 23) | type ICommentAttributesUpdateDetails = { type ICommentAttributesUpdate (line 29) | interface ICommentAttributesUpdate { constant ATTRIBUTES_HIGHLIGHTED (line 35) | const ATTRIBUTES_HIGHLIGHTED: ICommentAttributesUpdateDetails = { constant ATTRIBUTES_RESET (line 42) | const ATTRIBUTES_RESET: ICommentAttributesUpdateDetails = { constant ATTRIBUTES_APPROVED (line 49) | const ATTRIBUTES_APPROVED: ICommentAttributesUpdateDetails = { constant ATTRIBUTES_REJECTED (line 56) | const ATTRIBUTES_REJECTED: ICommentAttributesUpdateDetails = { constant ATTRIBUTES_DEFERRED (line 63) | const ATTRIBUTES_DEFERRED: ICommentAttributesUpdateDetails = { FILE: packages/frontend-web/src/app/stores/preselects.ts function getPreselects (line 26) | function getPreselects(state: IAppState): List { type IPreselectsState (line 30) | interface IPreselectsState { FILE: packages/frontend-web/src/app/stores/rules.ts function getRules (line 27) | function getRules(state: IAppState): List { type IRulesState (line 31) | interface IRulesState { FILE: packages/frontend-web/src/app/stores/taggingSensitivities.ts function getTaggingSensitivities (line 27) | function getTaggingSensitivities(state: IAppState): List { function getTaggableTags (line 31) | function getTaggableTags(state: IAppState) { type ITagsState (line 35) | interface ITagsState { FILE: packages/frontend-web/src/app/stores/textSizes.ts type ILoadTestSizesCompletePayload (line 27) | type ILoadTestSizesCompletePayload = { type ITextSizesState (line 34) | type ITextSizesState = Readonly<{ function getStateRecord (line 58) | function getStateRecord(state: IAppState) { function getTextSizesHasData (line 62) | function getTextSizesHasData(state: IAppState) { function getTextSizes (line 67) | function getTextSizes(state: IAppState) { function getTextSizesIsLoading (line 72) | function getTextSizesIsLoading(state: IAppState) { function loadTextSizesByIds (line 77) | function loadTextSizesByIds(ids: Array, width: number): IThunkA... FILE: packages/frontend-web/src/app/stores/users.ts function setMyUserId (line 25) | function setMyUserId(uid: string | null) { function getMyUserId (line 29) | function getMyUserId(): string | null { constant USER_GROUP_GENERAL (line 33) | const USER_GROUP_GENERAL = 'general'; constant USER_GROUP_ADMIN (line 34) | const USER_GROUP_ADMIN = 'admin'; constant USER_GROUP_SERVICE (line 35) | const USER_GROUP_SERVICE = 'service'; constant USER_GROUP_MODERATOR (line 36) | const USER_GROUP_MODERATOR = 'moderator'; constant USER_GROUP_YOUTUBE (line 37) | const USER_GROUP_YOUTUBE = 'youtube'; type ILoadSystemUsers (line 43) | interface ILoadSystemUsers { type: string; users: List; } function getUsers (line 49) | function getUsers(state: IAppState): Map { function getUser (line 53) | function getUser(state: IAppState, id: ModelId): IUserModel | null { function getCurrentUser (line 57) | function getCurrentUser(state: IAppState): IUserModel | null { function userIsAdmin (line 65) | function userIsAdmin(user: IUserModel | null): boolean { function getCurrentUserIsAdmin (line 69) | function getCurrentUserIsAdmin(state: IAppState): boolean { function getSystemUsers (line 73) | function getSystemUsers(type: string, state: IAppState): List { type IUsersState (line 82) | interface IUsersState { FILE: packages/frontend-web/src/app/styles/breakpoints.ts constant TABLET_WIDTH (line 18) | const TABLET_WIDTH = 1023; constant HEADER_HEIGHT (line 19) | const HEADER_HEIGHT = 64; constant TABLET_PORTRAIT_BREAKPOINT (line 22) | const TABLET_PORTRAIT_BREAKPOINT = FILE: packages/frontend-web/src/app/styles/colors.ts constant DARK_COLOR (line 18) | const DARK_COLOR = '#255271'; constant MEDIUM_COLOR (line 19) | const MEDIUM_COLOR = '#326891'; constant LIGHT_COLOR (line 20) | const LIGHT_COLOR = '#46779c'; constant DIVIDER_COLOR (line 21) | const DIVIDER_COLOR = '#ededed'; constant PALE_COLOR (line 22) | const PALE_COLOR = '#f4f7f9'; constant WHITE_COLOR (line 23) | const WHITE_COLOR = '#ffffff'; constant ALMOST_WHITE (line 24) | const ALMOST_WHITE = '#fafafa'; constant GREY_COLOR (line 25) | const GREY_COLOR = '#999999'; constant NICE_DARK_BLUE (line 26) | const NICE_DARK_BLUE = '#0f4a92'; constant NICE_MIDDLE_BLUE (line 27) | const NICE_MIDDLE_BLUE = '#185bac'; constant NICE_LIGHT_BLUE (line 28) | const NICE_LIGHT_BLUE = '#95b3d8'; constant NICE_LIGHTEST_BLUE (line 29) | const NICE_LIGHTEST_BLUE = '#e1e9f4'; constant NICE_CONTROL_BLUE (line 30) | const NICE_CONTROL_BLUE = '#2e84ed'; constant NICE_BLUE_GREY (line 31) | const NICE_BLUE_GREY = '#eff0f0'; constant SIDEBAR_BLUE (line 32) | const SIDEBAR_BLUE = '#0f4a92'; constant NICE_LIGHT_HIGHLIGHT_BLUE (line 33) | const NICE_LIGHT_HIGHLIGHT_BLUE = '#2e83ed'; constant DARK_PRIMARY_TEXT_COLOR (line 36) | const DARK_PRIMARY_TEXT_COLOR = 'rgba(0, 0, 0, 0.87)'; constant DARK_SECONDARY_TEXT_COLOR (line 37) | const DARK_SECONDARY_TEXT_COLOR = 'rgba(0, 0, 0, 0.54)'; constant DARK_TERTIARY_TEXT_COLOR (line 38) | const DARK_TERTIARY_TEXT_COLOR = 'rgba(0, 0, 0, 0.38)'; constant DARK_LINK_TEXT_COLOR (line 39) | const DARK_LINK_TEXT_COLOR = 'rgba(50, 104, 145, 1)'; constant LIGHT_COLOR_BASE (line 41) | const LIGHT_COLOR_BASE = 'rgba(255, 255, 255, 1)'; constant LIGHT_PRIMARY_TEXT_COLOR (line 42) | const LIGHT_PRIMARY_TEXT_COLOR = LIGHT_COLOR_BASE; constant LIGHT_SECONDARY_TEXT_COLOR (line 43) | const LIGHT_SECONDARY_TEXT_COLOR = 'rgba(255, 255, 255, 0.7)'; constant LIGHT_TERTIARY_TEXT_COLOR (line 44) | const LIGHT_TERTIARY_TEXT_COLOR = 'rgba(255, 255, 255, 0.5)'; constant LIGHT_HIGHLIGHT_COLOR (line 45) | const LIGHT_HIGHLIGHT_COLOR = 'rgba(255, 255, 255, 0.2)'; constant LIGHT_LINKS_TEXT_COLOR (line 46) | const LIGHT_LINKS_TEXT_COLOR = LIGHT_COLOR_BASE; constant TAG_OBSCENE_COLOR (line 49) | const TAG_OBSCENE_COLOR = '#d71b60'; constant TAG_INCOHERENT_COLOR (line 50) | const TAG_INCOHERENT_COLOR = '#9c28b1'; constant TAG_SPAM_COLOR (line 51) | const TAG_SPAM_COLOR = '#673bb8'; constant TAG_OFF_TOPIC_COLOR (line 52) | const TAG_OFF_TOPIC_COLOR = '#3f51b5'; constant TAG_INFLAMMATORY_COLOR (line 53) | const TAG_INFLAMMATORY_COLOR = '#1976d3'; constant TAG_UNSUBSTANTIAL_COLOR (line 54) | const TAG_UNSUBSTANTIAL_COLOR = '#3d5afe'; constant TAG_OTHER_COLOR (line 55) | const TAG_OTHER_COLOR = '#01828f'; FILE: packages/frontend-web/src/app/styles/forms.ts constant SELECT_ELEMENT (line 24) | const SELECT_ELEMENT = { constant BUTTON_RESET (line 38) | const BUTTON_RESET = { FILE: packages/frontend-web/src/app/styles/header.ts constant ARTICLE_HEADER (line 26) | const ARTICLE_HEADER = { FILE: packages/frontend-web/src/app/styles/hoverstates.ts constant OPACITY_TRANSITION (line 21) | const OPACITY_TRANSITION = { constant BOTTOM_BORDER_TRANSITION (line 38) | const BOTTOM_BORDER_TRANSITION = { FILE: packages/frontend-web/src/app/styles/scrim.ts constant SCRIM_STYLE (line 23) | const SCRIM_STYLE = { FILE: packages/frontend-web/src/app/styles/typography.ts type ITypeStyle (line 17) | type ITypeStyle = { function makeTypeStyle (line 24) | function makeTypeStyle( constant BODY_FONT_STACK (line 38) | const BODY_FONT_STACK = 'Georgia, serif'; constant LOGIN_TITLE_TYPE (line 41) | const LOGIN_TITLE_TYPE = constant HEADLINE_TYPE (line 45) | const HEADLINE_TYPE = constant SEMI_BOLD_TYPE (line 48) | const SEMI_BOLD_TYPE = constant ARTICLE_HEADLINE_TYPE (line 52) | const ARTICLE_HEADLINE_TYPE = constant BODY_TEXT_TYPE (line 56) | const BODY_TEXT_TYPE = constant COMMENT_DETAIL_BODY_TEXT_TYPE (line 59) | const COMMENT_DETAIL_BODY_TEXT_TYPE = constant ARTICLE_CATEGORY_TYPE (line 63) | const ARTICLE_CATEGORY_TYPE = constant COMMENT_DETAIL_DATE_TYPE (line 66) | const COMMENT_DETAIL_DATE_TYPE = constant BUTTON_LINK_TYPE (line 70) | const BUTTON_LINK_TYPE = constant COMMENT_DETAIL_TAG_LIST_BUTTON_TYPE (line 74) | const COMMENT_DETAIL_TAG_LIST_BUTTON_TYPE = constant ARTICLE_CAPTION_TYPE (line 78) | const ARTICLE_CAPTION_TYPE = constant CAPTION_TYPE (line 82) | const CAPTION_TYPE = constant HANDLE_LABEL_TYPE (line 86) | const HANDLE_LABEL_TYPE = FILE: packages/frontend-web/src/app/styles/util.ts constant DEFAULT_OPACITY (line 17) | const DEFAULT_OPACITY = 1; constant MEDIUM_OPACITY (line 18) | const MEDIUM_OPACITY = 0.54; constant LIGHT_OPACITY (line 19) | const LIGHT_OPACITY = 0.12; constant TEXT_OFFSET_DEFAULT_SPACING (line 22) | const TEXT_OFFSET_DEFAULT_SPACING = 72; constant GUTTER_DEFAULT_SPACING (line 23) | const GUTTER_DEFAULT_SPACING = 24; constant BOX_DEFAULT_SPACING (line 24) | const BOX_DEFAULT_SPACING = 10; constant SHORT_SCREEN_QUERY (line 26) | const SHORT_SCREEN_QUERY = '@media (max-height: 769px)'; constant OFFSCREEN (line 29) | const OFFSCREEN = { constant MODAL_DROP_SHADOW (line 39) | const MODAL_DROP_SHADOW = [ constant INPUT_DROP_SHADOW (line 44) | const INPUT_DROP_SHADOW = [ constant CENTER_CONTENT (line 49) | const CENTER_CONTENT = { constant VISUALLY_HIDDEN (line 55) | const VISUALLY_HIDDEN = { FILE: packages/frontend-web/src/app/styles/zindex.ts constant BASE_Z_INDEX (line 20) | const BASE_Z_INDEX = nextIndexLevel(); constant SELECT_Z_INDEX (line 21) | const SELECT_Z_INDEX = nextIndexLevel(); constant TOOLTIP_Z_INDEX (line 22) | const TOOLTIP_Z_INDEX = nextIndexLevel(); constant STICKY_Z_INDEX (line 23) | const STICKY_Z_INDEX = nextIndexLevel(); constant SCRIM_Z_INDEX (line 24) | const SCRIM_Z_INDEX = nextIndexLevel(); constant ARTICLE_PREVIEW_Z_INDEX (line 25) | const ARTICLE_PREVIEW_Z_INDEX = nextIndexLevel(); constant ACCOUNT_SETTINGS_MENU_Z_INDEX (line 26) | const ACCOUNT_SETTINGS_MENU_Z_INDEX = nextIndexLevel(); FILE: packages/frontend-web/src/app/stylesx/index.ts constant IMAGE_BASE (line 20) | const IMAGE_BASE = 40; constant ICON_STYLES (line 37) | const ICON_STYLES = stylesheet({ constant COMMON_STYLES (line 76) | const COMMON_STYLES = stylesheet({ FILE: packages/frontend-web/src/app/util/DotChartRenderer.ts constant OVERDRAW (line 23) | const OVERDRAW = 1.2; type IRange (line 25) | interface IRange { type ICommentsByColumn (line 30) | interface ICommentsByColumn { constant DIAMETER (line 34) | const DIAMETER = 2 / 3; constant MARGIN (line 35) | const MARGIN = 1 - DIAMETER; class DotChartRenderer (line 37) | class DotChartRenderer { method constructor (line 53) | constructor(makeCanvas: (width: number, height: number) => any) { method setProps (line 57) | setProps(props: { method setProp (line 82) | setProp(key: string, value: any) { method render (line 89) | render() { method renderAll (line 121) | private renderAll(): void { method renderMax (line 190) | private renderMax(): void { method makeSprite (line 259) | private makeSprite(radius: number, isSelected: boolean): any { FILE: packages/frontend-web/src/app/util/color.ts function hashCode (line 18) | function hashCode(str: string) { function intToRGB (line 26) | function intToRGB(i: number) { function randomDarkColor (line 30) | function randomDarkColor(seed: string) { function randomLightColor (line 34) | function randomLightColor(seed: string) { FILE: packages/frontend-web/src/app/util/csrf.ts constant NONCE_PATH (line 18) | const NONCE_PATH = 'moderator/csrf-nonce'; function getCSRF (line 22) | function getCSRF(): string { return storage()[NONCE_PATH]; } function setCSRF (line 23) | function setCSRF(random: string): void { storage()[NONCE_PATH] = random; } function clearCSRF (line 24) | function clearCSRF(): void { delete storage()[NONCE_PATH]; } FILE: packages/frontend-web/src/app/util/groupByColumn.ts type IGroupedComments (line 19) | interface IGroupedComments { type IGroupableComment (line 23) | interface IGroupableComment { type ITaggedComment (line 28) | interface ITaggedComment extends IGroupableComment { type IDatedComment (line 32) | interface IDatedComment extends IGroupableComment { function groupByKey (line 36) | function groupByKey(comments: Array, key: string, sta... function groupByScoreColumns (line 61) | function groupByScoreColumns(comments: Array(comments: Array,... FILE: packages/frontend-web/src/app/util/makeCheckedSelectionStore/makeCheckedSelectionStore.ts type ICheckedSelectionStoreOptions (line 23) | interface ICheckedSelectionStoreOptions { type IOverrides (line 27) | type IOverrides = Map; type ICheckedSelectionState (line 29) | type ICheckedSelectionState = Readonly<{ type ICheckedSelectionPayloads (line 35) | type ICheckedSelectionPayloads = function makeCheckedSelectionStore (line 40) | function makeCheckedSelectionStore( FILE: packages/frontend-web/src/app/util/makeCurrentPagingIdentifierReducer.ts type ICurrentPagingIdentifierState (line 23) | type ICurrentPagingIdentifierState = Readonly<{ type ICurrentPagingIdentifierPayload (line 31) | type ICurrentPagingIdentifierPayload = { currentPagingIdentifier: string }; function makeCurrentPagingIdentifierReducer (line 33) | function makeCurrentPagingIdentifierReducer( FILE: packages/frontend-web/src/app/util/measureText.ts function getFontStyle (line 19) | function getFontStyle({ fontWeight, fontSize, fontFamily }: ITypeStyle):... function setupContext (line 23) | function setupContext(canvas: any, styles: ITypeStyle): void { function measureLine (line 34) | function measureLine(canvas: any, text: string, styles: ITypeStyle): num... function getTextHeight (line 41) | function getTextHeight(lines: Array, _wordWrapWidth: number, sty... function wordWrap (line 47) | function wordWrap(canvas: any, text: string, wordWrapWidth: number, styl... FILE: packages/frontend-web/src/app/util/partial/__spec__/memoize.spec.ts function makeMemoized (line 27) | function makeMemoized(useEqualityForMutableObjects = false) { FILE: packages/frontend-web/src/app/util/partial/__spec__/partial.spec.ts function identity (line 22) | function identity(param: any): any { FILE: packages/frontend-web/src/app/util/partial/index.ts type INode (line 27) | interface INode { function makeNode (line 32) | function makeNode(): INode { function stringifyIfNecessary (line 45) | function stringifyIfNecessary(o: any, useEqualityForMutableObjects: bool... class Cache (line 78) | class Cache { method constructor (line 82) | constructor(useEqualityForMutableObjects: boolean) { method has (line 86) | has(args: Array): boolean { method get (line 90) | get(args: Array): T | undefined { method set (line 109) | set(args: Array, value: T): void { method toJS (line 132) | toJS(): object { method toString (line 170) | toString() { function memoize (line 175) | function memoize(fn: T, useEqualityForMutableObjects... function maybeCallback (line 195) | function maybeCallback(fn?: T | null) { FILE: packages/frontend-web/src/app/util/returnSavedCommentRow.ts constant RETURN_ROW_PATH (line 17) | const RETURN_ROW_PATH = 'moderator/return-comment-row'; function getReturnSavedCommentRow (line 19) | function getReturnSavedCommentRow(): string { function setReturnSavedCommentRow (line 27) | function setReturnSavedCommentRow(commentId: string): void { function clearReturnSavedCommentRow (line 31) | function clearReturnSavedCommentRow(): void { FILE: packages/frontend-web/src/app/util/returnURL.ts constant RETURN_URL_PATH (line 17) | const RETURN_URL_PATH = 'moderator/return-url'; type IReturnURL (line 19) | interface IReturnURL { function getReturnURL (line 24) | function getReturnURL(): IReturnURL { function setReturnURL (line 32) | function setReturnURL(data: IReturnURL): void { function clearReturnURL (line 36) | function clearReturnURL(): void { FILE: packages/frontend-web/src/app/util/savedSorts.ts constant LOCAL_STORAGE_KEY (line 19) | const LOCAL_STORAGE_KEY = 'comment-sorts'; function loadSorts (line 21) | function loadSorts(): Map { function getDefaultSort (line 31) | function getDefaultSort(categoryId: ModelId, page: string, tag: string) { function putDefaultSort (line 55) | function putDefaultSort(categoryId: ModelId, page: string, tag: string, ... FILE: packages/frontend-web/src/app/util/sortByLabel.ts function sortByLabel (line 20) | function sortByLabel(list: List): List { FILE: packages/frontend-web/src/app/utilx/cssInJs.ts type IStyleProps (line 26) | interface IStyleProps { function stylesheet (line 33) | function stylesheet(styles: T): T { function knownStyle (line 46) | function knownStyle(obj: object) { type IStyle (line 50) | interface IStyle { [key: string]: IStyle | string | number; } type IPossibleStyle (line 51) | type IPossibleStyle = IStyle | null | undefined; function flattenStyleReducer (line 53) | function flattenStyleReducer(sum: object, style: object): object { function flattenStyles (line 59) | function flattenStyles(styles: Array): object { function originalCSS (line 63) | function originalCSS(...styles: Array): IStyleProps { FILE: packages/frontend-web/src/app/utilx/highlightText.tsx type ITextNode (line 22) | interface ITextNode { function getTextNodes (line 28) | function getTextNodes(searchStr: string, str: string) { function addRange (line 49) | function addRange(arr: Array, originalString: string, start... function highlightText (line 63) | function highlightText(searchTerm: string, originalString: string) { FILE: packages/frontend-web/src/app/utilx/hooks.ts function useBindEscape (line 20) | function useBindEscape(action: () => void) { FILE: packages/frontend-web/src/app/utilx/keyCodes.tsx constant ESCAPE_KEY (line 17) | const ESCAPE_KEY = 27; constant LEFT_ARROW_KEY (line 18) | const LEFT_ARROW_KEY = 37; constant UP_ARROW_KEY (line 19) | const UP_ARROW_KEY = 38; constant RIGHT_ARROW_KEY (line 20) | const RIGHT_ARROW_KEY = 39; constant DOWN_ARROW_KEY (line 21) | const DOWN_ARROW_KEY = 40; FILE: packages/frontend-web/src/app/utilx/sortDefinitions.tsx type IColumnSortDefinition (line 17) | interface IColumnSortDefinition { FILE: packages/frontend-web/src/models/article.ts type IArticleAttributes (line 19) | interface IArticleAttributes { type IArticleModel (line 44) | type IArticleModel = Readonly; function ArticleModel (line 46) | function ArticleModel(articleData: IArticleAttributes): IArticleModel { FILE: packages/frontend-web/src/models/category.ts type ICategoryAttributes (line 19) | interface ICategoryAttributes { type ICategoryModel (line 39) | type ICategoryModel = Readonly; function CategoryModel (line 41) | function CategoryModel(categoryData?: Partial): ICa... FILE: packages/frontend-web/src/models/comment.ts type ICommentListItem (line 19) | type ICommentListItem = Readonly<{ type ICommentDate (line 23) | type ICommentDate = Readonly<{ type ICommentScore (line 27) | type ICommentScore = Readonly<{ type IAuthorAttributes (line 31) | interface IAuthorAttributes { type IAuthorModel (line 40) | type IAuthorModel = Readonly; type IAuthorCountsAttributes (line 42) | interface IAuthorCountsAttributes { type IAuthorCountsModel (line 47) | type IAuthorCountsModel = Readonly; type ITopScore (line 49) | interface ITopScore { type ICommentSummaryScoreAttributes (line 55) | interface ICommentSummaryScoreAttributes { type ICommentSummaryScoreModel (line 61) | type ICommentSummaryScoreModel = Readonly; constant FLAGS_COUNT (line 63) | const FLAGS_COUNT = 0; constant UNRESOLVED_FLAGS_COUNT (line 64) | const UNRESOLVED_FLAGS_COUNT = 1; constant RECOMMENDATIONS_COUNT (line 65) | const RECOMMENDATIONS_COUNT = 2; type ICommentAttributes (line 67) | interface ICommentAttributes { type ICommentModel (line 100) | type ICommentModel = Readonly; function CommentModel (line 102) | function CommentModel(commentData: ICommentAttributes): ICommentModel { function getTopScore (line 121) | function getTopScore(comment: ICommentModel) { function getSummaryForTag (line 125) | function getSummaryForTag(comment: ICommentModel, tagId: ModelId): IComm... function getTopScoreForTag (line 132) | function getTopScoreForTag(comment: ICommentModel, tagId?: ModelId) { FILE: packages/frontend-web/src/models/commentFlag.ts type ICommentFlagAttributes (line 17) | interface ICommentFlagAttributes { type ICommentFlagModel (line 30) | type ICommentFlagModel = Readonly; function CommentFlagModel (line 32) | function CommentFlagModel(flagData?: ICommentFlagAttributes): ICommentFl... FILE: packages/frontend-web/src/models/commentScore.ts type ICommentScoreAttributes (line 19) | interface ICommentScoreAttributes { type ICommentScoreModel (line 31) | type ICommentScoreModel = Readonly; function CommentScoreModel (line 33) | function CommentScoreModel(scoreData?: ICommentScoreAttributes): ICommen... FILE: packages/frontend-web/src/models/common.ts type ModelId (line 19) | type ModelId = string; constant SERVER_ACTION_ACCEPT (line 21) | const SERVER_ACTION_ACCEPT = 'Accept'; constant SERVER_ACTION_REJECT (line 22) | const SERVER_ACTION_REJECT = 'Reject'; constant SERVER_ACTION_DEFER (line 23) | const SERVER_ACTION_DEFER = 'Defer'; constant SERVER_ACTION_HIGHLIGHT (line 24) | const SERVER_ACTION_HIGHLIGHT = 'Highlight'; type IServerAction (line 26) | type IServerAction = 'Accept' | 'Reject' | 'Defer' | 'Highlight'; function convertServerAction (line 28) | function convertServerAction(saction: IServerAction): IModerationAction { function convertClientAction (line 41) | function convertClientAction(action: IModerationAction): IServerAction { FILE: packages/frontend-web/src/models/fake/article.ts function fakeArticleModel (line 21) | function fakeArticleModel(overrides: Partial = {}): ... FILE: packages/frontend-web/src/models/fake/category.ts function fakeCategoryModel (line 20) | function fakeCategoryModel(overrides: Partial = {})... FILE: packages/frontend-web/src/models/fake/comment.ts function fakeCommentModel (line 21) | function fakeCommentModel(overrides: Partial = {}): ... function fakeCommentFlagModel (line 53) | function fakeCommentFlagModel(overrides: Partial... FILE: packages/frontend-web/src/models/fake/commentScore.ts function fakeCommentScoreModel (line 20) | function fakeCommentScoreModel(overrides: Partial = {}): IRuleM... FILE: packages/frontend-web/src/models/fake/tag.ts function fakeTagModel (line 20) | function fakeTagModel(overrides: Partial = {}): ITagModel { FILE: packages/frontend-web/src/models/fake/user.ts function fakeUserModel (line 20) | function fakeUserModel(overrides: Partial = {}): IUserM... FILE: packages/frontend-web/src/models/preselect.ts type IPreselectAttributes (line 19) | interface IPreselectAttributes { type IPreselectModel (line 27) | type IPreselectModel = Readonly; function PreselectModel (line 29) | function PreselectModel(keyValuePairs: IPreselectAttributes): IPreselect... FILE: packages/frontend-web/src/models/rule.ts type IRuleAttributes (line 19) | interface IRuleAttributes { type IRuleModel (line 29) | type IRuleModel = Readonly; function RuleModel (line 31) | function RuleModel(keyValuePairs: IRuleAttributes): IRuleModel { FILE: packages/frontend-web/src/models/tag.ts type ITagAttributes (line 19) | interface ITagAttributes { type ITagModel (line 30) | type ITagModel = Readonly; function TagModel (line 32) | function TagModel(keyValuePairs: Partial): ITagModel { FILE: packages/frontend-web/src/models/taggingSensitivity.ts type ITaggingSensitivityAttributes (line 19) | interface ITaggingSensitivityAttributes { type ITaggingSensitivityModel (line 27) | type ITaggingSensitivityModel = Readonly; function TaggingSensitivityModel (line 29) | function TaggingSensitivityModel(keyValuePairs: ITaggingSensitivityAttri... FILE: packages/frontend-web/src/models/user.ts type IUserAttributes (line 19) | interface IUserAttributes { type IUserModel (line 29) | type IUserModel = Readonly; function UserModel (line 31) | function UserModel(userAttributes: IUserAttributes): IUserModel { FILE: packages/frontend-web/src/server.ts function mountWebFrontend (line 21) | function mountWebFrontend(modifyOutput?: (output: string) => string): Ap... FILE: packages/frontend-web/src/test/actions.ts function listenForMessages (line 28) | async function listenForMessages( function checkTypeIsUpdate (line 59) | function checkTypeIsUpdate(type: string) { function checkExpectations (line 65) | function checkExpectations( function approveComment (line 82) | async function approveComment( function rejectComment (line 96) | async function rejectComment( function setArticleState (line 110) | async function setArticleState( function setArticleModerators (line 129) | async function setArticleModerators( FILE: packages/frontend-web/src/test/apitest.ts function usage (line 17) | function usage() { function websocketStateHandler (line 70) | function websocketStateHandler(status: string): void { FILE: packages/frontend-web/src/test/notificationChecks.ts class ArticleMessages (line 36) | class ArticleMessages { method notificationHandler (line 55) | notificationHandler(data: IAllArticlesData) { method updateHandler (line 68) | updateHandler(data: IArticleUpdate) { method dataCheck (line 78) | dataCheck() { method stateCheck (line 104) | stateCheck() { class SystemData (line 124) | class SystemData { method notificationHandler (line 139) | notificationHandler(data: ISystemData) { method usersCheck (line 151) | usersCheck() { method tagsCheck (line 159) | tagsCheck() { method stateCheck (line 175) | stateCheck() { class UserData (line 203) | class UserData { method notificationHandler (line 208) | notificationHandler(data: IPerUserData) { method stateCheck (line 214) | stateCheck() { FILE: packages/frontend-web/src/test/objectChecks.ts function date_string (line 29) | function date_string(val: any) { function date_string_or_null (line 38) | function date_string_or_null(val: any) { function email (line 46) | function email(val: any) { function url (line 53) | function url(val: any) { function url_or_null (line 62) | function url_or_null(val: any) { function moderator_group (line 69) | function moderator_group(val: any) { function category_id_or_null (line 77) | function category_id_or_null(val: any) { function tag_id_or_null (line 86) | function tag_id_or_null(val: any) { function is_user (line 95) | function is_user(u: any) { function array_of_users (line 108) | function array_of_users(val: any) { function action (line 120) | function action(val: any) { function checkArrayOf (line 133) | function checkArrayOf(itemChecker: (i: any) => boolean, o: any) { function checkListNumber (line 146) | function checkListNumber(o: any) { function checkMap (line 161) | function checkMap(o: any, type: string, keyType: (o: any) => boolean, va... function checkObject (line 299) | function checkObject(o: any, type: string, fields: any): boolean { function checkCategory (line 323) | function checkCategory(o: any) { function checkArticle (line 332) | function checkArticle(o: any) { function checkUser (line 336) | function checkUser(o: any) { function checkTag (line 345) | function checkTag(o: any) { function checkTaggingSensitivity (line 353) | function checkTaggingSensitivity(o: any) { function checkRule (line 357) | function checkRule(o: any) { function checkPreselect (line 361) | function checkPreselect(o: any) { function checkModeratedComments (line 365) | function checkModeratedComments(o: any) { function checkTextSizes (line 369) | function checkTextSizes(o: any) { function checkComment (line 373) | function checkComment(o: any) { function checkListComments (line 377) | function checkListComments(o: any) { function checkSingleComment (line 390) | function checkSingleComment(o: any) { function checkCommentFlag (line 394) | function checkCommentFlag(o: any) { function checkCommentScore (line 398) | function checkCommentScore(o: any) { function checkHistogramScores (line 402) | function checkHistogramScores(o: any) { FILE: packages/frontend-web/src/test/pageTests.ts function fetchArticleText (line 43) | async function fetchArticleText(articleId: ModelId) { function listCommentsPage (line 48) | async function listCommentsPage(comments: Array) { function listNewCommentsPage_SUMMARY_SCORE (line 55) | async function listNewCommentsPage_SUMMARY_SCORE( function listModeratedCommentsPage (line 80) | async function listModeratedCommentsPage( function commentDetailsPage (line 104) | async function commentDetailsPage(commentId: string) { FILE: packages/frontend-web/src/types.ts type ServerStates (line 17) | type ServerStates = type AuthenticationStates (line 25) | type AuthenticationStates = 'initialising' | 'check_token' | 'unauthenti... type WebsocketStates (line 26) | type WebsocketStates = 'ws_connecting' | 'ws_gtg'; type SystemStates (line 27) | type SystemStates = ServerStates | AuthenticationStates | WebsocketStates; type IModerationAction (line 32) | type IModerationAction = 'approve' | 'defer' | 'highlight' | 'reject'; type ICommentAction (line 35) | type ICommentAction = IModerationAction | 'tag'; type IConfirmationAction (line 38) | type IConfirmationAction = ICommentAction | 'reset'; FILE: packages/frontend-web/tooling/storybook/config.js function loadStories (line 27) | function loadStories() { FILE: seed/initial-database.sql type `SequelizeMeta` (line 25) | CREATE TABLE `SequelizeMeta` ( type `articles` (line 49) | CREATE TABLE `articles` ( type `categories` (line 99) | CREATE TABLE `categories` ( type `comment_flags` (line 141) | CREATE TABLE `comment_flags` ( type `comment_score_requests` (line 179) | CREATE TABLE `comment_score_requests` ( type `comment_scores` (line 211) | CREATE TABLE `comment_scores` ( type `comment_sizes` (line 259) | CREATE TABLE `comment_sizes` ( type `comment_summary_scores` (line 287) | CREATE TABLE `comment_summary_scores` ( type `comment_top_scores` (line 319) | CREATE TABLE `comment_top_scores` ( type `comments` (line 349) | CREATE TABLE `comments` ( type `configuration_items` (line 414) | CREATE TABLE `configuration_items` ( type `csrfs` (line 439) | CREATE TABLE `csrfs` ( type `decisions` (line 466) | CREATE TABLE `decisions` ( type `last_updates` (line 503) | CREATE TABLE `last_updates` ( type `moderation_rules` (line 528) | CREATE TABLE `moderation_rules` ( type `moderator_assignments` (line 562) | CREATE TABLE `moderator_assignments` ( type `preselects` (line 593) | CREATE TABLE `preselects` ( type `tagging_sensitivities` (line 629) | CREATE TABLE `tagging_sensitivities` ( type `tags` (line 665) | CREATE TABLE `tags` ( type `user_category_assignments` (line 697) | CREATE TABLE `user_category_assignments` ( type `user_social_auths` (line 725) | CREATE TABLE `user_social_auths` ( type `users` (line 757) | CREATE TABLE `users` (