This repository has been archived by the owner on Jan 11, 2023. It is now read-only.
/
index.js
62 lines (50 loc) 路 1.5 KB
/
index.js
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
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
// @flow
import * as firefox from "./firefox";
import * as chrome from "./chrome";
import { prefs } from "../utils/prefs";
import { setupHelper } from "../utils/dbg";
import {
bootstrapApp,
bootstrapStore,
bootstrapWorkers
} from "../utils/bootstrap";
function loadFromPrefs(actions: Object) {
const { pauseOnExceptions, ignoreCaughtExceptions } = prefs;
if (pauseOnExceptions || ignoreCaughtExceptions) {
return actions.pauseOnExceptions(pauseOnExceptions, ignoreCaughtExceptions);
}
}
function getClient(connection: any) {
const { tab: { clientType } } = connection;
return clientType == "firefox" ? firefox : chrome;
}
async function onConnect(
connection: Object,
{ services, toolboxActions }: Object
) {
// NOTE: the landing page does not connect to a JS process
if (!connection) {
return;
}
const client = getClient(connection);
const commands = client.clientCommands;
const { store, actions, selectors } = bootstrapStore(commands, {
services,
toolboxActions
});
bootstrapWorkers();
await client.onConnect(connection, actions);
await loadFromPrefs(actions);
setupHelper({
store,
actions,
selectors,
client: client.clientCommands
});
bootstrapApp(store);
return { store, actions, selectors, client: commands };
}
export { onConnect };