Building Block View

Whitebox Overall System

Legacy detailed views
The future of this detailed content is undecided...
APIs

| Building Block | Type/Context | Responsibility |
| DescriptionLookup | Lookups | Lookup client descriptions from a variety of sources |
| RepoLinker | Response | Creates links to Repository Entity concepts |

| Building Block | Type/Context | Responsibility |
| RepoLinker | Response | Creates links to Repository Entity concepts |

| Building Block | Type/Context | Responsibility |
| SettingsArray | Config | WikibaseClient settings containing meta information |

| Building Block | Type/Context | Responsibility |
| EntityIdLookup | Lookups | Lookup EntityIds from Titles |
| TermBuffer | Lookups | Lookup buffered Terms |
| AliasTermBuffer | Lookups | Lookup buffered Aliases |
| RepoLinker | Response | Creates links to Repository Entity concepts |

| Building Block | Type/Context | Responsibility |
| Deserializer (Reference) | Input | Get Reference objects from user input |
| ReferenceFormatter | Format Reference | Format Reference as wikitext |
| Parser | Output | Parse Reference wikitext and output HTML |
Entity Data Access

| Building Block | Responsibility |
| Shared | Services shared between multiple types of entity data access (lookups, formatters, utilities) |
| ParserFunctions | MediaWiki parser function binding for entity data access |
| Scribunto | Scribunto extension binding for entity data access |
Shared (Entity Data Access)

| Building Block | Responsibility |
| SnakFormatter | Formats Snaks in a client context |
| ReferenceFormatter | Formats references in a client context |
| StatementTransclusionInteractor | Renders the main snaks associated with a given Property on an Entity |
| EntityTitleLookup | Resolves a specific sitelink on a specific Item to a Title |
| PropertyIdResolver | Resolves a PropertyId from input which could be a Label or prefixed ID |
| SnaksFinder | Find Snaks for claims in a given Entity, based on PropertyId |
ParserFunctions

| Building Block | Responsibility |
| Runner | Contains the methods called by MediaWiki when parser functions are used |
| StatementGroupRenderer | Renderer for rendering a statement group |
Scribunto

| Building Block | Responsibility |
| TermLookup | Lookup terms of Entities for use in LUA |
| Scribunto_LuaLibraryBase | Registers and defined methods called by the Scribunto extension |
| LanguageDependentLuaBindings | Actual implementations of various functions that can be accessed through Scribunto. |
| LanguageIndependentLuaBindings | Actual implementations of various functions that can be accessed through Scribunto. |
| LuaEntityBindings | Actual implementations of various functions that can be accessed through Scribunto. |
| SnakSerializationRenderer | Renders snaks for LUA |
| EntityAccessor | Miscellaneous functionality for exposing Entities through LUA |
| LuaFunctionCallTracker | Helper for tracking accesses of Lua functions |
Entity Change Notifications

| Building Block | Responsibility |
| Changes | Receive and handle regular Repository Entity Data changes |
| ChangeModifications | Receive and handle changes to the history of Repository Entities |
| RecentChanges | Represent changes to Repository Entities in a Client RecentChanges system |
| Usage | Tracking the usage of Repository Entities on a Client |
Changes

| Building Block | Responsibility |
| AffectedPagesFinder | Finds PageEntityUsages that are affected by a Change |
| ChangeHandler | Handles EntityChanges |
| ChangeRunCoalescer | A transformer for lists of EntityChanges that combines runs of changes into a single change |
| InjectRCRecordsJob | Persists RecentChanges entries |
| PageUpdater | Triggers various updates needed when pages will change |
Change Modifications

| Building Block | Responsibility |
| ChangeModificationNotificationJob | Base for handling Entity Revision changes |
| ChangeDeletionNotificationJob | Handles Repository Entity Revision Deletions |
| ChangeVisibilityNotificationJob | Handles Repository Entity Revision Visibility Changes |
Recent Changes

| Building Block | Responsibility |
| RecentChangesFinder | Find RecentChange entries based on their meta data |
| ExtenalChange | Data object representing a revision that has changed an Entity on an external site |
| RevisionData | Data object representing a revision on an external site |
| ChangeLineFormatter | Formats and ExternalChange as HTML |
| SiteLinkCommentCreator | Deals with creating comment infomation relating to SiteLink changes |
Usage

UsageAspectTransformer is only used outside of this block and perhaps shouldn't live here
| Building Block | Responsibility |
| UsageLookup | Find EntityUsages for pages |
| EntityUsage | Data object representing the usage of an Entity (but not identifying where it is used) |
| PageEntityUsages | Data object associating a EntityUsage with a Page ID |
| UsageAccumulator | Interface allowing accumulation of usage tracking information for a given page |
| UsageTrackingSnakFormatter | SnakFormatter implementation that will accumulate usage in a UsageAccumulator |
| UsageTrackingLanguageFallbackLabelDescriptionLookup | LanguageFallbackLabelDescriptionLookup implementation that will accumulate usage in a UsageAccumulator |
| UsageDeduplicator | De-duplicates entity usage listsfor performance and storage reasons |
| SubscriptionManager | Persists infomation about pages being "subscribed" to updates for an Entity |
| UsageTracker | Persists infomation about the EntityUsages of a page |
| UsageAspectTransformer | Transforms usage aspect based on a filter of aspects relevant in some context. |
| BulkSubscriptionUpdater | Bulk inserts for subscriptions into wb_changes_subscription based on wbc_entity_usage. |
| AddUsagesForPageJob | Job for scheduled invocation of UsageUpdater which is triggered by a MediaWiki hook related to Wikitext-based content edits. |
| UsageUpdater | Service for updating usage tracking and associated change subscription information. |
| populateEntityUsage | Maintenance script for populating wbc_entity_usage based on the page_props table. |
| updateSubscriptions | Maintenance script for inserting subscriptions into wb_changes_subscription based on wbc_entity_usage. |

| Building Block | Responsibility |
| UpdateRepo | Update the repository after certain changes have been performed in the client |
| UpdateRepoOnDelete | Update the repository after page deletes in the client |
| UpdateRepoOnMove | Update the repository after page moves in the client |
Data Bridge
Data Bridge is a frontend component enabling Repository edits on the Client via the Repository API.

| Building Block | Responsibility |
| Data Access | A group of classes and interfaces for interacting with WikibaseRepo data and MediaWiki functionality |
| Presentation | UI components for presentation |
| Store | State management of the UI components |
| MediaWiki | Logic that has to do with Data Bridge attaching itself in the right places on the wiki article |
| ChangeOp | Strategies for applying changes (update or replace) to the entity |
| Tracking | Tracking data bridge usage and errors |
Data Access

| Building Block | Responsibility |
| Errors | Provide context about errors that might occur in Data Bridge. The native Error TypeScript class is used |
| ApiErrors | Error returned from the Repo API |
| Other Errors | Error that may occur in Data Bridge and are not related to the API, e.g. an error on saving |
| Repo API | Implementations of WikibaseRepo API requests |
| Reading API | Implementations of WikibaseRepo API requests that have to do with reading from repository |
| Writing API | Implementations of WikibaseRepo API requests that have to do with writing to repository |
| ApiEntityLabelRepository | A repository to get the label of specific entity in a specific language |
| ApiPageEditPermissionErrorsRepository | A repository for determining potential permission errors when editing a page. |
| ApiPropertyDataTypeRepository | A repository to get the datatype of a property |
| ApiRenderReferencesRepository | A repository to render reference JSON blobs into HTML strings |
| ApiReadingEntityRepository | A repository for reading the latest revision of an entity. |
| ApiRepoConfigRepository | A repository to get the configuration from the Wikibase repository instance where the data is going to be saved |
| ApiWritingRepository | Saves the modified entity |
| CombiningPermissionsRepository | A repository for determining potential permission errors when using the Data Bridge |
| TrimmingWritingRepository | A WritingEntityRepository that compares the old and new entity data and sends parts that changed to an underlying ApiWritingRepository |
| SpecialPageReadingEntityRepository | A repository for reading the latest revision of an entity |
Presentation

| Building Block | Responsibility |
| UI Components | All presentational components that construct Data Bridge's modal and its contents |
| Plugins and Utilities | Logic which is common for several components, e.g. representing messages from mw's i18n mechanism |
| Error Components | Front end components that represent an error which occurred in Data Bridge |
| Call To Action Components | Front end components that require an action from the user |
| Base components | Purely presentational components, e.g. a button. Those components will be replaced by Design System components in the future. |
| Messages | A wrapper around MediaWiki's i18n mechanism |
| ClientRouter | Format page urls for client |
| RepoRouter | Format page urls for a repository |
| BridgeConfig | Configuration needed in some UI components, e.g. the link for reporting issues with data bridge |

| Building Block | Responsibility |
| Dispatcher | Dispatches Data Bridge to the appropriate DOM element in the wiki article |
| BridgeDomElementSelector | Selects elements in a wiki article's DOM that can be overloaded with Data Bridge |
| SelectedElement | An interface which describes a DOM element to which Data Bridge is dispatched |
| subscribeToEvents | Actions taken on the wiki page when certain data bridge events occur. E.g. reload the page when the data bridge edit is saved |
| prepareContainer | Creates a container element based on OO.ui.Dialog in which Data Bridge is placed on the wiki page |
| EventTracker | An abstraction layer for MediaWiki's event tracker |
ChangeOp

| Building Block | Responsibility |
| ReplaceMutationStrategy | Strategy for replacing a statement |
| StatementMutationStrategy | Interface for a statement mutation strategy |
| UpdateMutationStrategy | Strategy for updating a statement |
| StatementMutationError | Represents an error that can occur when mutating a statement |
| StatementMutationFactory | Chooses the right mutation strategy based on the edit decision (replace or update) |
Special Pages

| Building Block | Type/Context | Responsibility |
| Special Pages | WikibaseClient | Provide entity usage meta information |
| SpecialEntityUsage | WikibaseClient | Lists client wiki pages that use a given entity ID and the aspects they use |
| SpecialPagesWithBadges | WikibaseClient | Shows a list of pages with a given badge |
| SpecialUnconnectedPages | WikibaseClient | Lists client pages that are not connected to repository items |
Interwiki

| Building Block | Responsibility |
| populateInterwiki | Maintenance script that populates the interwiki table in the client's MediaWiki DB with list of sites |