Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/plugin-utils/lib/utils/requirePlugins.ts
1029 views
1
import { IPluginClass } from '@secret-agent/interfaces/IPlugin';
2
import IPluginType from '@secret-agent/interfaces/IPluginTypes';
3
import extractPlugins from './extractPlugins';
4
import filterPlugins from './filterPlugins';
5
6
const byPath: { [path: string]: any[] } = {};
7
8
export default function requirePlugins<T = IPluginClass>(
9
path: string,
10
pluginType?: IPluginType,
11
): T[] {
12
if (!byPath[path]) {
13
byPath[path] = [];
14
// eslint-disable-next-line global-require,import/no-dynamic-require
15
byPath[path] = extractPlugins<T>(require(path));
16
}
17
18
return (pluginType ? filterPlugins(byPath[path], pluginType) : byPath[path]) as T[];
19
}
20
21