@node-server/renderer
Version:
NodeServerJs is a library with standard feature implemented for web and api
63 lines (62 loc) • 2.72 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
}
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var url = require("url");
var utils_1 = require("@node-server/utils");
var RessourceRenderer = /** @class */ (function (_super) {
__extends(RessourceRenderer, _super);
function RessourceRenderer(config) {
var _this = _super.call(this, {
default: {
debug: false,
default_file: "index.html",
folder: "dist",
case_sensitive: false,
extentions: ["png", "ico", "svg", "jpeg", "jpg", "ott", "txt", "js", "css", "map", "woff", "ttf", "json"]
},
userDefined: config
}) || this;
if (!_this.pluginConfig.case_sensitive)
_this.pluginConfig.extentions.map(function (x) { return typeof x === "string" ? x.toLowerCase() : x; });
return _this;
}
RessourceRenderer.prototype.Start = function (app) {
_super.prototype.Start.call(this, app);
this.DefaultFile = this.Config.GetFolder(this.pluginConfig.folder, this.pluginConfig.default_file);
};
RessourceRenderer.prototype.Condition = function (req, res) {
var extension = path.extname(url.parse(req.url).pathname).replace(".", "");
if (this.pluginConfig.case_sensitive)
extension = extension.toLowerCase();
return this.pluginConfig.extentions.indexOf(extension) > -1;
};
RessourceRenderer.prototype.Handle = function (req, res, next) {
var file = this.Config.GetFolder(this.pluginConfig.folder, req.originalUrl);
file = url.parse(file).pathname;
if (fs.existsSync(file))
res.sendFile(file);
else {
file = this.DefaultFile;
if (fs.existsSync(file))
res.status(404).sendFile(file);
else
throw new Error("Default file not found in directory");
}
};
return RessourceRenderer;
}(utils_1.Renderer));
exports.RessourceRenderer = RessourceRenderer;