It's coming together, but we just have a whole bunch of errors to work through.
parent
d5160904ad
commit
8a863d7b0d
|
@ -0,0 +1,12 @@
|
|||
[
|
||||
{
|
||||
"author_name": "Starbeamrainbowlabs",
|
||||
"github_username": "sbrl",
|
||||
"feed_uri": "https://starbeamrainbowlabs.com/blog/feed.php"
|
||||
},
|
||||
{
|
||||
"author_name": "Edward Charles",
|
||||
"github_username": "closebracket",
|
||||
"feed_uri": "https://love.edwardcharl.es/rss/"
|
||||
}
|
||||
]
|
|
@ -9,7 +9,14 @@
|
|||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@11ty/eleventy": "^0.12.1",
|
||||
"feedme": "^2.0.2"
|
||||
"dateformat": "^4.5.1",
|
||||
"feedme": "^2.0.2",
|
||||
"file-type": "^16.5.3",
|
||||
"html-entities": "^2.3.2",
|
||||
"p-reflect": "^2.1.0",
|
||||
"phin": "^3.6.0",
|
||||
"sha3": "^2.1.4",
|
||||
"striptags": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@11ty/dependency-tree": {
|
||||
|
@ -129,6 +136,11 @@
|
|||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/@tokenizer/token": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
|
||||
"integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
|
||||
},
|
||||
"node_modules/@types/minimatch": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
|
||||
|
@ -311,6 +323,25 @@
|
|||
"node": ">= 0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/base64id": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
|
||||
|
@ -455,6 +486,29 @@
|
|||
"resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz",
|
||||
"integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU="
|
||||
},
|
||||
"node_modules/buffer": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
||||
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/bytes": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
|
||||
|
@ -483,6 +537,11 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/centra": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/centra/-/centra-2.5.0.tgz",
|
||||
"integrity": "sha512-CnSF1HD8vOOgNbE4P2fZEhdhfAohvpcF3DSdSvEcSHDAZvr+Xfw73isT8SXJJc3VMBqSwjXhr29/ikHUgFcypg=="
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
|
@ -683,6 +742,14 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/dateformat": {
|
||||
"version": "4.5.1",
|
||||
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz",
|
||||
"integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
|
||||
|
@ -1018,6 +1085,22 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/file-type": {
|
||||
"version": "16.5.3",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz",
|
||||
"integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==",
|
||||
"dependencies": {
|
||||
"readable-web-to-node-stream": "^3.0.0",
|
||||
"strtok3": "^6.2.4",
|
||||
"token-types": "^4.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sindresorhus/file-type?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
|
@ -1348,6 +1431,11 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/html-entities": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz",
|
||||
"integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ=="
|
||||
},
|
||||
"node_modules/http-errors": {
|
||||
"version": "1.7.3",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
|
||||
|
@ -1395,6 +1483,25 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ieee754": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
||||
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/immutable": {
|
||||
"version": "3.8.2",
|
||||
"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
|
||||
|
@ -2163,6 +2270,14 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/p-reflect": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-reflect/-/p-reflect-2.1.0.tgz",
|
||||
"integrity": "sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/p-try": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||
|
@ -2255,6 +2370,29 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/peek-readable": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz",
|
||||
"integrity": "sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/Borewit"
|
||||
}
|
||||
},
|
||||
"node_modules/phin": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/phin/-/phin-3.6.0.tgz",
|
||||
"integrity": "sha512-nYY4Qh/yGCoxcwOAS2UfCM8+nVJcbI4f9NC4M4zPAsuswnIIS2aB14uYAbvdxP/4DqzXfrpadT2WQOx9mLDyTA==",
|
||||
"dependencies": {
|
||||
"centra": "^2.4.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
||||
|
@ -2525,6 +2663,34 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/readable-web-to-node-stream": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
|
||||
"integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
|
||||
"dependencies": {
|
||||
"readable-stream": "^3.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/Borewit"
|
||||
}
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
|
@ -2665,6 +2831,25 @@
|
|||
"npm": ">=2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
|
@ -2881,6 +3066,14 @@
|
|||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
|
||||
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
|
||||
},
|
||||
"node_modules/sha3": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz",
|
||||
"integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==",
|
||||
"dependencies": {
|
||||
"buffer": "6.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/sigmund": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
|
||||
|
@ -3035,6 +3228,14 @@
|
|||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
|
||||
},
|
||||
"node_modules/string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||
"dependencies": {
|
||||
"safe-buffer": "~5.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/string-width": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
|
||||
|
@ -3067,6 +3268,27 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/striptags": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
|
||||
"integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
|
||||
},
|
||||
"node_modules/strtok3": {
|
||||
"version": "6.2.4",
|
||||
"resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz",
|
||||
"integrity": "sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==",
|
||||
"dependencies": {
|
||||
"@tokenizer/token": "^0.3.0",
|
||||
"peek-readable": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/Borewit"
|
||||
}
|
||||
},
|
||||
"node_modules/supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
|
@ -3233,6 +3455,22 @@
|
|||
"resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ="
|
||||
},
|
||||
"node_modules/token-types": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz",
|
||||
"integrity": "sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==",
|
||||
"dependencies": {
|
||||
"@tokenizer/token": "^0.3.0",
|
||||
"ieee754": "^1.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/Borewit"
|
||||
}
|
||||
},
|
||||
"node_modules/ua-parser-js": {
|
||||
"version": "0.7.28",
|
||||
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz",
|
||||
|
@ -3292,6 +3530,11 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"node_modules/utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
|
@ -3519,6 +3762,11 @@
|
|||
"fastq": "^1.6.0"
|
||||
}
|
||||
},
|
||||
"@tokenizer/token": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
|
||||
"integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
|
||||
},
|
||||
"@types/minimatch": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
|
||||
|
@ -3659,6 +3907,11 @@
|
|||
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
|
||||
"integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
|
||||
},
|
||||
"base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
||||
},
|
||||
"base64id": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
|
||||
|
@ -3787,6 +4040,15 @@
|
|||
"resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz",
|
||||
"integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU="
|
||||
},
|
||||
"buffer": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
||||
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
|
||||
"requires": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"bytes": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
|
||||
|
@ -3806,6 +4068,11 @@
|
|||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
|
||||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
|
||||
},
|
||||
"centra": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/centra/-/centra-2.5.0.tgz",
|
||||
"integrity": "sha512-CnSF1HD8vOOgNbE4P2fZEhdhfAohvpcF3DSdSvEcSHDAZvr+Xfw73isT8SXJJc3VMBqSwjXhr29/ikHUgFcypg=="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
|
@ -3970,6 +4237,11 @@
|
|||
"resolved": "https://registry.npmjs.org/date-time/-/date-time-0.1.1.tgz",
|
||||
"integrity": "sha1-7S9tk9l5DOL9ZtW1/z7dW7y/Owc="
|
||||
},
|
||||
"dateformat": {
|
||||
"version": "4.5.1",
|
||||
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz",
|
||||
"integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
|
||||
|
@ -4234,6 +4506,16 @@
|
|||
"sax": "^1.2.4"
|
||||
}
|
||||
},
|
||||
"file-type": {
|
||||
"version": "16.5.3",
|
||||
"resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz",
|
||||
"integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==",
|
||||
"requires": {
|
||||
"readable-web-to-node-stream": "^3.0.0",
|
||||
"strtok3": "^6.2.4",
|
||||
"token-types": "^4.1.1"
|
||||
}
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
|
@ -4472,6 +4754,11 @@
|
|||
"has-symbols": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"html-entities": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz",
|
||||
"integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ=="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.7.3",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
|
||||
|
@ -4509,6 +4796,11 @@
|
|||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
},
|
||||
"ieee754": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
||||
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
|
||||
},
|
||||
"immutable": {
|
||||
"version": "3.8.2",
|
||||
"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
|
||||
|
@ -5077,6 +5369,11 @@
|
|||
"p-limit": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"p-reflect": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-reflect/-/p-reflect-2.1.0.tgz",
|
||||
"integrity": "sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg=="
|
||||
},
|
||||
"p-try": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||
|
@ -5145,6 +5442,19 @@
|
|||
"resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
|
||||
"integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0="
|
||||
},
|
||||
"peek-readable": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz",
|
||||
"integrity": "sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ=="
|
||||
},
|
||||
"phin": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/phin/-/phin-3.6.0.tgz",
|
||||
"integrity": "sha512-nYY4Qh/yGCoxcwOAS2UfCM8+nVJcbI4f9NC4M4zPAsuswnIIS2aB14uYAbvdxP/4DqzXfrpadT2WQOx9mLDyTA==",
|
||||
"requires": {
|
||||
"centra": "^2.4.2"
|
||||
}
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
||||
|
@ -5364,6 +5674,24 @@
|
|||
"unpipe": "1.0.0"
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"readable-web-to-node-stream": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
|
||||
"integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
|
||||
"requires": {
|
||||
"readable-stream": "^3.6.0"
|
||||
}
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
|
@ -5470,6 +5798,11 @@
|
|||
"symbol-observable": "1.0.1"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
|
@ -5659,6 +5992,14 @@
|
|||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
|
||||
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
|
||||
},
|
||||
"sha3": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz",
|
||||
"integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==",
|
||||
"requires": {
|
||||
"buffer": "6.0.3"
|
||||
}
|
||||
},
|
||||
"sigmund": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
|
||||
|
@ -5801,6 +6142,14 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.2.0"
|
||||
}
|
||||
},
|
||||
"string-width": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
|
||||
|
@ -5824,6 +6173,20 @@
|
|||
"resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
|
||||
"integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI="
|
||||
},
|
||||
"striptags": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz",
|
||||
"integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw=="
|
||||
},
|
||||
"strtok3": {
|
||||
"version": "6.2.4",
|
||||
"resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz",
|
||||
"integrity": "sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==",
|
||||
"requires": {
|
||||
"@tokenizer/token": "^0.3.0",
|
||||
"peek-readable": "^4.0.1"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
|
@ -5949,6 +6312,15 @@
|
|||
"resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ="
|
||||
},
|
||||
"token-types": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz",
|
||||
"integrity": "sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==",
|
||||
"requires": {
|
||||
"@tokenizer/token": "^0.3.0",
|
||||
"ieee754": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"ua-parser-js": {
|
||||
"version": "0.7.28",
|
||||
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz",
|
||||
|
@ -5980,6 +6352,11 @@
|
|||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
|
|
|
@ -22,6 +22,13 @@
|
|||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@11ty/eleventy": "^0.12.1",
|
||||
"feedme": "^2.0.2"
|
||||
"dateformat": "^4.5.1",
|
||||
"feedme": "^2.0.2",
|
||||
"file-type": "^16.5.3",
|
||||
"html-entities": "^2.3.2",
|
||||
"p-reflect": "^2.1.0",
|
||||
"phin": "^3.6.0",
|
||||
"sha3": "^2.1.4",
|
||||
"striptags": "^3.2.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,53 @@ const os = require("os");
|
|||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const striptags = require("striptags");
|
||||
const htmlentities = require("html-entities");
|
||||
const { SHA3 } = require("sha3");
|
||||
const filetype = require("file-type");
|
||||
|
||||
const fetch = require("./lib/fetch.js");
|
||||
|
||||
function hash(str) {
|
||||
const hash = new SHA3(128);
|
||||
hash.update(str);
|
||||
return hash.digest("base64")
|
||||
.replaceAll("/", "-")
|
||||
.replaceAll("+", "_");
|
||||
}
|
||||
|
||||
async function filter_asset(src) {
|
||||
let target_dir = `./_site/img`;
|
||||
if(!fs.existsSync(target_dir))
|
||||
await fs.promises.mkdir(target_dir, { recursive: true });
|
||||
let filename = path.basename(src);
|
||||
|
||||
if(src.search(/https?/)) {
|
||||
let content = await fetch(src, "none");
|
||||
let type = await filetype.fromBuffer(content);
|
||||
// It's a URL - download it
|
||||
filename = `${hash(src)}.${type.ext}`;
|
||||
await fs.promises.writeFile(
|
||||
path.join(target_dir, filename),
|
||||
content
|
||||
);
|
||||
}
|
||||
else {
|
||||
// Generally speaking we optimise PNGs *very* well with oxipng/Zopfli,
|
||||
// and the Image plugin doesn't respect this
|
||||
await fs.promises.copyFile(src, path.join(target_dir, filename));
|
||||
}
|
||||
|
||||
return `/img/${filename}`;
|
||||
}
|
||||
|
||||
module.exports = function(eleventyConfig) {
|
||||
eleventyConfig.addFilter("striphtml", (value) => striptags(value));
|
||||
eleventyConfig.addFilter("htmlentities", (value) => htmlentities.encode(value));
|
||||
|
||||
eleventyConfig.addFilter("asset", filter_asset);
|
||||
eleventyConfig.addAsyncShortcode("asset", filter_asset);
|
||||
eleventyConfig.addNunjucksAsyncShortcode("asset", filter_asset);
|
||||
|
||||
// eleventyConfig.addAsyncShortcode("fetch", fetch);
|
||||
//
|
||||
|
@ -15,4 +61,8 @@ module.exports = function(eleventyConfig) {
|
|||
// eleventyConfig.addAsyncShortcode("image_urlpass", shortcode_image_urlpass);
|
||||
// eleventyConfig.addNunjucksAsyncShortcode("image_urlpass", shortcode_image_urlpass);
|
||||
// eleventyConfig.addPairedShortcode("gallerybox", shortcode_gallerybox);
|
||||
|
||||
return {
|
||||
htmlTemplateEngine: "njk"
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
css/
|
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
site_name: Hull Blogs
|
||||
root_url: https://hullblogs.com
|
||||
description: "Description of hullblogs.com website here"
|
||||
---
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<title>{{ title }} • {{ site_name }}</title>
|
||||
|
||||
<link rel="stylesheet" href="/theme.css" />
|
||||
|
||||
<link rel="icon" href="{% asset './favicon-64.png' %}" type="image/png" sizes="64x64" />
|
||||
<link rel="icon" href="{% asset './favicon.png' %}" type="image/png" sizes="540x540" />
|
||||
|
||||
<meta name="theme-color" content="#61b4f4" />
|
||||
|
||||
<!-- OpenGraph -->
|
||||
<meta property="og:title" content="{{ site_name }}" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="{{ root_url }}/" />
|
||||
<meta property="og:image" content="{{ root_url }}{% asset 'images/banner-main.jpeg' %}" />
|
||||
<meta property="og:description" content="{{ description }}" />
|
||||
|
||||
<!-- Twitter Cards -->
|
||||
<meta property="twitter:card" content="summary" />
|
||||
<meta property="twitter:site" content="@SBRLabs" />
|
||||
<meta property="twitter:title" content="{{ site_name }}" />
|
||||
<meta property="twitter:description" content="{{ description }}" />
|
||||
<meta property="twitter:image" content="{{ root_url }}/{% asset '../favicon.png' %}" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="shadow-bottom">
|
||||
<h1><a href="/" class="invisilink">
|
||||
{{ site_name }}
|
||||
</a></h1>
|
||||
<ul>
|
||||
{% for navitem in collections.navigable %}
|
||||
<li {% if page.url == navitem.url %}aria-current="page"{% endif %}>
|
||||
<a href="{{ navitem.url }}" class="nav">{{ navitem.data.title }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<li><a href="https://github.com/sbrl/Minetest-WorldEditAdditions/" class="nav image"><img src="{% asset 'images/github.svg' %}" alt="GitHub" title="GitHub" /></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
{{ content | safe }}
|
||||
|
||||
<footer class="shadow-top">
|
||||
<p>hullblogs.com built with ❤️ by <a href="https://starbeamrainbowlabs.com/"><img src="{% asset 'https://starbeamrainbowlabs.com/images/sbrl/SBRL-Small-200.png' %}" alt="Starbeamrainbowlabs' logo" aria-hidden="true" />Starbeamrainbowlabs</p>
|
||||
|
||||
<p>Tech: <a href="https://www.11ty.dev/">Eleventy</a> (this website), <a href="https://www.heropatterns.com/">Hero Patterns</a> (background patterns), <a href="https://github.com/shssoichiro/oxipng">Oxipng</a> (PNG image compression), <a href="https://www.npmjs.com/package/feedme"><code>feedme</code></a> (for prsing feeds)</p>
|
||||
<p>Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Licence 2.0</a> (<a href="https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)">tldr</a>)</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,64 @@
|
|||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const pReflect = require("p-reflect");
|
||||
const dateformat = require("dateformat");
|
||||
const striptags = require("striptags");
|
||||
|
||||
const fetch_feed = require("./lib/fetch_feed.js");
|
||||
|
||||
// The length of auto-generated descriptions if one isn't provided.
|
||||
const DESCRIPTION_LENGTH = 200;
|
||||
|
||||
module.exports = async function() {
|
||||
const feeds = JSON.parse(await fs.promises.readFile("../feeds.json", "utf-8"));
|
||||
|
||||
const feed_data = await Promise.all(feeds.map(async (feed) => { return {
|
||||
author_name: feed.author_name,
|
||||
author_image: `https://avatars.githubusercontent.com/${encodeURIComponent(feed.github_username)}`,
|
||||
data: await pReflect(fetch_feed(feed.feed_uri))
|
||||
} }));
|
||||
const feed_data_ok = feed_data.filter(el => {
|
||||
return el.data.isFulfilled
|
||||
})
|
||||
.map((feed) => {
|
||||
feed.data = feed.data.value;
|
||||
return feed;
|
||||
});
|
||||
const feed_authors_error = feed_data.filter(el => el.data.isRejected)
|
||||
.map(el => el.author_name);
|
||||
|
||||
const feed_items = [].concat(...feed_data_ok.map(feed => feed.data.items.map(item => {
|
||||
// console.log(`FEED ITEM`, item);
|
||||
item.author_name = feed.author_name;
|
||||
item.parent = feed.data;
|
||||
|
||||
if(!item.content) item.content = item["content:encoded"] || "";
|
||||
if(!item.description) item.description = striptags(item.content)
|
||||
.substr(0, DESCRIPTION_LENGTH);
|
||||
|
||||
if(!item.pubdate) item.pubdate = item.published
|
||||
|| item.updated
|
||||
|| new Date("1970-01-01");
|
||||
|
||||
item.pubdate_iso = new Date(item.pubdate).toISOString();
|
||||
item.pubdate_display = dateformat(
|
||||
new Date(item.pubdate),
|
||||
"ddd dS mmmm yyyy h:MM:ss TT Z"
|
||||
);
|
||||
return item;
|
||||
})));
|
||||
|
||||
return {
|
||||
layout: "main.njk",
|
||||
title: "Posts",
|
||||
tags: "navigable",
|
||||
date: "2000-01-01", // For sorting in the navigation bar
|
||||
feed_items: feed_items,
|
||||
feeds_errored: feed_authors_error,
|
||||
pagination: {
|
||||
data: "feed_items",
|
||||
size: 15
|
||||
}
|
||||
};
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
|
||||
<section class="posts">
|
||||
|
||||
{% for post in pagination.items %}
|
||||
|
||||
<article class="post">
|
||||
<h2><a href="{{ post.link }}">{{ post.title | striphtml | htmlentities }}</a></h2>
|
||||
<div class="post-extract">
|
||||
{{ post.description | striphtml | htmlentities }}
|
||||
</div>
|
||||
<div>
|
||||
<span><a href="{{ post.parent.data.link | htmlentities }}"><img src="{{ post.parent.author_image }}" alt="{{ post.parent.author_name | htmlentities }} avatar" aria-hidden="true" /> {{ post.parent.author_name | htmlentities }}</a></span>
|
||||
<span><time datetime="{{ post.pubdate_iso }}">{{ post.pubdate_display | htmlentities }}</time></span>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</section>
|
||||
|
||||
<nav>
|
||||
<span>{% if page.url != pagination.href.first %}<a href="{{ pagination.href.first }}">First</a>{% else %}First{% endif %}</span>
|
||||
|
||||
<span>{% if pagination.href.previous %}<a href="{{ pagination.href.previous }}">Previous</a>{% else %}Previous{% endif %}</span>
|
||||
|
||||
{% for pageKey in pagination.pages %}
|
||||
<a href="{{ pagination.hrefs[ loop.index0 ] }}"{% if pagination.hrefs[ loop.index0 ] == page.url %} aria-current="page"{% endif %}>{{ loop.index }}</a>
|
||||
{% endfor %}
|
||||
|
||||
<span>{% if pagination.href.next %}<a href="{{ pagination.href.next }}">Next</a>{% else %}Next{% endif %}</span>
|
||||
|
||||
<span>{% if page.url != pagination.href.last %}<a href="{{ pagination.href.last }}">Last</a>{% else %}Last{% endif %}</span>
|
||||
</nav>
|
|
@ -0,0 +1,23 @@
|
|||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const os = require("os");
|
||||
|
||||
const phin = require("phin");
|
||||
|
||||
async function fetch(url, format = "string") {
|
||||
let package = JSON.parse(await fs.promises.readFile(
|
||||
path.join(path.dirname(path.dirname(__dirname)), "package.json"), "utf8"
|
||||
));
|
||||
|
||||
return (await phin({
|
||||
url,
|
||||
headers: {
|
||||
"user-agent": `HullBlogsStaticBuilder/${package.version} (Node.js/${process.version}; ${os.platform()} ${os.arch()}) eleventy/${package.dependencies["@11ty/eleventy"].replace(/\^/, "")}`
|
||||
},
|
||||
followRedirects: true,
|
||||
parse: format
|
||||
})).body;
|
||||
}
|
||||
|
||||
|
||||
module.exports = fetch;
|
|
@ -0,0 +1,27 @@
|
|||
const fetch_stream = require("./fetch_stream.js");
|
||||
const FeedMe = require("feedme");
|
||||
const events = require("events");
|
||||
|
||||
function do_parse(stream) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
const parser = new FeedMe(true);
|
||||
parser.once("error", reject);
|
||||
stream.pipe(parser);
|
||||
events.once(parser, "end").then(() => {
|
||||
parser.off("error", reject);
|
||||
resolve(parser.done());
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
async function fetch_feed(url) {
|
||||
let start = new Date();
|
||||
let result = await do_parse(
|
||||
await fetch_stream(url)
|
||||
);
|
||||
console.log(`FETCH ${new Date() - start}ms ${url}`);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = fetch_feed;
|
|
@ -0,0 +1,23 @@
|
|||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const os = require("os");
|
||||
|
||||
const phin = require("phin");
|
||||
|
||||
async function fetch_stream(url) {
|
||||
let package = JSON.parse(await fs.promises.readFile(
|
||||
path.join(path.dirname(path.dirname(__dirname)), "package.json"), "utf8"
|
||||
));
|
||||
|
||||
return (await phin({
|
||||
url,
|
||||
headers: {
|
||||
"user-agent": `HullBlogsStaticBuilder/${package.version} (Node.js/${process.version}; ${os.platform()} ${os.arch()}) eleventy/${package.dependencies["@11ty/eleventy"].replace(/\^/, "")}`
|
||||
},
|
||||
followRedirects: true,
|
||||
stream: true
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
module.exports = fetch_stream;
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
permalink: theme.css
|
||||
---
|
||||
|
||||
{% include "css/theme.css" %}
|
||||
{% include "css/smallscreens.css" %}
|
||||
|
||||
|
||||
{# {% fetch "https://unpkg.com/prismjs/themes/prism-okaidia.css" %} #}
|
||||
{# {% fetch "https://raw.githubusercontent.com/PrismJS/prism-themes/master/themes/prism-shades-of-purple.css" %} #}
|
||||
{# {% fetch "https://raw.githubusercontent.com/PrismJS/prism-themes/master/themes/prism-material-light.css" %} #}
|
Loading…
Reference in New Issue