Botvy Plugin System
Description
The Botvy plugin system loads plugins from different data sources.
Every developer is welcome to append their own data source for loading different type of modules!.
Maybe the project will be open sourced so everyone else could use the data source.
UI
Requirements
Expose the extended definitions
The UI package must export the extended definitions for the window global. It should expose React for the plugins which can then import it from the window.React variable.
Loading external components for sections
The UI should be able to import external components for different parts of the sections.
React.js must be added as peer dependency to the plugin since it is already provided by the plugin system!
For this the NodeJSRequirer should be used to require the correct files.
Dependencies
- react
- @types/react
- inversify
- fs (maybe an abstraction?)
- @types/node
- typescript
- webpack
- css-loader
- html-webpack-plugin
Client
Requirements
Loading external Plugins
The electron client should be able to load plugins based on a configuration file (plugin.json). This JSON file is validated against a JSON schema which must also be defined by the Plugin System.
The PluginManager should use the generic class "DataLoader"s which load the plugins from different data sources. The "DataLoader" class is injectable by inversify for providing dependency injection for the plugins.
The DataLoader could use the NodeJSRequirer to load plugins from a file based system.
Problems
The plugins must be transpiled by the TypeScript transpiler to have the correct output!
All output modes which are provided by webpack are NOT COMPATIBLE to this kind of loading plugins.
Botvy Plugin System
Description
The Botvy plugin system loads plugins from different data sources.
Every developer is welcome to append their own data source for loading different type of modules!.
Maybe the project will be open sourced so everyone else could use the data source.
UI
Requirements
Expose the extended definitions
The UI package must export the extended definitions for the
windowglobal. It should expose React for the plugins which can then import it from thewindow.Reactvariable.Loading external components for sections
The UI should be able to import external components for different parts of the sections.
React.js must be added as peer dependency to the plugin since it is already provided by the plugin system!
For this the NodeJSRequirer should be used to require the correct files.
Dependencies
Client
Requirements
Loading external Plugins
The electron client should be able to load plugins based on a configuration file (
plugin.json). This JSON file is validated against a JSON schema which must also be defined by the Plugin System.The PluginManager should use the generic class "DataLoader"s which load the plugins from different data sources. The "DataLoader" class is injectable by inversify for providing dependency injection for the plugins.
The DataLoader could use the NodeJSRequirer to load plugins from a file based system.
import React from 'react') toconst React = window.React;Problems
The plugins must be transpiled by the TypeScript transpiler to have the correct output!
All output modes which are provided by webpack are NOT COMPATIBLE to this kind of loading plugins.