diff --git a/server/middleware/devAssets.js b/server/middleware/devAssets.js index 4e57add..fd281a7 100644 --- a/server/middleware/devAssets.js +++ b/server/middleware/devAssets.js @@ -1,5 +1,6 @@ const invariant = require("invariant"); -const createBundle = require("./utils/createBundle"); + +const createBundle = require("../utils/createBundle"); /** * An express middleware that sets req.bundle from the diff --git a/server/middleware/fetchPackage.js b/server/middleware/fetchPackage.js index 7a666a0..f7af9e3 100644 --- a/server/middleware/fetchPackage.js +++ b/server/middleware/fetchPackage.js @@ -1,8 +1,8 @@ const semver = require("semver"); const createPackageURL = require("../utils/createPackageURL"); -const getPackageInfo = require("./utils/getPackageInfo"); -const getPackage = require("./utils/getPackage"); +const getPackageInfo = require("../utils/getPackageInfo"); +const getPackage = require("../utils/getPackage"); function tagRedirect(req, res) { // Cache tag redirects for 1 minute. diff --git a/server/middleware/findFile.js b/server/middleware/findFile.js index 6fd0415..5f6154d 100644 --- a/server/middleware/findFile.js +++ b/server/middleware/findFile.js @@ -2,8 +2,8 @@ const fs = require("fs"); const path = require("path"); const createPackageURL = require("../utils/createPackageURL"); -const createSearch = require("./utils/createSearch"); -const incrementCounter = require("./utils/incrementCounter"); +const createSearch = require("../utils/createSearch"); +const incrementCounter = require("../utils/incrementCounter"); /** * File extensions to look for when automatically resolving. diff --git a/server/middleware/redirectLegacyURLs.js b/server/middleware/redirectLegacyURLs.js index b8d9d67..74e078d 100644 --- a/server/middleware/redirectLegacyURLs.js +++ b/server/middleware/redirectLegacyURLs.js @@ -1,4 +1,4 @@ -const createSearch = require("./utils/createSearch"); +const createSearch = require("../utils/createSearch"); /** * Redirect old URLs that we no longer support. diff --git a/server/middleware/staticAssets.js b/server/middleware/staticAssets.js index 62cd3ec..3158762 100644 --- a/server/middleware/staticAssets.js +++ b/server/middleware/staticAssets.js @@ -1,6 +1,7 @@ const fs = require("fs"); const invariant = require("invariant"); -const createBundle = require("./utils/createBundle"); + +const createBundle = require("../utils/createBundle"); /** * An express middleware that sets req.bundle from the build @@ -14,7 +15,7 @@ function staticAssets(webpackStatsFile) { invariant( false, "staticAssets middleware cannot read the build stats in %s; " + - "run `yarn build` before starting the server", + "run the `build` script before starting the server", webpackStatsFile ); } diff --git a/server/middleware/utils/createBundle.js b/server/middleware/utils/createBundle.js deleted file mode 100644 index e85e81e..0000000 --- a/server/middleware/utils/createBundle.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Creates a bundle object that is stored on req.bundle. - */ -function createBundle(webpackStats) { - const { publicPath, assetsByChunkName } = webpackStats; - - const createURL = asset => publicPath + asset; - - const getAssets = (chunks = ["main"]) => - (Array.isArray(chunks) ? chunks : [chunks]) - .reduce((memo, chunk) => memo.concat(assetsByChunkName[chunk] || []), []) - .map(createURL); - - const getScripts = (...args) => - getAssets(...args).filter(asset => /\.js$/.test(asset)); - - const getStyles = (...args) => - getAssets(...args).filter(asset => /\.css$/.test(asset)); - - return { - createURL, - getAssets, - getScripts, - getStyles - }; -} - -module.exports = createBundle; diff --git a/server/middleware/validateQuery.js b/server/middleware/validateQuery.js index 21e9ad2..f9b524e 100644 --- a/server/middleware/validateQuery.js +++ b/server/middleware/validateQuery.js @@ -1,4 +1,4 @@ -const createSearch = require("./utils/createSearch"); +const createSearch = require("../utils/createSearch"); const knownQueryParams = { main: true, // Deprecated, see #63 diff --git a/server/utils/createBundle.js b/server/utils/createBundle.js new file mode 100644 index 0000000..46fc7b8 --- /dev/null +++ b/server/utils/createBundle.js @@ -0,0 +1,45 @@ +/** + * Creates a bundle object that is stored on req.bundle. + */ +function createBundle(webpackStats) { + const { publicPath, assetsByChunkName } = webpackStats; + + /** + * Returns a public URL to the given asset. + */ + function createURL(asset) { + return publicPath + asset; + } + + /** + * Returns an array of URLs to all assets in the given chunks. + */ + function getAssets(chunks = ["main"]) { + return (Array.isArray(chunks) ? chunks : [chunks]) + .reduce((memo, chunk) => memo.concat(assetsByChunkName[chunk] || []), []) + .map(createURL); + } + + /** + * Returns an array of URLs to all JavaScript files in the given chunks. + */ + function getScripts(...chunks) { + return getAssets(...chunks).filter(asset => /\.js$/.test(asset)); + } + + /** + * Returns an array of URLs to all CSS files in the given chunks. + */ + function getStyles(...chunks) { + return getAssets(...chunks).filter(asset => /\.css$/.test(asset)); + } + + return { + createURL, + getAssets, + getScripts, + getStyles + }; +} + +module.exports = createBundle; diff --git a/server/middleware/utils/createCache.js b/server/utils/createCache.js similarity index 92% rename from server/middleware/utils/createCache.js rename to server/utils/createCache.js index f234b82..546c8b6 100644 --- a/server/middleware/utils/createCache.js +++ b/server/utils/createCache.js @@ -1,4 +1,4 @@ -const db = require("../../utils/redis"); +const db = require("./redis"); function createCache(keyPrefix) { function createKey(key) { diff --git a/server/middleware/utils/createMutex.js b/server/utils/createMutex.js similarity index 100% rename from server/middleware/utils/createMutex.js rename to server/utils/createMutex.js diff --git a/server/middleware/utils/createSearch.js b/server/utils/createSearch.js similarity index 100% rename from server/middleware/utils/createSearch.js rename to server/utils/createSearch.js diff --git a/server/middleware/utils/getPackage.js b/server/utils/getPackage.js similarity index 100% rename from server/middleware/utils/getPackage.js rename to server/utils/getPackage.js diff --git a/server/middleware/utils/getPackageInfo.js b/server/utils/getPackageInfo.js similarity index 98% rename from server/middleware/utils/getPackageInfo.js rename to server/utils/getPackageInfo.js index ed34847..52ebdc1 100644 --- a/server/middleware/utils/getPackageInfo.js +++ b/server/utils/getPackageInfo.js @@ -1,6 +1,6 @@ require("isomorphic-fetch"); -const config = require("../../config"); +const config = require("../config"); const createCache = require("./createCache"); const createMutex = require("./createMutex"); diff --git a/server/middleware/utils/incrementCounter.js b/server/utils/incrementCounter.js similarity index 87% rename from server/middleware/utils/incrementCounter.js rename to server/utils/incrementCounter.js index 90d2bd5..cec400c 100644 --- a/server/middleware/utils/incrementCounter.js +++ b/server/utils/incrementCounter.js @@ -1,4 +1,4 @@ -const db = require("../../utils/redis"); +const db = require("./redis"); function incrementCounter(counter, key, by) { return new Promise((resolve, reject) => {