@akashic/akashic-sandbox
Version:
Standalone runner for Akashic contents
33 lines (32 loc) • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var makePathKeyObject_1 = require("@akashic/game-configuration/lib/utils/makePathKeyObject");
var controller = function (req, res, next) {
var scriptPath = path.join(req.baseDir, req.params.scriptName);
// TODO: pathがbaseDir以下かの検査(scriptNameに..とか入れられるとたどれちゃう)
if (!fs.existsSync(scriptPath)) {
var err = new Error("Not Found");
err.status = 404;
next(err);
return;
}
var content = fs.readFileSync(scriptPath);
res.contentType("text/javascript");
if (req.useRawScript) {
res.send(content);
}
else {
var gameJson = JSON.parse(fs.readFileSync(path.join(req.baseDir, "game.json"), { encoding: "utf-8" }));
var assetMap = (0, makePathKeyObject_1.makePathKeyObject)(gameJson.assets);
var scriptAssetConfig = assetMap[req.params.scriptName];
res.render("script", {
key: req.originalUrl,
scriptContent: content,
scriptName: req.params.scriptName,
exports: scriptAssetConfig === null || scriptAssetConfig === void 0 ? void 0 : scriptAssetConfig.exports
});
}
};
module.exports = controller;