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 🙏

© 2024 – Pkg Stats / Ryan Hefner

ts-log-class

v1.1.2

Published

Class Logging via Decorator with out and message format hooks

Downloads

1,510

Readme

ts-log-class

Codacy Badge Build Status Coverage Status License: MIT npm version

ts-log-class is a helper utility that will add log output for all methods of a class by adding a @log decorator to the class definition. Stop adding console.log or other logging strategies within each method, but have it done for you. This utility was written specifically for test compaitibility as part of the aws-ts-starter.

Install

npm install --save ts-log-class

Usage

import log from "ts-log-class";

@log()
export class Car {
  numWheels: number = 4;

  drive(mph: number): Promise<string> {
    return new Promise(resolve => {
      setTimeout(() => {
        resolve(`Driving ${mph.toString()}mph!`);
      }, 100);
    });
  }
}

See tslogclass.spec.ts for additional usage examples.

Output

The default usage without passing in any configuration options to the log function will return the following, including the result of a Promise.

new Car().drive(32);

console.log output:

{"className":"Car","methodName":"drive","timestamp":1513536484430,"arguments":{"mph": 32},"properties":{"numWheels": 4},"result":"Driving 32mph!"}

Options

The decorator, @log() takes in a configuration object ILogOptions with hook and out properties.

Hook

The hook property is a function implementing the IHookProperties interface. Your method is provided the following properties:

  • className - The name of the class.
  • methodName - The name of the executing function.
  • timestamp - An Epoch of when the Out option function is invoked.
  • arguments - An object with each argument nam as the key, and each argument value as the value.
  • properties - An object with each property name as the key, and each property value as the value.
  • result - The return value of the function. If the result is a Promise, the return value will equal the result of the Promise once it resolves.

Out

By default, console.log, but any function implementing the console.log interface will do: (message?: any, ...optionalParams: any[]) => void