Experimental port to Firebase hosting

This commit is contained in:
Michael Jackson
2019-01-05 16:50:05 -08:00
parent e4d6df255e
commit 31e7d3865a
300 changed files with 129300 additions and 5817 deletions

View File

@ -1,8 +1,8 @@
const validateNpmPackageName = require('validate-npm-package-name');
import validateNpmPackageName from 'validate-npm-package-name';
const BlacklistAPI = require('../BlacklistAPI');
import { addPackage } from '../utils/blacklist';
function addToBlacklist(req, res) {
export default function addToBlacklist(req, res) {
const packageName = req.body.packageName;
if (!packageName) {
@ -21,7 +21,7 @@ function addToBlacklist(req, res) {
});
}
BlacklistAPI.addPackage(packageName).then(
addPackage(packageName).then(
added => {
if (added) {
const userId = req.user.jti;
@ -45,5 +45,3 @@ function addToBlacklist(req, res) {
}
);
}
module.exports = addToBlacklist;

View File

@ -1,4 +1,4 @@
const AuthAPI = require('../AuthAPI');
import { createToken } from '../utils/auth';
const defaultScopes = {
blacklist: {
@ -6,8 +6,8 @@ const defaultScopes = {
}
};
function createAuth(req, res) {
AuthAPI.createToken(defaultScopes).then(
export default function createAuth(req, res) {
createToken(defaultScopes).then(
token => {
res.send({ token });
},
@ -20,5 +20,3 @@ function createAuth(req, res) {
}
);
}
module.exports = createAuth;

View File

@ -1,8 +1,8 @@
const validateNpmPackageName = require('validate-npm-package-name');
import validateNpmPackageName from 'validate-npm-package-name';
const BlacklistAPI = require('../BlacklistAPI');
import { removePackage } from '../utils/blacklist';
function removeFromBlacklist(req, res) {
export default function removeFromBlacklist(req, res) {
// TODO: Remove req.packageName when DELETE
// /_blacklist/:packageName API is removed
const packageName = req.body.packageName || req.packageName;
@ -23,7 +23,7 @@ function removeFromBlacklist(req, res) {
});
}
BlacklistAPI.removePackage(packageName).then(
removePackage(packageName).then(
removed => {
if (removed) {
const userId = req.user.jti;
@ -48,5 +48,3 @@ function removeFromBlacklist(req, res) {
}
);
}
module.exports = removeFromBlacklist;

View File

@ -1,30 +1,30 @@
const React = require('react');
const ReactDOMServer = require('react-dom/server');
const semver = require('semver');
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import semver from 'semver';
const MainPage = require('../client/MainPage');
const AutoIndexApp = require('../client/autoIndex/App');
const createHTML = require('../client/utils/createHTML');
const renderPage = require('../utils/renderPage');
import MainPage from '../client/MainPage';
import AutoIndexApp from '../client/autoIndex/App';
import createHTML from '../client/utils/createHTML';
import renderPage from '../utils/renderPage';
const globalScripts =
process.env.NODE_ENV === 'production'
? [
'/react@16.4.1/umd/react.production.min.js',
'/react-dom@16.4.1/umd/react-dom.production.min.js'
'/react@16.7.0/umd/react.production.min.js',
'/react-dom@16.7.0/umd/react-dom.production.min.js'
]
: [
'/react@16.4.1/umd/react.development.js',
'/react-dom@16.4.1/umd/react-dom.development.js'
'/react@16.7.0/umd/react.development.js',
'/react-dom@16.7.0/umd/react-dom.development.js'
];
function byVersion(a, b) {
return semver.lt(a, b) ? -1 : semver.gt(a, b) ? 1 : 0;
}
function serveAutoIndexPage(req, res) {
const scripts = globalScripts.concat(req.assets.getScripts('autoIndex'));
const styles = req.assets.getStyles('autoIndex');
export default function serveAutoIndexPage(req, res) {
const scripts = globalScripts.concat('/_assets/autoIndex.js');
const styles = ['/autoIndex.css'];
const props = {
packageName: req.packageName,
@ -54,5 +54,3 @@ function serveAutoIndexPage(req, res) {
})
.send(html);
}
module.exports = serveAutoIndexPage;

View File

@ -1,13 +1,13 @@
const serveAutoIndexPage = require('./serveAutoIndexPage');
const serveHTMLModule = require('./serveHTMLModule');
const serveJavaScriptModule = require('./serveJavaScriptModule');
const serveStaticFile = require('./serveStaticFile');
const serveMetadata = require('./serveMetadata');
import serveAutoIndexPage from './serveAutoIndexPage';
import serveHTMLModule from './serveHTMLModule';
import serveJavaScriptModule from './serveJavaScriptModule';
import serveStaticFile from './serveStaticFile';
import serveMetadata from './serveMetadata';
/**
* Send the file, JSON metadata, or HTML directory listing.
*/
function serveFile(req, res) {
export default function serveFile(req, res) {
if (req.query.meta != null) {
return serveMetadata(req, res);
}
@ -33,5 +33,3 @@ function serveFile(req, res) {
serveStaticFile(req, res);
}
module.exports = serveFile;

View File

@ -1,10 +1,10 @@
const etag = require('etag');
const cheerio = require('cheerio');
import etag from 'etag';
import cheerio from 'cheerio';
const getContentTypeHeader = require('../utils/getContentTypeHeader');
const rewriteBareModuleIdentifiers = require('../utils/rewriteBareModuleIdentifiers');
import getContentTypeHeader from '../utils/getContentTypeHeader';
import rewriteBareModuleIdentifiers from '../utils/rewriteBareModuleIdentifiers';
function serveHTMLModule(req, res) {
export default function serveHTMLModule(req, res) {
try {
const $ = cheerio.load(req.entry.content.toString('utf8'));
@ -46,5 +46,3 @@ function serveHTMLModule(req, res) {
);
}
}
module.exports = serveHTMLModule;

View File

@ -1,9 +1,9 @@
const etag = require('etag');
import etag from 'etag';
const getContentTypeHeader = require('../utils/getContentTypeHeader');
const rewriteBareModuleIdentifiers = require('../utils/rewriteBareModuleIdentifiers');
import getContentTypeHeader from '../utils/getContentTypeHeader';
import rewriteBareModuleIdentifiers from '../utils/rewriteBareModuleIdentifiers';
function serveJavaScriptModule(req, res) {
export default function serveJavaScriptModule(req, res) {
try {
const code = rewriteBareModuleIdentifiers(
req.entry.content.toString('utf8'),
@ -40,5 +40,3 @@ function serveJavaScriptModule(req, res) {
);
}
}
module.exports = serveJavaScriptModule;

View File

@ -1,6 +1,6 @@
const path = require('path');
import path from 'path';
const addLeadingSlash = require('../utils/addLeadingSlash');
import addLeadingSlash from '../utils/addLeadingSlash';
function getMatchingEntries(entry, entries) {
const dirname = entry.name || '.';
@ -30,7 +30,7 @@ function getMetadata(entry, entries) {
return metadata;
}
function serveMetadata(req, res) {
export default function serveMetadata(req, res) {
const metadata = getMetadata(req.entry, req.entries);
res
@ -40,5 +40,3 @@ function serveMetadata(req, res) {
})
.send(metadata);
}
module.exports = serveMetadata;

View File

@ -1,29 +0,0 @@
const MainPage = require('../client/MainPage');
const renderPage = require('../utils/renderPage');
const globalScripts =
process.env.NODE_ENV === 'production'
? [
'/react@16.4.1/umd/react.production.min.js',
'/react-dom@16.4.1/umd/react-dom.production.min.js',
'/react-router-dom@4.3.1/umd/react-router-dom.min.js'
]
: [
'/react@16.4.1/umd/react.development.js',
'/react-dom@16.4.1/umd/react-dom.development.js',
'/react-router-dom@4.3.1/umd/react-router-dom.js'
];
function serveRootPage(req, res) {
const scripts = globalScripts.concat(req.assets.getScripts('main'));
const styles = req.assets.getStyles('main');
const html = renderPage(MainPage, {
scripts: scripts,
styles: styles
});
res.send(html);
}
module.exports = serveRootPage;

View File

@ -1,9 +1,9 @@
const path = require('path');
const etag = require('etag');
import path from 'path';
import etag from 'etag';
const getContentTypeHeader = require('../utils/getContentTypeHeader');
import getContentTypeHeader from '../utils/getContentTypeHeader';
function serveStaticFile(req, res) {
export default function serveStaticFile(req, res) {
const tags = ['file'];
const ext = path.extname(req.entry.name).substr(1);
@ -22,5 +22,3 @@ function serveStaticFile(req, res) {
})
.send(req.entry.content);
}
module.exports = serveStaticFile;

View File

@ -1,5 +1,3 @@
function showAuth(req, res) {
export default function showAuth(req, res) {
res.send({ auth: req.user });
}
module.exports = showAuth;

View File

@ -1,7 +1,7 @@
const BlacklistAPI = require('../BlacklistAPI');
import { getPackages } from '../utils/blacklist';
function showBlacklist(req, res) {
BlacklistAPI.getPackages().then(
export default function showBlacklist(req, res) {
getPackages().then(
blacklist => {
res.send({ blacklist });
},
@ -13,5 +13,3 @@ function showBlacklist(req, res) {
}
);
}
module.exports = showBlacklist;

View File

@ -1,7 +1,5 @@
const secretKey = require('../secretKey');
import secretKey from '../secretKey';
function showPublicKey(req, res) {
export default function showPublicKey(req, res) {
res.send({ publicKey: secretKey.public });
}
module.exports = showPublicKey;

View File

@ -1,29 +1,37 @@
const subDays = require('date-fns/sub_days');
const startOfDay = require('date-fns/start_of_day');
const startOfSecond = require('date-fns/start_of_second');
import { subDays, startOfDay, startOfSecond } from 'date-fns';
const StatsAPI = require('../StatsAPI');
import { getStats } from '../utils/stats';
function showStats(req, res) {
export default function showStats(req, res) {
let since, until;
switch (req.query.period) {
case 'last-day':
until = startOfDay(new Date());
since = subDays(until, 1);
break;
case 'last-week':
until = startOfDay(new Date());
since = subDays(until, 7);
break;
case 'last-month':
until = startOfDay(new Date());
since = subDays(until, 30);
break;
default:
until = req.query.until
? new Date(req.query.until)
: startOfSecond(new Date());
since = new Date(req.query.since);
if (req.query.period) {
switch (req.query.period) {
case 'last-day':
until = startOfDay(new Date());
since = subDays(until, 1);
break;
case 'last-week':
until = startOfDay(new Date());
since = subDays(until, 7);
break;
case 'last-month':
default:
until = startOfDay(new Date());
since = subDays(until, 30);
}
} else {
if (!req.query.since) {
return res.status(403).send({ error: 'Missing ?since query parameter' });
}
if (!req.query.until) {
return res.status(403).send({ error: 'Missing ?until query parameter' });
}
since = new Date(req.query.since);
until = req.query.until
? new Date(req.query.until)
: startOfSecond(new Date());
}
if (isNaN(since.getTime())) {
@ -44,7 +52,7 @@ function showStats(req, res) {
return res.status(403).send({ error: '?until must be a date in the past' });
}
StatsAPI.getStats(since, until).then(
getStats(since, until).then(
stats => {
res
.set({
@ -59,5 +67,3 @@ function showStats(req, res) {
}
);
}
module.exports = showStats;