UNPKG

@node-server/renderer

Version:

NodeServerJs is a library with standard feature implemented for web and api

63 lines (62 loc) 2.72 kB
"use strict"; 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;