generated from atom-community/atom-ide-template-js
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmain.js
55 lines (49 loc) · 1.65 KB
/
main.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
import { CompositeDisposable } from "atom"
import { setupTypeScript } from "./typescript.js"
export { createNodeDebuggerProvider } from "./debugger/node/main"
let subscriptions
/**
* called by Atom when activating an extension
* @param {any} state the current state of atom
*/
export function activate(state) {
// Events subscribed to in atom's system can be easily cleaned up with a CompositeDisposable
subscriptions = new CompositeDisposable()
package_deps()
.then(() => {
setupTypeScript()
})
.catch((e) => {
atom.notifications.addError("atom-ide-javascript failed in installing its dependencies.")
})
}
/**
* install Atom package dependencies if not already loaded
*/
async function package_deps() {
// Add entries from package-deps here manually
// (to prevent loading atom-package-deps and package.json when the deps are already loaded)
const deps = ["atom-ide-base", "atom-typescript", "linter-eslint", "autocomplete-paths", "javascript-drag-import"]
if (deps.some((p) => !atom.packages.isPackageLoaded(p))) {
await import("atom-package-deps").then((atom_package_deps) => {
// install if not installed
atom_package_deps.install("atom-ide-javascript", false)
// enable if disabled
deps
.filter((p) => !atom.packages.isPackageLoaded(p))
.forEach((p) => {
atom.notifications.addInfo(`Enabling package ${p} that is needed for atom-ide-javascript`)
atom.packages.enablePackage(p)
})
})
}
}
/**
* called by Atom when deactivating an extension
*/
export function deactivate() {
if (subscriptions) {
subscriptions.dispose()
}
subscriptions = null
}