From a9497166fe3e896d9b0e7fa702f3b4303506bc45 Mon Sep 17 00:00:00 2001 From: MICHAEL JACKSON <mjijackson@gmail.com> Date: Wed, 15 Nov 2017 07:30:05 -0500 Subject: [PATCH] Add counter for "browser" fallback usage Helps with #63 --- server/middleware/fetchFile.js | 10 ++++++++++ server/middleware/utils/incrementCounter.js | 15 +++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 server/middleware/utils/incrementCounter.js diff --git a/server/middleware/fetchFile.js b/server/middleware/fetchFile.js index acd93ec..9c03289 100644 --- a/server/middleware/fetchFile.js +++ b/server/middleware/fetchFile.js @@ -5,6 +5,7 @@ const createPackageURL = require('../utils/createPackageURL') const createSearch = require('./utils/createSearch') const getPackageInfo = require('./utils/getPackageInfo') const getPackage = require('./utils/getPackage') +const incrementCounter = require('./utils/incrementCounter') function getBasename(file) { return path.basename(file, path.extname(file)) @@ -118,6 +119,15 @@ function fetchFile(req, res, next) { } else if (typeof req.packageConfig.browser === 'string') { // Fall back to the "browser" field if declared (only support strings). filename = req.packageConfig.browser + + // Count which packages + versions are actually using this fallback + // so we can warn them when we deprecate this functionality. + // See https://github.com/unpkg/unpkg/issues/63 + incrementCounter( + 'package-json-browser-fallback', + req.packageSpec, + 1 + ) } else { // Fall back to "main" or / (same as npm). filename = req.packageConfig.main || '/' diff --git a/server/middleware/utils/incrementCounter.js b/server/middleware/utils/incrementCounter.js new file mode 100644 index 0000000..fe00608 --- /dev/null +++ b/server/middleware/utils/incrementCounter.js @@ -0,0 +1,15 @@ +const db = require('../../RedisClient') + +function incrementCounter(counter, key, by) { + return new Promise((resolve, reject) => { + db.hincrby(counter, key, by, (error, value) => { + if (error) { + reject(error) + } else { + resolve(value) + } + }) + }) +} + +module.exports = incrementCounter