Add some helpers for generating HTML pages
This commit is contained in:
parent
05e8cffee7
commit
aca63ea606
|
@ -1,8 +1,7 @@
|
||||||
const React = require("react");
|
|
||||||
const formatBytes = require("pretty-bytes");
|
const formatBytes = require("pretty-bytes");
|
||||||
const getFileContentType = require("../utils/getFileContentType");
|
|
||||||
|
|
||||||
const e = React.createElement;
|
const getFileContentType = require("../utils/getFileContentType");
|
||||||
|
const e = require("./utils/createElement");
|
||||||
|
|
||||||
function formatTime(time) {
|
function formatTime(time) {
|
||||||
return new Date(time).toISOString();
|
return new Date(time).toISOString();
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
const React = require("react");
|
|
||||||
const semver = require("semver");
|
const semver = require("semver");
|
||||||
|
|
||||||
const readCSS = require("../utils/readCSS");
|
|
||||||
|
|
||||||
const DirectoryListing = require("./DirectoryListing");
|
const DirectoryListing = require("./DirectoryListing");
|
||||||
|
const readCSS = require("./utils/readCSS");
|
||||||
const e = React.createElement;
|
const e = require("./utils/createElement");
|
||||||
|
const s = require("./utils/createStyle");
|
||||||
|
const x = require("./utils/createScript");
|
||||||
|
|
||||||
const IndexPageStyle = readCSS(__dirname, "IndexPage.css");
|
const IndexPageStyle = readCSS(__dirname, "IndexPage.css");
|
||||||
const IndexPageScript = `
|
const IndexPageScript = `
|
||||||
|
@ -33,7 +32,7 @@ function IndexPage({ packageInfo, version, dir, entries }) {
|
||||||
null,
|
null,
|
||||||
e("meta", { charSet: "utf-8" }),
|
e("meta", { charSet: "utf-8" }),
|
||||||
e("title", null, `Index of ${dir}`),
|
e("title", null, `Index of ${dir}`),
|
||||||
e("style", { dangerouslySetInnerHTML: { __html: IndexPageStyle } })
|
s(IndexPageStyle)
|
||||||
),
|
),
|
||||||
e(
|
e(
|
||||||
"body",
|
"body",
|
||||||
|
@ -47,7 +46,7 @@ function IndexPage({ packageInfo, version, dir, entries }) {
|
||||||
e("select", { id: "version", defaultValue: version }, options)
|
e("select", { id: "version", defaultValue: version }, options)
|
||||||
),
|
),
|
||||||
e("h1", null, `Index of ${dir}`),
|
e("h1", null, `Index of ${dir}`),
|
||||||
e("script", { dangerouslySetInnerHTML: { __html: IndexPageScript } }),
|
x(IndexPageScript),
|
||||||
e("hr"),
|
e("hr"),
|
||||||
e(DirectoryListing, { dir, entries }),
|
e(DirectoryListing, { dir, entries }),
|
||||||
e("hr"),
|
e("hr"),
|
||||||
|
|
|
@ -1,16 +1,10 @@
|
||||||
const React = require("react");
|
const React = require("react");
|
||||||
const PropTypes = require("prop-types");
|
const PropTypes = require("prop-types");
|
||||||
|
|
||||||
const e = React.createElement;
|
const e = require("./utils/createElement");
|
||||||
|
const x = require("./utils/createScript");
|
||||||
|
|
||||||
function MainPage({
|
function MainPage({ title, description, scripts, styles, content }) {
|
||||||
title,
|
|
||||||
description,
|
|
||||||
scripts,
|
|
||||||
styles,
|
|
||||||
webpackManifest,
|
|
||||||
content
|
|
||||||
}) {
|
|
||||||
return e(
|
return e(
|
||||||
"html",
|
"html",
|
||||||
{ lang: "en" },
|
{ lang: "en" },
|
||||||
|
@ -27,23 +21,12 @@ function MainPage({
|
||||||
}),
|
}),
|
||||||
e("meta", { name: "timestamp", content: new Date().toISOString() }),
|
e("meta", { name: "timestamp", content: new Date().toISOString() }),
|
||||||
e("link", { rel: "shortcut icon", href: "/favicon.ico" }),
|
e("link", { rel: "shortcut icon", href: "/favicon.ico" }),
|
||||||
e("script", {
|
x(
|
||||||
dangerouslySetInnerHTML: {
|
"window.Promise || document.write('\\x3Cscript src=\"/_polyfills/es6-promise.min.js\">\\x3C/script>\\x3Cscript>ES6Promise.polyfill()\\x3C/script>')"
|
||||||
__html:
|
),
|
||||||
"window.Promise || document.write('\\x3Cscript src=\"/_polyfills/es6-promise.min.js\">\\x3C/script>\\x3Cscript>ES6Promise.polyfill()\\x3C/script>')"
|
x(
|
||||||
}
|
"window.fetch || document.write('\\x3Cscript src=\"/_polyfills/fetch.min.js\">\\x3C/script>')"
|
||||||
}),
|
),
|
||||||
e("script", {
|
|
||||||
dangerouslySetInnerHTML: {
|
|
||||||
__html:
|
|
||||||
"window.fetch || document.write('\\x3Cscript src=\"/_polyfills/fetch.min.js\">\\x3C/script>')"
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
e("script", {
|
|
||||||
dangerouslySetInnerHTML: {
|
|
||||||
__html: "window.webpackManifest = " + JSON.stringify(webpackManifest)
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
styles.map(s => e("link", { key: s, rel: "stylesheet", href: s }))
|
styles.map(s => e("link", { key: s, rel: "stylesheet", href: s }))
|
||||||
),
|
),
|
||||||
e(
|
e(
|
||||||
|
@ -60,7 +43,6 @@ MainPage.propTypes = {
|
||||||
description: PropTypes.string,
|
description: PropTypes.string,
|
||||||
scripts: PropTypes.arrayOf(PropTypes.string),
|
scripts: PropTypes.arrayOf(PropTypes.string),
|
||||||
styles: PropTypes.arrayOf(PropTypes.string),
|
styles: PropTypes.arrayOf(PropTypes.string),
|
||||||
webpackManifest: PropTypes.object,
|
|
||||||
content: PropTypes.string
|
content: PropTypes.string
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -69,7 +51,6 @@ MainPage.defaultProps = {
|
||||||
description: "The CDN for everything on npm",
|
description: "The CDN for everything on npm",
|
||||||
scripts: [],
|
scripts: [],
|
||||||
styles: [],
|
styles: [],
|
||||||
webpackManifest: {},
|
|
||||||
content: ""
|
content: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
const React = require("react");
|
||||||
|
module.exports = React.createElement;
|
|
@ -0,0 +1,7 @@
|
||||||
|
const createElement = require("./createElement");
|
||||||
|
|
||||||
|
function createScript(code) {
|
||||||
|
return createElement("script", { dangerouslySetInnerHTML: { __html: code } });
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = createScript;
|
|
@ -0,0 +1,7 @@
|
||||||
|
const createElement = require("./createElement");
|
||||||
|
|
||||||
|
function createStyle(code) {
|
||||||
|
return createElement("style", { dangerouslySetInnerHTML: { __html: code } });
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = createStyle;
|
Loading…
Reference in New Issue