plugin-decorator
TypeScript icon, indicating that this package has built-in type declarations

1.8.0 • Public • Published

plugin-decorator

Using TypeScript MIT License NPM

plugin-decorator is a library of tools to quickly empower your projects with plugins!

import { Hook, Inject, PluginTarget, Plugin } from 'plugin-decorator';

class DemoTarget extends PluginTarget {
  @Hook()
  public method1() {
    console.log('origin method');
  }
}

class DemoPlugin extends Plugin {
  @Inject()
  public method1(next) {
    next();
    console.log('plugin method');
  }
}

const demoTarget = new DemoTarget();
demoTarget.install(new DemoPlugin());
demoTarget.method1();

// => origin method
// => plugin method

Decorator

import { Hook, Inject, PluginTarget, Plugin } from 'plugin-decorator';

class DemoTarget extends PluginTarget {
  @Hook()
  public method1() {
    return 'origin method';
  }
}

class DemoPlugin extends Plugin {
  @Inject()
  public method1(next) {
    return `plugin ${next()}`;
  }
}

const demoTarget = new DemoTarget();
demoTarget.install(new DemoPlugin());

demoTarget.method1();

// => plugin origin method

Promise

import { Hook, Inject, PluginTarget, Plugin } from 'plugin-decorator';

class DemoTarget extends PluginTarget {
  @Hook()
  public methodPromise() {
    return new Promise((resolve) => {
      setTimeout(() => resolve('origin method'), 1000);
    });
  }
}

class DemoPlugin extends Plugin {
  @Inject()
  public async methodPromise(next) {
    return `plugin ${await next()}`;
  }
}

const demoTarget = new DemoTarget();
demoTarget.install(new DemoPlugin());

demoTarget.methodPromise().then(console.log);

// => Promise<plugin origin method>

/plugin-decorator/

    Package Sidebar

    Install

    npm i plugin-decorator

    Weekly Downloads

    7

    Version

    1.8.0

    License

    MIT

    Unpacked Size

    32.3 kB

    Total Files

    20

    Last publish

    Collaborators

    • xiaobe