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>

Readme

Keywords

none

Package Sidebar

Install

npm i plugin-decorator

Weekly Downloads

8

Version

1.8.0

License

MIT

Unpacked Size

32.3 kB

Total Files

20

Last publish

Collaborators

  • xiaobe