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
|
const fetch = require("node-fetch")
const crypto = require("crypto")
const obj = {}
const fetch_arr = ["jquery"]
function promise_wrapping(promise, ...rest) {
return new Promise((res, rej) => {
promise
.then(x => res([x, ...rest]))
.catch(x => rej())
})
}
Promise.all(fetch_arr.map(value => fetch(`https://api.cdnjs.com/libraries/${value}`)))
.then(res => Promise.all(res.map(x => x.json())))
//.then(libs => Promise.all(libs.assets.map(asset => asset.files.map(file => fetch(`https://api.cdnjs.com/${libs.name}/${asset.version}/${file}`)))))
.then(result => {
let x = [];
result.map(single => {
single.assets.map(version => {
version.files.filter(file => {
if (file.endsWith(".js")) { return file }
}).map(file => {
x.push([`https://cdnjs.cloudflare.com/ajax/libs/${single.name}/${version.version}/${file}`, file, version.version, single.name])
})
})
})
return Promise.all(x.map(z => promise_wrapping(fetch(z[0]), z[1], z[2], z[3])))
})
.then(x => Promise.all(x.map(a => promise_wrapping(a[0].text(), a[1], a[2], a[3]))))
.then(q => {
q.map(single => {
if (!obj[single[3]]) obj[single[3]] = []
const hash = crypto.createHash("sha256")
const updated = hash.update(single[0]).digest("hex")
obj[single[3]].push({ "filename": single[1], "version": single[2], "hash": updated })
})
console.log(JSON.stringify(obj))
})
|