diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..4a76d03
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,6 @@
+{
+ "presets": [
+ "next/babel",
+ "@zeit/next-typescript/babel"
+ ]
+}
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..f20d573
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+open_collective: badgen
diff --git a/libs/live-handlers.js b/libs/live-handlers.js
index bd651d4..8d89d45 100644
--- a/libs/live-handlers.js
+++ b/libs/live-handlers.js
@@ -16,7 +16,7 @@ module.exports = Object.entries(liveFns).map(([name, fn]) => {
const style = req.headers.host === 'flat.badgen.net' ? 'flat' : undefined
req.params = { subject, status, color, style }
serveBadge(req, res, {
- code: 200, // always 200 for badges
+ code: failed ? 500 : 200,
sMaxAge: failed ? '0' : '360'
})
})
diff --git a/package-lock.json b/package-lock.json
index 52f909f..261ba11 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1944,9 +1944,9 @@
"dev": true
},
"@types/react": {
- "version": "16.8.17",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.17.tgz",
- "integrity": "sha512-pln3mgc6VfkNg92WXODul/ONo140huK9OMsx62GlBlZ2lvjNK86PQJhYMPLO1i66aF5O9OPyZefogvNltBIszA==",
+ "version": "16.8.18",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.18.tgz",
+ "integrity": "sha512-lUXdKzRqWR4FebR5tGHkLCqnvQJS4fdXKCBrNGGbglqZg2gpU+J82pMONevQODUotATs9fc9k66bx3/St8vReg==",
"dev": true,
"requires": {
"@types/prop-types": "*",
@@ -2994,9 +2994,9 @@
"integrity": "sha512-CLaw1TOll1T4H0GPq521IuK+mQ5QvdOAqQy6kwCFrs6raWZ375ceby8WO4xINZcFB9M7eR7EgVEHLZhbyKp3Ow=="
},
"badgen-icons": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/badgen-icons/-/badgen-icons-0.8.0.tgz",
- "integrity": "sha512-UhYIJt9Mh++9rj2Fk5V38WdqqKJ5gBPm7LpIy+df2F9T33YAAUSVVVNSGb/ZJfRv2MhV+DzgHoLCH0qV6oPdKg=="
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/badgen-icons/-/badgen-icons-0.9.0.tgz",
+ "integrity": "sha512-7ZdSaxnhe90vQYb25onBTt+t+wbhwXDr4wM3x78GGvNouK3CE6Q+rx+sIVGWj5OJOce76T0h2gWpZIjKzFl2ew=="
},
"bail": {
"version": "1.0.3",
@@ -5572,9 +5572,9 @@
"dev": true
},
"esm": {
- "version": "3.2.22",
- "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.22.tgz",
- "integrity": "sha512-z8YG7U44L82j1XrdEJcqZOLUnjxco8pO453gKOlaMD1/md1n/5QrscAmYG+oKUspsmDLuBFZrpbxI6aQ67yRxA==",
+ "version": "3.2.25",
+ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
+ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
"dev": true
},
"espree": {
@@ -7392,9 +7392,9 @@
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ink": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ink/-/ink-2.1.1.tgz",
- "integrity": "sha512-vP1yE/uJoiY6uB9yHalczUA02I9fg7xDUbTEZitPK5y6dvnPo9a/6UWqIB2uCYkHOhEZMN+D/TsVr4v2sz8qYA==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ink/-/ink-2.2.0.tgz",
+ "integrity": "sha512-BQl7jpmLxPqFGjdQdgXQS0+mAyn1BHkEW1YXur3dahNNwLB6MWsfAZ1GWVdj+Mbpmj+u33KaFOosw3067t3d9g==",
"dev": true,
"requires": {
"@types/react": "^16.8.6",
@@ -7909,9 +7909,9 @@
}
},
"@babel/parser": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz",
- "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==",
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz",
+ "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==",
"dev": true
},
"@babel/template": {
@@ -7926,16 +7926,16 @@
}
},
"@babel/traverse": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz",
- "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==",
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz",
+ "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"@babel/generator": "^7.4.4",
"@babel/helper-function-name": "^7.1.0",
"@babel/helper-split-export-declaration": "^7.4.4",
- "@babel/parser": "^7.4.4",
+ "@babel/parser": "^7.4.5",
"@babel/types": "^7.4.4",
"debug": "^4.1.0",
"globals": "^11.1.0",
@@ -8153,18 +8153,18 @@
}
},
"istanbul-reports": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.4.tgz",
- "integrity": "sha512-QCHGyZEK0bfi9GR215QSm+NJwFKEShbtc7tfbUdLAEzn3kKhLDDZqvljn8rPZM9v8CEOhzL1nlYoO4r1ryl67w==",
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz",
+ "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==",
"dev": true,
"requires": {
"handlebars": "^4.1.2"
}
},
"jackspeak": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.3.7.tgz",
- "integrity": "sha512-Z4iSFpaCV7Cocpcl5t9/UyPkisxenbmaqminyTgK6lDDMXcm9EvIZ9Bwr/uFbGOjfWlz1UZwKwFY5AvtgNlHuw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.0.tgz",
+ "integrity": "sha512-VDcSunT+wcccoG46FtzuBAyQKlzhHjli4q31e1fIHGOsRspqNUFjVzGb+7eIFDlTvqLygxapDHPHS0ouT2o/tw==",
"dev": true,
"requires": {
"cliui": "^4.1.0"
@@ -8792,9 +8792,9 @@
}
},
"millify": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/millify/-/millify-3.0.2.tgz",
- "integrity": "sha512-I9SQ+dE56pLSU61YLJMo860smpEnGyWx1afgA9EnpHZOMb7PnLoLASN9qQUZ+m4VVz4CvfHUxERq2H8atGQqow==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/millify/-/millify-3.1.0.tgz",
+ "integrity": "sha512-YoXiOn1AsbXNa2U9bDbLOx/1rgS3JOwJcKZGYhkXRgZv0q+gofLZYDcITUtp3DsA28IlAwR+5sjW0XGCF8l7ZQ==",
"requires": {
"yargs": "^13.2.2"
},
@@ -9685,16 +9685,6 @@
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
"dev": true
},
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
"lcid": {
"version": "2.0.0",
"resolved": false,
@@ -10332,9 +10322,9 @@
"dev": true
},
"picomatch": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.6.tgz",
- "integrity": "sha512-Btng9qVvFsW6FkXYQQK5nEI5i8xdXFDmlKxC7Q8S2Bu5HGWnbQf7ts2kOoxJIrZn5hmw61RZIayAg2zBuJDtyQ==",
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
+ "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==",
"dev": true
},
"pify": {
@@ -11474,9 +11464,9 @@
}
},
"semver": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz",
- "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ=="
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz",
+ "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ=="
},
"semver-store": {
"version": "0.3.0",
@@ -11538,9 +11528,9 @@
"dev": true
},
"serve-handler": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.0.0.tgz",
- "integrity": "sha512-2/e0+N1abV1HAN+YN8uCOPi1B0bIYaR6kRcSfzezRwszak5Yzr6QhT34XJk2Bw89rhXenqwLNJb4NnF2/krnGQ==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.0.1.tgz",
+ "integrity": "sha512-k/im4Fbx96d8VcrJDjrsagNd9Vq18tVYRDDe90rpNO8Mr76KJF/zES5tBZdlLEbhBXjOs36m9Wl+hRCiDnYfmA==",
"requires": {
"bytes": "3.0.0",
"content-disposition": "0.5.2",
@@ -11568,11 +11558,11 @@
}
},
"serve-marked": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/serve-marked/-/serve-marked-1.0.0.tgz",
- "integrity": "sha512-EEqjDS6/exogluWSrQdicDAXMLf+5t8nCVYw87UQW4zEUV3oOad9XmEX5IBF2jweWiTTcAj/VQ+iFfLSmsxXvQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/serve-marked/-/serve-marked-1.1.0.tgz",
+ "integrity": "sha512-37aaz3vr0GdcRMVIDO4V7VpLjpTpKKnZbIfT6SL3zRETx9pzJa+ER5l8lXagQ0MzPdmrLrxn3MX0m8YwXMQfug==",
"requires": {
- "marked": "^0.6.1"
+ "marked": "^0.6.2"
}
},
"set-blocking": {
@@ -12303,9 +12293,9 @@
}
},
"tap": {
- "version": "13.1.8",
- "resolved": "https://registry.npmjs.org/tap/-/tap-13.1.8.tgz",
- "integrity": "sha512-WimjKgEZPOxSufS6Vfo/ACQmfMdLGmrIi9ZL6Q1mZpHcbdnBP4DgdIJWM+PKrLS4sbrIN2trKKlNO0QkziE1EQ==",
+ "version": "13.1.11",
+ "resolved": "https://registry.npmjs.org/tap/-/tap-13.1.11.tgz",
+ "integrity": "sha512-SgI0T/Na31XswviNA8tw0d71qOAZ1qjVMxpPO3XSW6372bVbz8pOR8ll2S4EnA+3yRfDSKN/rtj7gD+QjHJ2ow==",
"dev": true,
"requires": {
"async-hook-domain": "^1.1.0",
@@ -12317,7 +12307,7 @@
"coveralls": "^3.0.3",
"diff": "^4.0.1",
"domain-browser": "^1.2.0",
- "esm": "^3.2.22",
+ "esm": "^3.2.25",
"findit": "^2.0.0",
"foreground-child": "^1.3.3",
"fs-exists-cached": "^1.0.0",
@@ -12409,9 +12399,9 @@
}
},
"fsevents": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.6.tgz",
- "integrity": "sha512-vfmKZp3XPM36DNF0qhW+Cdxk7xm7gTEHY1clv1Xq1arwRQuKZgAhw+NZNWbJBtuaNxzNXwhfdPYRrvIbjfS33A==",
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz",
+ "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==",
"dev": true,
"optional": true
},
@@ -13014,24 +13004,16 @@
"dev": true
},
"ts-node": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.0.tgz",
- "integrity": "sha512-34jpuOrxDuf+O6iW1JpgTRDFynUZ1iEqtYruBqh35gICNjN8x+LpVcPAcwzLPi9VU6mdA3ym+x233nZmZp445A==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.1.1.tgz",
+ "integrity": "sha512-nd+mdxDP2BjQlyumBCMSU3IQLEjSla1X3uSzDfQ4M5OEZ3iDC01gjhs0FX29jyolATwLKB7YoRJ1Asbxd9EEoA==",
"dev": true,
"requires": {
"arg": "^4.1.0",
- "diff": "^3.1.0",
+ "diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
- },
- "dependencies": {
- "diff": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
- "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
- "dev": true
- }
}
},
"tslib": {
@@ -13089,9 +13071,9 @@
"dev": true
},
"uglify-js": {
- "version": "3.5.12",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.12.tgz",
- "integrity": "sha512-KeQesOpPiZNgVwJj8Ge3P4JYbQHUdZzpx6Fahy6eKAYRSV4zhVmLXoC+JtOeYxcHCHTve8RG1ZGdTvpeOUM26Q==",
+ "version": "3.5.15",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.15.tgz",
+ "integrity": "sha512-fe7aYFotptIddkwcm6YuA0HmknBZ52ZzOsUxZEdhhkSsz7RfjHDX2QDxwKTiv4JQ5t5NhfmpgAK+J7LiDhKSqg==",
"dev": true,
"optional": true,
"requires": {
@@ -13976,9 +13958,9 @@
}
},
"write-file-atomic": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz",
- "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
@@ -14025,18 +14007,18 @@
"dev": true
},
"yaml": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.5.1.tgz",
- "integrity": "sha512-btfJvMOgVthGZSgHBMrDkLuQu4YxOycw6kwuC67cUEOKJmmNozjIa02eKvuSq7usqqqpwwCvflGTF6JcDvSudw==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.6.0.tgz",
+ "integrity": "sha512-iZfse3lwrJRoSlfs/9KQ9iIXxs9++RvBFVzAqbbBiFT+giYtyanevreF9r61ZTbGMgWQBxAua3FzJiniiJXWWw==",
"dev": true,
"requires": {
- "@babel/runtime": "^7.4.4"
+ "@babel/runtime": "^7.4.5"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz",
- "integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==",
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz",
+ "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==",
"dev": true,
"requires": {
"regenerator-runtime": "^0.13.2"
diff --git a/package.json b/package.json
index 67daeec..eded326 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,7 @@
},
"dependencies": {
"badgen": "^2.7.1",
- "badgen-icons": "^0.8.0",
+ "badgen-icons": "^0.9.0",
"byte-size": "^5.0.1",
"cheerio": "^1.0.0-rc.3",
"chrome-webstore": "^1.2.1",
@@ -32,12 +32,12 @@
"lodash.debounce": "^4.0.8",
"micro": "^9.3.4",
"micro-fork": "^2.0.0",
- "millify": "^3.0.2",
+ "millify": "^3.1.0",
"raven": "^2.6.4",
"react-debounce-render": "^5.0.0",
- "semver": "^6.0.0",
- "serve-handler": "^6.0.0",
- "serve-marked": "^1.0.0"
+ "semver": "^6.1.0",
+ "serve-handler": "^6.0.1",
+ "serve-marked": "^1.1.0"
},
"devDependencies": {
"@mdx-js/mdx": "^1.0.19",
@@ -50,7 +50,7 @@
"react-dom": "^16.8.6",
"standard": "^12.0.1",
"supertest": "^4.0.2",
- "tap": "^13.1.8",
+ "tap": "^13.1.11",
"ts-node": "^8.1.0",
"typescript": "^3.4.5"
}
diff --git a/pages/index.js b/pages/index.js
index 6411996..53934ff 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -1,28 +1,81 @@
+import path from 'path'
+import dynamic from 'next/dynamic'
+import { useState } from 'react'
import liveBadges from '../libs/examples-live.js'
+import staticBadges from '../libs/examples-static.js'
import BadgeExamples from '../components/badge-examples.js'
import Header from '../components/home-header.js'
import Intro from '../components/home-intro.js'
import Footer from '../components/footer.js'
-export default ({ children }) => <>
-