forked from gluon-framework/gluon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gluon.d.ts
171 lines (138 loc) · 3.84 KB
/
gluon.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
type WindowApi = {
/**
* Evaluate a string or function in the web context.
* @returns Return value of expression given.
*/
eval: (
/** String or function to evaluate. */
expression: string|Function
) => Promise<any>
};
type IPCApi = {
/**
* Send an IPC event to the web context.
* @returns Replied event data (null by default).
*/
send(
/** Type of event to send. */
type: string,
/** Data of event to send. */
data: any
): Promise<any>,
/**
* Subscribe to IPC events of a specific type with a callback.
*/
on(
/** Type of event to handle. */
type: string,
/**
* Ran whenever an IPC event of type specified is received. Should return optionally with what to reply with.
* @returns Optionally with what to reply with, otherwise null by default.
*/
callback: (data: any) => any
): void
};
type CDPApi = {
/**
* Send a CDP command to the browser.
* {@link https://chromedevtools.github.io/devtools-protocol/ Chrome DevTools Protocol Documentation}
* @returns Result of command from browser.
*/
send(
/** Method of CDP command. */
method: string,
/** Parameters of CDP command. */
params?: Object,
/** Send session ID with the command (default true). */
useSessionId?: Boolean = true
): Promise<any>
};
type IdleAutoOptions = {
/**
* How long the window should be minimized before hibernating, in seconds.
* @default 5
*/
timeMinimizedToHibernate?: Number
};
type IdleApi = {
/** Put the window into hibernation. */
hibernate(): void,
/**
* Put the window to sleep.
*/
sleep(): void,
/** Wake up the window from hibernation or sleep. */
wake(): void,
/** Enable/disable automatic idle management, and set its options. */
auto(
/** Whether to use automatic idle management. */
enabled: Boolean,
/** Set options for automatic behavior. */
options?: IdleAutoOptions
): void
};
type VersionInfo = {
/** Name of component. */
name: string,
/** Full version of component. */
version: string,
/** Major version of component as a number. */
major: number
};
type BrowserVersions = {
/**
* Product (browser) version and name.
* @example
* Window.versions.product // { name: 'Chrome Canary', version: '111.0.5513.0', major: 111 }
*/
product: VersionInfo,
/**
* Browser engine (Chromium/Firefox) version and name.
* @example
* Window.versions.engine // { name: 'chromium', version: '111.0.5513.0', major: 111 }
*/
engine: VersionInfo,
/**
* JS engine (V8/SpiderMonkey) version and name.
* @example
* Window.versions.jsEngine // { name: 'v8', version: '11.1.86', major: 11 }
*/
jsEngine: VersionInfo
};
type Window = {
/** API for accessing the window itself. */
window: WindowApi,
/** API for IPC. */
ipc: IPCApi,
/** API for manually using CDP with the browser. */
cdp: CDPApi,
/**
* API for Gluon idle management (like hibernation).
* @experimental
*/
idle: IdleApi,
/** Browser version info of the window: product (browser), engine (Chromium/Firefox), and JS engine (V8/SpiderMonkey). */
versions: BrowserVersions,
/** Close the Gluon window. */
close(): void
};
/** A browser that Gluon supports. */
type Browser = 'chrome'|'chrome_canary'|'chromium'|'chromium_snapshot'|'edge'|'firefox'|'firefox_nightly';
/** A browser engine that Gluon supports. */
type BrowserEngine = 'chromium'|'firefox';
/** Additional options for opening */
type OpenOptions = {
/** Function to evaluate in the web context once loaded. */
onLoad?: Function,
/** Force Gluon to use a browser instead of automatically finding. */
forceBrowser?: Browser,
};
/**
* Open a new Gluon window.
*/
export function open(
/** URL to load in the window. */
url: string,
/** Additional options for opening. */
options: OpenOptions
): Promise<Window>;