0.3.2 • Published 5 months ago
ruvipers-plugin-system v0.3.2
Plugin Server
CAUTION! Внимание!
Это альфа-версия, не готовая к использованию!
Описание
Проект предоставляет серверную платформу для управления и взаимодействия с плагинами, включая поддержку локальных и удалённых плагинов, обработку событий и автоматическую загрузку зависимостей.
Основные функции
- Загрузка плагинов: Автоматическая загрузка локальных плагинов из директории.
- Подключение плагинов: Поддержка локальных и удалённых плагинов через Socket.IO.
- Обработка событий: Регистрация и обработка пользовательских событий от плагинов.
- Управление зависимостями: Автоматическая установка npm-зависимостей для плагинов.
- Фильтрация плагинов: Поддержка фильтров для избирательного взаимодействия с плагинами.
Установка
- Склонируйте репозиторий:
git clone <repo-url> cd <repo-directory>
- Установите зависимости:
npm install
Использование
Инициализация сервера
import PluginServer from "./src/pluginServer";
const server = new PluginServer(3000, {
pluginsDir: "./plugins",
pluginsDataDir: "./pluginsData",
autoStart: true,
});
Регистрация обработчиков событий
server.use("exampleEvent", async (param1, param2) => {
return `Обработано: ${param1}, ${param2}`;
});
Загрузка плагинов
Плагины должны содержать package.json с указанием основного файла. Именование плагина всегда должно заканиваться на *-plugin:
{
"name": "example-plugin",
"main": "index.js"
}
Пример плагина
import RCM from "ruvipers-config-manager";
import { WroomeePlugin } from "wroomee-pluginsystem/dist/index.js";
import SMSAeroAPI from "./api/smsAero.api.js";
const plugin = new WroomeePlugin("ws://127.0.0.1:8080");
// Действия, которые необходимо выполнить до готовности плагина, например таймаут
await setTimeout(() => {}, 5000);
// При вызове sms.send от PluginServer, отработает функция.
plugin.use("sms.send", async (data): Promise<boolean> => {
const result = await fetch("http://smsService.local/sendSms", data);
return !!result;
});
// Пост-инициализация. При готновности сервера, функция будет вызвана. Здесь, например, можно вызвать функции, требующие готовность основного сервера.
plugin.ready(async () => {
plugin.setFilters({ version: "0.0.1" });
plugin.logger.info("Плагин готов к работе");
});
export default plugin;
API
Конструктор PluginServer
Параметр | Тип | Описание |
---|---|---|
port | number | Порт для запуска сервера. |
options | object | Опции для конфигурации сервера. |
Методы PluginServer
|Параметр | Описание | |====|=========| | use | Регистрация обработчика события. | | emit | Отправка события подключённым плагинам. | | getPlugins |Получение списка плагинов с учётом фильтров.| |getPlugin| Получение конкретного плагина по имени.|
Конфигурация
Параметры PluginServerOptions
Параметр | Тип | Значение по умолчанию | Описание |
---|---|---|---|
pluginsDir | string | ./plugins | Путь к директории плагинов. |
pluginsDataDir | string | ./pluginsData | Путь к директории данных плагинов. |
npmCachePath | string | ./node_modules/.cache | Путь к кэшу npm. |
disabledPlugins | string[] | [] | Список отключённых плагинов. |
autoStart | boolean | true | Автоматический запуск сервера при инициализации. |
Требования
- Node.js v14+.
- npm v6+.