UNPKG

@netlify/content-engine

Version:
80 lines 3.17 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.processPlugin = processPlugin; const create_id_1 = require("./utils/create-id"); const resolve_plugin_1 = require("./resolve-plugin"); const lodash_set_1 = __importDefault(require("lodash.set")); const lodash_merge_1 = __importDefault(require("lodash.merge")); const lodash_isempty_1 = __importDefault(require("lodash.isempty")); function processPlugin(plugin, rootDir) { // Respect the directory that the plugin was sourced from initially rootDir = (typeof plugin !== `string` && plugin.parentDir) || rootDir; if (typeof plugin === `string`) { const info = (0, resolve_plugin_1.resolvePlugin)(plugin, rootDir); return { ...info, pluginOptions: { plugins: [], }, }; } plugin.options = plugin.options || {}; // Throw an error if there is an "option" key. if ((0, lodash_isempty_1.default)(plugin.options) && !(0, lodash_isempty_1.default)(plugin.option)) { throw new Error(`Plugin "${plugin.resolve}" has an "option" key in the configuration. Did you mean "options"?`); } // Plugins can have plugins. if (plugin.subPluginPaths) { for (const subPluginPath of plugin.subPluginPaths) { const segments = subPluginPath.split(`.`); let roots = [plugin.options]; let pathToSwap = segments; for (const segment of segments) { if (segment === `[]`) { pathToSwap = pathToSwap.slice(0, pathToSwap.length - 1); roots = roots.flat(); } else { roots = roots.map((root) => root[segment]); } } roots = roots.flat(); const processed = []; for (const root of roots) { const result = processPlugin(root, rootDir); processed.push(result); } (0, lodash_set_1.default)(plugin.options, pathToSwap, processed); } } // Add some default values for tests as we don't actually // want to try to load anything during tests. if (plugin.resolve === `___TEST___`) { const name = `TEST`; return { id: (0, create_id_1.createPluginId)(name, plugin), name, version: `0.0.0-test`, pluginOptions: { plugins: [], }, resolve: `__TEST__`, }; } const info = (0, resolve_plugin_1.resolvePlugin)(plugin, rootDir); return { ...info, modulePath: plugin.modulePath, module: plugin.module, subPluginPaths: plugin.subPluginPaths ? Array.from(plugin.subPluginPaths) : undefined, id: (0, create_id_1.createPluginId)(info.name, plugin), pluginOptions: (0, lodash_merge_1.default)({ plugins: [] }, plugin.options), }; } //# sourceMappingURL=process-plugin.js.map