5.8.8 • Published 7 months ago

plugin-engine v5.8.8

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

PluginEngine

PluginEngine is a TypeScript library designed for extensible application architecture. It employs a Publish-Subscribe pattern with middleware support, allowing for a decoupled, event-driven architecture.

import { PluginEngine, Plugin } from 'plugin-engine';

// Initialize PluginEngine
const engine = new PluginEngine<{ httpRequest: { request: string } }>();

// Define a logging plugin with 'enter' hook
const logPlugin: Plugin<{ request: string }> = {
  name: 'Log',
  enter: (data, context) => {
    console.log(`Request: ${data.request}`);
    // 'context.abortWith' can be used to short-circuit the event chain
  },
};

// Register the plugin to an 'httpRequest' event
engine.on('httpRequest', logPlugin);

// Define a modification plugin with 'enter' hook
const modifyPlugin: Plugin<{ request: string }> = {
  name: 'Modify',
  enter: (data) => {
    data.request = `Modified: ${data.request}`;
    return data;
  },
};

// Register the modification plugin
engine.on('httpRequest', modifyPlugin);

// Execute the 'httpRequest' event
engine.exec('httpRequest', { request: 'GET /home' }).then((result) => {
  console.log(`Final Request: ${result.request}`);
});
// Output: "Request: GET /home", "Request: Modified: GET /home", "Final Request: Modified: GET /home"

Key Concepts:

  • enter and exit hooks: Plugins can have enter and exit hooks that run when an event is executed.

  • abortWith: Within the context argument in the plugin, you can use abortWith to immediately stop the processing of subsequent plugins and return the current state of the event data.

  • Asynchronous Execution: The exec method returns a promise, allowing for asynchronous event handling.

  • Error Handling: Plugins can define an error method to handle exceptions gracefully. PluginEngine?

5.8.8

7 months ago

5.8.7

7 months ago

5.8.6

7 months ago

5.8.5

7 months ago

5.8.4

7 months ago

5.8.3

7 months ago

5.8.2

7 months ago

5.8.1

7 months ago

5.8.0

9 months ago

5.5.5

9 months ago

5.1.6

9 months ago

5.1.3

9 months ago

5.1.2

9 months ago

5.1.1

9 months ago

5.1.0

10 months ago

5.0.807

10 months ago

5.0.808

10 months ago

5.0.809

10 months ago

5.0.803

10 months ago

5.0.804

10 months ago

5.0.806

10 months ago

5.0.801

10 months ago

5.0.802

10 months ago

5.7.10

9 months ago

5.0.814

10 months ago

5.0.815

10 months ago

5.0.816

10 months ago

5.0.817

10 months ago

5.7.12

9 months ago

5.0.810

10 months ago

5.7.11

9 months ago

5.0.811

10 months ago

5.7.14

9 months ago

5.6.2

9 months ago

5.0.812

10 months ago

5.7.13

9 months ago

5.6.1

9 months ago

5.6.0

9 months ago

5.7.9

9 months ago

5.7.7

9 months ago

5.1.11

9 months ago

5.1.10

9 months ago

5.0.610

1 year ago

4.1.35

1 year ago

5.0.25

1 year ago

4.0.5

1 year ago

4.0.4

1 year ago

4.0.7

1 year ago

4.0.6

1 year ago

4.0.1

1 year ago

4.0.0

1 year ago

4.0.3

1 year ago

4.0.2

1 year ago

4.0.9

1 year ago

4.0.8

1 year ago

4.1.350

1 year ago

5.0.800

1 year ago

4.0.10

1 year ago

4.0.11

1 year ago

5.0.700

1 year ago

4.1.0

1 year ago

4.1.1

1 year ago

3.3.14

1 year ago

3.3.15

1 year ago

3.3.16

1 year ago

3.3.17

1 year ago

3.3.18

1 year ago

3.3.19

1 year ago

3.3.20

1 year ago

3.3.21

1 year ago

3.3.22

1 year ago

3.3.23

1 year ago

3.3.13

1 year ago

3.3.9

1 year ago

3.3.8

1 year ago

3.3.10

1 year ago

3.3.11

1 year ago

3.3.12

1 year ago

3.3.7

1 year ago

3.3.5

1 year ago

3.3.4

1 year ago

3.3.3

1 year ago

3.3.1

1 year ago

3.3.2

1 year ago

3.2.27

2 years ago

3.2.25-beta.2

2 years ago

3.2.25-beta.1

2 years ago

3.2.25-beta.5

2 years ago

3.2.25-beta.4

2 years ago

3.2.25-beta.3

2 years ago

3.3.1-beta.3

2 years ago

3.3.0

2 years ago

3.2.24

2 years ago

3.2.23

2 years ago

3.2.20

2 years ago

3.2.22

2 years ago

3.2.21

2 years ago

3.2.16

2 years ago

3.2.12

2 years ago

3.2.15

2 years ago

3.2.11

2 years ago

3.2.10

2 years ago

3.2.9

2 years ago

3.2.8-beta.0

2 years ago

3.2.7

2 years ago

3.2.8-beta.3

2 years ago

3.2.6

2 years ago

3.2.8-beta.2

2 years ago

3.2.8-beta.4

2 years ago

3.2.6-beta.10

2 years ago

3.2.6-beta.11

2 years ago

3.2.6-beta.6

2 years ago

3.2.6-beta.5

2 years ago

3.2.6-beta.3

2 years ago

3.2.6-beta.2

2 years ago

3.2.5

2 years ago

3.2.6-beta.1

2 years ago

3.2.6-beta.0

2 years ago

3.2.5-beta.1

2 years ago

3.2.5-beta.2

2 years ago

3.2.5-beta.3

2 years ago

3.2.5-beta.4

2 years ago

3.2.6-beta.9

2 years ago

3.2.6-beta.8

2 years ago

3.2.1-beta.4

2 years ago

3.2.1-beta.3

2 years ago

3.2.1-beta.1

2 years ago

3.2.0

2 years ago

3.1.12-beta.10

2 years ago

3.1.12-beta.12

2 years ago

3.1.12-beta.9

2 years ago

3.1.12-beta.5

2 years ago

3.1.12-beta.0

2 years ago

3.1.12-beta.1

2 years ago

3.1.12-beta.2

2 years ago

3.1.12-beta.3

2 years ago

3.1.10

2 years ago

3.1.9

2 years ago

3.1.8

2 years ago

3.1.7

2 years ago

3.1.6

2 years ago