PluginManager refactor (#6677)
* fix: refactor plugin manager * fix: make id optional * fix: allow add to accept single object * fix: getHooks * fix: tsc * fix: remove id
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
import { PluginManager, PluginType } from "@server/utils/PluginManager";
|
||||
import { Hook, PluginManager } from "@server/utils/PluginManager";
|
||||
import config from "../plugin.json";
|
||||
import router from "./auth/azure";
|
||||
import env from "./env";
|
||||
|
||||
PluginManager.register(PluginType.AuthProvider, router, {
|
||||
...config,
|
||||
enabled: !!env.AZURE_CLIENT_ID && !!env.AZURE_CLIENT_SECRET,
|
||||
});
|
||||
const enabled = !!env.AZURE_CLIENT_ID && !!env.AZURE_CLIENT_SECRET;
|
||||
|
||||
if (enabled) {
|
||||
PluginManager.add({
|
||||
...config,
|
||||
type: Hook.AuthProvider,
|
||||
value: { router, id: config.id },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"id": "email",
|
||||
"name": "Email",
|
||||
"priority": 200,
|
||||
"description": "Adds an email magic link authentication provider."
|
||||
}
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
import env from "@server/env";
|
||||
import { PluginManager, PluginType } from "@server/utils/PluginManager";
|
||||
import { Hook, PluginManager } from "@server/utils/PluginManager";
|
||||
import config from "../plugin.json";
|
||||
import router from "./auth/email";
|
||||
|
||||
PluginManager.register(PluginType.AuthProvider, router, {
|
||||
...config,
|
||||
enabled: (!!env.SMTP_HOST && !!env.SMTP_USERNAME) || env.isDevelopment,
|
||||
});
|
||||
const enabled = (!!env.SMTP_HOST && !!env.SMTP_USERNAME) || env.isDevelopment;
|
||||
|
||||
if (enabled) {
|
||||
PluginManager.add({
|
||||
...config,
|
||||
type: Hook.AuthProvider,
|
||||
value: { router, id: config.id },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
import { PluginManager, PluginType } from "@server/utils/PluginManager";
|
||||
import { PluginManager, Hook } from "@server/utils/PluginManager";
|
||||
import config from "../plugin.json";
|
||||
import router from "./auth/google";
|
||||
import env from "./env";
|
||||
|
||||
PluginManager.register(PluginType.AuthProvider, router, {
|
||||
...config,
|
||||
enabled: !!env.GOOGLE_CLIENT_ID && !!env.GOOGLE_CLIENT_SECRET,
|
||||
});
|
||||
const enabled = !!env.GOOGLE_CLIENT_ID && !!env.GOOGLE_CLIENT_SECRET;
|
||||
|
||||
if (enabled) {
|
||||
PluginManager.add({
|
||||
...config,
|
||||
type: Hook.AuthProvider,
|
||||
value: { router, id: config.id },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
import {
|
||||
PluginManager,
|
||||
PluginPriority,
|
||||
PluginType,
|
||||
Hook,
|
||||
} from "@server/utils/PluginManager";
|
||||
import env from "./env";
|
||||
import Iframely from "./iframely";
|
||||
|
||||
PluginManager.register(PluginType.UnfurlProvider, Iframely.get, {
|
||||
id: "iframely",
|
||||
enabled: !!env.IFRAMELY_API_KEY && !!env.IFRAMELY_URL,
|
||||
const enabled = !!env.IFRAMELY_API_KEY && !!env.IFRAMELY_URL;
|
||||
|
||||
// Make sure this is last in the stack to be evaluated after all other unfurl providers
|
||||
priority: PluginPriority.VeryLow,
|
||||
});
|
||||
if (enabled) {
|
||||
PluginManager.add([
|
||||
{
|
||||
type: Hook.UnfurlProvider,
|
||||
value: Iframely.get,
|
||||
|
||||
// Make sure this is last in the stack to be evaluated after all other unfurl providers
|
||||
priority: PluginPriority.VeryLow,
|
||||
},
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
import { PluginManager, PluginType } from "@server/utils/PluginManager";
|
||||
import { PluginManager, Hook } from "@server/utils/PluginManager";
|
||||
import config from "../plugin.json";
|
||||
import router from "./auth/oidc";
|
||||
import env from "./env";
|
||||
|
||||
PluginManager.register(PluginType.AuthProvider, router, {
|
||||
...config,
|
||||
name: env.OIDC_DISPLAY_NAME || config.name,
|
||||
enabled: !!(
|
||||
env.OIDC_CLIENT_ID &&
|
||||
env.OIDC_CLIENT_SECRET &&
|
||||
env.OIDC_AUTH_URI &&
|
||||
env.OIDC_TOKEN_URI &&
|
||||
env.OIDC_USERINFO_URI
|
||||
),
|
||||
});
|
||||
const enabled = !!(
|
||||
env.OIDC_CLIENT_ID &&
|
||||
env.OIDC_CLIENT_SECRET &&
|
||||
env.OIDC_AUTH_URI &&
|
||||
env.OIDC_TOKEN_URI &&
|
||||
env.OIDC_USERINFO_URI
|
||||
);
|
||||
|
||||
if (enabled) {
|
||||
PluginManager.add({
|
||||
...config,
|
||||
type: Hook.AuthProvider,
|
||||
value: { router, id: config.id },
|
||||
name: env.OIDC_DISPLAY_NAME || config.name,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { PluginManager, PluginType } from "@server/utils/PluginManager";
|
||||
import { PluginManager, Hook } from "@server/utils/PluginManager";
|
||||
import config from "../plugin.json";
|
||||
import hooks from "./api/hooks";
|
||||
import router from "./auth/slack";
|
||||
@@ -7,14 +7,21 @@ import SlackProcessor from "./processors/SlackProcessor";
|
||||
|
||||
const enabled = !!env.SLACK_CLIENT_ID && !!env.SLACK_CLIENT_SECRET;
|
||||
|
||||
PluginManager.register(PluginType.AuthProvider, router, {
|
||||
...config,
|
||||
enabled,
|
||||
});
|
||||
|
||||
PluginManager.register(PluginType.API, hooks, {
|
||||
...config,
|
||||
enabled,
|
||||
});
|
||||
|
||||
PluginManager.registerProcessor(SlackProcessor, { enabled });
|
||||
if (enabled) {
|
||||
PluginManager.add([
|
||||
{
|
||||
...config,
|
||||
type: Hook.AuthProvider,
|
||||
value: { router, id: config.id },
|
||||
},
|
||||
{
|
||||
...config,
|
||||
type: Hook.API,
|
||||
value: hooks,
|
||||
},
|
||||
{
|
||||
type: Hook.Processor,
|
||||
value: SlackProcessor,
|
||||
},
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
import { existsSync, mkdirSync } from "fs";
|
||||
import env from "@server/env";
|
||||
import Logger from "@server/logging/Logger";
|
||||
import { PluginManager, PluginType } from "@server/utils/PluginManager";
|
||||
import {
|
||||
PluginManager,
|
||||
PluginPriority,
|
||||
Hook,
|
||||
} from "@server/utils/PluginManager";
|
||||
import router from "./api/files";
|
||||
|
||||
if (env.FILE_STORAGE === "local") {
|
||||
@@ -19,13 +23,20 @@ if (env.FILE_STORAGE === "local") {
|
||||
}
|
||||
}
|
||||
|
||||
PluginManager.register(PluginType.API, router, {
|
||||
id: "files",
|
||||
name: "Local file storage",
|
||||
description: "Plugin for storing files on the local file system",
|
||||
enabled: !!(
|
||||
env.FILE_STORAGE_UPLOAD_MAX_SIZE &&
|
||||
env.FILE_STORAGE_LOCAL_ROOT_DIR &&
|
||||
env.FILE_STORAGE === "local"
|
||||
),
|
||||
});
|
||||
const enabled = !!(
|
||||
env.FILE_STORAGE_UPLOAD_MAX_SIZE &&
|
||||
env.FILE_STORAGE_LOCAL_ROOT_DIR &&
|
||||
env.FILE_STORAGE === "local"
|
||||
);
|
||||
|
||||
if (enabled) {
|
||||
PluginManager.add([
|
||||
{
|
||||
name: "Local file storage",
|
||||
description: "Plugin for storing files on the local file system",
|
||||
type: Hook.API,
|
||||
value: router,
|
||||
priority: PluginPriority.Normal,
|
||||
},
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"id": "webhooks",
|
||||
"name": "Webhooks",
|
||||
"priority": 200,
|
||||
"description": "Adds HTTP webhooks for various events."
|
||||
}
|
||||
|
||||
@@ -1,11 +1,26 @@
|
||||
import { PluginManager, PluginType } from "@server/utils/PluginManager";
|
||||
import { PluginManager, Hook } from "@server/utils/PluginManager";
|
||||
import config from "../plugin.json";
|
||||
import webhookSubscriptions from "./api/webhookSubscriptions";
|
||||
import WebhookProcessor from "./processors/WebhookProcessor";
|
||||
import CleanupWebhookDeliveriesTask from "./tasks/CleanupWebhookDeliveriesTask";
|
||||
import DeliverWebhookTask from "./tasks/DeliverWebhookTask";
|
||||
|
||||
PluginManager.register(PluginType.API, webhookSubscriptions, config)
|
||||
.registerProcessor(WebhookProcessor)
|
||||
.registerTask(DeliverWebhookTask)
|
||||
.registerTask(CleanupWebhookDeliveriesTask);
|
||||
PluginManager.add([
|
||||
{
|
||||
...config,
|
||||
type: Hook.API,
|
||||
value: webhookSubscriptions,
|
||||
},
|
||||
{
|
||||
type: Hook.Processor,
|
||||
value: WebhookProcessor,
|
||||
},
|
||||
{
|
||||
type: Hook.Task,
|
||||
value: DeliverWebhookTask,
|
||||
},
|
||||
{
|
||||
type: Hook.Task,
|
||||
value: CleanupWebhookDeliveriesTask,
|
||||
},
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user