/
generate-browser-globals.js
47 lines (41 loc) · 1.14 KB
/
generate-browser-globals.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
/**
* @author Toru Nagashima
* See LICENSE file in root directory for full license.
*/
"use strict"
const fs = require("fs")
const path = require("path")
const { ESLint } = require("eslint")
const { browser: originalGlobals } = require("globals")
const targetFile = path.resolve(__dirname, "../lib/configs/_browser-globals.js")
const globals = {}
const allows = new Set([
"atob",
"btoa",
"cancelAnimationFrame",
"document",
"fetch",
"indexedDB",
"localStorage",
"location",
"matchMedia",
"navigator",
"requestAnimationFrame",
"sessionStorage",
"window",
])
for (const key of Object.keys(originalGlobals).sort()) {
if (key[0] === key[0].toUpperCase() || allows.has(key)) {
globals[key] = originalGlobals[key] ? "writable" : "readonly"
}
}
const linter = new ESLint({ fix: true })
const rawCode = `/**
* DON'T EDIT THIS FILE WHICH WAS GENERATED BY './scripts/generate-browser-globals.js'.
*/
"use strict"
module.exports = ${JSON.stringify(globals, null, 4)}
`
const code =
linter.lintText(rawCode, "_browser-globals.js").results[0].output || rawCode
fs.writeFileSync(targetFile, code)