minimal adjustments
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / table / node_modules / ajv / scripts / bundle.js
1 "use strict"
2
3 const fs = require("fs")
4 const path = require("path")
5 const browserify = require("browserify")
6 const {minify} = require("terser")
7
8 const [sourceFile, outFile, globalName] = process.argv.slice(2)
9
10 const json = require(path.join(__dirname, "..", "package.json"))
11 const bundleDir = path.join(__dirname, "..", "bundle")
12 if (!fs.existsSync(bundleDir)) fs.mkdirSync(bundleDir)
13
14 browserify({standalone: globalName})
15   .require(path.join(__dirname, "../dist", sourceFile), {expose: sourceFile})
16   .bundle(saveAndMinify)
17
18 async function saveAndMinify(err, buf) {
19   if (err) {
20     console.error("browserify error:", err)
21     process.exit(1)
22   }
23
24   const bundlePath = path.join(bundleDir, outFile)
25   const opts = {
26     ecma: 2018,
27     warnings: true,
28     compress: {
29       pure_getters: true,
30       keep_infinity: true,
31       unsafe_methods: true,
32     },
33     format: {
34       preamble: `/* ${json.name} ${json.version} (${globalName}): ${json.description} */`,
35     },
36     sourceMap: {
37       filename: outFile + ".min.js",
38       url: outFile + ".min.js.map",
39     },
40   }
41
42   const result = await minify(buf.toString(), opts)
43
44   fs.writeFileSync(bundlePath + ".bundle.js", buf)
45   fs.writeFileSync(bundlePath + ".min.js", result.code)
46   fs.writeFileSync(bundlePath + ".min.js.map", result.map)
47   if (result.warnings) result.warnings.forEach((msg) => console.warn("terser.minify warning:", msg))
48 }