npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@tmlog/node

v0.1.0

Published

Node.js logging with optional console output, development event buffers, and structured alerts.

Readme

@tmlog/node

Node.js logging for TML — Tiny Micro Logger, with optional console output, a development event buffer, and structured alerts.

Install

npm install @tmlog/node

This package ships ES modules and TypeScript declarations. Use an .mjs file or set "type": "module" in your application's package.json. It includes @tmlog/core as a dependency.

Quick start

import tml from '@tmlog/node';

tml.configure({ console: true });
tml.info('app.start', 'Application ready');
tml.log('db.query', 'Query complete', { duration: 18 });

const events = tml.dump();

Console output is disabled by default. Setting console: true enables it independently of the development buffer. Node logging does not use browser watch patterns.

log, debug, info, warn, and error each accept (scope, message, data?) and use the corresponding console method when console output is enabled.

Development buffer

Development mode defaults to NODE_ENV !== 'production'. In this mode, the logger retains up to 1,000 events. dump() returns them without clearing the buffer; clear() removes them. With development mode disabled, new logs are not buffered and dump() returns an empty array.

Create a logger with explicit settings:

import { createTml } from '@tmlog/node';

const logger = createTml({
  service: 'api',
  development: true,
  console: true,
  buffer: { maxEvents: 100 },
});

logger.info('request.start', 'Request received', { requestId: 'demo-123' });
const events = logger.dump();

For request-specific buffers, create a logger for each request. Buffer events are not automatically redacted; sanitize them before exposing them to clients.

Alerts

Configure alert.endpoint with an absolute HTTP URL and a runtime that provides fetch, or provide alert.transport.send(event) for your backend. Alert payloads apply key-based redaction and data limits before transport.

tml.configure({
  alert: {
    transport: {
      async send(event) {
        // Replace this example sink with your backend client.
        console.info('Alert received', event);
      },
    },
  },
});

await tml.alert('checkout.failed', 'Checkout failed', { orderId: 'demo-123' });

error() logs locally; it does not send an alert. Alerts are independent of development buffering. Missing transports and transport failures do not throw to the caller, so use a custom transport if you need delivery monitoring.

See the project documentation for the browser package and a React + Express demo.

License

MIT.