app/src/globals.d.ts

257 lines
8.6 KiB
TypeScript
Raw Normal View History

2018-08-16 10:49:37 +00:00
/* eslint-disable typescript/interface-name-prefix */
/** Is the app running in dev mode? */
declare const __DEV__: boolean
/** The OAuth client id the app should use */
declare const __OAUTH_CLIENT_ID__: string | undefined
/** The OAuth secret the app should use. */
declare const __OAUTH_SECRET__: string | undefined
/** Is the app being built to run on Darwin? */
declare const __DARWIN__: boolean
/** Is the app being built to run on Win32? */
declare const __WIN32__: boolean
/** Is the app being built to run on Linux? */
declare const __LINUX__: boolean
/**
* The commit id of the repository HEAD at build time.
* Represented as a 40 character SHA-1 hexadecimal digest string.
*/
declare const __SHA__: string
/** The channel for which the release was created. */
declare const __RELEASE_CHANNEL__:
| 'production'
| 'beta'
| 'test'
| 'development'
declare const __CLI_COMMANDS__: ReadonlyArray<string>
/** The URL for Squirrel's updates. */
declare const __UPDATES_URL__: string
/**
* The currently executing process kind, this is specific to desktop
* and identifies the processes that we have.
*/
declare const __PROCESS_KIND__:
| 'main'
| 'ui'
| 'crash'
| 'askpass'
| 'highlighter'
/**
* The DOMHighResTimeStamp type is a double and is used to store a time value.
*
* The value could be a discrete point in time or the difference in time between
* two discrete points in time. The unit is milliseconds and should be accurate
* to 5 µs (microseconds). However, if the browser is unable to provide a time
* value accurate to 5 microseconds (due, for example, to hardware or software
* constraints), the browser can represent the value as a time in milliseconds
* accurate to a millisecond.
*
* See https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp
*/
declare type DOMHighResTimeStamp = number
/**
* The IdleDeadline interface is used as the data type of the input parameter to
* idle callbacks established by calling Window.requestIdleCallback(). It offers
* a method, timeRemaining(), which lets you determine how much longer the user
* agent estimates it will remain idle and a property, didTimeout, which lets
* you determine if your callback is executing because its timeout duration
* expired.
*
* https://developer.mozilla.org/en-US/docs/Web/API/IdleDeadline
*/
interface IdleDeadline {
readonly didTimeout: boolean
readonly timeRemaining: () => DOMHighResTimeStamp
}
/**
* Contains optional configuration parameters for the requestIdleCallback
* function.
*
* See https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback
*/
interface IdleCallbackOptions {
/**
* If timeout is specified and has a positive value, and the callback has not
* already been called by the time timeout milliseconds have passed, the
* timeout will be called during the next idle period, even if doing so risks
* causing a negative performance impact..
*/
readonly timeout: number
}
/**
* The window.requestIdleCallback() method queues a function to be called during
* a browser's idle periods. This enables developers to perform background and
* low priority work on the main event loop, without impacting latency-critical
* events such as animation and input response. Functions are generally called
* in first-in-first-out order; however, callbacks which have a timeout
* specified may be called out-of-order if necessary in order to run them before
* the timeout elapses.
*
* See https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback
*
* @param options Contains optional configuration parameters. Currently only one
* property is defined:
* timeout:
*/
declare function requestIdleCallback(
fn: (deadline: IdleDeadline) => void,
options?: IdleCallbackOptions
): number
interface IDesktopLogger {
/**
* Writes a log message at the 'error' level.
*
* The error will be persisted to disk as long as the disk transport is
* configured to pass along log messages at this level. For more details
* about the on-disk transport, see log.ts in the main process.
*
* If used from a renderer the log message will also be appended to the
* devtools console.
*
* @param message The text to write to the log file
* @param error An optional error instance that will be formatted to
* include the stack trace (if one is available) and
* then appended to the log message.
*/
error(message: string, error?: Error): void
/**
* Writes a log message at the 'warn' level.
*
* The error will be persisted to disk as long as the disk transport is
* configured to pass along log messages at this level. For more details
* about the on-disk transport, see log.ts in the main process.
*
* If used from a renderer the log message will also be appended to the
* devtools console.
*
* @param message The text to write to the log file
* @param error An optional error instance that will be formatted to
* include the stack trace (if one is available) and
* then appended to the log message.
*/
warn(message: string, error?: Error): void
/**
* Writes a log message at the 'info' level.
*
* The error will be persisted to disk as long as the disk transport is
* configured to pass along log messages at this level. For more details
* about the on-disk transport, see log.ts in the main process.
*
* If used from a renderer the log message will also be appended to the
* devtools console.
*
* @param message The text to write to the log file
* @param error An optional error instance that will be formatted to
* include the stack trace (if one is available) and
* then appended to the log message.
*/
info(message: string, error?: Error): void
/**
* Writes a log message at the 'debug' level.
*
* The error will be persisted to disk as long as the disk transport is
* configured to pass along log messages at this level. For more details
* about the on-disk transport, see log.ts in the main process.
*
* If used from a renderer the log message will also be appended to the
* devtools console.
*
* @param message The text to write to the log file
* @param error An optional error instance that will be formatted to
* include the stack trace (if one is available) and
* then appended to the log message.
*/
debug(message: string, error?: Error): void
}
declare const log: IDesktopLogger
// these changes should be pushed into the Electron declarations
declare namespace NodeJS {
interface Process extends EventEmitter {
once(event: 'uncaughtException', listener: (error: Error) => void): this
on(event: 'uncaughtException', listener: (error: Error) => void): this
removeListener(event: 'exit', listener: Function): this
once(event: 'exit', listener: Function): this
}
}
declare namespace Electron {
interface MenuItem {
readonly accelerator?: Electron.Accelerator
readonly submenu?: Electron.Menu
readonly role?: string
readonly type: 'normal' | 'separator' | 'submenu' | 'checkbox' | 'radio'
}
interface RequestOptions {
readonly method: string
readonly url: string
readonly headers: any
}
type AppleActionOnDoubleClickPref = 'Maximize' | 'Minimize' | 'None'
interface SystemPreferences {
getUserDefault(
key: 'AppleActionOnDoubleClick',
type: 'string'
): AppleActionOnDoubleClickPref
}
interface WebviewTag extends HTMLElement {
// Copied from https://github.com/electron/electron-typescript-definitions/pull/81
// until we can upgrade to a version of Electron which includes the fix.
addEventListener<K extends keyof HTMLElementEventMap>(
type: K,
listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
useCapture?: boolean
): void
addEventListener(
type: string,
listener: EventListenerOrEventListenerObject,
useCapture?: boolean
): void
removeEventListener<K extends keyof HTMLElementEventMap>(
type: K,
listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,
useCapture?: boolean
): void
removeEventListener(
type: string,
listener: EventListenerOrEventListenerObject,
useCapture?: boolean
): void
}
}
// https://wicg.github.io/ResizeObserver/#resizeobserverentry
interface IResizeObserverEntry {
readonly target: HTMLElement
readonly contentRect: ClientRect
}
declare class ResizeObserver {
public constructor(cb: (entries: ReadonlyArray<IResizeObserverEntry>) => void)
public disconnect(): void
public observe(e: HTMLElement): void
}