function createPlugin(plugin, config) { return { handler: plugin, config, } } createPlugin.withOptions = function (pluginFunction, configFunction = () => ({})) { const optionsFunction = function (options) { return { __options: options, handler: pluginFunction(options), config: configFunction(options), } } optionsFunction.__isOptionsFunction = true // Expose plugin dependencies so that `object-hash` returns a different // value if anything here changes, to ensure a rebuild is triggered. optionsFunction.__pluginFunction = pluginFunction optionsFunction.__configFunction = configFunction return optionsFunction } export default createPlugin