diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2017-12-20 11:32:55 +0100 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2017-12-20 11:34:21 +0100 |
| commit | 2aae380b0af018bf0187bb31fb0fedf6a457ebf1 (patch) | |
| tree | a8ad6ee12956d92e6257bea07dedc44063f3017f /flow-libs | |
| parent | 7b47ddf735af7f3d6065fb6c3ffea6e9ddfd86cb (diff) | |
| parent | 8b146934260739ae609791a1fb676d48ceb954c0 (diff) | |
| download | mullvadvpn-2aae380b0af018bf0187bb31fb0fedf6a457ebf1.tar.xz mullvadvpn-2aae380b0af018bf0187bb31fb0fedf6a457ebf1.zip | |
Merge backend and frontend repo master branches
Conflicts:
.gitignore
.travis.yml
README.md
Diffstat (limited to 'flow-libs')
| -rw-r--r-- | flow-libs/electron.js.flow | 194 | ||||
| -rw-r--r-- | flow-libs/history.js.flow | 24 | ||||
| -rw-r--r-- | flow-libs/nseventmonitor.js.flow | 42 |
3 files changed, 260 insertions, 0 deletions
diff --git a/flow-libs/electron.js.flow b/flow-libs/electron.js.flow new file mode 100644 index 0000000000..90805dde7a --- /dev/null +++ b/flow-libs/electron.js.flow @@ -0,0 +1,194 @@ +// @flow + +import EventEmitter from 'events'; + +declare var process: Process & { + resourcesPath: string; + type: "browser" | "renderer"; + versions: { + electron: string; + chrome: string; + }; +}; + +declare module 'electron' { + + // common types + + declare type Size = { + width: number; + height: number; + } + + declare type Rectangle = { + width: number; + height: number; + x: number; + y: number; + } + + // http://electron.atom.io/docs/api/app + + declare class App extends EventEmitter { + getPath(name: string): string; + setPath(name: string, path: string): void; + quit(): void; + } + + // http://electron.atom.io/docs/api/shell + declare type OpenExternalOptions = { + activate: boolean; + } + + declare class Shell { + showItemInFolder(fullPath: string): boolean; + openItem(fullPath: string): boolean; + openExternal(url: string, options?: OpenExternalOptions, callback?: (error: Error) => void): boolean; + moveItemToTrash(fullPath: string): boolean; + beep(): void; + } + + // http://electron.atom.io/docs/api/remote + + declare class Remote { + app: App; + getCurrentWindow(): BrowserWindow; + getCurrentWebContents(): WebContents; + getGlobal(name: string): ?mixed; + } + + // http://electron.atom.io/docs/api/clipboard + + declare class Clipboard { + writeText(text: string, type?: string): void; + } + + // http://electron.atom.io/docs/api/native-image + + declare class NativeImage { + isEmpty(): boolean; + getSize(): Size; + } + + // http://electron.atom.io/docs/api/tray + + declare class Tray extends EventEmitter { + constructor(image: NativeImage | string): void; + getBounds(): Rectangle; + setHighlightMode(mode: 'selection' | 'always' | 'never'): void; + setImage(image: NativeImage | string): void; + setPressedImage(image: NativeImage | string): void; + } + + // http://electron.atom.io/docs/api/web-frame + + declare class WebFrame extends EventEmitter { + setZoomLevelLimits(minimumLevel: number, maximumLevel: number): void; + } + + // http://electron.atom.io/docs/api/ipc-renderer + + declare class IpcRenderer extends EventEmitter { + send(channel: string, ...args: Array<mixed>): void; + } + + // http://electron.atom.io/docs/api/ipc-main + + declare class IpcMain extends EventEmitter {} + + declare class WebContents extends EventEmitter {} + + // http://electron.atom.io/docs/api/browser-window + + declare type OpenDevToolsOptions = { + mode: 'right' | 'bottom' | 'undocked' | 'detach'; + } + + declare type WebPreferences = { + backgroundThrottling?: boolean; + scrollBounce?: boolean; + blinkFeatures?: string; + disableBlinkFeatures?: string; + } + + declare type BrowserWindowConstructorOptions = { + width?: number; + height?: number; + resizable?: boolean; + maximizable?: boolean; + fullscreenable?: boolean; + show?: boolean; + frame?: boolean; + transparent?: boolean; + webPreferences?: WebPreferences; + } + + declare type LoadURLOptions = { + userAgent?: string; + } + + declare class BrowserWindow extends EventEmitter { + constructor(options: ?BrowserWindowConstructorOptions): this; + isVisible(): boolean; + show(): void; + hide(): void; + focus(): void; + setPosition(x: number, y: number, animate?: boolean): void; + getBounds(): Rectangle; + setVisibleOnAllWorkspaces(visible: boolean): void; + isVisibleOnAllWorkspaces(): boolean; + inspectElement(x: number, y: number): void; + isDevToolsOpened(): boolean;isDevToolsOpened(): boolean; + openDevTools(options?: OpenDevToolsOptions): void; + closeDevTools(): void; + loadURL(url: string, options?: LoadURLOptions): void; + webContents: WebContents; + } + + // http://electron.atom.io/docs/api/menu-item + declare class MenuItem {} + + // http://electron.atom.io/docs/api/menu + + declare type MenuItemConstructorOptions = { + type?: 'normal' | 'separator' | 'submenu' | 'checkbox' | 'radio'; + label?: string; + role?: string; + click?: (menuItem: MenuItem, browserWindow: BrowserWindow, event: Event) => void; + } + + declare type PopupOptions = { + x?: number; + y?: number; + } + + declare class Menu { + static buildFromTemplate(template: Array<MenuItemConstructorOptions>): Menu; + static setApplicationMenu(menu: Menu): void; + popup(browserWindow?: BrowserWindow, options?: PopupOptions): void; + } + + // http://electron.atom.io/docs/api/app + + declare class App extends EventEmitter { + setPath(name: string, path: string): void; + getPath(name: string): string; + quit(): void; + } + + // MainInterface + + declare var nativeImage: { + createEmpty(): NativeImage, + createFromPath(path: string): NativeImage, + createFromBuffer(buffer: Buffer, scaleFactor?: number): NativeImage, + createFromDataURL(dataURL: string): NativeImage + }; + declare var webFrame: WebFrame; + declare var app: App; + declare var ipcRenderer: IpcRenderer; + declare var ipcMain: IpcMain; + declare var remote: Remote; + declare var shell: Shell; + declare var clipboard: Clipboard; +} diff --git a/flow-libs/history.js.flow b/flow-libs/history.js.flow new file mode 100644 index 0000000000..69c25e2011 --- /dev/null +++ b/flow-libs/history.js.flow @@ -0,0 +1,24 @@ +// @flow + +declare module 'history' { + + declare class History { + length: number; + action: string; + location: string; + index: number; + entries: Array<string>; + createHref(location: string): string; + push(path: string): void; + replace(path: string): void; + go(index: number): void; + goBack(): void; + goForward(): void; + canGo(index: number): boolean; + block(prompt?: boolean): void; + listen(listener: (location: string, action: string) => void): void; + } + + declare function createMemoryHistory(): History; + +}
\ No newline at end of file diff --git a/flow-libs/nseventmonitor.js.flow b/flow-libs/nseventmonitor.js.flow new file mode 100644 index 0000000000..33b0c06966 --- /dev/null +++ b/flow-libs/nseventmonitor.js.flow @@ -0,0 +1,42 @@ +declare module 'nseventmonitor' { + + declare export class NSEventMonitor { + start(eventMask: number, handler: () => void): void; + stop(): void; + } + + declare export var NSEventMask: { + leftMouseDown: number; + leftMouseUp: number; + rightMouseDown: number; + rightMouseUp: number; + mouseMoved: number; + leftMouseDragged: number; + rightMouseDragged: number; + mouseEntered: number; + mouseExited: number; + keyDown: number; + keyUp: number; + flagsChanged: number; + appKitDefined: number; + applicationDefined: number; + periodic: number; + cursorUpdate: number; + scrollWheel: number; + tabletPoint: number; + tabletProximity: number; + otherMouseDown: number; + otherMouseUp: number; + otherMouseDragged: number; + gesture: number; + magnify: number; + swipe: number; + rotate: number; + beginGesture: number; + endGesture: number; + smartMagnify: number; + maskPressure: number; + directTouch: number; + any: number; + } +}
\ No newline at end of file |
