You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.3 KiB
58 lines
1.3 KiB
"use strict"; |
|
|
|
exports.__esModule = true; |
|
exports.getPlugins = getPlugins; |
|
exports.resolvePlugin = resolvePlugin; |
|
exports.loadPlugin = loadPlugin; |
|
|
|
var _pluginJsx = _interopRequireDefault(require("@svgr/plugin-jsx")); |
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
|
|
|
const DEFAULT_PLUGINS = [_pluginJsx.default]; |
|
|
|
function getPlugins(config, state) { |
|
if (config.plugins) { |
|
return config.plugins; |
|
} |
|
|
|
if (state.caller && state.caller.defaultPlugins) { |
|
return state.caller.defaultPlugins; |
|
} |
|
|
|
return DEFAULT_PLUGINS; |
|
} |
|
|
|
function resolvePlugin(plugin) { |
|
if (typeof plugin === 'function') { |
|
return plugin; |
|
} |
|
|
|
if (typeof plugin === 'string') { |
|
return loadPlugin(plugin); |
|
} |
|
|
|
throw new Error(`Invalid plugin "${plugin}"`); |
|
} |
|
|
|
const pluginCache = {}; |
|
|
|
function loadPlugin(moduleName) { |
|
if (pluginCache[moduleName]) { |
|
return pluginCache[moduleName]; |
|
} |
|
|
|
try { |
|
// eslint-disable-next-line |
|
const plugin = require(moduleName); |
|
|
|
if (!plugin.default || !plugin) { |
|
throw new Error(`Invalid plugin "${moduleName}"`); |
|
} |
|
|
|
pluginCache[moduleName] = plugin.default || plugin; |
|
return pluginCache[moduleName]; |
|
} catch (error) { |
|
throw new Error(`Module "${moduleName}" missing. Maybe \`npm install ${moduleName}\` could help!`); |
|
} |
|
} |