From fc618a1d51cfa6d38ad31662d4ad90ba0c65cfcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20M=C3=BCller?= Date: Wed, 10 Jun 2020 21:03:39 +0200 Subject: [PATCH] Switch opencollective images to self-hosted spritesheet (#4318) * Generate sprite sheets from opencollective avatars to serve them quicker * Update assetgraph-builder to 8.0.1 * Filter out anonymous donors * Remove sprite padding * Move all supporter names to a title attribute that always exists * Root relative CSS hrefs * Update package-lock.json * Get rid of avatars.js since the sprites don't work that way * Always https protocol on opencollective badges * Add local netlify folder to gitignore * Avoid supporter spritesheet ending up as external stylesheet in body. Caused render flush that resulted in confusing layout shift on reload * Add missing newline in .gitignore --- .gitignore | 4 + docs/_data/supporters.js | 36 +++- docs/_includes/default.liquid | 7 +- docs/_includes/supporters.md | 10 +- docs/css/supporters.css | 13 ++ docs/index.md | 4 +- docs/js/avatars.js | 30 ---- package-lock.json | 326 ++++++++++++++++++++++------------ package.json | 2 +- 9 files changed, 273 insertions(+), 159 deletions(-) create mode 100644 docs/css/supporters.css delete mode 100644 docs/js/avatars.js diff --git a/.gitignore b/.gitignore index 02634697bf..41f8d36d3c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Mocha-specific docs/_site docs/_dist +docs/images/supporters mocha.js .karma/ !lib/mocha.js @@ -141,3 +142,6 @@ Temporary Items # SauceConnect *.sock + +# Local Netlify folder +.netlify diff --git a/docs/_data/supporters.js b/docs/_data/supporters.js index 6ae78a33d7..15ff9c0a36 100644 --- a/docs/_data/supporters.js +++ b/docs/_data/supporters.js @@ -1,6 +1,9 @@ #!/usr/bin/env node 'use strict'; +const {mkdirSync} = require('fs'); +const {writeFile} = require('fs').promises; +const {resolve} = require('path'); const debug = require('debug')('mocha:docs:data:supporters'); const needle = require('needle'); const imageSize = require('image-size'); @@ -16,6 +19,7 @@ const query = `query account($limit: Int, $offset: Int, $slug: String) { totalCount nodes { fromAccount { + id name slug website @@ -35,6 +39,7 @@ const query = `query account($limit: Int, $offset: Int, $slug: String) { const graphqlPageSize = 1000; const nodeToSupporter = node => ({ + id: node.fromAccount.id, name: node.fromAccount.name, slug: node.fromAccount.slug, website: node.fromAccount.website, @@ -101,10 +106,12 @@ module.exports = async () => { .reduce( (supporters, supporter) => { if (supporter.type === 'INDIVIDUAL') { - supporters.backers.push({ - ...supporter, - avatar: supporter.imgUrlSmall - }); + if (supporter.name !== 'anonymous') { + supporters.backers.push({ + ...supporter, + avatar: supporter.imgUrlSmall + }); + } } else { supporters.sponsors.push({...supporter, avatar: supporter.imgUrlMed}); } @@ -113,13 +120,26 @@ module.exports = async () => { {sponsors: [], backers: []} ); + const supporterImagePath = resolve(__dirname, '../images/supporters'); + + mkdirSync(supporterImagePath, {recursive: true}); + // Fetch images for sponsors and save their image dimensions await Promise.all( supporters.sponsors.map(async sponsor => { - for await (const chunk of needle.get(sponsor.avatar)) { - sponsor.dimensions = imageSize(chunk); - break; - } + const filePath = resolve(supporterImagePath, sponsor.id + '.png'); + const {body} = await needle('get', sponsor.avatar); + sponsor.dimensions = imageSize(body); + await writeFile(filePath, body); + }) + ); + + // Fetch images for backers and save their image dimensions + await Promise.all( + supporters.backers.map(async backer => { + const filePath = resolve(supporterImagePath, backer.id + '.png'); + const {body} = await needle('get', backer.avatar); + await writeFile(filePath, body); }) ); diff --git a/docs/_includes/default.liquid b/docs/_includes/default.liquid index 4d79612774..1b146cd001 100644 --- a/docs/_includes/default.liquid +++ b/docs/_includes/default.liquid @@ -4,9 +4,10 @@ {{ title }} - - - + + + + diff --git a/docs/_includes/supporters.md b/docs/_includes/supporters.md index 061cff0a5d..9ee2b520fe 100644 --- a/docs/_includes/supporters.md +++ b/docs/_includes/supporters.md @@ -6,9 +6,9 @@ Use Mocha at Work? Ask your manager or marketing team if they'd help [support](h {%- for supporter in supporters.sponsors -%}
  • {%- if supporter.website -%} - + {%- endif -%} - {{ supporter.name }} + {%- if supporter.website -%} {%- endif -%} @@ -24,14 +24,12 @@ Find Mocha helpful? Become a [backer](https://opencollective.com/mochajs#support {%- for supporter in supporters.backers -%}
  • {%- if supporter.website -%} - + {%- endif -%} - {{ supporter.name }} +
    {%- if supporter.website -%}
    {%- endif -%}
  • {%- endfor -%} - - diff --git a/docs/css/supporters.css b/docs/css/supporters.css new file mode 100644 index 0000000000..2d69cbcc6d --- /dev/null +++ b/docs/css/supporters.css @@ -0,0 +1,13 @@ +.sponsor { + -sprite-selector-for-group: sponsors; + -sprite-location: url(/images/sprite-sponsors.png?pngquant); + -sprite-image-format: png; + height: 64px; +} +.backer { + -sprite-selector-for-group: backers; + -sprite-location: url(/images/sprite-backers.png?pngquant); + -sprite-image-format: png; + width: 32px; + height: 32px; +} diff --git a/docs/index.md b/docs/index.md index 5d4cbdc87d..9ae1048b9d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,8 +8,8 @@ Mocha is a feature-rich JavaScript test framework running on [Node.js][] and in {% include supporters.md %} diff --git a/docs/js/avatars.js b/docs/js/avatars.js deleted file mode 100644 index a03b2858a7..0000000000 --- a/docs/js/avatars.js +++ /dev/null @@ -1,30 +0,0 @@ -(function() { - 'use strict'; - - var imageLists = document.querySelectorAll('.image-list'); - - function getListItem(img) { - var parent = img.parentNode; - while (parent && parent.nodeName !== 'LI') { - parent = parent.parentNode; - } - - return parent; - } - - function onloadHandler() { - getListItem(this).classList.add('is-loaded'); - } - - Array.prototype.forEach.call(imageLists, function(imageList) { - var images = imageList.querySelectorAll('img'); - - for (var i = 0; i < images.length; i += 1) { - if (!images[i].complete) { - getListItem(images[i]).classList.add('faded-image'); - images[i].onload = onloadHandler; - images[i].onerror = onloadHandler; - } - } - }); -})(); diff --git a/package-lock.json b/package-lock.json index 09721ddbbc..294b7aaa7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -975,15 +975,6 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, - "animated-gif-detector": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/animated-gif-detector/-/animated-gif-detector-1.2.0.tgz", - "integrity": "sha1-yy+ZEcqAJPKzTGk7f9ZFQu5BYYk=", - "dev": true, - "requires": { - "inherits": "^2.0.1" - } - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -1074,9 +1065,9 @@ "dev": true }, "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz", + "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==", "dev": true }, "archive-type": { @@ -1446,51 +1437,139 @@ } }, "assetgraph-builder": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/assetgraph-builder/-/assetgraph-builder-8.0.0.tgz", - "integrity": "sha512-hOSgIhWtWLOVeKTWkvjpF1IUBKBnAz6bECX/8K1yEA+NvTkZFdlgf07z5SHpdCzCy4f7U7coDJiXu8TrFBdevA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/assetgraph-builder/-/assetgraph-builder-8.0.1.tgz", + "integrity": "sha512-4ssOaw3brKEBVsA3ORoRT4rwGYxGxwPkhUW7j6Gst6EgdS6QnRNtW9tIq5CSjdyJCxfkrwloRJXd2scA5yq5Wg==", "dev": true, "requires": { - "assetgraph": "6.0.5", - "assetgraph-sprite": "^3.0.1", + "assetgraph": "6.0.7", + "assetgraph-sprite": "^3.2.0", "browserslist": "^4.4.2", - "chalk": "^3.0.0", + "chalk": "^4.0.0", "esanimate": "^1.1.0", - "estraverse": "^4.2.0", - "express-processimage": "^9.0.2", + "estraverse": "^5.0.0", "extend": "^3.0.0", - "histogram": "^3.0.1", - "impro": "~0.6.1", + "gm-papandreou": "^1.23.0-patch1", + "impro": "~0.7.0", + "inkscape": "^2.0.0", "jpegtran": "^1.0.6", "lodash": "^4.14.1", "memoizesync": "^1.1.1", "optimist": "^0.6.1", "optipng": "^2.0.0", - "p-map": "^3.0.0", + "p-map": "^4.0.0", "passerror": "^1.1.1", "pngcrush": "^2.0.1", "pngquant": "^3.0.0", + "sharp": "^0.23.4", "urltools": "^0.4.1" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "dev": true + }, + "assetgraph": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/assetgraph/-/assetgraph-6.0.7.tgz", + "integrity": "sha512-6e8xWY0LuTt128CBo9G7H8l/XUJ0cBMldIdqj9zGTDfg9pkw2bP4aBElss8W0Ftn8jwJ3atb0Mbe9WJsD7ypYA==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-jsx": "^5.0.1", + "bluebird": "^3.5.1", + "chalk": "^2.0.1", + "common-path-prefix": "^1.0.0", + "createerror": "^1.3.0", + "cssnano": "^4.1.10", + "data-urls": "^1.0.0", + "domspace": "^1.2.1", + "esanimate": "^1.1.0", + "escodegen": "^1.12.0", + "espurify": "^2.0.1", + "estraverse": "^4.3.0", + "estraverse-fb": "^1.3.2", + "gettemporaryfilepath": "^1.0.0", + "glob": "^7.0.5", + "html-minifier": "^4.0.0", + "imageinfo": "^1.0.4", + "jsdom": "^15.0.0", + "lines-and-columns": "^1.1.6", + "lodash": "4.17.15", + "memoizesync": "1.1.1", + "mkdirp": "^0.5.1", + "normalizeurl": "^1.0.0", + "perfectionist": "^2.4.0", + "postcss": "^7.0.14", + "read-pkg-up": "^6.0.0", + "repeat-string": "^1.5.4", + "schemes": "^1.0.1", + "semver": "^6.0.0", + "sift": "^7.0.1", + "source-map": "~0.6.1", + "specificity": "^0.4.0", + "sw-precache": "^5.2.0", + "teepee": "^2.31.1", + "terser": "^4.0.0", + "urltools": "^0.4.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "color-convert": { @@ -1507,13 +1586,92 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-6.0.0.tgz", + "integrity": "sha512-odtTvLl+EXo1eTsMnoUHRmg/XmXdTkwXVxy4VFE9Kp6cCq7b3l7QMdBndND3eAFzrbSAXC/WCUOQQ9rLjifKZw==", + "dev": true, + "requires": { + "find-up": "^4.0.0", + "read-pkg": "^5.1.1", + "type-fest": "^0.5.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "assetgraph-sprite": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/assetgraph-sprite/-/assetgraph-sprite-3.1.0.tgz", - "integrity": "sha512-heagKqj1ii247Wpg86U2+2rohzzq5lmqDSHCSVkCDvs2qyB51Grzd7A3owlVaeHcuNNM5BG5OJdAMLcq9gVSMQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/assetgraph-sprite/-/assetgraph-sprite-3.2.0.tgz", + "integrity": "sha512-qp2DBV+Tn27jU6AtPx3zUZGheRbT9Jv6L0FFB6n7EB8mwgxTGul10HacyyzMJ3c7imOAPINgsPHSMJp/zBxw5A==", "dev": true, "requires": { "canvas": "^2.3.1" @@ -3443,9 +3601,9 @@ "dev": true }, "buffer": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", - "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -6653,41 +6811,6 @@ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true }, - "express-processimage": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/express-processimage/-/express-processimage-9.0.2.tgz", - "integrity": "sha512-PODsr6rL5JCB5uppytmwHDerK3QW41qMPk1DmlZOkKRYB7wgrXX3FwA2UqG13ENzGHGY1fApXtw5VZA7HA2Few==", - "dev": true, - "requires": { - "accepts": "^1.3.3", - "animated-gif-detector": "^1.2.0", - "bluebird": "^3.3.4", - "createerror": "^1.1.0", - "exif-reader": "^1.0.2", - "gm-papandreou": "^1.23.0-patch1", - "hijackresponse": "^4.0.0", - "httperrors": "^2.0.1", - "icc": "^1.0.0", - "impro": "~0.6.0", - "inkscape": "^2.0.0", - "jpegtran": "^1.0.6", - "mime": "^2.3.1", - "optimist": "^0.6.1", - "optipng": "^2.0.0", - "passerror": "^1.1.1", - "pngcrush": "^2.0.1", - "pngquant": "^3.0.0", - "sharp": "^0.23.0" - }, - "dependencies": { - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - } - } - }, "ext-list": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", @@ -8019,21 +8142,6 @@ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", "dev": true }, - "hijackresponse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hijackresponse/-/hijackresponse-4.0.0.tgz", - "integrity": "sha512-ilL2k2/k9NXk4QCx7dz7pV+ZRL8aOX9ZiaVD+5nql1fF5WdKNhXbPh4shyfICpgHoHiD4FKZ1jLgNKYDYhy0Yw==", - "dev": true - }, - "histogram": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/histogram/-/histogram-3.0.3.tgz", - "integrity": "sha512-KXpWZm99kwSoY5ocS4tx5FVLsbOJFZIiyr1rXruNERxeznCwZY1JC7fPRKEyZ+HSwMaqwThMWYp2iM2WoEfsDw==", - "dev": true, - "requires": { - "canvas": "^2.3.1" - } - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -8426,9 +8534,9 @@ "dev": true }, "impro": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/impro/-/impro-0.6.1.tgz", - "integrity": "sha512-465dG4MvakvKzPoGyPZvThTOXsHZwETURJM4RrZu4p/trcKETFn+7Smna8MoJ6E1eRdBjmmIFVcJXs0maC+d8A==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/impro/-/impro-0.7.1.tgz", + "integrity": "sha512-1I6XpbGpp48KALFONBsIBrBcP/Oh4uHnyXlacm3otVEvR/ZRnRVyK/GKkniicQI8WAAabO/3MCglwIcoURkEVg==", "dev": true, "requires": { "combine-stream": "0.0.4", @@ -11647,9 +11755,9 @@ } }, "node-abi": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.15.0.tgz", - "integrity": "sha512-FeLpTS0F39U7hHZU1srAK4Vx+5AHNVOTP+hxBNQknR/54laTHSFIJkDWDqiquY1LeLUgTfPN7sLPhMubx0PLAg==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.18.0.tgz", + "integrity": "sha512-yi05ZoiuNNEbyT/xXfSySZE+yVnQW6fxPZuFbLyS1s6b5Kw3HzV2PHOM4XR+nsjzkHxByK+2Wg+yCQbe35l8dw==", "dev": true, "requires": { "semver": "^5.4.1" @@ -14005,15 +14113,15 @@ "dev": true }, "prebuild-install": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz", - "integrity": "sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.4.tgz", + "integrity": "sha512-AkKN+pf4fSEihjapLEEj8n85YIw/tN6BQqkhzbDc0RvEZGdkpJBGMUYx66AAMcPG2KzmPQS7Cm16an4HVBRRMA==", "dev": true, "requires": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", "github-from-package": "0.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.3", "mkdirp": "^0.5.1", "napi-build-utils": "^1.0.1", "node-abi": "^2.7.0", @@ -15592,9 +15700,9 @@ } }, "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -16897,9 +17005,9 @@ } }, "tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz", + "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==", "dev": true, "requires": { "chownr": "^1.1.1", @@ -17488,9 +17596,9 @@ "dev": true }, "unbzip2-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.0.tgz", - "integrity": "sha512-kVx7CDAsdBSWVf404Mw7oI9i09w5/mTT/Ruk+RWa64PLYKvsAucLLFHvQtnvjeADM4ZizxrvG5SHnF4Te4T2Cg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "requires": { "buffer": "^5.2.1", diff --git a/package.json b/package.json index bfd0cfd392..d7cc304033 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "@11ty/eleventy": "^0.10.0", "@11ty/eleventy-plugin-inclusive-language": "^1.0.0", "@mocha/docdash": "^2.1.3", - "assetgraph-builder": "^8.0.0", + "assetgraph-builder": "^8.0.1", "autoprefixer": "^9.7.4", "babel-eslint": "^10.1.0", "browserify": "^16.5.0",