forked from facebook/react
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreact-devtools.js
More file actions
124 lines (111 loc) · 4.3 KB
/
react-devtools.js
File metadata and controls
124 lines (111 loc) · 4.3 KB
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
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
*/
/* eslint-disable no-unused-vars */
declare const __EXTENSION__: boolean;
declare const __TEST__: boolean;
declare const __IS_FIREFOX__: boolean;
declare const __IS_CHROME__: boolean;
declare const __IS_EDGE__: boolean;
declare const __IS_NATIVE__: boolean;
interface ExtensionDevtools {
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools/inspectedWindow} */
inspectedWindow: $FlowFixMe;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools/network} */
network: $FlowFixMe;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools/panels} */
panels: $FlowFixMe;
}
interface ExtensionEvent<Listener: Function> {
addListener(callback: Listener): void;
removeListener(callback: Listener): void;
}
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/Tab} */
// TODO: Only covers used properties. Extend as needed.
interface ExtensionTab {
id?: number;
}
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/MessageSender} */
// TODO: Only covers used properties. Extend as needed.
interface ExtensionRuntimeSender {
tab?: ExtensionTab;
}
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port} */
// TODO: Only covers used properties. Extend as needed.
interface ExtensionRuntimePort {
disconnect(): void;
name: string;
onMessage: ExtensionEvent<(message: any, port: ExtensionRuntimePort) => void>;
onDisconnect: ExtensionEvent<(port: ExtensionRuntimePort) => void>;
postMessage(message: mixed, transferable?: Array<mixed>): void;
sender?: ExtensionRuntimeSender;
}
interface ExtensionMessageSender {
id?: string;
url?: string;
tab?: {
id: number,
url: string,
};
}
interface ExtensionRuntime {
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/connect} */
connect(connectInfo?: {
name?: string,
includeTlsChannelId?: boolean,
}): ExtensionRuntimePort;
connect(
extensionId: string,
connectInfo?: {name?: string, includeTlsChannelId?: boolean},
): ExtensionRuntimePort;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage} */
onMessage: ExtensionEvent<
(
message: any,
sender: ExtensionMessageSender,
sendResponse: (response: any) => void,
) => any,
>;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onConnect} */
onConnect: ExtensionEvent<(port: ExtensionRuntimePort) => void>;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage} */
sendMessage(
message: any,
options?: {includeTlsChannelId?: boolean},
): Promise<any>;
sendMessage(
extensionId: string,
message: any,
// We're making this required so that we don't accidentally call the wrong overload.
options: {includeTlsChannelId?: boolean},
): Promise<any>;
}
interface ExtensionTabs {
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onActivated} */
onActivated: ExtensionEvent<
(activeInfo: {
previousTabId: number,
tabId: number,
windowId: number,
}) => void,
>;
}
interface ExtensionAPI {
devtools: ExtensionDevtools;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/permissions} */
permissions: $FlowFixMe;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime} */
runtime: ExtensionRuntime;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting} */
scripting: $FlowFixMe;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage} */
storage: $FlowFixMe;
/** @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs} */
tabs: ExtensionTabs;
}
declare const chrome: ExtensionAPI;