Types src/content
This commit is contained in:
parent
992b3ac65d
commit
d01db82c0d
62 changed files with 1411 additions and 468 deletions
|
@ -1,78 +1,276 @@
|
|||
type WebMessageSender = Window | MessagePort | ServiceWorker | null;
|
||||
type WebMessageListener = (msg: any, sender: WebMessageSender | null) => void;
|
||||
import * as operations from './operations';
|
||||
|
||||
const onWebMessage = (listener: WebMessageListener) => {
|
||||
window.addEventListener('message', (event: MessageEvent) => {
|
||||
let sender = event.source;
|
||||
let message = null;
|
||||
try {
|
||||
message = JSON.parse(event.data);
|
||||
} catch (e) {
|
||||
// ignore unexpected message
|
||||
return;
|
||||
}
|
||||
listener(message, sender);
|
||||
});
|
||||
};
|
||||
|
||||
const onBackgroundMessage = (
|
||||
listener: (msg: any, sender: browser.runtime.MessageSender,
|
||||
) => void) => {
|
||||
browser.runtime.onMessage.addListener(listener);
|
||||
};
|
||||
|
||||
const onMessage = (
|
||||
listener: (msg: any, sender: WebMessageSender | browser.runtime.MessageSender,
|
||||
) => void) => {
|
||||
onWebMessage(listener);
|
||||
onBackgroundMessage(listener);
|
||||
};
|
||||
|
||||
export default {
|
||||
BACKGROUND_OPERATION: 'background.operation',
|
||||
|
||||
CONSOLE_UNFOCUS: 'console.unfocus',
|
||||
CONSOLE_ENTER_COMMAND: 'console.enter.command',
|
||||
CONSOLE_ENTER_FIND: 'console.enter.find',
|
||||
CONSOLE_QUERY_COMPLETIONS: 'console.query.completions',
|
||||
CONSOLE_SHOW_COMMAND: 'console.show.command',
|
||||
CONSOLE_SHOW_ERROR: 'console.show.error',
|
||||
CONSOLE_SHOW_INFO: 'console.show.info',
|
||||
CONSOLE_SHOW_FIND: 'console.show.find',
|
||||
CONSOLE_HIDE: 'console.hide',
|
||||
|
||||
FOLLOW_START: 'follow.start',
|
||||
FOLLOW_REQUEST_COUNT_TARGETS: 'follow.request.count.targets',
|
||||
FOLLOW_RESPONSE_COUNT_TARGETS: 'follow.response.count.targets',
|
||||
FOLLOW_CREATE_HINTS: 'follow.create.hints',
|
||||
FOLLOW_SHOW_HINTS: 'follow.update.hints',
|
||||
FOLLOW_REMOVE_HINTS: 'follow.remove.hints',
|
||||
FOLLOW_ACTIVATE: 'follow.activate',
|
||||
FOLLOW_KEY_PRESS: 'follow.key.press',
|
||||
|
||||
MARK_SET_GLOBAL: 'mark.set.global',
|
||||
MARK_JUMP_GLOBAL: 'mark.jump.global',
|
||||
|
||||
TAB_SCROLL_TO: 'tab.scroll.to',
|
||||
|
||||
FIND_NEXT: 'find.next',
|
||||
FIND_PREV: 'find.prev',
|
||||
FIND_GET_KEYWORD: 'find.get.keyword',
|
||||
FIND_SET_KEYWORD: 'find.set.keyword',
|
||||
|
||||
ADDON_ENABLED_QUERY: 'addon.enabled.query',
|
||||
ADDON_ENABLED_RESPONSE: 'addon.enabled.response',
|
||||
ADDON_TOGGLE_ENABLED: 'addon.toggle.enabled',
|
||||
|
||||
OPEN_URL: 'open.url',
|
||||
|
||||
SETTINGS_CHANGED: 'settings.changed',
|
||||
SETTINGS_QUERY: 'settings.query',
|
||||
|
||||
WINDOW_TOP_MESSAGE: 'window.top.message',
|
||||
CONSOLE_FRAME_MESSAGE: 'console.frame.message',
|
||||
|
||||
onWebMessage,
|
||||
onBackgroundMessage,
|
||||
onMessage,
|
||||
export const BACKGROUND_OPERATION = 'background.operation';
|
||||
|
||||
export const CONSOLE_UNFOCUS = 'console.unfocus';
|
||||
export const CONSOLE_ENTER_COMMAND = 'console.enter.command';
|
||||
export const CONSOLE_ENTER_FIND = 'console.enter.find';
|
||||
export const CONSOLE_QUERY_COMPLETIONS = 'console.query.completions';
|
||||
export const CONSOLE_SHOW_COMMAND = 'console.show.command';
|
||||
export const CONSOLE_SHOW_ERROR = 'console.show.error';
|
||||
export const CONSOLE_SHOW_INFO = 'console.show.info';
|
||||
export const CONSOLE_SHOW_FIND = 'console.show.find';
|
||||
export const CONSOLE_HIDE = 'console.hide';
|
||||
|
||||
export const FOLLOW_START = 'follow.start';
|
||||
export const FOLLOW_REQUEST_COUNT_TARGETS = 'follow.request.count.targets';
|
||||
export const FOLLOW_RESPONSE_COUNT_TARGETS = 'follow.response.count.targets';
|
||||
export const FOLLOW_CREATE_HINTS = 'follow.create.hints';
|
||||
export const FOLLOW_SHOW_HINTS = 'follow.update.hints';
|
||||
export const FOLLOW_REMOVE_HINTS = 'follow.remove.hints';
|
||||
export const FOLLOW_ACTIVATE = 'follow.activate';
|
||||
export const FOLLOW_KEY_PRESS = 'follow.key.press';
|
||||
|
||||
export const MARK_SET_GLOBAL = 'mark.set.global';
|
||||
export const MARK_JUMP_GLOBAL = 'mark.jump.global';
|
||||
|
||||
export const TAB_SCROLL_TO = 'tab.scroll.to';
|
||||
|
||||
export const FIND_NEXT = 'find.next';
|
||||
export const FIND_PREV = 'find.prev';
|
||||
export const FIND_GET_KEYWORD = 'find.get.keyword';
|
||||
export const FIND_SET_KEYWORD = 'find.set.keyword';
|
||||
|
||||
export const ADDON_ENABLED_QUERY = 'addon.enabled.query';
|
||||
export const ADDON_ENABLED_RESPONSE = 'addon.enabled.response';
|
||||
export const ADDON_TOGGLE_ENABLED = 'addon.toggle.enabled';
|
||||
|
||||
export const OPEN_URL = 'open.url';
|
||||
|
||||
export const SETTINGS_CHANGED = 'settings.changed';
|
||||
export const SETTINGS_QUERY = 'settings.query';
|
||||
|
||||
export const CONSOLE_FRAME_MESSAGE = 'console.frame.message';
|
||||
|
||||
interface BackgroundOperationMessage {
|
||||
type: typeof BACKGROUND_OPERATION;
|
||||
operation: operations.Operation;
|
||||
}
|
||||
|
||||
interface ConsoleUnfocusMessage {
|
||||
type: typeof CONSOLE_UNFOCUS;
|
||||
}
|
||||
|
||||
interface ConsoleEnterCommandMessage {
|
||||
type: typeof CONSOLE_ENTER_COMMAND;
|
||||
text: string;
|
||||
}
|
||||
|
||||
interface ConsoleEnterFindMessage {
|
||||
type: typeof CONSOLE_ENTER_FIND;
|
||||
text: string;
|
||||
}
|
||||
|
||||
interface ConsoleQueryCompletionsMessage {
|
||||
type: typeof CONSOLE_QUERY_COMPLETIONS;
|
||||
text: string;
|
||||
}
|
||||
|
||||
interface ConsoleShowCommandMessage {
|
||||
type: typeof CONSOLE_SHOW_COMMAND;
|
||||
command: string;
|
||||
}
|
||||
|
||||
interface ConsoleShowErrorMessage {
|
||||
type: typeof CONSOLE_SHOW_ERROR;
|
||||
text: string;
|
||||
}
|
||||
|
||||
interface ConsoleShowInfoMessage {
|
||||
type: typeof CONSOLE_SHOW_INFO;
|
||||
text: string;
|
||||
}
|
||||
|
||||
interface ConsoleShowFindMessage {
|
||||
type: typeof CONSOLE_SHOW_FIND;
|
||||
}
|
||||
|
||||
interface ConsoleHideMessage {
|
||||
type: typeof CONSOLE_HIDE;
|
||||
}
|
||||
|
||||
interface FollowStartMessage {
|
||||
type: typeof FOLLOW_START;
|
||||
newTab: boolean;
|
||||
background: boolean;
|
||||
}
|
||||
|
||||
interface FollowRequestCountTargetsMessage {
|
||||
type: typeof FOLLOW_REQUEST_COUNT_TARGETS;
|
||||
viewSize: { width: number, height: number };
|
||||
framePosition: { x: number, y: number };
|
||||
}
|
||||
|
||||
interface FollowResponseCountTargetsMessage {
|
||||
type: typeof FOLLOW_RESPONSE_COUNT_TARGETS;
|
||||
count: number;
|
||||
}
|
||||
|
||||
interface FollowCreateHintsMessage {
|
||||
type: typeof FOLLOW_CREATE_HINTS;
|
||||
keysArray: string[];
|
||||
newTab: boolean;
|
||||
background: boolean;
|
||||
}
|
||||
|
||||
interface FollowShowHintsMessage {
|
||||
type: typeof FOLLOW_SHOW_HINTS;
|
||||
keys: string;
|
||||
}
|
||||
|
||||
interface FollowRemoveHintsMessage {
|
||||
type: typeof FOLLOW_REMOVE_HINTS;
|
||||
}
|
||||
|
||||
interface FollowActivateMessage {
|
||||
type: typeof FOLLOW_ACTIVATE;
|
||||
keys: string;
|
||||
}
|
||||
|
||||
interface FollowKeyPressMessage {
|
||||
type: typeof FOLLOW_KEY_PRESS;
|
||||
key: string;
|
||||
ctrlKey: boolean;
|
||||
}
|
||||
|
||||
interface MarkSetGlobalMessage {
|
||||
type: typeof MARK_SET_GLOBAL;
|
||||
key: string;
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
|
||||
interface MarkJumpGlobalMessage {
|
||||
type: typeof MARK_JUMP_GLOBAL;
|
||||
key: string;
|
||||
}
|
||||
|
||||
interface TabScrollToMessage {
|
||||
type: typeof TAB_SCROLL_TO;
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
|
||||
interface FindNextMessage {
|
||||
type: typeof FIND_NEXT;
|
||||
}
|
||||
|
||||
interface FindPrevMessage {
|
||||
type: typeof FIND_PREV;
|
||||
}
|
||||
|
||||
interface FindGetKeywordMessage {
|
||||
type: typeof FIND_GET_KEYWORD;
|
||||
}
|
||||
|
||||
interface FindSetKeywordMessage {
|
||||
type: typeof FIND_SET_KEYWORD;
|
||||
keyword: string;
|
||||
found: boolean;
|
||||
}
|
||||
|
||||
interface AddonEnabledQueryMessage {
|
||||
type: typeof ADDON_ENABLED_QUERY;
|
||||
}
|
||||
|
||||
interface AddonEnabledResponseMessage {
|
||||
type: typeof ADDON_ENABLED_RESPONSE;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
interface AddonToggleEnabledMessage {
|
||||
type: typeof ADDON_TOGGLE_ENABLED;
|
||||
}
|
||||
|
||||
interface OpenUrlMessage {
|
||||
type: typeof OPEN_URL;
|
||||
url: string;
|
||||
newTab: boolean;
|
||||
background: boolean;
|
||||
}
|
||||
|
||||
interface SettingsChangedMessage {
|
||||
type: typeof SETTINGS_CHANGED;
|
||||
}
|
||||
|
||||
interface SettingsQueryMessage {
|
||||
type: typeof SETTINGS_QUERY;
|
||||
}
|
||||
|
||||
interface ConsoleFrameMessageMessage {
|
||||
type: typeof CONSOLE_FRAME_MESSAGE;
|
||||
message: any;
|
||||
}
|
||||
|
||||
export type Message =
|
||||
BackgroundOperationMessage |
|
||||
ConsoleUnfocusMessage |
|
||||
ConsoleEnterCommandMessage |
|
||||
ConsoleEnterFindMessage |
|
||||
ConsoleQueryCompletionsMessage |
|
||||
ConsoleShowCommandMessage |
|
||||
ConsoleShowErrorMessage |
|
||||
ConsoleShowInfoMessage |
|
||||
ConsoleShowFindMessage |
|
||||
ConsoleHideMessage |
|
||||
FollowStartMessage |
|
||||
FollowRequestCountTargetsMessage |
|
||||
FollowResponseCountTargetsMessage |
|
||||
FollowCreateHintsMessage |
|
||||
FollowShowHintsMessage |
|
||||
FollowRemoveHintsMessage |
|
||||
FollowActivateMessage |
|
||||
FollowKeyPressMessage |
|
||||
MarkSetGlobalMessage |
|
||||
MarkJumpGlobalMessage |
|
||||
TabScrollToMessage |
|
||||
FindNextMessage |
|
||||
FindPrevMessage |
|
||||
FindGetKeywordMessage |
|
||||
FindSetKeywordMessage |
|
||||
AddonEnabledQueryMessage |
|
||||
AddonEnabledResponseMessage |
|
||||
AddonToggleEnabledMessage |
|
||||
OpenUrlMessage |
|
||||
SettingsChangedMessage |
|
||||
SettingsQueryMessage |
|
||||
ConsoleFrameMessageMessage;
|
||||
|
||||
// eslint-disable-next-line complexity
|
||||
export const valueOf = (o: any): Message => {
|
||||
switch (o.type) {
|
||||
case CONSOLE_UNFOCUS:
|
||||
case CONSOLE_ENTER_COMMAND:
|
||||
case CONSOLE_ENTER_FIND:
|
||||
case CONSOLE_QUERY_COMPLETIONS:
|
||||
case CONSOLE_SHOW_COMMAND:
|
||||
case CONSOLE_SHOW_ERROR:
|
||||
case CONSOLE_SHOW_INFO:
|
||||
case CONSOLE_SHOW_FIND:
|
||||
case CONSOLE_HIDE:
|
||||
case FOLLOW_START:
|
||||
case FOLLOW_REQUEST_COUNT_TARGETS:
|
||||
case FOLLOW_RESPONSE_COUNT_TARGETS:
|
||||
case FOLLOW_CREATE_HINTS:
|
||||
case FOLLOW_SHOW_HINTS:
|
||||
case FOLLOW_REMOVE_HINTS:
|
||||
case FOLLOW_ACTIVATE:
|
||||
case FOLLOW_KEY_PRESS:
|
||||
case MARK_SET_GLOBAL:
|
||||
case MARK_JUMP_GLOBAL:
|
||||
case TAB_SCROLL_TO:
|
||||
case FIND_NEXT:
|
||||
case FIND_PREV:
|
||||
case FIND_GET_KEYWORD:
|
||||
case FIND_SET_KEYWORD:
|
||||
case ADDON_ENABLED_QUERY:
|
||||
case ADDON_ENABLED_RESPONSE:
|
||||
case ADDON_TOGGLE_ENABLED:
|
||||
case OPEN_URL:
|
||||
case SETTINGS_CHANGED:
|
||||
case SETTINGS_QUERY:
|
||||
case CONSOLE_FRAME_MESSAGE:
|
||||
return o;
|
||||
}
|
||||
throw new Error('unknown operation type: ' + o.type);
|
||||
};
|
||||
|
|
|
@ -1,80 +1,447 @@
|
|||
const operations: { [key: string]: string } = {
|
||||
// Hide console, or cancel some user actions
|
||||
CANCEL: 'cancel',
|
||||
// Hide console; or cancel some user actions
|
||||
export const CANCEL = 'cancel';
|
||||
|
||||
// Addons
|
||||
ADDON_ENABLE: 'addon.enable',
|
||||
ADDON_DISABLE: 'addon.disable',
|
||||
ADDON_TOGGLE_ENABLED: 'addon.toggle.enabled',
|
||||
// Addons
|
||||
export const ADDON_ENABLE = 'addon.enable';
|
||||
export const ADDON_DISABLE = 'addon.disable';
|
||||
export const ADDON_TOGGLE_ENABLED = 'addon.toggle.enabled';
|
||||
|
||||
// Command
|
||||
COMMAND_SHOW: 'command.show',
|
||||
COMMAND_SHOW_OPEN: 'command.show.open',
|
||||
COMMAND_SHOW_TABOPEN: 'command.show.tabopen',
|
||||
COMMAND_SHOW_WINOPEN: 'command.show.winopen',
|
||||
COMMAND_SHOW_BUFFER: 'command.show.buffer',
|
||||
COMMAND_SHOW_ADDBOOKMARK: 'command.show.addbookmark',
|
||||
// Command
|
||||
export const COMMAND_SHOW = 'command.show';
|
||||
export const COMMAND_SHOW_OPEN = 'command.show.open';
|
||||
export const COMMAND_SHOW_TABOPEN = 'command.show.tabopen';
|
||||
export const COMMAND_SHOW_WINOPEN = 'command.show.winopen';
|
||||
export const COMMAND_SHOW_BUFFER = 'command.show.buffer';
|
||||
export const COMMAND_SHOW_ADDBOOKMARK = 'command.show.addbookmark';
|
||||
|
||||
// Scrolls
|
||||
SCROLL_VERTICALLY: 'scroll.vertically',
|
||||
SCROLL_HORIZONALLY: 'scroll.horizonally',
|
||||
SCROLL_PAGES: 'scroll.pages',
|
||||
SCROLL_TOP: 'scroll.top',
|
||||
SCROLL_BOTTOM: 'scroll.bottom',
|
||||
SCROLL_HOME: 'scroll.home',
|
||||
SCROLL_END: 'scroll.end',
|
||||
// Scrolls
|
||||
export const SCROLL_VERTICALLY = 'scroll.vertically';
|
||||
export const SCROLL_HORIZONALLY = 'scroll.horizonally';
|
||||
export const SCROLL_PAGES = 'scroll.pages';
|
||||
export const SCROLL_TOP = 'scroll.top';
|
||||
export const SCROLL_BOTTOM = 'scroll.bottom';
|
||||
export const SCROLL_HOME = 'scroll.home';
|
||||
export const SCROLL_END = 'scroll.end';
|
||||
|
||||
// Follows
|
||||
FOLLOW_START: 'follow.start',
|
||||
// Follows
|
||||
export const FOLLOW_START = 'follow.start';
|
||||
|
||||
// Navigations
|
||||
NAVIGATE_HISTORY_PREV: 'navigate.history.prev',
|
||||
NAVIGATE_HISTORY_NEXT: 'navigate.history.next',
|
||||
NAVIGATE_LINK_PREV: 'navigate.link.prev',
|
||||
NAVIGATE_LINK_NEXT: 'navigate.link.next',
|
||||
NAVIGATE_PARENT: 'navigate.parent',
|
||||
NAVIGATE_ROOT: 'navigate.root',
|
||||
// Navigations
|
||||
export const NAVIGATE_HISTORY_PREV = 'navigate.history.prev';
|
||||
export const NAVIGATE_HISTORY_NEXT = 'navigate.history.next';
|
||||
export const NAVIGATE_LINK_PREV = 'navigate.link.prev';
|
||||
export const NAVIGATE_LINK_NEXT = 'navigate.link.next';
|
||||
export const NAVIGATE_PARENT = 'navigate.parent';
|
||||
export const NAVIGATE_ROOT = 'navigate.root';
|
||||
|
||||
// Focus
|
||||
FOCUS_INPUT: 'focus.input',
|
||||
// Focus
|
||||
export const FOCUS_INPUT = 'focus.input';
|
||||
|
||||
// Page
|
||||
PAGE_SOURCE: 'page.source',
|
||||
PAGE_HOME: 'page.home',
|
||||
// Page
|
||||
export const PAGE_SOURCE = 'page.source';
|
||||
export const PAGE_HOME = 'page.home';
|
||||
|
||||
// Tabs
|
||||
TAB_CLOSE: 'tabs.close',
|
||||
TAB_CLOSE_FORCE: 'tabs.close.force',
|
||||
TAB_CLOSE_RIGHT: 'tabs.close.right',
|
||||
TAB_REOPEN: 'tabs.reopen',
|
||||
TAB_PREV: 'tabs.prev',
|
||||
TAB_NEXT: 'tabs.next',
|
||||
TAB_FIRST: 'tabs.first',
|
||||
TAB_LAST: 'tabs.last',
|
||||
TAB_PREV_SEL: 'tabs.prevsel',
|
||||
TAB_RELOAD: 'tabs.reload',
|
||||
TAB_PIN: 'tabs.pin',
|
||||
TAB_UNPIN: 'tabs.unpin',
|
||||
TAB_TOGGLE_PINNED: 'tabs.pin.toggle',
|
||||
TAB_DUPLICATE: 'tabs.duplicate',
|
||||
// Tabs
|
||||
export const TAB_CLOSE = 'tabs.close';
|
||||
export const TAB_CLOSE_FORCE = 'tabs.close.force';
|
||||
export const TAB_CLOSE_RIGHT = 'tabs.close.right';
|
||||
export const TAB_REOPEN = 'tabs.reopen';
|
||||
export const TAB_PREV = 'tabs.prev';
|
||||
export const TAB_NEXT = 'tabs.next';
|
||||
export const TAB_FIRST = 'tabs.first';
|
||||
export const TAB_LAST = 'tabs.last';
|
||||
export const TAB_PREV_SEL = 'tabs.prevsel';
|
||||
export const TAB_RELOAD = 'tabs.reload';
|
||||
export const TAB_PIN = 'tabs.pin';
|
||||
export const TAB_UNPIN = 'tabs.unpin';
|
||||
export const TAB_TOGGLE_PINNED = 'tabs.pin.toggle';
|
||||
export const TAB_DUPLICATE = 'tabs.duplicate';
|
||||
|
||||
// Zooms
|
||||
ZOOM_IN: 'zoom.in',
|
||||
ZOOM_OUT: 'zoom.out',
|
||||
ZOOM_NEUTRAL: 'zoom.neutral',
|
||||
// Zooms
|
||||
export const ZOOM_IN = 'zoom.in';
|
||||
export const ZOOM_OUT = 'zoom.out';
|
||||
export const ZOOM_NEUTRAL = 'zoom.neutral';
|
||||
|
||||
// Url yank/paste
|
||||
URLS_YANK: 'urls.yank',
|
||||
URLS_PASTE: 'urls.paste',
|
||||
// Url yank/paste
|
||||
export const URLS_YANK = 'urls.yank';
|
||||
export const URLS_PASTE = 'urls.paste';
|
||||
|
||||
// Find
|
||||
FIND_START: 'find.start',
|
||||
FIND_NEXT: 'find.next',
|
||||
FIND_PREV: 'find.prev',
|
||||
// Find
|
||||
export const FIND_START = 'find.start';
|
||||
export const FIND_NEXT = 'find.next';
|
||||
export const FIND_PREV = 'find.prev';
|
||||
|
||||
// Mark
|
||||
MARK_SET_PREFIX: 'mark.set.prefix',
|
||||
MARK_JUMP_PREFIX: 'mark.jump.prefix',
|
||||
// Mark
|
||||
export const MARK_SET_PREFIX = 'mark.set.prefix';
|
||||
export const MARK_JUMP_PREFIX = 'mark.jump.prefix';
|
||||
|
||||
export interface CancelOperation {
|
||||
type: typeof CANCEL;
|
||||
}
|
||||
|
||||
export interface AddonEnableOperation {
|
||||
type: typeof ADDON_ENABLE;
|
||||
}
|
||||
|
||||
export interface AddonDisableOperation {
|
||||
type: typeof ADDON_DISABLE;
|
||||
}
|
||||
|
||||
export interface AddonToggleEnabledOperation {
|
||||
type: typeof ADDON_TOGGLE_ENABLED;
|
||||
}
|
||||
|
||||
export interface CommandShowOperation {
|
||||
type: typeof COMMAND_SHOW;
|
||||
}
|
||||
|
||||
export interface CommandShowOpenOperation {
|
||||
type: typeof COMMAND_SHOW_OPEN;
|
||||
alter: boolean;
|
||||
}
|
||||
|
||||
export interface CommandShowTabopenOperation {
|
||||
type: typeof COMMAND_SHOW_TABOPEN;
|
||||
alter: boolean;
|
||||
}
|
||||
|
||||
export interface CommandShowWinopenOperation {
|
||||
type: typeof COMMAND_SHOW_WINOPEN;
|
||||
alter: boolean;
|
||||
}
|
||||
|
||||
export interface CommandShowBufferOperation {
|
||||
type: typeof COMMAND_SHOW_BUFFER;
|
||||
}
|
||||
|
||||
export interface CommandShowAddbookmarkOperation {
|
||||
type: typeof COMMAND_SHOW_ADDBOOKMARK;
|
||||
alter: boolean;
|
||||
}
|
||||
|
||||
export interface ScrollVerticallyOperation {
|
||||
type: typeof SCROLL_VERTICALLY;
|
||||
count: number;
|
||||
}
|
||||
|
||||
export interface ScrollHorizonallyOperation {
|
||||
type: typeof SCROLL_HORIZONALLY;
|
||||
count: number;
|
||||
}
|
||||
|
||||
export interface ScrollPagesOperation {
|
||||
type: typeof SCROLL_PAGES;
|
||||
count: number;
|
||||
}
|
||||
|
||||
export interface ScrollTopOperation {
|
||||
type: typeof SCROLL_TOP;
|
||||
}
|
||||
|
||||
export interface ScrollBottomOperation {
|
||||
type: typeof SCROLL_BOTTOM;
|
||||
}
|
||||
|
||||
export interface ScrollHomeOperation {
|
||||
type: typeof SCROLL_HOME;
|
||||
}
|
||||
|
||||
export interface ScrollEndOperation {
|
||||
type: typeof SCROLL_END;
|
||||
}
|
||||
|
||||
export interface FollowStartOperation {
|
||||
type: typeof FOLLOW_START;
|
||||
newTab: boolean;
|
||||
background: boolean;
|
||||
}
|
||||
|
||||
export interface NavigateHistoryPrevOperation {
|
||||
type: typeof NAVIGATE_HISTORY_PREV;
|
||||
}
|
||||
|
||||
export interface NavigateHistoryNextOperation {
|
||||
type: typeof NAVIGATE_HISTORY_NEXT;
|
||||
}
|
||||
|
||||
export interface NavigateLinkPrevOperation {
|
||||
type: typeof NAVIGATE_LINK_PREV;
|
||||
}
|
||||
|
||||
export interface NavigateLinkNextOperation {
|
||||
type: typeof NAVIGATE_LINK_NEXT;
|
||||
}
|
||||
|
||||
export interface NavigateParentOperation {
|
||||
type: typeof NAVIGATE_PARENT;
|
||||
}
|
||||
|
||||
export interface NavigateRootOperation {
|
||||
type: typeof NAVIGATE_ROOT;
|
||||
}
|
||||
|
||||
export interface FocusInputOperation {
|
||||
type: typeof FOCUS_INPUT;
|
||||
}
|
||||
|
||||
export interface PageSourceOperation {
|
||||
type: typeof PAGE_SOURCE;
|
||||
}
|
||||
|
||||
export interface PageHomeOperation {
|
||||
type: typeof PAGE_HOME;
|
||||
newTab: boolean;
|
||||
}
|
||||
|
||||
export interface TabCloseOperation {
|
||||
type: typeof TAB_CLOSE;
|
||||
}
|
||||
|
||||
export interface TabCloseForceOperation {
|
||||
type: typeof TAB_CLOSE_FORCE;
|
||||
}
|
||||
|
||||
export interface TabCloseRightOperation {
|
||||
type: typeof TAB_CLOSE_RIGHT;
|
||||
}
|
||||
|
||||
export interface TabReopenOperation {
|
||||
type: typeof TAB_REOPEN;
|
||||
}
|
||||
|
||||
export interface TabPrevOperation {
|
||||
type: typeof TAB_PREV;
|
||||
}
|
||||
|
||||
export interface TabNextOperation {
|
||||
type: typeof TAB_NEXT;
|
||||
}
|
||||
|
||||
export interface TabFirstOperation {
|
||||
type: typeof TAB_FIRST;
|
||||
}
|
||||
|
||||
export interface TabLastOperation {
|
||||
type: typeof TAB_LAST;
|
||||
}
|
||||
|
||||
export interface TabPrevSelOperation {
|
||||
type: typeof TAB_PREV_SEL;
|
||||
}
|
||||
|
||||
export interface TabReloadOperation {
|
||||
type: typeof TAB_RELOAD;
|
||||
cache: boolean;
|
||||
}
|
||||
|
||||
export interface TabPinOperation {
|
||||
type: typeof TAB_PIN;
|
||||
}
|
||||
|
||||
export interface TabUnpinOperation {
|
||||
type: typeof TAB_UNPIN;
|
||||
}
|
||||
|
||||
export interface TabTogglePinnedOperation {
|
||||
type: typeof TAB_TOGGLE_PINNED;
|
||||
}
|
||||
|
||||
export interface TabDuplicateOperation {
|
||||
type: typeof TAB_DUPLICATE;
|
||||
}
|
||||
|
||||
export interface ZoomInOperation {
|
||||
type: typeof ZOOM_IN;
|
||||
}
|
||||
|
||||
export interface ZoomOutOperation {
|
||||
type: typeof ZOOM_OUT;
|
||||
}
|
||||
|
||||
export interface ZoomNeutralOperation {
|
||||
type: typeof ZOOM_NEUTRAL;
|
||||
}
|
||||
|
||||
export interface UrlsYankOperation {
|
||||
type: typeof URLS_YANK;
|
||||
}
|
||||
|
||||
export interface UrlsPasteOperation {
|
||||
type: typeof URLS_PASTE;
|
||||
newTab: boolean;
|
||||
}
|
||||
|
||||
export interface FindStartOperation {
|
||||
type: typeof FIND_START;
|
||||
}
|
||||
|
||||
export interface FindNextOperation {
|
||||
type: typeof FIND_NEXT;
|
||||
}
|
||||
|
||||
export interface FindPrevOperation {
|
||||
type: typeof FIND_PREV;
|
||||
}
|
||||
|
||||
export interface MarkSetPrefixOperation {
|
||||
type: typeof MARK_SET_PREFIX;
|
||||
}
|
||||
|
||||
export interface MarkJumpPrefixOperation {
|
||||
type: typeof MARK_JUMP_PREFIX;
|
||||
}
|
||||
|
||||
export type Operation =
|
||||
CancelOperation |
|
||||
AddonEnableOperation |
|
||||
AddonDisableOperation |
|
||||
AddonToggleEnabledOperation |
|
||||
CommandShowOperation |
|
||||
CommandShowOpenOperation |
|
||||
CommandShowTabopenOperation |
|
||||
CommandShowWinopenOperation |
|
||||
CommandShowBufferOperation |
|
||||
CommandShowAddbookmarkOperation |
|
||||
ScrollVerticallyOperation |
|
||||
ScrollHorizonallyOperation |
|
||||
ScrollPagesOperation |
|
||||
ScrollTopOperation |
|
||||
ScrollBottomOperation |
|
||||
ScrollHomeOperation |
|
||||
ScrollEndOperation |
|
||||
FollowStartOperation |
|
||||
NavigateHistoryPrevOperation |
|
||||
NavigateHistoryNextOperation |
|
||||
NavigateLinkPrevOperation |
|
||||
NavigateLinkNextOperation |
|
||||
NavigateParentOperation |
|
||||
NavigateRootOperation |
|
||||
FocusInputOperation |
|
||||
PageSourceOperation |
|
||||
PageHomeOperation |
|
||||
TabCloseOperation |
|
||||
TabCloseForceOperation |
|
||||
TabCloseRightOperation |
|
||||
TabReopenOperation |
|
||||
TabPrevOperation |
|
||||
TabNextOperation |
|
||||
TabFirstOperation |
|
||||
TabLastOperation |
|
||||
TabPrevSelOperation |
|
||||
TabReloadOperation |
|
||||
TabPinOperation |
|
||||
TabUnpinOperation |
|
||||
TabTogglePinnedOperation |
|
||||
TabDuplicateOperation |
|
||||
ZoomInOperation |
|
||||
ZoomOutOperation |
|
||||
ZoomNeutralOperation |
|
||||
UrlsYankOperation |
|
||||
UrlsPasteOperation |
|
||||
FindStartOperation |
|
||||
FindNextOperation |
|
||||
FindPrevOperation |
|
||||
MarkSetPrefixOperation |
|
||||
MarkJumpPrefixOperation;
|
||||
|
||||
const assertOptionalBoolean = (obj: any, name: string) => {
|
||||
if (Object.prototype.hasOwnProperty.call(obj, name) &&
|
||||
typeof obj[name] !== 'boolean') {
|
||||
throw new TypeError(`Not a boolean parameter '${name}'`);
|
||||
}
|
||||
};
|
||||
|
||||
export default operations;
|
||||
const assertRequiredNumber = (obj: any, name: string) => {
|
||||
if (!Object.prototype.hasOwnProperty.call(obj, name) ||
|
||||
typeof obj[name] !== 'number') {
|
||||
throw new TypeError(`Missing number parameter '${name}`);
|
||||
}
|
||||
};
|
||||
|
||||
// eslint-disable-next-line complexity, max-lines-per-function
|
||||
export const valueOf = (o: any): Operation => {
|
||||
if (!Object.prototype.hasOwnProperty.call(o, 'type')) {
|
||||
throw new TypeError(`missing 'type' field`);
|
||||
}
|
||||
switch (o.type) {
|
||||
case COMMAND_SHOW_OPEN:
|
||||
case COMMAND_SHOW_TABOPEN:
|
||||
case COMMAND_SHOW_WINOPEN:
|
||||
case COMMAND_SHOW_ADDBOOKMARK:
|
||||
assertOptionalBoolean(o, 'alter');
|
||||
return { type: o.type, alter: Boolean(o.alter) };
|
||||
case SCROLL_VERTICALLY:
|
||||
case SCROLL_HORIZONALLY:
|
||||
case SCROLL_PAGES:
|
||||
assertRequiredNumber(o, 'count');
|
||||
return { type: o.type, count: Number(o.count) };
|
||||
case FOLLOW_START:
|
||||
assertOptionalBoolean(o, 'newTab');
|
||||
assertOptionalBoolean(o, 'background');
|
||||
return {
|
||||
type: FOLLOW_START,
|
||||
newTab: Boolean(typeof o.newTab === undefined ? false : o.newTab),
|
||||
background: Boolean(typeof o.background === undefined ? true : o.background), // eslint-disable-line max-len
|
||||
};
|
||||
case PAGE_HOME:
|
||||
assertOptionalBoolean(o, 'newTab');
|
||||
return {
|
||||
type: PAGE_HOME,
|
||||
newTab: Boolean(typeof o.newTab === undefined ? false : o.newTab),
|
||||
};
|
||||
case TAB_RELOAD:
|
||||
assertOptionalBoolean(o, 'cache');
|
||||
return {
|
||||
type: TAB_RELOAD,
|
||||
cache: Boolean(typeof o.cache === undefined ? false : o.cache),
|
||||
};
|
||||
case URLS_PASTE:
|
||||
assertOptionalBoolean(o, 'newTab');
|
||||
return {
|
||||
type: URLS_PASTE,
|
||||
newTab: Boolean(typeof o.newTab === undefined ? false : o.newTab),
|
||||
};
|
||||
case CANCEL:
|
||||
case ADDON_ENABLE:
|
||||
case ADDON_DISABLE:
|
||||
case ADDON_TOGGLE_ENABLED:
|
||||
case COMMAND_SHOW:
|
||||
case COMMAND_SHOW_BUFFER:
|
||||
case SCROLL_TOP:
|
||||
case SCROLL_BOTTOM:
|
||||
case SCROLL_HOME:
|
||||
case SCROLL_END:
|
||||
case NAVIGATE_HISTORY_PREV:
|
||||
case NAVIGATE_HISTORY_NEXT:
|
||||
case NAVIGATE_LINK_PREV:
|
||||
case NAVIGATE_LINK_NEXT:
|
||||
case NAVIGATE_PARENT:
|
||||
case NAVIGATE_ROOT:
|
||||
case FOCUS_INPUT:
|
||||
case PAGE_SOURCE:
|
||||
case TAB_CLOSE:
|
||||
case TAB_CLOSE_FORCE:
|
||||
case TAB_CLOSE_RIGHT:
|
||||
case TAB_REOPEN:
|
||||
case TAB_PREV:
|
||||
case TAB_NEXT:
|
||||
case TAB_FIRST:
|
||||
case TAB_LAST:
|
||||
case TAB_PREV_SEL:
|
||||
case TAB_PIN:
|
||||
case TAB_UNPIN:
|
||||
case TAB_TOGGLE_PINNED:
|
||||
case TAB_DUPLICATE:
|
||||
case ZOOM_IN:
|
||||
case ZOOM_OUT:
|
||||
case ZOOM_NEUTRAL:
|
||||
case URLS_YANK:
|
||||
case FIND_START:
|
||||
case FIND_NEXT:
|
||||
case FIND_PREV:
|
||||
case MARK_SET_PREFIX:
|
||||
case MARK_JUMP_PREFIX:
|
||||
return { type: o.type };
|
||||
}
|
||||
throw new Error('unknown operation type: ' + o.type);
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import operations from '../operations';
|
||||
import * as operations from '../operations';
|
||||
import * as properties from './properties';
|
||||
|
||||
const VALID_TOP_KEYS = ['keymaps', 'search', 'blacklist', 'properties'];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
interface Key {
|
||||
export interface Key {
|
||||
key: string;
|
||||
shiftKey: boolean | undefined;
|
||||
ctrlKey: boolean | undefined;
|
||||
|
|
Reference in a new issue