-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathnpm-scripts.mjs
More file actions
53 lines (49 loc) · 1.88 KB
/
npm-scripts.mjs
File metadata and controls
53 lines (49 loc) · 1.88 KB
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
import fs from "fs";
import rimraf from "rimraf";
import AdmZip from "adm-zip";
import Axios from "axios";
const U_WEBSOCKET_VERSION = "20.10.0";
const download = async (url, dest) => {
const writer = fs.createWriteStream(dest)
const response = await Axios({
url,
method: 'GET',
responseType: 'stream'
});
response.data.pipe(writer);
return new Promise((resolve, reject) => {
writer.on('finish', resolve)
writer.on('error', reject)
})
};
const downloadUWS = async () => {
const hasNoBinaries = !fs.existsSync("./bin") || !fs.readdirSync('./bin').find(file => file.endsWith(".node"))
if (hasNoBinaries) {
try {
console.log("Downloading node binaries...")
await download(`https://github.com/uNetworking/uWebSockets.js/archive/refs/tags/v${U_WEBSOCKET_VERSION}.zip`, `./binaries-${U_WEBSOCKET_VERSION}.zip`)
console.log("Extracting node binaries...")
const zip = new AdmZip(`./binaries-${U_WEBSOCKET_VERSION}.zip`)
zip.extractAllTo(".", true)
if (!fs.existsSync("./bin")) {
fs.mkdirSync("./bin")
}
fs.readdirSync(`./uWebSockets.js-${U_WEBSOCKET_VERSION}`)
.forEach(file => {
if (file.endsWith(".node")) {
fs.renameSync(`./uWebSockets.js-${U_WEBSOCKET_VERSION}/${file}`, `./bin/${file}`)
}
})
rimraf.sync(`./uWebSockets.js-${U_WEBSOCKET_VERSION}`)
rimraf.sync(`./binaries-${U_WEBSOCKET_VERSION}.zip`)
} catch (err) {
console.error(err)
rimraf.sync(`./binaries-${U_WEBSOCKET_VERSION}.zip`)
rimraf.sync(`./uWebSockets.js-${U_WEBSOCKET_VERSION}`)
if (fs.existsSync("./bin")) {
rimraf.sync(`./bin`)
}
}
}
};
downloadUWS()