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

checklogrun

v0.2.4

Published

The library promotes the separation of responsibilities, allowing the logic, valitadion and logging to be kept in distinct modules, organizing the code into separate files and reducing the complexity of the main funciton

Downloads

142

Readme

Introduction

CheckLogRun is a JavaScript library designed to manage the execution flow of functions with flexible callback capabilities. It allows users to define a primary function and optionally integrate callbacks that run before, after, or modify the return value of the main function.

Table of Contents

Installation

To use CheckLogRun, simply clone this repository or include the files in your project. It is structured as a modular library, and you can import only the parts you need.

git clone https://github.com/your-repo/checklogrun.git

If using via npm:

npm install checklogrun

Usage

Basic Structure

The main concept behind CheckLogRun is that you initialize it with a primary function using the .main() method. After that, you can attach additional callbacks (before, after, or on return) that will modify the behavior.

The library exposes several key methods:

  1. main(callback) - Defines the primary function to be executed.
  2. cbb(callback) - Adds a "before" callback, which runs before the main function.
  3. cba(callback) - Adds an "after" callback, which runs after the main function.
  4. cbr(callback) - Modifies the returned value from the main function.
  5. getFunction() - Returns the final composed function, ready to be called.

Methods

.main(callback)

This is the core method where you define the main function to be executed. This function will be called during the composed function execution.

import checklogrun from 'checklogrun';

const myFunction = (input) => { return `Processing ${input}`; };

checklogrun()
   .main(myFunction)
   .getFunction()("data");
// Output: "Processing data"

.cbb(callback)

This method allows you to define a callback that will run before the main function.

checklogrun()
  .main(myFunction)
  .cbb((input) => console.log(`Before Main with ${input}`))
  .getFunction()("data");
// Output: 
// "Before Main with data"
// "Processing data"

.cba(callback)

Similar to .cbb(), but the callback will run after the main function.

checklogrun()
  .main(myFunction)
  .cba((returnValue, input) => console.log(`After Main: ${returnValue}, Input: ${input}`))
  .getFunction()("data");
// Output: 
// "Processing data"
// "After Main: Processing data, Input: data"

.cbr(callback)

This method modifies the returned value of the main function. It is useful when you need to adjust the output.

const returnValueModifier = (returnValue, input) => return `Modified: ${returnValue} on ${input}`;

checklogrun()
  .main(myFunction)
  .cbr(returnValueModifier)
  .getFunction()("data");
// Output: "Modified: Processing data on data"

Examples

Here’s a simple example of chaining callbacks together:

import checklogrun from 'checklogrun'

const mainFunction = (input) => `Main Executed on ${input}`;
const beforeCallback = (input) => console.log(`Before with ${input}`);
const afterCallback = (returnValue, input) => console.log(`After with ${returnValue} and ${input}`);
const returnModifier = (returnValue, input) => `Modified ${returnValue} for ${input}`;

const composedFunction = checklogrun()
  .main(mainFunction)
  .cbb(beforeCallback)
  .cba(afterCallback)
  .cbr(returnModifier)
  .getFunction();

console.log(composedFunction("data"));
// Output: 
// "Before with data"
// "Main Executed on data"
// "After with Main Executed on data and data"
// "Modified Main Executed on data for data"

Contributing

Contributions are welcome! If you would like to contribute to CheckLogRun, please fork the repository and create a pull request with your changes.