dbgate-api
Version:
Allows run DbGate data-manipulation scripts.
49 lines (42 loc) • 1.49 kB
JavaScript
const path = require('path');
const fs = require('fs');
const { pluginsdir, packagedPluginsDir, getPluginBackendPath } = require('../utility/directories');
const platformInfo = require('../utility/platformInfo');
const authProxy = require('../utility/authProxy');
const { getLogger } = require('dbgate-tools');
//
const logger = getLogger('requirePlugin');
const loadedPlugins = {};
const dbgateEnv = {
dbgateApi: null,
platformInfo,
authProxy,
isProApp: () =>{
const { isProApp } = require('../utility/checkLicense');
return isProApp();
}
};
function requirePlugin(packageName, requiredPlugin = null) {
if (!packageName) throw new Error('Missing packageName in plugin');
if (loadedPlugins[packageName]) return loadedPlugins[packageName];
if (requiredPlugin == null) {
let module;
const modulePath = getPluginBackendPath(packageName);
logger.info(`DBGM-00062 Loading module ${packageName} from ${modulePath}`);
try {
// @ts-ignore
module = __non_webpack_require__(modulePath);
} catch (err) {
// console.log('Failed load webpacked module', err.message);
module = require(modulePath);
}
requiredPlugin = module.__esModule ? module.default : module;
}
loadedPlugins[packageName] = requiredPlugin;
if (requiredPlugin.initialize) requiredPlugin.initialize(dbgateEnv);
return requiredPlugin;
}
requirePlugin.initializeDbgateApi = value => {
dbgateEnv.dbgateApi = value;
};
module.exports = requirePlugin;