Skip to content

Modules

pedrokarim edited this page Jun 11, 2026 · 1 revision

Modules

Le système de modules permet d'étendre ShareX Manager avec des plugins de traitement d'image (et autres fonctionnalités), chargés dynamiquement au runtime.

Qu'est-ce qu'un module ?

Un dossier sous modules/<nom>/ contenant un manifeste module.json et un point d'entrée (ex. index.process.ts). Les modules activés sont importés et leurs fonctions exportées deviennent des « capacités ».

  • Type : types/modules.ts
  • Gestionnaire : lib/modules/module-manager.api.ts (singleton apiModuleManager)
  • Initialisation : lib/modules/init.tsensureInitialized() scanne modules/
  • UI de gestion : /modules (et /admin/modules)

Schéma module.json

Champ Type Rôle
name string Identifiant unique (clé + route /m/<name>)
version string Version (semver)
description, author string Métadonnées
enabled boolean Module actif ou non
entry string Fichier d'entrée (ex. index.process.ts)
icon string? Icône Lucide ou URL
category string? ex. Édition, AI, analysis
hasUI boolean Présence d'une interface
supportedFileTypes string[] Extensions, ou ["*"] pour tout
settings object Réglages persistés dans module.json
dependencies string[]? Dépendances entre modules
npmDependencies Record<string,string>? Paquets npm installés dans le dossier du module
capabilities string[]? Fonctions exportées (auto-détectées)
pages {path,title,component}[]? Pages UI montées sous /m/<name>/<path>
navItems {title,icon?,url?}[]? Entrées de menu latéral

Cycle de vie

  • Chargement : à la première utilisation, le gestionnaire lit chaque module.json, le valide (Zod), et import() l'entrée des modules activés. Les hooks (onInit/onEnable/onDisable/onUninstall, processImage, processText, renderUI, …) sont récupérés. Le traitement d'image a un timeout de 30 s.
  • Activer / désactiver : bascule enabled dans module.json et recharge à chaud le module.
  • Réglages : updateModuleSettings fusionne et persiste, puis recharge.
  • Installer / supprimer : installModule copie un dossier et lance npm install pour npmDependencies ; deleteModule exécute les hooks de désinstallation puis supprime.
  • Pages : rendues via app/(app)/m/[moduleName]/[[...path]]/page.tsx ; les navItems apparaissent dans la barre latérale.

Modules existants

Module Catégorie UI Types Rôle
hello-world text * Démo / gabarit
crop Édition images Recadrage interactif (Sharp + react-image-crop)
resize Édition images Redimensionnement auto (largeur/hauteur/qualité)
watermark Marque images Filigrane texte (position/opacité)
anime-trace analysis images Identification d'anime via trace.moe
ai-image-gen AI Génération d'images par IA (pages generate/settings, navItems)

Le module ai-image-gen est l'exemple le plus complet (entrée index.process.ts, pages/, lib/providers.ts) et utilise GOOGLE_API_KEY / des clés provider configurées dans ses réglages.

➡️ Pour intégrer/automatiser le traitement à l'upload, voir aussi Référence API (routes /api/modules/*).

Clone this wiki locally