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

time-bomb-decorator

v2.2.1

Published

TimeBombDecorator

Downloads

365

Readme

Time Bomb Decorator

npm version

Time Bomb Decorator is a JavaScript decorator that reminds about code changes you planned to do.
Designed to help developers manage technical debt or set reminders within code, it alerts when certain parts of the code are due for a change.
Two weeks before the due date the decorator will log a warning messages to the console, and once the due date has met it will log console errors.

Table of Contents

Installation

Install the package via npm:

npm install time-bomb-decorator

Usage

The time-bomb-decorator package provides a decorator that you can apply to any function.
It allows you to set an expiration date after which the function will log a warning message or trigger custom actions.

In order to plant the bomb add the decorator above the function you wish to work on later , provide to the decorator date and owner.

Environment Dependent Behavior
The behavior of the decorator is dependent on the environment of the project:

  • In production environment, the decorator is off and no logs nor exceptions will be thrown.
  • In development environment, the decorator will log a warning message two weeks before the due date and log console errors if a bomb is due, but no exceptions will be thrown.
  • In test environment, the decorator will throw exception if a bomb with severity ERROR is due.

    The reason for throwing an error only on test mode is to have the ability to break the build , by adding a unit test that checks that the application started without any errors.

Basic Example

import { TimeBomb } from 'time-bomb-decorator';

class ExampleClass {
  @TimeBomb('2024-12-31', 'Jane Doe') //remove this function once getDailyReportV2 is fully deployed and tested
  getDailyReportV1() {
    console.log('some legacy code');
  }
}

API

TimeBomb(dueDate:string, owner: string, severity?: 'WARNING' | 'ERROR' = 'WARNING')

  • dueDate - string representing the due date of the fix in format - YYYY-MM-DD
  • owner - string representing the owner of the bomb
  • severity - (default is WARNING) - string representing the severity of the bomb, can be WARNING or ERROR . ERROR throws an exception once the specified due date has passed

Example Usage With Error Severity

import { TimeBomb } from 'time-bomb-decorator';

class ExampleClass {
  @TimeBomb('2024-12-31', 'Jane Doe', 'ERROR') // this function calls an API of a provider that will be deprecated on 2024-12-31
  getDataFromTempProviderV1() {
    console.log('some legacy code');
  }
}

In this example, the decorator will throw an exception once the due date has passed , and a test that checks that the application started without any errors will fail.

Why Use Time Bomb Decorator?

  • Manage Small Technical Debts: Helps you remember to update parts of your code that needs evolve later on.
  • Simple Integration: Works with JavaScript and TypeScript projects and can be quickly added to any function.

Contributing

Contributions, issues, and feature requests are welcome! Feel free to check out the issues page if you want to contribute.

License

Distributed under the MIT License. See LICENSE for more information.