Better code clarity

This commit is contained in:
Michael Jackson
2018-07-16 08:44:59 -07:00
parent 6c3c71755a
commit 7543295e4e
2 changed files with 36 additions and 37 deletions

View File

@ -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

View File

@ -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(