Use single quotes :P

This commit is contained in:
Michael Jackson
2018-12-17 09:38:05 -08:00
parent ada37035cd
commit 19b2e5574b
93 changed files with 792 additions and 791 deletions

View File

@ -1,4 +1,4 @@
const BlacklistAPI = require("../BlacklistAPI");
const BlacklistAPI = require('../BlacklistAPI');
function checkBlacklist(req, res, next) {
BlacklistAPI.includesPackage(req.packageName).then(
@ -7,14 +7,14 @@ function checkBlacklist(req, res, next) {
if (blacklisted) {
res
.status(403)
.type("text")
.type('text')
.send(`Package "${req.packageName}" is blacklisted`);
} else {
next();
}
},
error => {
console.error("Unable to fetch the blacklist: %s", error);
console.error('Unable to fetch the blacklist: %s', error);
// Continue anyway.
next();

View File

@ -1,6 +1,6 @@
const invariant = require("invariant");
const invariant = require('invariant');
const createAssets = require("./utils/createAssets");
const createAssets = require('./utils/createAssets');
/**
* An express middleware that sets req.assets from the
@ -9,15 +9,15 @@ const createAssets = require("./utils/createAssets");
*/
function devAssets(webpackCompiler) {
let assets;
webpackCompiler.plugin("done", stats => {
webpackCompiler.plugin('done', stats => {
assets = createAssets(stats.toJson());
});
return (req, res, next) => {
invariant(
assets != null,
"devAssets middleware needs a running compiler; " +
"use webpack-dev-middleware in front of devAssets"
'devAssets middleware needs a running compiler; ' +
'use webpack-dev-middleware in front of devAssets'
);
req.assets = assets;

View File

@ -1,19 +1,19 @@
const semver = require("semver");
const semver = require('semver');
const addLeadingSlash = require("../utils/addLeadingSlash");
const createPackageURL = require("../utils/createPackageURL");
const createSearch = require("../utils/createSearch");
const getNpmPackageInfo = require("../utils/getNpmPackageInfo");
const incrementCounter = require("../utils/incrementCounter");
const addLeadingSlash = require('../utils/addLeadingSlash');
const createPackageURL = require('../utils/createPackageURL');
const createSearch = require('../utils/createSearch');
const getNpmPackageInfo = require('../utils/getNpmPackageInfo');
const incrementCounter = require('../utils/incrementCounter');
function tagRedirect(req, res) {
const version = req.packageInfo["dist-tags"][req.packageVersion];
const version = req.packageInfo['dist-tags'][req.packageVersion];
// Cache tag redirects for 1 minute.
res
.set({
"Cache-Control": "public, max-age=60",
"Cache-Tag": "redirect,tag-redirect"
'Cache-Control': 'public, max-age=60',
'Cache-Tag': 'redirect,tag-redirect'
})
.redirect(
302,
@ -31,8 +31,8 @@ function semverRedirect(req, res) {
// Cache semver redirects for 1 minute.
res
.set({
"Cache-Control": "public, max-age=60",
"Cache-Tag": "redirect,semver-redirect"
'Cache-Control': 'public, max-age=60',
'Cache-Tag': 'redirect,semver-redirect'
})
.redirect(
302,
@ -41,7 +41,7 @@ function semverRedirect(req, res) {
} else {
res
.status(404)
.type("text")
.type('text')
.send(`Cannot find package ${req.packageSpec}`);
}
}
@ -52,12 +52,12 @@ function filenameRedirect(req, res) {
// See https://github.com/rollup/rollup/wiki/pkg.module
filename =
req.packageConfig.module ||
req.packageConfig["jsnext:main"] ||
"/index.js";
req.packageConfig['jsnext:main'] ||
'/index.js';
} else if (
req.query.main &&
req.packageConfig[req.query.main] &&
typeof req.packageConfig[req.query.main] === "string"
typeof req.packageConfig[req.query.main] === 'string'
) {
// Deprecated, see #63
filename = req.packageConfig[req.query.main];
@ -65,35 +65,35 @@ function filenameRedirect(req, res) {
// Count which packages are using this so we can warn them when we
// remove this functionality.
incrementCounter(
"package-json-custom-main",
req.packageSpec + "?main=" + req.query.main,
'package-json-custom-main',
req.packageSpec + '?main=' + req.query.main,
1
);
} else if (
req.packageConfig.unpkg &&
typeof req.packageConfig.unpkg === "string"
typeof req.packageConfig.unpkg === 'string'
) {
filename = req.packageConfig.unpkg;
} else if (
req.packageConfig.browser &&
typeof req.packageConfig.browser === "string"
typeof req.packageConfig.browser === 'string'
) {
// Deprecated, see #63
filename = req.packageConfig.browser;
// Count which packages are using this so we can warn them when we
// remove this functionality.
incrementCounter("package-json-browser-fallback", req.packageSpec, 1);
incrementCounter('package-json-browser-fallback', req.packageSpec, 1);
} else {
filename = req.packageConfig.main || "/index.js";
filename = req.packageConfig.main || '/index.js';
}
// Redirect to the exact filename so relative imports
// and URLs resolve correctly.
res
.set({
"Cache-Control": "public, max-age=31536000, immutable", // 1 year
"Cache-Tag": "redirect, filename-redirect"
'Cache-Control': 'public, max-age=31536000, immutable', // 1 year
'Cache-Tag': 'redirect, filename-redirect'
})
.redirect(
302,
@ -117,7 +117,7 @@ function fetchPackage(req, res, next) {
if (packageInfo == null || packageInfo.versions == null) {
return res
.status(404)
.type("text")
.type('text')
.send(`Cannot find package "${req.packageName}"`);
}
@ -126,7 +126,7 @@ function fetchPackage(req, res, next) {
if (!req.packageConfig) {
// Redirect to a fully-resolved version.
if (req.packageVersion in req.packageInfo["dist-tags"]) {
if (req.packageVersion in req.packageInfo['dist-tags']) {
return tagRedirect(req, res);
} else {
return semverRedirect(req, res);
@ -144,7 +144,7 @@ function fetchPackage(req, res, next) {
return res
.status(500)
.type("text")
.type('text')
.send(`Cannot get info for package "${req.packageName}"`);
}
);

View File

@ -1,19 +1,19 @@
const path = require("path");
const path = require('path');
const addLeadingSlash = require("../utils/addLeadingSlash");
const createPackageURL = require("../utils/createPackageURL");
const createSearch = require("../utils/createSearch");
const fetchNpmPackage = require("../utils/fetchNpmPackage");
const getIntegrity = require("../utils/getIntegrity");
const getContentType = require("../utils/getContentType");
const addLeadingSlash = require('../utils/addLeadingSlash');
const createPackageURL = require('../utils/createPackageURL');
const createSearch = require('../utils/createSearch');
const fetchNpmPackage = require('../utils/fetchNpmPackage');
const getIntegrity = require('../utils/getIntegrity');
const getContentType = require('../utils/getContentType');
function indexRedirect(req, res, entry) {
// Redirect to the index file so relative imports
// resolve correctly.
res
.set({
"Cache-Control": "public, max-age=31536000, immutable", // 1 year
"Cache-Tag": "redirect, index-redirect"
'Cache-Control': 'public, max-age=31536000, immutable', // 1 year
'Cache-Tag': 'redirect, index-redirect'
})
.redirect(
302,
@ -27,7 +27,7 @@ function indexRedirect(req, res, entry) {
}
function stripLeadingSegment(name) {
return name.replace(/^[^/]+\/?/, "");
return name.replace(/^[^/]+\/?/, '');
}
function searchEntries(tarballStream, entryName, wantsIndex) {
@ -35,14 +35,14 @@ function searchEntries(tarballStream, entryName, wantsIndex) {
const entries = {};
let foundEntry = null;
if (entryName === "") {
foundEntry = entries[""] = { name: "", type: "directory" };
if (entryName === '') {
foundEntry = entries[''] = { name: '', type: 'directory' };
}
tarballStream
.on("error", reject)
.on("finish", () => resolve({ entries, foundEntry }))
.on("entry", (header, stream, next) => {
.on('error', reject)
.on('finish', () => resolve({ entries, foundEntry }))
.on('entry', (header, stream, next) => {
const entry = {
// Most packages have header names that look like `package/index.js`
// so we shorten that to just `index.js` here. A few packages use a
@ -53,9 +53,9 @@ function searchEntries(tarballStream, entryName, wantsIndex) {
};
// We are only interested in files that match the entryName.
if (entry.type !== "file" || entry.name.indexOf(entryName) !== 0) {
if (entry.type !== 'file' || entry.name.indexOf(entryName) !== 0) {
stream.resume();
stream.on("end", next);
stream.on('end', next);
return;
}
@ -65,8 +65,8 @@ function searchEntries(tarballStream, entryName, wantsIndex) {
// that are in this file's path. Some tarballs omit these entries
// for some reason, so this is the brute force method.
let dirname = path.dirname(entry.name);
while (dirname !== ".") {
const directoryEntry = { name: dirname, type: "directory" };
while (dirname !== '.') {
const directoryEntry = { name: dirname, type: 'directory' };
if (!entries[dirname]) {
entries[dirname] = directoryEntry;
@ -94,7 +94,7 @@ function searchEntries(tarballStream, entryName, wantsIndex) {
const chunks = [];
stream.on("data", chunk => chunks.push(chunk)).on("end", () => {
stream.on('data', chunk => chunks.push(chunk)).on('end', () => {
const content = Buffer.concat(chunks);
// Set some extra properties for files that we will
@ -126,8 +126,8 @@ const trailingSlash = /\/$/;
function findFile(req, res, next) {
fetchNpmPackage(req.packageConfig).then(tarballStream => {
const entryName = req.filename
.replace(trailingSlash, "")
.replace(leadingSlash, "");
.replace(trailingSlash, '')
.replace(leadingSlash, '');
const wantsIndex = trailingSlash.test(req.filename);
searchEntries(tarballStream, entryName, wantsIndex).then(
@ -135,7 +135,7 @@ function findFile(req, res, next) {
if (!foundEntry) {
return res
.status(404)
.type("text")
.type('text')
.send(`Cannot find "${req.filename}" in ${req.packageSpec}`);
}
@ -144,17 +144,17 @@ function findFile(req, res, next) {
// inside that directory. This is so our URLs work in a similar way
// to require("lib") in node where it searches for `lib/index.js`
// and `lib/index.json` when `lib` is a directory.
if (foundEntry.type === "directory" && !wantsIndex) {
if (foundEntry.type === 'directory' && !wantsIndex) {
const indexEntry =
entries[path.join(entryName, "index.js")] ||
entries[path.join(entryName, "index.json")];
entries[path.join(entryName, 'index.js')] ||
entries[path.join(entryName, 'index.json')];
if (indexEntry && indexEntry.type === "file") {
if (indexEntry && indexEntry.type === 'file') {
return indexRedirect(req, res, indexEntry);
} else {
return res
.status(404)
.type("text")
.type('text')
.send(
`Cannot find an index in "${req.filename}" in ${
req.packageSpec

View File

@ -1,4 +1,4 @@
const createSearch = require("../utils/createSearch");
const createSearch = require('../utils/createSearch');
/**
* Redirect old URLs that we no longer support.
@ -6,14 +6,14 @@ const createSearch = require("../utils/createSearch");
function redirectLegacyURLs(req, res, next) {
// Permanently redirect /_meta/path to /path?meta.
if (req.path.match(/^\/_meta\//)) {
req.query.meta = "";
req.query.meta = '';
return res.redirect(301, req.path.substr(6) + createSearch(req.query));
}
// Permanently redirect /path?json => /path?meta
if (req.query.json != null) {
delete req.query.json;
req.query.meta = "";
req.query.meta = '';
return res.redirect(301, req.path + createSearch(req.query));
}

View File

@ -4,8 +4,8 @@
*/
function requireAuth(scope) {
let checkScopes;
if (scope.includes(".")) {
const parts = scope.split(".");
if (scope.includes('.')) {
const parts = scope.split('.');
checkScopes = scopes =>
parts.reduce((memo, part) => memo && memo[part], scopes) != null;
} else {
@ -20,11 +20,11 @@ function requireAuth(scope) {
const user = req.user;
if (!user) {
return res.status(403).send({ error: "Missing auth token" });
return res.status(403).send({ error: 'Missing auth token' });
}
if (!user.scopes || !checkScopes(user.scopes)) {
return res.status(403).send({ error: "Insufficient scopes" });
return res.status(403).send({ error: 'Insufficient scopes' });
}
if (req.auth) {

View File

@ -1,7 +1,7 @@
const fs = require("fs");
const invariant = require("invariant");
const fs = require('fs');
const invariant = require('invariant');
const createAssets = require("./utils/createAssets");
const createAssets = require('./utils/createAssets');
/**
* An express middleware that sets req.assets from the build
@ -10,12 +10,12 @@ const createAssets = require("./utils/createAssets");
function staticAssets(webpackStatsFile) {
let stats;
try {
stats = JSON.parse(fs.readFileSync(webpackStatsFile, "utf8"));
stats = JSON.parse(fs.readFileSync(webpackStatsFile, 'utf8'));
} catch (error) {
invariant(
false,
"staticAssets middleware cannot read the build stats in %s; " +
"run the `build` script before starting the server",
'staticAssets middleware cannot read the build stats in %s; ' +
'run the `build` script before starting the server',
webpackStatsFile
);
}

View File

@ -1,9 +1,9 @@
const AuthAPI = require("../AuthAPI");
const AuthAPI = require('../AuthAPI');
const ReadMethods = { GET: true, HEAD: true };
function decodeBase64(string) {
return Buffer.from(string, "base64").toString();
return Buffer.from(string, 'base64').toString();
}
/**
@ -14,7 +14,7 @@ function userToken(req, res, next) {
return next();
}
const auth = req.get("Authorization");
const auth = req.get('Authorization');
const token = auth
? decodeBase64(auth)
: (ReadMethods[req.method] ? req.query : req.body).token;
@ -30,7 +30,7 @@ function userToken(req, res, next) {
next();
},
error => {
if (error.name === "JsonWebTokenError") {
if (error.name === 'JsonWebTokenError') {
res.status(403).send({
error: `Bad auth token: ${error.message}`
});
@ -38,7 +38,7 @@ function userToken(req, res, next) {
console.error(error);
res.status(500).send({
error: "Unable to verify auth"
error: 'Unable to verify auth'
});
}
}

View File

@ -12,7 +12,7 @@ function createAssets(webpackStats) {
/**
* Returns an array of URLs to all assets in the given chunks.
*/
const getAll = (chunks = ["main"]) =>
const getAll = (chunks = ['main']) =>
(Array.isArray(chunks) ? chunks : [chunks])
.reduce((memo, chunk) => memo.concat(assetsByChunkName[chunk] || []), [])
.map(createURL);

View File

@ -1,4 +1,4 @@
const validateNpmPackageName = require("validate-npm-package-name");
const validateNpmPackageName = require('validate-npm-package-name');
const hexValue = /^[a-f0-9]+$/i;
@ -13,18 +13,18 @@ function validatePackageName(req, res, next) {
if (isHash(req.packageName)) {
return res
.status(403)
.type("text")
.type('text')
.send(`Invalid package name "${req.packageName}" (cannot be a hash)`);
}
const errors = validateNpmPackageName(req.packageName).errors;
if (errors) {
const reason = errors.join(", ");
const reason = errors.join(', ');
return res
.status(403)
.type("text")
.type('text')
.send(`Invalid package name "${req.packageName}" (${reason})`);
}

View File

@ -1,4 +1,4 @@
const parsePackageURL = require("../utils/parsePackageURL");
const parsePackageURL = require('../utils/parsePackageURL');
/**
* Parse the URL and add various properties to the request object to

View File

@ -1,4 +1,4 @@
const createSearch = require("../utils/createSearch");
const createSearch = require('../utils/createSearch');
const knownQueryParams = {
main: true, // Deprecated, see #63