0.3.2 • Published 5 months ago

ruvipers-plugin-system v0.3.2

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

Plugin Server

CAUTION! Внимание!

Это альфа-версия, не готовая к использованию!

Описание

Проект предоставляет серверную платформу для управления и взаимодействия с плагинами, включая поддержку локальных и удалённых плагинов, обработку событий и автоматическую загрузку зависимостей.


Основные функции

  • Загрузка плагинов: Автоматическая загрузка локальных плагинов из директории.
  • Подключение плагинов: Поддержка локальных и удалённых плагинов через Socket.IO.
  • Обработка событий: Регистрация и обработка пользовательских событий от плагинов.
  • Управление зависимостями: Автоматическая установка npm-зависимостей для плагинов.
  • Фильтрация плагинов: Поддержка фильтров для избирательного взаимодействия с плагинами.

Установка

  1. Склонируйте репозиторий:
    git clone <repo-url>
    cd <repo-directory>
  2. Установите зависимости:
    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

ПараметрТипОписание
portnumberПорт для запуска сервера.
optionsobjectОпции для конфигурации сервера.

Методы PluginServer

|Параметр | Описание | |====|=========| | use | Регистрация обработчика события. | | emit | Отправка события подключённым плагинам. | | getPlugins |Получение списка плагинов с учётом фильтров.| |getPlugin| Получение конкретного плагина по имени.|

Конфигурация

Параметры PluginServerOptions

ПараметрТипЗначение по умолчаниюОписание
pluginsDirstring./pluginsПуть к директории плагинов.
pluginsDataDirstring./pluginsDataПуть к директории данных плагинов.
npmCachePathstring./node_modules/.cacheПуть к кэшу npm.
disabledPluginsstring[][]Список отключённых плагинов.
autoStartbooleantrueАвтоматический запуск сервера при инициализации.

Требования

  • Node.js v14+.
  • npm v6+.