From c60b94b3ebe732d390c15368079dbecd134d7887 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 21 Mar 2020 11:01:18 -0400 Subject: [PATCH 1/8] Start trying to support debian --- .gitignore | 2 ++ lib/platform.js | 2 +- lib/routes.js | 22 ++++++++++++++++------ package.json | 7 ++++--- yarn.lock | 10 +++++----- 5 files changed, 28 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index be815786..cb48bf7c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ coverage # dependencies node_modules + +.now \ No newline at end of file diff --git a/lib/platform.js b/lib/platform.js index 764d38f3..0fad651c 100644 --- a/lib/platform.js +++ b/lib/platform.js @@ -11,6 +11,6 @@ module.exports = fileName => { return 'darwin' } - const directCache = ['exe', 'dmg', 'rpm', 'deb', 'AppImage'] + const directCache = ['exe', 'dmg', 'rpm', 'deb', 'AppImage', 'flatpak'] return directCache.find(ext => ext === extension) || false } diff --git a/lib/routes.js b/lib/routes.js index 73344626..a765fb67 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -1,10 +1,10 @@ // Native -const urlHelpers = require('url'); +const urlHelpers = require('url') // Packages const { send } = require('micro') const { valid, compare } = require('semver') -const { parse } = require('express-useragent') +const parser = require('ua-parser-js') const fetch = require('node-fetch') const distanceInWordsToNow = require('date-fns/distance_in_words_to_now') @@ -37,18 +37,28 @@ module.exports = ({ cache, config }) => { } exports.download = async (req, res) => { - const userAgent = parse(req.headers['user-agent']) + const userAgent = parser(req.headers['user-agent']) + const os = userAgent.getOS() const params = urlHelpers.parse(req.url, true).query const isUpdate = params && params.update let platform - if (userAgent.isMac && isUpdate) { + const isMac = os && os.name && os.name.includes('Mac') + const isWindows = os && os.name && os.name.includes('Windows') + const isDebian = + os && + os.name && + (os.name.includes('Debian') || os.name.includes('Ubuntu')) + + if (isMac && isUpdate) { platform = 'darwin' - } else if (userAgent.isMac && !isUpdate) { + } else if (isMac && !isUpdate) { platform = 'dmg' - } else if (userAgent.isWindows) { + } else if (isWindows) { platform = 'exe' + } else if (isDebian) { + platform = 'deb' } // Get the latest version from the cache diff --git a/package.json b/package.json index cb03f66c..8e18ae15 100644 --- a/package.json +++ b/package.json @@ -17,13 +17,14 @@ "rules": { "camelcase": 0, "new-cap": 0, + "unicorn/import-index": 0, "unicorn/no-process-exit": 0, "no-await-in-loop": 0 } }, "lint-staged": { "*.js": [ - "yarn test && :", + "yarn test --passWithNoTests && :", "prettier --single-quote --no-semi --write --no-editorconfig", "git add" ] @@ -31,7 +32,6 @@ "dependencies": { "async-retry": "1.2.3", "date-fns": "1.29.0", - "express-useragent": "1.0.12", "fetch": "1.1.0", "finalhandler": "1.1.0", "handlebars": "4.0.11", @@ -42,7 +42,8 @@ "router": "1.3.2", "semver": "5.5.0", "stream-to-string": "1.1.0", - "test-listen": "1.1.0" + "test-listen": "1.1.0", + "ua-parser-js": "0.7.21" }, "devDependencies": { "eslint-config-prettier": "2.9.0", diff --git a/yarn.lock b/yarn.lock index 6f05c091..739304c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1831,11 +1831,6 @@ expect@^24.0.0: jest-message-util "^24.0.0" jest-regex-util "^24.0.0" -express-useragent@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/express-useragent/-/express-useragent-1.0.12.tgz#5bae0109a925ec9b35417f31a4e8ad13f191253a" - integrity sha1-W64BCakl7Js1QX8xpOitE/GRJTo= - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -5977,6 +5972,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +ua-parser-js@0.7.21: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" From 75c2a6647b6641403cb9f2e549a1158b79657d84 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 21 Mar 2020 11:09:40 -0400 Subject: [PATCH 2/8] Remove flatpak --- lib/platform.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/platform.js b/lib/platform.js index 0fad651c..764d38f3 100644 --- a/lib/platform.js +++ b/lib/platform.js @@ -11,6 +11,6 @@ module.exports = fileName => { return 'darwin' } - const directCache = ['exe', 'dmg', 'rpm', 'deb', 'AppImage', 'flatpak'] + const directCache = ['exe', 'dmg', 'rpm', 'deb', 'AppImage'] return directCache.find(ext => ext === extension) || false } From 65b973bd72dbe31bbfb067eb51be0d69005aab44 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 21 Mar 2020 11:25:57 -0400 Subject: [PATCH 3/8] Debug parser --- lib/routes.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/routes.js b/lib/routes.js index a765fb67..1beb3d5e 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -4,7 +4,7 @@ const urlHelpers = require('url') // Packages const { send } = require('micro') const { valid, compare } = require('semver') -const parser = require('ua-parser-js') +const UAParser = require('ua-parser-js') const fetch = require('node-fetch') const distanceInWordsToNow = require('date-fns/distance_in_words_to_now') @@ -37,8 +37,10 @@ module.exports = ({ cache, config }) => { } exports.download = async (req, res) => { - const userAgent = parser(req.headers['user-agent']) - const os = userAgent.getOS() + const parser = new UAParser(req.headers['user-agent']) + console.log('parser:', parser) + const os = parser.getOS() + console.log('os:', os) const params = urlHelpers.parse(req.url, true).query const isUpdate = params && params.update From e659d5a938fd699f7fce5b32e0d4b295cb7d2efc Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 21 Mar 2020 11:30:39 -0400 Subject: [PATCH 4/8] Remove console logs --- lib/routes.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/routes.js b/lib/routes.js index 1beb3d5e..988bc152 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -38,9 +38,7 @@ module.exports = ({ cache, config }) => { exports.download = async (req, res) => { const parser = new UAParser(req.headers['user-agent']) - console.log('parser:', parser) const os = parser.getOS() - console.log('os:', os) const params = urlHelpers.parse(req.url, true).query const isUpdate = params && params.update From 70735cf6451108506d2cb5015f59fa94633393b7 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 21 Mar 2020 11:32:39 -0400 Subject: [PATCH 5/8] Log os --- lib/routes.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/routes.js b/lib/routes.js index 988bc152..9a4fc228 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -51,6 +51,8 @@ module.exports = ({ cache, config }) => { os.name && (os.name.includes('Debian') || os.name.includes('Ubuntu')) + console.log(os) + if (isMac && isUpdate) { platform = 'darwin' } else if (isMac && !isUpdate) { From fa720cfaa7e0e26346591344bb7d3e587037e4a6 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 21 Mar 2020 11:47:56 -0400 Subject: [PATCH 6/8] Log result --- lib/routes.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/routes.js b/lib/routes.js index 9a4fc228..2361ece5 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -39,6 +39,7 @@ module.exports = ({ cache, config }) => { exports.download = async (req, res) => { const parser = new UAParser(req.headers['user-agent']) const os = parser.getOS() + const result = parser.getResult() const params = urlHelpers.parse(req.url, true).query const isUpdate = params && params.update @@ -52,6 +53,7 @@ module.exports = ({ cache, config }) => { (os.name.includes('Debian') || os.name.includes('Ubuntu')) console.log(os) + console.log(result) if (isMac && isUpdate) { platform = 'darwin' From f03a6f1de99ac974be912cc34366026589828ed4 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 21 Mar 2020 11:52:58 -0400 Subject: [PATCH 7/8] Remove logs --- lib/routes.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/routes.js b/lib/routes.js index 2361ece5..988bc152 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -39,7 +39,6 @@ module.exports = ({ cache, config }) => { exports.download = async (req, res) => { const parser = new UAParser(req.headers['user-agent']) const os = parser.getOS() - const result = parser.getResult() const params = urlHelpers.parse(req.url, true).query const isUpdate = params && params.update @@ -52,9 +51,6 @@ module.exports = ({ cache, config }) => { os.name && (os.name.includes('Debian') || os.name.includes('Ubuntu')) - console.log(os) - console.log(result) - if (isMac && isUpdate) { platform = 'darwin' } else if (isMac && !isUpdate) { From 9716c79bb44b89319dab963440249f31e32e1cd0 Mon Sep 17 00:00:00 2001 From: Robert Wagner Date: Sat, 21 Mar 2020 11:54:23 -0400 Subject: [PATCH 8/8] Update .gitignore --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index cb48bf7c..be815786 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,3 @@ coverage # dependencies node_modules - -.now \ No newline at end of file