From d31ac22c55ed4df579628c10f8453e05748e245b Mon Sep 17 00:00:00 2001 From: koehr Date: Sun, 22 Nov 2020 19:44:19 +0100 Subject: [PATCH] add logging --- compile-list.js | 41 ++++++++++++++++++++++++++++++++--------- package.json | 4 +++- yarn.lock | 29 ++++++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 11 deletions(-) diff --git a/compile-list.js b/compile-list.js index 965b498d..daa9144a 100644 --- a/compile-list.js +++ b/compile-list.js @@ -1,21 +1,43 @@ const fs = require('fs') +const chalk = require('chalk') const phantomas = require('phantomas') const pageData = require('./src/pages.json') const INPUT_FILE = './pages.txt' const OUTPUT_FILE = './src/pages.json' const RECHECK_THRESHOLD = 60*60*24*7*1000 // recheck pages older than 1 week +const REJECT_THRESHOLD = 256000 -function calcWeights (url, metrics) { - const m = metrics +const LOGGING_PREFIXES = { + info: `[${chalk.bold.white('II')}]`, + warn: `[${chalk.bold.yellow('WW')}]`, + error: `[${chalk.bold.red('EE')}]`, + debug: `[${chalk.bold.white('DD')}]`, +} + +function log (level='info') { + const args = [...arguments].slice(1) + let prefix = LOGGING_PREFIXES[level] + console.log(prefix, ...args) +} +function info () { log('info', ...arguments) } +function warn () { log('warn', ...arguments) } +function error () { log('error', ...arguments) } +function debug () { log('debug', ...arguments) } + +function calcWeights (url, m) { const extraWeight = m.cssSize + m.jsSize + m.webfontSize + m.otherSize const contentWeight = m.htmlSize + m.jsonSize + m.imageSize + m.base64Size + m.videoSize + if (m.contentSize > REJECT_THRESHOLD) { + warn(url, 'oversized by', m.contentSize - REJECT_THRESHOLD) + } + return { url, contentWeight, extraWeight, stamp: Date.now() } } async function generateMetrics (urls) { - console.debug('Checking', urls) + debug('Checking', urls) const metricsList = [] const keyedPageData = pageData.reduce((acc, page) => { // stores url/stamp pairs to decide for recheck @@ -28,24 +50,25 @@ async function generateMetrics (urls) { for (const url of urls) { if (knownURLs.indexOf(url) >= 0) { if (now - keyedPageData[url].stamp < RECHECK_THRESHOLD) { - console.debug('skipping known URL', url) + debug('skipping known URL', url) metricsList.push(keyedPageData[url]) // push old data to list continue } } try { - console.debug('fetching and analyzing', url) + debug('fetching and analyzing', url) const results = await phantomas(url) - metricsList.push(calcWeights(url, results.getMetrics())) + const weights = calcWeights(url, results.getMetrics()) + metricsList.push(weights) // TODO: what to do with oversized pages? } catch(error) { - console.error(`failed to analyze ${url}`, error) + error(`failed to analyze ${url}`, error) } } try { fs.writeFileSync(OUTPUT_FILE, JSON.stringify(metricsList)) } catch (err) { - console.error(`ERROR: failed to write results to ${OUTPUT_FILE}`, err) + error(`failed to write results to ${OUTPUT_FILE}`, err) } } @@ -54,5 +77,5 @@ try { const urls = rawString.split('\n').filter(line => line.startsWith('http')) generateMetrics(urls) } catch (err) { - console.error(`ERROR: failed to read page list from ${INPUT_FILE}`, err) + error(`failed to read page list from ${INPUT_FILE}`, err) } diff --git a/package.json b/package.json index 6e571824..f07b74c5 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,14 @@ "scripts": { "build": "rollup -c", "dev": "rollup -c -w", - "start": "sirv public" + "start": "sirv public", + "upload": "scp -r public/* 250kb.club:/srv/http/250kb.club/" }, "devDependencies": { "@rollup/plugin-commonjs": "^14.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^8.0.0", + "chalk": "^4.1.0", "phantomas": "^2.0.0", "rollup": "^2.3.4", "rollup-plugin-livereload": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index ddc02c2a..405779be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -141,6 +141,13 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" @@ -257,6 +264,14 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chokidar@^3.3.0: version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" @@ -292,11 +307,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -1003,7 +1030,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==