Restructure background script (#70)

Splits some background script functionality into separate modules:
 - Receiver selector handling is moved to ./SelectorManager.
 - Status bridge handling is moved to ./StatusManager.
 - Menu creation and updates are handled in ./createMenus.
 - Shim creation is handled in ./createShim.

TypedEventTarget allows EventTarget-derived classes to export typed events.

Options type definition is moved to ./lib/options, module assumes more responsibility for update handling and provides a "changed" event.

Private cast._requestSession method allows bypassing receiver selector.
This commit is contained in:
Matt Hensman
2019-07-26 00:09:51 +01:00
committed by GitHub
parent 2fe72ed24c
commit ba8c28bf39
40 changed files with 1751 additions and 1241 deletions

View File

@@ -9,6 +9,28 @@ export function getNextEllipsis (ellipsis: string): string {
/* tslint:enable:curly */
}
/**
* Template literal tag function, JSON-encodes substitutions.
*/
export function stringify (
templateStrings: TemplateStringsArray
, ...substitutions: any[]) {
let formattedString = "";
for (const templateString of templateStrings) {
if (!formattedString) {
formattedString += templateString;
continue;
}
formattedString += JSON.stringify(substitutions.shift());
formattedString += templateString;
}
return formattedString;
}
interface WindowCenteredProps {
width: number;