Better code clarity
This commit is contained in:
@ -8,35 +8,29 @@ const unpkgRewrite = require("../plugins/unpkgRewrite");
|
|||||||
const addLeadingSlash = require("../utils/addLeadingSlash");
|
const addLeadingSlash = require("../utils/addLeadingSlash");
|
||||||
const renderPage = require("../utils/renderPage");
|
const renderPage = require("../utils/renderPage");
|
||||||
|
|
||||||
function getContentTypeHeader(type) {
|
function getMatchingEntries(entry, entries) {
|
||||||
return type === "application/javascript" ? type + "; charset=utf-8" : type;
|
const dirname = entry.name || ".";
|
||||||
|
|
||||||
|
return Object.keys(entries)
|
||||||
|
.filter(name => entry.name !== name && path.dirname(name) === dirname)
|
||||||
|
.map(name => entries[name]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMetadata(entry, entries) {
|
function getMetadata(entry, entries) {
|
||||||
const metadata = Object.assign(
|
const metadata = {
|
||||||
{
|
path: addLeadingSlash(entry.name),
|
||||||
path: addLeadingSlash(entry.name)
|
type: entry.type
|
||||||
},
|
};
|
||||||
entry.type === "file"
|
|
||||||
? {
|
|
||||||
type: entry.type,
|
|
||||||
contentType: entry.contentType,
|
|
||||||
integrity: entry.integrity,
|
|
||||||
lastModified: entry.lastModified,
|
|
||||||
size: entry.size
|
|
||||||
}
|
|
||||||
: {
|
|
||||||
type: entry.type
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if (entry.type === "directory") {
|
if (entry.type === "file") {
|
||||||
metadata.files = Object.keys(entries)
|
metadata.contentType = entry.contentType;
|
||||||
.filter(
|
metadata.integrity = entry.integrity;
|
||||||
name =>
|
metadata.lastModified = entry.lastModified;
|
||||||
name !== entry.name && path.dirname(name) === (entry.name || ".")
|
metadata.size = entry.size;
|
||||||
)
|
} else if (entry.type === "directory") {
|
||||||
.map(name => getMetadata(entries[name], entries));
|
metadata.files = getMatchingEntries(entry, entries).map(e =>
|
||||||
|
getMetadata(e, entries)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return metadata;
|
return metadata;
|
||||||
@ -71,6 +65,10 @@ function rewriteBareModuleIdentifiers(code, packageConfig) {
|
|||||||
return babel.transform(code, options).code;
|
return babel.transform(code, options).code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getContentTypeHeader(type) {
|
||||||
|
return type === "application/javascript" ? type + "; charset=utf-8" : type;
|
||||||
|
}
|
||||||
|
|
||||||
function serveJavaScriptModule(req, res) {
|
function serveJavaScriptModule(req, res) {
|
||||||
if (req.entry.contentType !== "application/javascript") {
|
if (req.entry.contentType !== "application/javascript") {
|
||||||
return res
|
return res
|
||||||
|
@ -5,8 +5,16 @@ const sortBy = require("sort-by");
|
|||||||
const cloneElement = require("./utils/cloneElement");
|
const cloneElement = require("./utils/cloneElement");
|
||||||
const e = require("./utils/createElement");
|
const e = require("./utils/createElement");
|
||||||
|
|
||||||
function getValues(object) {
|
function getMatchingEntries(entry, entries) {
|
||||||
return Object.keys(object).map(key => object[key]);
|
const dirname = entry.name || ".";
|
||||||
|
|
||||||
|
return Object.keys(entries)
|
||||||
|
.filter(name => entry.name !== name && path.dirname(name) === dirname)
|
||||||
|
.map(name => entries[name]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRelativeName(base, name) {
|
||||||
|
return base.length ? name.substr(base.length + 1) : name;
|
||||||
}
|
}
|
||||||
|
|
||||||
function DirectoryListing({ filename, entry, entries }) {
|
function DirectoryListing({ filename, entry, entries }) {
|
||||||
@ -25,18 +33,13 @@ function DirectoryListing({ filename, entry, entries }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const matchingEntries = getValues(entries).filter(
|
const matchingEntries = getMatchingEntries(entry, entries);
|
||||||
({ name }) =>
|
|
||||||
entry.name !== name && path.dirname(name) === (entry.name || ".")
|
|
||||||
);
|
|
||||||
|
|
||||||
matchingEntries
|
matchingEntries
|
||||||
.filter(({ type }) => type === "directory")
|
.filter(({ type }) => type === "directory")
|
||||||
.sort(sortBy("name"))
|
.sort(sortBy("name"))
|
||||||
.forEach(({ name }) => {
|
.forEach(({ name }) => {
|
||||||
const relName = name.substr(
|
const relName = getRelativeName(entry.name, name);
|
||||||
entry.name.length ? entry.name.length + 1 : 0
|
|
||||||
);
|
|
||||||
const href = relName + "/";
|
const href = relName + "/";
|
||||||
|
|
||||||
rows.push(
|
rows.push(
|
||||||
@ -55,9 +58,7 @@ function DirectoryListing({ filename, entry, entries }) {
|
|||||||
.filter(({ type }) => type === "file")
|
.filter(({ type }) => type === "file")
|
||||||
.sort(sortBy("name"))
|
.sort(sortBy("name"))
|
||||||
.forEach(({ name, size, contentType, lastModified }) => {
|
.forEach(({ name, size, contentType, lastModified }) => {
|
||||||
const relName = name.substr(
|
const relName = getRelativeName(entry.name, name);
|
||||||
entry.name.length ? entry.name.length + 1 : 0
|
|
||||||
);
|
|
||||||
|
|
||||||
rows.push(
|
rows.push(
|
||||||
e(
|
e(
|
||||||
|
Reference in New Issue
Block a user