-
-
Notifications
You must be signed in to change notification settings - Fork 199
/
kernel.js
70 lines (58 loc) · 1.95 KB
/
kernel.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
63
64
65
66
67
68
69
70
import 'utils/dom';
import 'utils/css';
import 'utils/text';
import 'core-js/modules/es6.array.for-each';
import 'core-js/modules/es6.array.map';
import 'core-js/modules/es6.object.keys';
import 'core-js/modules/es6.promise';
window.Kernel = class {
static boot(release, sentryDsn, environment, algoliaAppId, algoliaAppPublicKey, algoliaBlacklist) {
Kernel.release = release;
Kernel.sentryDsn = sentryDsn;
let app = false,
vendor = false;
let runIfReady = () => {
if (app && vendor) {
let sentryDsn = Kernel.sentryDsn;
let release = Kernel.release;
let listeners = Kernel.listeners;
if (sentryDsn) {
Raven.config(sentryDsn, { release: release }).install();
}
for (let i in listeners) {
App.addListener(listeners[i]);
}
App.run({
sentryDsn: sentryDsn,
release: release,
environment: environment,
algoliaAppId: algoliaAppId,
algoliaAppPublicKey: algoliaAppPublicKey,
algoliaBlacklist: Base64.decode(algoliaBlacklist).split(','),
});
}
};
let handleError = (error) => {
throw error;
};
System.import('vendor').catch(handleError).then(() => {
vendor = true;
runIfReady();
});
System.import('app').catch(handleError).then(() => {
app = true;
runIfReady();
});
if ('debug' !== release) {
System.import('utils/analytics').catch(handleError).then((module) => {
module.default();
});
}
}
static onLoad(callback) {
Kernel.listeners.push(callback);
}
};
Kernel.release = null;
Kernel.sentryDsn = null;
Kernel.listeners = [];