(
{ registry, cache, expires = 5 * 60 * 1000 },
name,
now = Date.now()
)
| 9 | const ssri = require('ssri'); |
| 10 | |
| 11 | async function fetchPackage( |
| 12 | { registry, cache, expires = 5 * 60 * 1000 }, |
| 13 | name, |
| 14 | now = Date.now() |
| 15 | ) { |
| 16 | let meta = await cacache |
| 17 | .get(cache, `spackage:${name}`) |
| 18 | .then(xs => JSON.parse(String(xs.data))) |
| 19 | .catch(() => null); |
| 20 | |
| 21 | if (!meta || now - Date.parse(meta.date) > Number(expires)) { |
| 22 | const pkgReq = await fetch(`${registry}/v1/packages/package/${name}`); |
| 23 | meta = { |
| 24 | date: Date.parse(pkgReq.headers.date), |
| 25 | data: await pkgReq.json() |
| 26 | }; |
| 27 | |
| 28 | if (pkgReq.status > 399) { |
| 29 | console.log(name, meta.data); |
| 30 | throw new Error(); |
| 31 | } |
| 32 | |
| 33 | await cacache.put(cache, `spackage:${name}`, JSON.stringify(meta)); |
| 34 | } |
| 35 | |
| 36 | return meta.data; |
| 37 | } |
no test coverage detected