@akashic/akashic-sandbox
Version:
Standalone runner for Akashic contents
37 lines (36 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var controller = function (req, res, _next) {
var scriptPath = path.resolve(path.join(req.baseDir, "sandbox.config.js"));
if (!fs.existsSync(scriptPath)) {
res.contentType("text/javascript");
res.send(createLoadingScript({}));
return;
}
var sandboxConfig = {};
try {
sandboxConfig = require(scriptPath);
delete require.cache[require.resolve(scriptPath)]; // 設定ファイルの更新に追従するためアクセス毎にキャッシュを削除する
sandboxConfig = completeConfigParams(sandboxConfig);
}
catch (error) {
console.log(error);
}
res.contentType("text/javascript");
res.send(createLoadingScript(sandboxConfig));
};
module.exports = controller;
function completeConfigParams(c) {
var config = {
autoSendEventName: c.autoSendEventName ? c.autoSendEventName : "",
events: c.events ? c.events : {},
showMenu: !!c.showMenu,
warn: c.warn ? c.warn : {}
};
return config;
}
function createLoadingScript(content) {
return "window.sandboxDeveloperProps = window.sandboxDeveloperProps || {};\nwindow.sandboxDeveloperProps.sandboxConfig = " + JSON.stringify(content) + ";\n";
}