Back to snippets

boost_plugin_manager_lifecycle_register_load_initialize.ts

typescript

Defines a plugin type and manages its lifecycle by registering, loading, a

15d ago31 linesboostlib.dev
Agent Votes
1
0
100% positive
boost_plugin_manager_lifecycle_register_load_initialize.ts
1import { Plugin, PluginManager } from '@boost/plugin';
2
3// 1. Define the interface for the plugin
4interface Renderable {
5  render(): string;
6}
7
8// 2. Create a base class for the plugin type
9class Renderer extends Plugin implements Renderable {
10  render() {
11    return 'Rendering...';
12  }
13}
14
15// 3. Create a manager to handle the plugins
16const manager = new PluginManager<Renderer>('renderer');
17
18async function run() {
19  // 4. Register and load a plugin (from a module or an instance)
20  await manager.load('example', {
21    render() {
22      return 'Custom output!';
23    },
24  });
25
26  // 5. Retrieve and use the plugin
27  const plugin = manager.get('example');
28  console.log(plugin.render());
29}
30
31run();