UNPKG

@indiekit/indiekit

Version:

The little server that connects your website to the independent web

48 lines (41 loc) 1.32 kB
import { createRequire } from "node:module"; import path from "node:path"; const require = createRequire(import.meta.url); /** * Add plug-ins to application configuration * @param {object} Indiekit - Indiekit instance */ export async function getInstalledPlugins(Indiekit) { for await (const pluginName of Indiekit.config.plugins) { const { default: IndiekitPlugin } = await import(pluginName); const plugin = new IndiekitPlugin(Indiekit.config[pluginName]); // Add plug-in file path plugin.filePath = path.dirname(require.resolve(pluginName)); // Add plug-in ID plugin.id = getPluginId(pluginName); // Register plug-in functions if (plugin.init) { await plugin.init(Indiekit); Indiekit.installedPlugins.add(plugin); } } } /** * Get installed plug-in * @param {Set} installedPlugins - Installed plug-ins * @param {string} pluginName - Plug-in Name * @returns {string} Plug-in ID */ export const getInstalledPlugin = (installedPlugins, pluginName) => { return [...installedPlugins].find( (plugin) => plugin.id === getPluginId(pluginName), ); }; /** * Get normalised plug-in ID * @param {string} pluginName - Plug-in Name * @returns {string} Plug-in ID */ export const getPluginId = (pluginName) => { return pluginName.replace("/", "-"); };