
Research
/Security News
Shai Hulud Strikes Again (v2)
Another wave of Shai-Hulud campaign has hit npm with more than 500 packages and 700+ versions affected.
@eligundry/server-timing
Advanced tools
Framework agnostic implementation for tracking app latency with Server-Timing headers
This package is a framework agnostic helper class to construct Server-Timing headers.
$ npm install -S @eligundry/server-timing
This module is ESM only! I apologize in advance for the pain that you might feel in the short term!
import ServerTiming from '@eligundry/server-timing'
const handler = async () => {
const serverTiming = new ServerTiming()
// Functions can be tracked manually
serverTiming.start('db')
await db.query()
serverTiming.end('db')
// Timing calls can be chained
serverTiming.start('db.getUsers')
const users = await db.getUsers()
serverTiming.end('db.getUsers').start('cache.users')
await cache.set('users', users)
serverTiming.end('cache.users')
// All of this is nice, but you really should be using the track method,
// which allows for wrapping of functions that will track latency.
const orders = await serverTiming.track('db.getOrders', () => db.getOrders())
// All tracking calls can accept a human readable description of the
// tracking call.
const stats = await serverTiming.track(
{
label: 'db.getStats',
desc: 'Sales Stats',
},
() => db.getStats()
)
// Entries can be added without measurements
serverTiming
.add('cache.miss')
.track('cache.stats', () => cache.set('stats', stats))
// When you are done tracking operations, attach headers to the response by
// calling serverTiming.header().
return json({ users, orders, stats }, {
headers: {
[serverTiming.headerKey]: serverTiming.toString(),
}
})
}
This above example will output this header:
Server-Timing: db;dur=1000.075, db.getUsers;dur=1103.056, cache.users;dur=100.054, db.getOrders;dur=1000.050, db.getStats;desc="Sales Stats";dur=1200.048, cache.miss, cache.stats;dur=100.053
And will look like this in the devtools:

It's like have a little mini DataDog right in your browser!
All documentation lives next to the code in ServerTiming.ts.
This project uses node:test and requires Node >= 18.
# Run the tests
$ npm test
FAQs
Framework agnostic implementation for tracking app latency with Server-Timing headers
We found that @eligundry/server-timing demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Another wave of Shai-Hulud campaign has hit npm with more than 500 packages and 700+ versions affected.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.