Skip to content

Commit

Permalink
feat: emit timers with proc-log
Browse files Browse the repository at this point in the history
  • Loading branch information
lukekarrys committed Apr 16, 2024
1 parent 434f93e commit beb5c1f
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions lib/index.js
Expand Up @@ -3,6 +3,7 @@
// class handles all the IO with the registry and cache.
const pacote = require('pacote')
const cacache = require('cacache')
const { time } = require('proc-log')
const Advisory = require('./advisory.js')
const { homedir } = require('os')
const jsonParse = require('json-parse-even-better-errors')
Expand Down Expand Up @@ -48,34 +49,33 @@ class Calculator {

async [_calculate] (name, source) {
const k = `security-advisory:${name}:${source.id}`
const t = `metavuln:calculate:${k}`
process.emit('time', t)
const timeEnd = time.start(`metavuln:calculate:${k}`)
const advisory = new Advisory(name, source, this[_options])
// load packument and cached advisory
const [cached, packument] = await Promise.all([
this[_cacheGet](advisory),
this[_packument](name),
])
process.emit('time', `metavuln:load:${k}`)
const timeEndLoad = time.start(`metavuln:load:${k}`)
advisory.load(cached, packument)
process.emit('timeEnd', `metavuln:load:${k}`)
timeEndLoad()
if (advisory.updated) {
await this[_cachePut](advisory)
}
this[_advisories].set(k, advisory)
process.emit('timeEnd', t)
timeEnd()
return advisory
}

async [_cachePut] (advisory) {
const { name, id } = advisory
const key = `security-advisory:${name}:${id}`
process.emit('time', `metavuln:cache:put:${key}`)
const timeEnd = time.start(`metavuln:cache:put:${key}`)
const data = JSON.stringify(advisory)
const options = { ...this[_options] }
this[_cacheData].set(key, jsonParse(data))
await cacache.put(this[_cache], key, data, options).catch(() => {})
process.emit('timeEnd', `metavuln:cache:put:${key}`)
timeEnd()
}

async [_cacheGet] (advisory) {
Expand All @@ -87,12 +87,12 @@ class Calculator {
return this[_cacheData].get(key)
}

process.emit('time', `metavuln:cache:get:${key}`)
const timeEnd = time.start(`metavuln:cache:get:${key}`)
const p = cacache.get(this[_cache], key, { ...this[_options] })
.catch(() => ({ data: '{}' }))
.then(({ data }) => {
data = jsonParse(data)
process.emit('timeEnd', `metavuln:cache:get:${key}`)
timeEnd()
this[_cacheData].set(key, data)
return data
})
Expand All @@ -105,7 +105,7 @@ class Calculator {
return this[_packuments].get(name)
}

process.emit('time', `metavuln:packument:${name}`)
const timeEnd = time.start(`metavuln:packument:${name}`)
const p = pacote.packument(name, { ...this[_options] })
.catch((er) => {
// presumably not something from the registry.
Expand All @@ -116,7 +116,7 @@ class Calculator {
}
})
.then(paku => {
process.emit('timeEnd', `metavuln:packument:${name}`)
timeEnd()
this[_packuments].set(name, paku)
return paku
})
Expand Down

0 comments on commit beb5c1f

Please sign in to comment.