@sliit-foss/functions
TypeScript icon, indicating that this package has built-in type declarations

2.10.0 • Public • Published

@sliit-foss/functions

Just a small set of utility functions


Installation

# using npm
npm install @sliit-foss/functions

# using yarn
yarn add @sliit-foss/functions

Usage

# using require
const { trace, traced, cleanTraced, cleanTrace, bindKey, asyncHandler, tracedAsyncHandler } = require("@sliit-foss/functions");

# using import
import { trace, traced, cleanTraced, cleanTrace, bindKey, asyncHandler, tracedAsyncHandler } from "@sliit-foss/functions";

Examples

  • trace

trace(function foo() {
  console.log(123);
});

/*
  foo execution initiated
  123
  foo execution completed - execution_time : 0.2069999985396862
*/
  • traced (Same as trace but returns a decorated function)

const tracedFoo = traced(function foo() {
  console.log(123);
})();

tracedFoo();

/*
  foo execution initiated
  123
  foo execution completed - execution_time : 0.2069999985396862
*/
  • cleanTraced and cleanTrace (Same as the above two but ignores tracing for anonymous functions to avoid polluting the logs)

  • tracing a function with a layer prefix (Works for all 4 functions above)

const tracedFoo = traced["controller"](function foo() {
  console.log(123);
})();

tracedFoo();

/*
  controller >>> foo execution initiated
  123
  controller >>> foo execution completed - execution_time : 0.2069999985396862
*/
  • bindKey (Creates a bounded function from a passed object and function key with its context preserved)


    - This method is distint from the `bindKey` function of lodash as this preserves the function's `name` property where lodash sets it as `wrapper`
const obj = {
  name: "test-object",
  foo() {
    console.log(`Inside ${this.name} function foo`);
  }
};
const preserved = bindKey(obj, "foo");
setTimeout(preserved, 0); // Outputs `Inside test-object function foo`
console.log(preserved.name); // Outputs `bound foo`
  • tracedAsyncHandler

tracedAsyncHandler(async function hello(req, res) => {
  res.send("Hello World");
});
/*
  hello execution initiated
  hello execution completed - execution_time : 0.2069999985396862
*/
  • asyncHandler (Same as tracedAsyncHandler but without the tracing. Useful when you don't want to trace the execution time of the function)

asyncHandler(async function hello(req, res) => {
  res.send("Hello World");
});

Disabling tracing

  • Set the environment variable DISABLE_FUNCTION_TRACING to true or 1 to disable tracing.

Readme

Keywords

Package Sidebar

Install

npm i @sliit-foss/functions

Weekly Downloads

117

Version

2.10.0

License

MIT

Unpacked Size

27.5 kB

Total Files

20

Last publish

Collaborators

  • sliit.foss