honkit
Version:
HonKit is building beautiful books using Markdown.
50 lines (48 loc) • 1.72 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const is_1 = __importDefault(require("is"));
const immutable_1 = __importDefault(require("immutable"));
const promise_1 = __importDefault(require("../../utils/promise"));
const api_1 = __importDefault(require("../../api"));
/**
Prepare plugins resources, add all output corresponding type resources
@param {Output}
@return {Promise<Output>}
*/
function prepareResources(output) {
const plugins = output.getPlugins();
const options = output.getOptions();
const type = options.get("prefix");
let state = output.getState();
const context = api_1.default.encodeGlobal(output);
let result = immutable_1.default.Map();
return promise_1.default.forEach(plugins, (plugin) => {
const pluginResources = plugin.getResources(type);
return (0, promise_1.default)()
.then(() => {
// Apply resources if is a function
if (is_1.default.fn(pluginResources)) {
return (0, promise_1.default)().then(pluginResources.bind(context));
}
else {
return pluginResources;
}
})
.then((resources) => {
result = result.set(plugin.getName(), immutable_1.default.Map(resources));
});
}).then(() => {
// Set output resources
state = state.merge({
resources: result
});
output = output.merge({
state: state
});
return output;
});
}
exports.default = prepareResources;