From b6e7e75ae80c4a7868356e389e233fc1ab1b079a Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Thu, 9 Nov 2023 12:43:41 +0900 Subject: [PATCH] plugin system poc --- src/plugins/utils/common/index.ts | 1 + src/plugins/utils/common/types.ts | 29 +++++++++++++++++++++++++++++ src/plugins/utils/main/index.ts | 1 + src/plugins/utils/main/types.ts | 7 +++++++ src/plugins/utils/renderer/types.ts | 3 +++ 5 files changed, 41 insertions(+) create mode 100644 src/plugins/utils/common/index.ts create mode 100644 src/plugins/utils/common/types.ts create mode 100644 src/plugins/utils/main/types.ts create mode 100644 src/plugins/utils/renderer/types.ts diff --git a/src/plugins/utils/common/index.ts b/src/plugins/utils/common/index.ts new file mode 100644 index 00000000..fcb073fe --- /dev/null +++ b/src/plugins/utils/common/index.ts @@ -0,0 +1 @@ +export * from './types'; diff --git a/src/plugins/utils/common/types.ts b/src/plugins/utils/common/types.ts new file mode 100644 index 00000000..e37ac611 --- /dev/null +++ b/src/plugins/utils/common/types.ts @@ -0,0 +1,29 @@ +import type { BrowserWindow } from 'electron'; + +export interface Config { + enabled: boolean; +} + +export interface Plugin { + name: string; + description: string; + config: ConfigType; +} + +export interface RendererPlugin extends Plugin { + onEnable: (config: ConfigType) => void; +} + +export interface MainPlugin extends Plugin { + onEnable: (window: BrowserWindow, config: ConfigType) => string; +} + +export interface PreloadPlugin extends Plugin { + onEnable: (config: ConfigType) => void; +} + +export interface MenuPlugin extends Plugin { + onEnable: (config: ConfigType) => void; +} + +export const defineConfig = (config: ConfigType) => config; diff --git a/src/plugins/utils/main/index.ts b/src/plugins/utils/main/index.ts index e185a90a..64e2016c 100644 --- a/src/plugins/utils/main/index.ts +++ b/src/plugins/utils/main/index.ts @@ -1,3 +1,4 @@ export * from './css'; export * from './fs'; export * from './plugin'; +export * from './types'; diff --git a/src/plugins/utils/main/types.ts b/src/plugins/utils/main/types.ts new file mode 100644 index 00000000..18e66989 --- /dev/null +++ b/src/plugins/utils/main/types.ts @@ -0,0 +1,7 @@ +import type { Config, MainPlugin, MenuPlugin, PreloadPlugin } from '../common'; + +export const defineMainPlugin = (plugin: MainPlugin) => plugin; + +export const definePreloadPlugin = (plugin: PreloadPlugin) => plugin; + +export const defineMenuPlugin = (plugin: MenuPlugin) => plugin; diff --git a/src/plugins/utils/renderer/types.ts b/src/plugins/utils/renderer/types.ts new file mode 100644 index 00000000..38f6b9ab --- /dev/null +++ b/src/plugins/utils/renderer/types.ts @@ -0,0 +1,3 @@ +import type { Config, RendererPlugin } from '../common'; + +export const defineRendererPlugin = (plugin: RendererPlugin) => plugin;