Skip to content

chtushar/patchie

Repository files navigation

Patchie

Patchie is a Type-safe monkey-patching utility for Node.js.

⚠️ Monkey-patching can override the default behavior of a function. Do not monkey-patch unless you know what you are doing.

API Reference

  • setOptions -

    Possible Options:

    {
      logger: console.log; // You can provide a custom logger here
    }
  • wrap - patchie.wrap(nodule, name, wrapper)

    • nodule: The object containing the property to be wrapped.
    • name: The key of the property to be wrapped.
    • wrapper: A function that will be used to wrap the original property.

    Returns the wrapped function.

    Suppose you have an object:

    const obj = {
      greet: function () {
        console.log("Hello");
      },
    };

    You can wrap the greet function like this:

    import patchie from "patchie";
    
    patchie.wrap(obj, "greet", (original) => {
      return function () {
        console.log("Before greeting");
        original.apply(this, arguments);
        console.log("After greeting");
      };
    });

    After this, calling obj.greet() will print:

    Before greeting
    Hello
    After greeting
    
  • unwrap - patchie.unwrap(nodule, name)

    • nodule: The object containing the property to be unwrapped.
    • name: The key of the property to be unwrapped.

    Restores the wrapped property to its original state.

    To revert a wrapped function back to its original form:

    patchie.unwrap(obj, "greet");

Credits:

  • shimmer.js - Patchie is heavily inspired by the shimmer package. Shimmer is unmaintained for last 5 years and have few minor edge cases.

About

Type Safe monkeypatching utility for Node.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published