Experimental port to Firebase hosting
This commit is contained in:
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
@ -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;
|
||||
|
@ -1,5 +1,3 @@
|
||||
function showAuth(req, res) {
|
||||
export default function showAuth(req, res) {
|
||||
res.send({ auth: req.user });
|
||||
}
|
||||
|
||||
module.exports = showAuth;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user