webserv
Version:
a quick, flexible, fully typed development server
40 lines • 1.79 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "../util/request", "url", "path", "../util/htmlTemplate", "slash"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const request_1 = require("../util/request");
const url_1 = require("url");
const path_1 = require("path");
const htmlTemplate_1 = require("../util/htmlTemplate");
const slash_1 = __importDefault(require("slash"));
function isDirectoryResult(result) {
return result && typeof result === 'object' && result.directory && result.files;
}
exports.directoryTransform = (result, request, response) => {
if (!isDirectoryResult(result)) {
return;
}
const { originalUrl, url } = request_1.getParams(request, 'originalUrl', 'url');
const baseUrl = url_1.parse(originalUrl || url.pathname).pathname;
const fileLinks = result.files
.map((file) => {
const relative = slash_1.default(file);
const url = slash_1.default(path_1.join(baseUrl, file));
return `<a href="${url}">${relative}</a>`;
})
.join('<br>');
response.write(htmlTemplate_1.htmlTemplate('Directory listing', fileLinks));
response.end();
};
});
//# sourceMappingURL=directory.transform.js.map