mediawiki-extensions-Echo/extension.json

1026 lines
31 KiB
JSON

{
"name": "Echo",
"author": [
"Andrew Garrett",
"Ryan Kaldari",
"Benny Situ",
"Luke Welling",
"Kunal Mehta",
"Moriel Schottlender",
"Jon Robson"
],
"url": "https://www.mediawiki.org/wiki/Extension:Echo",
"descriptionmsg": "echo-desc",
"license-name": "MIT",
"type": "specialpage",
"requires": {
"MediaWiki": ">= 1.29.0"
},
"callback": "EchoHooks::registerExtension",
"APIMetaModules": {
"notifications": "ApiEchoNotifications",
"unreadnotificationpages": "ApiEchoUnreadNotificationPages"
},
"APIModules": {
"echomarkread": "ApiEchoMarkRead",
"echomarkseen": "ApiEchoMarkSeen",
"echoarticlereminder": "ApiEchoArticleReminder"
},
"DefaultUserOptions": {
"echo-show-alert": true,
"echo-email-frequency": 0
},
"ExtensionFunctions": [
"EchoHooks::initEchoExtension"
],
"JobClasses": {
"EchoNotificationJob": "EchoNotificationJob",
"EchoNotificationDeleteJob": "EchoNotificationDeleteJob"
},
"SpecialPages": {
"Notifications": "SpecialNotifications",
"DisplayNotificationsConfiguration": "SpecialDisplayNotificationsConfiguration",
"NotificationsMarkRead": "SpecialNotificationsMarkRead"
},
"MessagesDirs": {
"Echo": [
"i18n",
"i18n/api"
]
},
"ExtensionMessagesFiles": {
"EchoAliases": "Echo.alias.php"
},
"ResourceModules": {
"ext.echo.ui.desktop": {
"scripts": [
"ui/mw.echo.ui.BadgeLinkWidget.js",
"ui/mw.echo.ui.NotificationBadgeWidget.js"
],
"styles": [
"styles/mw.echo.ui.NotificationBadgeWidget.less"
],
"skinStyles": {
"monobook": [
"styles/mw.echo.ui.NotificationBadgeWidget.monobook.less"
],
"modern": [
"styles/mw.echo.ui.NotificationBadgeWidget.modern.less"
]
},
"dependencies": [
"ext.echo.ui",
"ext.echo.styles.badge",
"mediawiki.util",
"mediawiki.api.options"
],
"targets": [
"desktop"
]
},
"ext.echo.ui": {
"scripts": [
"ui/mw.echo.ui.js",
"ui/mw.echo.ui.SortedListWidget.js",
"ui/mw.echo.ui.SubGroupListWidget.js",
"ui/mw.echo.ui.NotificationsListWidget.js",
"ui/mw.echo.ui.PlaceholderItemWidget.js",
"ui/mw.echo.ui.ToggleReadCircleButtonWidget.js",
"ui/mw.echo.ui.NotificationItemWidget.js",
"ui/mw.echo.ui.SingleNotificationItemWidget.js",
"ui/mw.echo.ui.CrossWikiNotificationItemWidget.js",
"ui/mw.echo.ui.BundleNotificationItemWidget.js",
"ui/mw.echo.ui.ClonedNotificationItemWidget.js",
"ui/mw.echo.ui.ActionMenuPopupWidget.js",
"ui/mw.echo.ui.MenuItemWidget.js",
"ui/mw.echo.ui.NotificationsWrapper.js",
"ui/mw.echo.ui.ConfirmationPopupWidget.js",
"ext.echo.moment-hack.js"
],
"styles": [
"styles/mw.echo.ui.overlay.less",
"styles/mw.echo.ui.NotificationItemWidget.less",
"styles/mw.echo.ui.ToggleReadCircleButtonWidget.less",
"styles/mw.echo.ui.CrossWikiNotificationItemWidget.less",
"styles/mw.echo.ui.NotificationsListWidget.less",
"styles/mw.echo.ui.PlaceholderItemWidget.less",
"styles/mw.echo.ui.SubGroupListWidget.less",
"styles/mw.echo.ui.ActionMenuPopupWidget.less",
"styles/mw.echo.ui.MenuItemWidget.less",
"styles/mw.echo.ui.NotificationsWrapper.less",
"styles/mw.echo.ui.ConfirmationPopupWidget.less"
],
"skinStyles": {
"monobook": [
"styles/mw.echo.ui.NotificationsListWidget.monobook.less",
"styles/mw.echo.ui.overlay.monobook.less"
],
"modern": [
"styles/mw.echo.ui.NotificationItemWidget.modern.less"
],
"vector": [
"styles/mw.echo.ui.overlay.vector.less"
],
"minerva": [
"styles/mw.echo.ui.overlay.minerva.less"
]
},
"dependencies": [
"ext.echo.logger",
"ext.echo.styles.notifications",
"ext.echo.controller",
"ext.echo.secondaryicons",
"oojs-ui-core",
"oojs-ui-widgets",
"moment",
"mediawiki.jqueryMsg",
"mediawiki.language",
"mediawiki.Title",
"mediawiki.notify",
"oojs-ui.styles.icons-user",
"oojs-ui.styles.icons-alerts",
"oojs-ui.styles.icons-content",
"oojs-ui.styles.icons-interactions",
"oojs-ui.styles.icons-moderation",
"oojs-ui.styles.icons-movement"
],
"messages": [
"echo-badge-count",
"echo-overlay-link",
"echo-mark-all-as-read",
"echo-mark-wiki-as-read",
"echo-more-info",
"echo-feedback",
"echo-notification-alert",
"echo-notification-notice",
"echo-notification-loginrequired",
"echo-notification-popup-loginrequired",
"notification-link-text-expand-all",
"notification-link-text-collapse-all",
"notification-link-text-expand-alert-count",
"notification-link-text-expand-notice-count",
"notification-link-text-expand-all-count",
"notification-timestamp-ago-seconds",
"notification-timestamp-ago-minutes",
"notification-timestamp-ago-hours",
"notification-timestamp-ago-days",
"notification-timestamp-ago-months",
"notification-timestamp-ago-years",
"notification-timestamp-today",
"notification-timestamp-yesterday",
"echo-notification-markasread",
"echo-notification-markasunread",
"echo-notification-markasread-tooltip",
"echo-notification-more-options-tooltip",
"echo-notification-alert-text-only",
"echo-notification-notice-text-only",
"echo-email-batch-bullet",
"echo-notification-placeholder",
"tooltip-pt-notifications-alert",
"tooltip-pt-notifications-notice",
"mytalk",
"mypreferences",
"sunday",
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.dm": {
"scripts": [
"mw.echo.js",
"model/mw.echo.dm.js",
"model/mw.echo.dm.SourcePagesModel.js",
"model/mw.echo.dm.PaginationModel.js",
"model/mw.echo.dm.FiltersModel.js",
"model/mw.echo.dm.SeenTimeModel.js",
"model/mw.echo.dm.ModelManager.js",
"model/mw.echo.dm.SortedList.js",
"model/mw.echo.dm.NotificationItem.js",
"model/mw.echo.dm.CrossWikiNotificationItem.js",
"model/mw.echo.dm.BundleNotificationItem.js",
"model/mw.echo.dm.NotificationsList.js",
"model/mw.echo.dm.NotificationGroupsList.js",
"model/mw.echo.dm.UnreadNotificationCounter.js"
],
"dependencies": [
"oojs",
"ext.echo.api",
"moment"
],
"messages": [
"echo-api-failure",
"echo-notification-loginrequired",
"echo-api-failure-cross-wiki"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.api": {
"scripts": [
"api/mw.echo.api.js",
"api/mw.echo.api.PromisePrioritizer.js",
"api/mw.echo.api.EchoApi.js",
"api/mw.echo.api.APIHandler.js",
"api/mw.echo.api.LocalAPIHandler.js",
"api/mw.echo.api.ForeignAPIHandler.js",
"api/mw.echo.api.NetworkHandler.js"
],
"dependencies": [
"mediawiki.api",
"mediawiki.ForeignApi",
"oojs"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.controller": {
"scripts": [
"controller/mw.echo.Controller.js"
],
"dependencies": [
"oojs",
"ext.echo.api",
"ext.echo.dm"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.base": {
"targets": [
"desktop",
"mobile"
],
"dependencies": [
"ext.echo.logger"
]
},
"ext.echo.init": {
"scripts": [
"ext.echo.init.js"
],
"dependencies": [
"ext.echo.api",
"mediawiki.Uri"
],
"targets": [
"desktop"
]
},
"ext.echo.styles.badge": {
"styles": [
"nojs/mw.echo.badge.less"
],
"skinStyles": {
"monobook": [
"nojs/mw.echo.badge.monobook.less"
],
"vector": [
"nojs/mw.echo.badge.vector.less"
],
"modern": [
"nojs/mw.echo.badge.modern.less"
]
},
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.styles.notifications": {
"styles": [
"nojs/mw.echo.notifications.less",
"styles/LabelIconWidget.less"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.styles.alert": {
"styles": [
"nojs/mw.echo.alert.less"
],
"skinStyles": {
"monobook": [
"nojs/mw.echo.alert.monobook.less"
],
"modern": [
"nojs/mw.echo.alert.modern.less"
]
},
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.special": {
"scripts": [
"ui/mw.echo.ui.PaginationWidget.js",
"ui/mw.echo.ui.DatedSubGroupListWidget.js",
"ui/mw.echo.ui.DatedNotificationsWidget.js",
"ui/mw.echo.ui.ReadStateButtonSelectWidget.js",
"ui/mw.echo.ui.PageNotificationsOptionWidget.js",
"ui/mw.echo.ui.PageFilterWidget.js",
"ui/mw.echo.ui.CrossWikiUnreadFilterWidget.js",
"ui/mw.echo.ui.NotificationsInboxWidget.js",
"ui/mw.echo.ui.SpecialHelpMenuWidget.js",
"special/ext.echo.special.js"
],
"styles": [
"styles/mw.echo.ui.PaginationWidget.less",
"styles/mw.echo.ui.DatedSubGroupListWidget.less",
"styles/mw.echo.ui.DatedNotificationsWidget.less",
"styles/mw.echo.ui.NotificationsInboxWidget.less",
"styles/mw.echo.ui.PageNotificationsOptionWidget.less",
"styles/mw.echo.ui.PageFilterWidget.less",
"styles/mw.echo.ui.CrossWikiUnreadFilterWidget.less",
"styles/mw.echo.ui.SpecialHelpMenuWidget.less"
],
"skinStyles": {
"monobook": [
"styles/mw.echo.ui.CrossWikiUnreadFilterWidget.monobook.less"
]
},
"dependencies": [
"ext.echo.ui",
"mediawiki.Uri",
"ext.echo.styles.special"
],
"messages": [
"echo-load-more-error",
"notification-inbox-filter-read",
"notification-inbox-filter-unread",
"notification-inbox-filter-all",
"echo-notification-placeholder-filters",
"echo-specialpage-pagination-numnotifications",
"echo-specialpage-pagination-range",
"echo-specialpage-pagefilters-title",
"echo-specialpage-pagefilters-subtitle",
"echo-mark-all-as-read",
"echo-more-info",
"echo-learn-more",
"mypreferences",
"echo-feedback",
"echo-specialpage-section-markread"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.styles.special": {
"styles": [
"nojs/mw.echo.special.less"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.echo.badgeicons": {
"class": "ResourceLoaderImageModule",
"data": "icons/badgeicons.json",
"selectorWithoutVariant": ".oo-ui-icon-{name}",
"selectorWithVariant": ".oo-ui-image-{variant}.oo-ui-icon-{name}"
}
},
"ResourceFileModulePaths": {
"localBasePath": "modules",
"remoteExtPath": "Echo/modules"
},
"Hooks": {
"LoadExtensionSchemaUpdates": "EchoHooks::onLoadExtensionSchemaUpdates",
"GetPreferences": "EchoHooks::getPreferences",
"PersonalUrls": "EchoHooks::onPersonalUrls",
"BeforePageDisplay": "EchoHooks::beforePageDisplay",
"MakeGlobalVariablesScript": "EchoHooks::makeGlobalVariablesScript",
"ResourceLoaderRegisterModules": "EchoHooks::onResourceLoaderRegisterModules",
"EventLoggingRegisterSchemas": "EchoHooks::onEventLoggingRegisterSchemas",
"ResourceLoaderTestModules": "EchoHooks::onResourceLoaderTestModules",
"UserGroupsChanged": "EchoHooks::onUserGroupsChanged",
"UserLoadOptions": "EchoHooks::onUserLoadOptions",
"UserSaveOptions": "EchoHooks::onUserSaveOptions",
"UserClearNewTalkNotification": "EchoHooks::onUserClearNewTalkNotification",
"ParserTestTables": "EchoHooks::onParserTestTables",
"EmailUserComplete": "EchoHooks::onEmailUserComplete",
"LoginFormValidErrorMessages": "EchoHooks::onLoginFormValidErrorMessages",
"OutputPageCheckLastModified": "EchoHooks::onOutputPageCheckLastModified",
"ArticleDeleteComplete": "EchoHooks::onArticleDeleteComplete",
"ArticleUndelete": "EchoHooks::onArticleUndelete",
"UserMergeAccountFields": "EchoHooks::onUserMergeAccountFields",
"MergeAccountFromTo": "EchoHooks::onMergeAccountFromTo",
"UserMergeAccountDeleteTables": "EchoHooks::onUserMergeAccountDeleteTables",
"EchoGetBundleRules": "EchoHooks::onEchoGetBundleRules",
"EchoAbortEmailNotification": "EchoHooks::onEchoAbortEmailNotification",
"PageContentSaveComplete": "EchoHooks::onPageContentSaveComplete",
"LocalUserCreated": "EchoHooks::onLocalUserCreated",
"ArticleRollbackComplete": "EchoHooks::onRollbackComplete",
"UserSaveSettings": "EchoHooks::onUserSaveSettings",
"AbortTalkPageEmailNotification": "EchoHooks::onAbortTalkPageEmailNotification",
"SendWatchlistEmailNotification": "EchoHooks::onSendWatchlistEmailNotification",
"GetNewMessagesAlert": "EchoHooks::abortNewMessagesAlert",
"LinksUpdateAfterInsert": "EchoHooks::onLinksUpdateAfterInsert",
"GetBetaFeaturePreferences": "EchoHooks::getBetaFeaturePreferences",
"ResourceLoaderGetConfigVars": "EchoHooks::onResourceLoaderGetConfigVars"
},
"config": {
"EchoEnableEmailBatch": {
"value": true
},
"EchoUseJobQueue": {
"value": false
},
"EchoEmailFooterAddress": {
"value": ""
},
"NotificationSenderName": {
"value": null
},
"NotificationReplyName": {
"value": "No Reply"
},
"EchoCluster": {
"value": false
},
"EchoSharedTrackingDB": {
"value": false
},
"EchoSharedTrackingCluster": {
"value": false
},
"EchoSectionTransition": {
"value": false
},
"EchoBundleTransition": {
"value": false
},
"EchoMaxUpdateCount": {
"value": 2000
},
"EchoMaxMentionsCount": {
"value": 50
},
"EchoMentionStatusNotifications": {
"value": false
},
"EchoMentionsOnMultipleSectionEdits": {
"value": true
},
"EchoMentionOnChanges": {
"value": true
},
"EchoBundleEmailInterval": {
"value": 0
},
"EchoNewMsgAlert": {
"value": true
},
"DefaultNotifyTypeAvailability": {
"value": {
"web": true,
"email": true
}
},
"NotifyTypeAvailabilityByCategory": {
"value": {
"emailuser": {
"web": true,
"email": false
},
"mention-failure": {
"web": true,
"email": false
},
"mention-success": {
"web": true,
"email": false
}
},
"merge_strategy": "array_plus_2d"
},
"EchoNotifiers": {
"value": {
"web": [
"EchoNotifier",
"notifyWithNotification"
],
"email": [
"EchoNotifier",
"notifyWithEmail"
]
}
},
"EchoAgentBlacklist": {
"value": []
},
"EchoOnWikiBlacklist": {
"value": "Echo-blacklist"
},
"EchoPerUserBlacklist": {
"value": false
},
"EchoPerUserWhitelistFormat": {
"value": "%s/Echo-whitelist"
},
"EchoCrossWikiNotifications": {
"value": false
},
"EchoUseCrossWikiBetaFeature": {
"value": false
},
"EchoNotificationCategories": {
"value": {
"system": {
"priority": 9,
"no-dismiss": [
"all"
]
},
"user-rights": {
"priority": 9,
"tooltip": "echo-pref-tooltip-user-rights"
},
"other": {
"no-dismiss": [
"all"
]
},
"edit-user-talk": {
"priority": 1,
"no-dismiss": [
"web"
],
"tooltip": "echo-pref-tooltip-edit-user-talk"
},
"reverted": {
"priority": 9,
"tooltip": "echo-pref-tooltip-reverted"
},
"article-linked": {
"priority": 5,
"tooltip": "echo-pref-tooltip-article-linked"
},
"mention": {
"priority": 4,
"tooltip": "echo-pref-tooltip-mention"
},
"mention-failure": {
"priority": 4,
"tooltip": "echo-pref-tooltip-mention-failure"
},
"mention-success": {
"priority": 4,
"tooltip": "echo-pref-tooltip-mention-success"
},
"emailuser": {
"priority": 9,
"tooltip": "echo-pref-tooltip-emailuser"
},
"article-reminder": {
"priority": 1,
"tooltip": "echo-pref-tooltip-article-reminder"
}
},
"merge_strategy": "array_plus_2d"
},
"EchoNotificationIcons": {
"value": {
"placeholder": {
"path": "Echo/modules/icons/notice.svg"
},
"chat": {
"path": {
"ltr": "Echo/modules/icons/speechBubbles-ltr-progressive.svg",
"rtl": "Echo/modules/icons/speechBubbles-rtl-progressive.svg"
}
},
"edit": {
"path": "Echo/modules/icons/edit-progressive.svg"
},
"edit-user-talk": {
"path": "Echo/modules/icons/edit-user-talk-progressive.svg"
},
"linked": {
"path": "Echo/modules/icons/link-progressive.svg"
},
"mention": {
"path": "Echo/modules/icons/mention-progressive.svg"
},
"mention-failure": {
"path": "Echo/modules/icons/mention-failure.svg"
},
"mention-success": {
"path": "Echo/modules/icons/mention-success-constructive.svg"
},
"mention-status-bundle": {
"path": "Echo/modules/icons/mention-status-bundle-progressive.svg"
},
"reviewed": {
"path": "Echo/modules/icons/articleCheck-progressive.svg"
},
"revert": {
"path": "Echo/modules/icons/revert.svg"
},
"user-rights": {
"path": "Echo/modules/icons/user-rights-progressive.svg"
},
"emailuser": {
"path": "Echo/modules/icons/message-constructive.svg"
},
"help": {
"path": "Echo/modules/icons/help.svg"
},
"global": {
"path": "Echo/modules/icons/global-progressive.svg"
},
"site": {
"url": false
},
"article-reminder": {
"path": "Echo/modules/icons/global-progressive.svg"
}
},
"merge_strategy": "array_plus_2d"
},
"EchoSecondaryIcons": {
"value": {
"linked": {
"path": "Echo/modules/icons/link-progressive.svg"
},
"changes": {
"path": "Echo/modules/icons/changes.svg"
},
"thanks": {
"path": {
"ltr": "Echo/modules/icons/userTalk-ltr.svg",
"rtl": "Echo/modules/icons/userTalk-rtl.svg"
}
},
"userSpeechBubble": {
"path": "Echo/modules/icons/user-speech-bubble.svg"
}
},
"merge_strategy": "array_plus_2d"
},
"EchoNotifications": {
"value": {
"welcome": {
"user-locators": [
"EchoUserLocator::locateEventAgent"
],
"category": "system",
"group": "positive",
"section": "message",
"notify-type-availability": {
"email": false
},
"presentation-model": "EchoWelcomePresentationModel"
},
"edit-user-talk": {
"presentation-model": "EchoEditUserTalkPresentationModel",
"user-locators": [
"EchoUserLocator::locateTalkPageOwner"
],
"category": "edit-user-talk",
"group": "interactive",
"section": "alert",
"bundle": {
"web": true,
"email": false,
"expandable": true
},
"immediate": true
},
"reverted": {
"presentation-model": "EchoRevertedPresentationModel",
"user-locators": [
[
"EchoUserLocator::locateFromEventExtra",
[
"reverted-user-id"
]
]
],
"category": "reverted",
"group": "negative",
"section": "alert"
},
"page-linked": {
"presentation-model": "EchoPageLinkedPresentationModel",
"user-locators": [
"EchoUserLocator::locateArticleCreator"
],
"category": "article-linked",
"group": "neutral",
"section": "message",
"bundle": {
"web": true,
"email": true,
"expandable": true
}
},
"mention": {
"user-locators": [
[
"EchoUserLocator::locateFromEventExtra",
[
"mentioned-users"
]
]
],
"category": "mention",
"group": "interactive",
"section": "alert",
"presentation-model": "EchoMentionPresentationModel"
},
"mention-summary": {
"user-locators": [
[
"EchoUserLocator::locateFromEventExtra",
[
"mentioned-users"
]
]
],
"category": "mention",
"group": "interactive",
"section": "alert",
"presentation-model": "EchoMentionInSummaryPresentationModel"
},
"mention-failure": {
"user-locators": [
[
"EchoUserLocator::locateEventAgent"
]
],
"category": "mention-failure",
"bundle": {
"web": true,
"expandable": true
},
"group": "negative",
"section": "alert",
"presentation-model": "EchoMentionStatusPresentationModel"
},
"mention-failure-too-many": {
"user-locators": [
[
"EchoUserLocator::locateEventAgent"
]
],
"category": "mention-failure",
"group": "negative",
"section": "alert",
"presentation-model": "EchoMentionStatusPresentationModel"
},
"mention-success": {
"user-locators": [
[
"EchoUserLocator::locateEventAgent"
]
],
"category": "mention-success",
"bundle": {
"web": true,
"expandable": true
},
"group": "positive",
"section": "alert",
"presentation-model": "EchoMentionStatusPresentationModel"
},
"user-rights": {
"user-locators": [
[
"EchoUserLocator::locateFromEventExtra",
[
"user"
]
]
],
"category": "user-rights",
"group": "neutral",
"section": "alert",
"presentation-model": "EchoUserRightsPresentationModel"
},
"emailuser": {
"presentation-model": "EchoEmailUserPresentationModel",
"user-locators": [
[
"EchoUserLocator::locateFromEventExtra",
[
"to-user-id"
]
]
],
"category": "emailuser",
"group": "neutral",
"section": "alert"
},
"foreign": {
"presentation-model": "EchoForeignPresentationModel",
"user-locators": [
"EchoUserLocator::locateEventAgent"
],
"category": "foreign",
"group": "positive",
"section": "alert"
},
"thank-you-edit": {
"user-locators": [
"EchoUserLocator::locateEventAgent"
],
"category": "system",
"notify-type-availability": {
"email": false
},
"group": "positive",
"presentation-model": "EchoEditThresholdPresentationModel",
"section": "message"
},
"article-reminder": {
"user-locators": [
"EchoUserLocator::locateEventAgent"
],
"category": "article-reminder",
"group": "positive",
"presentation-model": "EchoArticleReminderPresentationModel",
"section": "message"
}
},
"merge_strategy": "array_plus_2d"
},
"EchoCacheVersion": {
"value": "1.12"
},
"EchoEventLoggingVersion": {
"value": "1.12"
},
"EchoEventLoggingSchemas": {
"value": {
"Echo": {
"enabled": false,
"revision": 7731316,
"client": false
},
"EchoMail": {
"enabled": false,
"revision": 5467650,
"client": false
},
"EchoInteraction": {
"enabled": false,
"revision": 15823738,
"client": true
}
},
"merge_strategy": "array_plus_2d"
},
"AllowArticleReminderNotification": {
"value": false,
"description": "This is a feature flag to the Article Reminder notification"
},
"EchoMaxMentionsInEditSummary": {
"value": 0,
"description": "Maximum nubmer of users that will be notified that they were linked from an edit summary or 0 for no notifications"
}
},
"manifest_version": 2,
"AutoloadClasses": {
"ApiCrossWikiBase": "includes/api/ApiCrossWikiBase.php",
"ApiEchoArticleReminder": "includes/api/ApiEchoArticleReminder.php",
"ApiEchoMarkRead": "includes/api/ApiEchoMarkRead.php",
"ApiEchoMarkReadTest": "tests/phpunit/api/ApiEchoMarkReadTest.php",
"ApiEchoMarkSeen": "includes/api/ApiEchoMarkSeen.php",
"ApiEchoNotifications": "includes/api/ApiEchoNotifications.php",
"ApiEchoNotificationsTest": "tests/phpunit/api/ApiEchoNotificationsTest.php",
"ApiEchoUnreadNotificationPages": "includes/api/ApiEchoUnreadNotificationPages.php",
"BackfillReadBundles": "maintenance/backfillReadBundles.php",
"BackfillUnreadWikis": "maintenance/backfillUnreadWikis.php",
"Bundleable": "includes/Bundleable.php",
"Bundler": "includes/Bundler.php",
"BundlerTest": "tests/phpunit/BundlerTest.php",
"ContainmentSetTest": "tests/phpunit/ContainmentSetTest.php",
"EchoAbstractEntity": "includes/model/AbstractEntity.php",
"EchoAbstractMapper": "includes/mapper/AbstractMapper.php",
"EchoAbstractMapperStub": "tests/phpunit/mapper/EchoAbstractMapperStub.php",
"EchoAbstractMapperTest": "tests/phpunit/mapper/AbstractMapperTest.php",
"EchoArrayList": "includes/EchoArrayList.php",
"EchoAttributeManager": "includes/AttributeManager.php",
"EchoAttributeManagerTest": "tests/phpunit/AttributeManagerTest.php",
"EchoCachedList": "includes/EchoCachedList.php",
"EchoCallbackIterator": "includes/iterator/CallbackIterator.php",
"EchoCatchableFatalErrorException": "includes/exception/CatchableFatalErrorException.php",
"EchoContainmentList": "includes/EchoContainmentList.php",
"EchoContainmentSet": "includes/EchoContainmentSet.php",
"EchoDataOutputFormatter": "includes/DataOutputFormatter.php",
"EchoDeferredMarkAsDeletedUpdate": "includes/DeferredMarkAsDeletedUpdate.php",
"EchoDiffGroup": "includes/EchoDiffGroup.php",
"EchoDiffParser": "includes/EchoDiffParser.php",
"EchoDiffParserTest": "tests/phpunit/DiffParserTest.php",
"EchoDiscussionParser": "includes/DiscussionParser.php",
"EchoDiscussionParserTest": "tests/phpunit/DiscussionParserTest.php",
"EchoEditThresholdPresentationModel": "includes/formatters/EditThresholdPresentationModel.php",
"EchoEditUserTalkPresentationModel": "includes/formatters/EditUserTalkPresentationModel.php",
"EchoArticleReminderPresentationModel": "includes/formatters/ArticleReminderPresentationModel.php",
"EchoEmailFormat": "includes/EmailFormat.php",
"EchoEmailFrequency": "includes/EmailFrequency.php",
"EchoEmailUserPresentationModel": "includes/formatters/EmailUserPresentationModel.php",
"EchoEvent": "includes/model/Event.php",
"EchoEventDigestFormatter": "includes/formatters/EchoEventDigestFormatter.php",
"EchoEventFormatter": "includes/formatters/EchoEventFormatter.php",
"EchoEventMapper": "includes/mapper/EventMapper.php",
"EchoEventMapperTest": "tests/phpunit/mapper/EventMapperTest.php",
"EchoEventPresentationModel": "includes/formatters/EventPresentationModel.php",
"EchoExecuteFirstArgumentStub": "tests/phpunit/mapper/EchoExecuteFirstArgumentStub.php",
"EchoFilteredSequentialIterator": "includes/iterator/FilteredSequentialIterator.php",
"EchoFlyoutFormatter": "includes/formatters/EchoFlyoutFormatter.php",
"EchoForeignNotifications": "includes/ForeignNotifications.php",
"EchoForeignPresentationModel": "includes/formatters/EchoForeignPresentationModel.php",
"EchoForeignWikiRequest": "includes/ForeignWikiRequest.php",
"EchoHooks": "includes/EchoHooks.php",
"EchoHtmlDigestEmailFormatter": "includes/formatters/EchoHtmlDigestEmailFormatter.php",
"EchoHtmlEmailFormatter": "includes/formatters/EchoHtmlEmailFormatter.php",
"EchoIcon": "includes/formatters/EchoIcon.php",
"EchoIteratorDecorator": "includes/iterator/IteratorDecorator.php",
"EchoLocalCache": "includes/cache/LocalCache.php",
"EchoMentionInSummaryPresentationModel": "includes/formatters/MentionInSummaryPresentationModel.php",
"EchoMentionPresentationModel": "includes/formatters/MentionPresentationModel.php",
"EchoMentionStatusPresentationModel": "includes/formatters/MentionStatusPresentationModel.php",
"EchoModelFormatter": "includes/formatters/EchoModelFormatter.php",
"EchoModerationController": "includes/controller/ModerationController.php",
"EchoMultipleIterator": "includes/iterator/MultipleIterator.php",
"EchoNotRecursiveIterator": "includes/iterator/NotRecursiveIterator.php",
"EchoNotification": "includes/model/Notification.php",
"EchoNotificationController": "includes/controller/NotificationController.php",
"EchoNotificationDeleteJob": "includes/jobs/NotificationDeleteJob.php",
"EchoNotificationJob": "includes/jobs/NotificationJob.php",
"EchoNotificationMapper": "includes/mapper/NotificationMapper.php",
"EchoNotificationMapperTest": "tests/phpunit/mapper/NotificationMapperTest.php",
"EchoNotificationTest": "tests/phpunit/model/NotificationTest.php",
"EchoNotifier": "includes/Notifier.php",
"EchoOOUI\\LabelIconWidget": "includes/ooui/LabelIconWidget.php",
"EchoOnWikiList": "includes/EchoOnWikiList.php",
"EchoPageLinkedPresentationModel": "includes/formatters/PageLinkedPresentationModel.php",
"EchoPlainTextDigestEmailFormatter": "includes/formatters/EchoPlainTextDigestEmailFormatter.php",
"EchoPlainTextEmailFormatter": "includes/formatters/EchoPlainTextEmailFormatter.php",
"EchoPresentationModelSectionTrait": "includes/formatters/PresentationModelSectionTrait.php",
"EchoRevertedPresentationModel": "includes/formatters/RevertedPresentationModel.php",
"EchoRevisionLocalCache": "includes/cache/RevisionLocalCache.php",
"EchoSeenTime": "includes/SeenTime.php",
"EchoSummaryParser": "includes/EchoSummaryParser.php",
"EchoSuppressionRowUpdateGenerator": "includes/schemaUpdate.php",
"EchoTalkPageFunctionalTest": "tests/phpunit/TalkPageFunctionalTest.php",
"EchoTargetPage": "includes/model/TargetPage.php",
"EchoTargetPageMapper": "includes/mapper/TargetPageMapper.php",
"EchoTargetPageMapperTest": "tests/phpunit/mapper/TargetPageMapperTest.php",
"EchoTargetPageTest": "tests/phpunit/model/TargetPageTest.php",
"EchoTitleLocalCache": "includes/cache/TitleLocalCache.php",
"EchoTitleLocalCacheTest": "tests/phpunit/cache/TitleLocalCacheTest.php",
"EchoUnreadWikis": "includes/UnreadWikis.php",
"EchoUserLocator": "includes/UserLocator.php",
"EchoUserLocatorTest": "tests/phpunit/UserLocatorTest.php",
"EchoUserNotificationGateway": "includes/gateway/UserNotificationGateway.php",
"EchoUserNotificationGatewayTest": "tests/phpunit/gateway/UserNotificationGatewayTest.php",
"EchoUserRightsPresentationModel": "includes/formatters/UserRightsPresentationModel.php",
"EchoWelcomePresentationModel": "includes/formatters/WelcomePresentationModel.php",
"FilteredSequentialIteratorTest": "tests/phpunit/iterator/FilteredSequentialIteratorTest.php",
"GenerateSampleNotifications": "maintenance/generateSampleNotifications.php",
"MWEchoDbFactory": "includes/EchoDbFactory.php",
"MWEchoDbFactoryTest": "tests/phpunit/EchoDbFactoryTest.php",
"MWEchoEmailBatch": "includes/EmailBatch.php",
"MWEchoEventLogging": "includes/EventLogging.php",
"MWEchoNotifUser": "includes/NotifUser.php",
"MWEchoNotifUserTest": "tests/phpunit/NotifUserTest.php",
"MWEchoThankYouEditTest": "tests/phpunit/ThankYouEditTest.php",
"NotificationControllerTest": "tests/phpunit/controller/NotificationControllerTest.php",
"NotificationPager": "includes/special/NotificationPager.php",
"NotificationsTest": "tests/NotificationsTest.php",
"ProcessEchoEmailBatch": "maintenance/processEchoEmailBatch.php",
"RemoveInvalidNotification": "maintenance/removeInvalidNotification.php",
"RemoveOrphanedEvents": "maintenance/removeOrphanedEvents.php",
"ResourceLoaderEchoImageModule": "includes/ResourceLoaderEchoImageModule.php",
"SpecialDisplayNotificationsConfiguration": "includes/special/SpecialDisplayNotificationsConfiguration.php",
"SpecialNotifications": "includes/special/SpecialNotifications.php",
"SpecialNotificationsFormatter": "includes/formatters/SpecialNotificationsFormatter.php",
"SpecialNotificationsMarkRead": "includes/special/SpecialNotificationsMarkRead.php",
"SuppressionMaintenanceTest": "tests/phpunit/maintenance/SupressionMaintenanceTest.php",
"TestDiscussionParser": "maintenance/testDiscussionParser.php",
"UpdateEchoSchemaForSuppression": "maintenance/updateEchoSchemaForSuppression.php",
"EchoUpdatePerUserBlacklist": "maintenance/updatePerUserBlacklist.php"
}
}