diff --git a/configs/nginx.example b/configs/nginx.example
index a148f235..9f17e2ed 100644
--- a/configs/nginx.example
+++ b/configs/nginx.example
@@ -117,6 +117,14 @@ server {
try_files $uri =404;
}
+ # Favicon, safari icons, apple-touch icon, browserconfig, mstiles, etc.
+ location ~* \.(webmanifest|xml)$ {
+ access_log off;
+ expires max;
+ root /path/to/jschan/static/file;
+ try_files $uri =404;
+ }
+
# "Other" Files for custom type uploads, uses content-disposition to prevent rendering
# inline in browser and will present a "save" dialog box. make sure these file
# extensions match for mimes defined in configs/main.js "otherMimeTypes"
diff --git a/configs/nginx_no_https.example b/configs/nginx_no_https.example
index dd3ac1e9..4fae9a09 100644
--- a/configs/nginx_no_https.example
+++ b/configs/nginx_no_https.example
@@ -117,6 +117,14 @@ server {
try_files $uri =404;
}
+ # Favicon, safari icons, apple-touch icon, browserconfig, mstiles, etc.
+ location ~* \.(webmanifest|xml)$ {
+ access_log off;
+ expires max;
+ root /path/to/jschan/static/file;
+ try_files $uri =404;
+ }
+
# "Other" Files for custom type uploads, uses content-disposition to prevent rendering
# inline in browser and will present a "save" dialog box. make sure these file
# extensions match for mimes defined in configs/main.js "otherMimeTypes"
diff --git a/gulp/res/icons/android-chrome-144x144.png b/gulp/res/icons/android-chrome-144x144.png
new file mode 100644
index 00000000..8d48df0f
Binary files /dev/null and b/gulp/res/icons/android-chrome-144x144.png differ
diff --git a/gulp/res/icons/apple-touch-icon.png b/gulp/res/icons/apple-touch-icon.png
new file mode 100644
index 00000000..4ecd29ee
Binary files /dev/null and b/gulp/res/icons/apple-touch-icon.png differ
diff --git a/gulp/res/icons/browserconfig.xml b/gulp/res/icons/browserconfig.xml
new file mode 100644
index 00000000..5aecc916
--- /dev/null
+++ b/gulp/res/icons/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #00aba9
+
+
+
diff --git a/gulp/res/icons/favicon.ico b/gulp/res/icons/favicon.ico
new file mode 100644
index 00000000..aac17379
Binary files /dev/null and b/gulp/res/icons/favicon.ico differ
diff --git a/gulp/res/icons/mstile-150x150.png b/gulp/res/icons/mstile-150x150.png
new file mode 100644
index 00000000..d7c1da00
Binary files /dev/null and b/gulp/res/icons/mstile-150x150.png differ
diff --git a/gulp/res/icons/safari-pinned-tab.svg b/gulp/res/icons/safari-pinned-tab.svg
new file mode 100644
index 00000000..5091b43c
--- /dev/null
+++ b/gulp/res/icons/safari-pinned-tab.svg
@@ -0,0 +1,75 @@
+
+
+
diff --git a/gulp/res/icons/site.webmanifest b/gulp/res/icons/site.webmanifest
new file mode 100644
index 00000000..8c8e9c28
--- /dev/null
+++ b/gulp/res/icons/site.webmanifest
@@ -0,0 +1,13 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-144x144.png",
+ "sizes": "144x144",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "",
+ "background_color": ""
+}
diff --git a/gulp/res/img/favicon.ico b/gulp/res/img/favicon.ico
deleted file mode 100644
index a3503088..00000000
Binary files a/gulp/res/img/favicon.ico and /dev/null differ
diff --git a/gulpfile.js b/gulpfile.js
index a7c696d0..e197c6c3 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -24,6 +24,10 @@ const gulp = require('gulp')
src: 'gulp/res/img/*',
dest: 'static/file/'
},
+ icons: {
+ src: 'gulp/res/icons/*',
+ dest: 'static/file/'
+ },
scripts: {
src: 'gulp/res/js',
dest: 'static/js/'
@@ -140,12 +144,18 @@ function css() {
.pipe(gulp.dest(paths.styles.dest));
}
-//favicon, spoiler/deleted image, default banner, spoiler/sticky/sage/cycle icons
+//spoiler/deleted image, default banner, spoiler/sticky/sage/cycle icons
function images() {
return gulp.src(paths.images.src)
.pipe(gulp.dest(paths.images.dest));
}
+//favicon/safari/chrome/mstiles, etc
+function icons() {
+ return gulp.src(paths.icons.src)
+ .pipe(gulp.dest(paths.icons.dest));
+}
+
async function cache() {
const Redis = require(__dirname+'/redis.js')
await Promise.all([
@@ -260,7 +270,7 @@ async function migrate() {
}
-const build = gulp.parallel(css, scripts, images, gulp.series(deletehtml, custompages));
+const build = gulp.parallel(css, scripts, images, icons, gulp.series(deletehtml, custompages));
const reset = gulp.series(wipe, build);
const html = gulp.series(deletehtml, custompages);
@@ -268,6 +278,7 @@ module.exports = {
html,
css,
images,
+ icons,
reset,
custompages,
scripts,
diff --git a/package-lock.json b/package-lock.json
index 718f5b0e..2a33b9c6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -63,23 +63,32 @@
}
},
"@pm2/agent": {
- "version": "0.5.26",
- "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-0.5.26.tgz",
- "integrity": "sha512-pqiS87IiUprkSR7SG0RKMATuYXl4QjH1tSSUwM4wJcovRT4pD5dvnnu61w9y/4/Ur5V/+a7bqS8bZz51y3U2iA==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-1.0.0.tgz",
+ "integrity": "sha512-BsfhSI/2+SSXpg9dZojfv9WW6dTTr1vt7FRR9cefuwyDA4vsZR3mHTeyQUBGHzMkd6yPHFb3B6NO8T2pY4R/MA==",
"requires": {
- "async": "^2.6.0",
- "chalk": "^2.3.2",
- "eventemitter2": "^5.0.1",
- "fclone": "^1.0.11",
- "moment": "^2.21.0",
- "nssocket": "^0.6.0",
+ "async": "~2.6.0",
+ "chalk": "~3.0.0",
+ "dayjs": "~1.8.24",
+ "eventemitter2": "~5.0.1",
+ "fclone": "~1.0.11",
+ "nssocket": "0.6.0",
"pm2-axon": "^3.2.0",
"pm2-axon-rpc": "^0.5.0",
- "proxy-agent": "^3.1.0",
- "semver": "^5.5.0",
- "ws": "^5.1.0"
+ "proxy-agent": "~3.1.1",
+ "semver": "~7.2.0",
+ "ws": "~5.2.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==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
"async": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
@@ -87,6 +96,46 @@
"requires": {
"lodash": "^4.17.14"
}
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "semver": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz",
+ "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig=="
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
}
}
},
@@ -125,20 +174,20 @@
}
},
"@pm2/io": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/@pm2/io/-/io-4.3.3.tgz",
- "integrity": "sha512-ENGsdSVpnwbYMGdeB0/Xy2eZYo7oltzApoCsMD4ssqWNXDg9C4uQZy5J09iPsb0IHFwSDjU5oylXdwKDSoqODw==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/@pm2/io/-/io-4.3.4.tgz",
+ "integrity": "sha512-xaPa/aiGNknex4UQq9eQVRW75H3dPuAcZ0/RvGWrC4ICUBqxn0xV7dC6Db9C5aArGKSXXQ7PVtIlOzUIELauRg==",
"requires": {
- "@opencensus/core": "^0.0.9",
- "@opencensus/propagation-b3": "^0.0.8",
+ "@opencensus/core": "0.0.9",
+ "@opencensus/propagation-b3": "0.0.8",
"@pm2/agent-node": "^1.1.10",
"async": "~2.6.1",
- "debug": "3.1.0",
- "eventemitter2": "~5.0.1",
+ "debug": "4.1.1",
+ "eventemitter2": "^6.3.1",
"require-in-the-middle": "^5.0.0",
- "semver": "5.5.0",
- "shimmer": "~1.2.0",
- "signal-exit": "3.0.2",
+ "semver": "6.3.0",
+ "shimmer": "^1.2.0",
+ "signal-exit": "^3.0.3",
"tslib": "1.9.3"
},
"dependencies": {
@@ -151,26 +200,41 @@
}
},
"debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
+ "eventemitter2": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.3.1.tgz",
+ "integrity": "sha512-cxfu3g0IBn/JEhAPV33NZTi8llQQ5j62D0Yf4ir1U9uQ1DlRZLL3Hh2E/+TWDprSy4BETWvrGBZMUexuC2b6Lw=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
"semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ },
+ "signal-exit": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
}
}
},
"@pm2/js-api": {
- "version": "0.5.60",
- "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.5.60.tgz",
- "integrity": "sha512-CvAbpIB7ObOuwvqhDBB/E4Z4ANRx2dBk08zYpGPNg+1fDj14FJg2e7DWA8bblSGNC8QarIXPaqPDJBL1e8cRQw==",
+ "version": "0.5.63",
+ "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.5.63.tgz",
+ "integrity": "sha512-V0e5fVFEY5jxF6sH2ona3WVVbMlYc5U+F8v6g1UQXg9E8Ao2X7Q1XBmgmhtf1k8hnPvW7ufDhGe6dUok1LPHmA==",
"requires": {
- "async": "^2.4.1",
+ "async": "^2.6.3",
"axios": "^0.19.0",
"debug": "^2.6.8",
"eventemitter2": "^4.1.0",
@@ -264,6 +328,11 @@
"@types/babel-types": "*"
}
},
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
+ },
"@types/events": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
@@ -705,9 +774,9 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
},
"ast-types": {
- "version": "0.13.2",
- "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz",
- "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA=="
+ "version": "0.13.3",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz",
+ "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA=="
},
"async": {
"version": "3.0.1",
@@ -904,8 +973,7 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "resolved": ""
}
}
},
@@ -1597,9 +1665,9 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cron": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/cron/-/cron-1.7.1.tgz",
- "integrity": "sha512-gmMB/pJcqUVs/NklR1sCGlNYM7TizEw+1gebz20BMc/8bTm/r7QUp3ZPSPlG8Z5XRlvb7qhjEjq/+bdIfUCL2A==",
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz",
+ "integrity": "sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg==",
"requires": {
"moment-timezone": "^0.5.x"
}
@@ -1699,10 +1767,10 @@
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz",
"integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ=="
},
- "date-fns": {
- "version": "1.30.1",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
- "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw=="
+ "dayjs": {
+ "version": "1.8.24",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.24.tgz",
+ "integrity": "sha512-bImQZbBv86zcOWOq6fLg7r4aqMx8fScdmykA7cSh+gH1Yh8AM0Dbw0gHYrsOrza6oBBnkK+/OaR+UAa9UsMrDw=="
},
"debug": {
"version": "2.6.9",
@@ -2132,9 +2200,9 @@
}
},
"enquirer": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.4.tgz",
- "integrity": "sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw==",
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz",
+ "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==",
"requires": {
"ansi-colors": "^3.2.1"
},
@@ -2280,9 +2348,9 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"escodegen": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.13.0.tgz",
- "integrity": "sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz",
+ "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==",
"requires": {
"esprima": "^4.0.1",
"estraverse": "^4.2.0",
@@ -2414,7 +2482,7 @@
},
"express-fileupload": {
"version": "github:fatchan/express-fileupload#ecc5ad4f41771a1c23eed365e451220b9cc3e3c1",
- "from": "github:fatchan/express-fileupload#ecc5ad4f41771a1c23eed365e451220b9cc3e3c1",
+ "from": "github:fatchan/express-fileupload",
"requires": {
"busboy": "^0.3.1"
}
@@ -2534,8 +2602,7 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "resolved": ""
}
}
},
@@ -4648,26 +4715,11 @@
"resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
"integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c="
},
- "lodash.findindex": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz",
- "integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY="
- },
"lodash.flatten": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
},
- "lodash.foreach": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
- "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM="
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
- },
"lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
@@ -4678,11 +4730,6 @@
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
},
- "lodash.last": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/lodash.last/-/lodash.last-3.0.0.tgz",
- "integrity": "sha1-JC9mMRLdTG5jcoxgo8kJ0b2tvUw="
- },
"lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -5578,9 +5625,9 @@
"integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA=="
},
"pidusage": {
- "version": "2.0.17",
- "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.17.tgz",
- "integrity": "sha512-N8X5v18rBmlBoArfS83vrnD0gIFyZkXEo7a5pAS2aT0i2OLVymFb2AzVg+v8l/QcXnE1JwZcaXR8daJcoJqtjw==",
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.18.tgz",
+ "integrity": "sha512-Y/VfKfh3poHjMEINxU+gJTeVOBjiThQeFAmzR7z56HSNiMx+etl+yBhk42nRPciPYt/VZl8DQLVXNC6P5vH11A==",
"requires": {
"safe-buffer": "^5.1.2"
}
@@ -5610,46 +5657,53 @@
}
},
"pm2": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/pm2/-/pm2-4.2.3.tgz",
- "integrity": "sha512-aRTl8W6dmZ4S2hti1dX4Xvkpy/yIME1H5pMK0HEOpw1H33j4IAfdzScPoPLYaHeh1oL4biabGwxuyClOM8YUVQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/pm2/-/pm2-4.3.0.tgz",
+ "integrity": "sha512-bQ3zyGu+KnEtQ7FdDQ/ExwPGm2EkKOqUFXFqqYsuymySsOvu5ClpYIMh0fgjMKzn21RfSg9yL4SeeoGOjg+/dQ==",
"requires": {
- "@pm2/agent": "^0.5.26",
- "@pm2/io": "^4.3.2",
- "@pm2/js-api": "^0.5.60",
+ "@pm2/agent": "~1.0.0",
+ "@pm2/io": "~4.3.4",
+ "@pm2/js-api": "~0.5.6",
"@pm2/pm2-version-check": "^1.0.3",
- "async": "^3.1.0",
+ "async": "~3.2.0",
"blessed": "0.1.81",
- "chalk": "2.4.2",
- "chokidar": "^3.2.0",
+ "chalk": "3.0.0",
+ "chokidar": "^3.3.0",
"cli-table-redemption": "1.0.1",
"commander": "2.15.1",
- "cron": "1.7.1",
- "date-fns": "1.30.1",
+ "cron": "1.8.2",
+ "dayjs": "1.8.24",
"debug": "4.1.1",
"enquirer": "^2.3.2",
"eventemitter2": "5.0.1",
"fclone": "1.0.11",
- "lodash": "4.17.14",
- "mkdirp": "0.5.1",
- "moment": "2.24.0",
+ "mkdirp": "1.0.4",
"needle": "2.4.0",
- "pidusage": "2.0.17",
+ "pidusage": "2.0.18",
"pm2-axon": "3.3.0",
"pm2-axon-rpc": "0.5.1",
- "pm2-deploy": "^0.4.0",
+ "pm2-deploy": "~1.0.2",
"pm2-multimeter": "^0.1.2",
"promptly": "^2",
"ps-list": "6.3.0",
- "semver": "^5.5",
+ "semver": "^7.2",
"shelljs": "0.8.3",
- "source-map-support": "0.5.12",
+ "source-map-support": "0.5.16",
"sprintf-js": "1.1.2",
- "systeminformation": "^4.14.16",
- "vizion": "~2.0.2",
+ "systeminformation": "^4.23.3",
+ "vizion": "~2.2.0",
"yamljs": "0.3.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==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
"anymatch": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
@@ -5660,9 +5714,9 @@
}
},
"async": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/async/-/async-3.1.1.tgz",
- "integrity": "sha512-X5Dj8hK1pJNC2Wzo2Rcp9FBVdJMGRR/S7V+lH46s8GVFhtbo5O4Le5GECCF/8PISVdkUA6mMPvgz7qTTD1rf1g=="
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
+ "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
},
"binary-extensions": {
"version": "2.0.0",
@@ -5677,6 +5731,15 @@
"fill-range": "^7.0.1"
}
},
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
"chokidar": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
@@ -5692,6 +5755,19 @@
"readdirp": "~3.3.0"
}
},
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
"commander": {
"version": "2.15.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
@@ -5720,13 +5796,18 @@
"optional": true
},
"glob-parent": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
- "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
"requires": {
"is-glob": "^4.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=="
+ },
"is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -5740,23 +5821,10 @@
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
},
- "lodash": {
- "version": "4.17.14",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
- "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw=="
- },
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
- },
"mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "requires": {
- "minimist": "0.0.8"
- }
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
},
"ms": {
"version": "2.1.2",
@@ -5776,13 +5844,17 @@
"picomatch": "^2.0.7"
}
},
- "source-map-support": {
- "version": "0.5.12",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
- "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
+ "semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ=="
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
"requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
+ "has-flag": "^4.0.0"
}
},
"to-regex-range": {
@@ -5845,22 +5917,12 @@
}
},
"pm2-deploy": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-0.4.0.tgz",
- "integrity": "sha512-3BdCghcGwMKwl3ffHZhc+j5JY5dldH9nq8m/I9W5wehJuSRZIyO96VOgKTMv3hYp7Yk5E+2lRGm8WFNlp65vOA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz",
+ "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==",
"requires": {
- "async": "^2.6",
- "tv4": "^1.3"
- },
- "dependencies": {
- "async": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
- "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
- "requires": {
- "lodash": "^4.17.14"
- }
- }
+ "run-series": "^1.1.8",
+ "tv4": "^1.3.0"
}
},
"pm2-multimeter": {
@@ -5995,9 +6057,9 @@
}
},
"proxy-from-env": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
- "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4="
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"prr": {
"version": "1.0.1",
@@ -6447,9 +6509,9 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"resolve": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz",
- "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.1.tgz",
+ "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==",
"requires": {
"path-parse": "^1.0.6"
}
@@ -6541,6 +6603,11 @@
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
"integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q=="
},
+ "run-series": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.8.tgz",
+ "integrity": "sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg=="
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -6790,8 +6857,7 @@
},
"kind-of": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "resolved": ""
}
}
},
@@ -7220,9 +7286,9 @@
}
},
"systeminformation": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.21.1.tgz",
- "integrity": "sha512-IQMy+ieSThY+MfLZaCdQsGCteMah4nhsDQcnT9DhocoJnhMKVUqDY025j1i+MSm7qdUCMXS5oV7dvttr+pSodw==",
+ "version": "4.23.3",
+ "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.23.3.tgz",
+ "integrity": "sha512-TIGmv7O1vVw00ldkj8ckHJr667l/lbLxvYB5IrJZ7pxzKXt7RmCduvzHbFM6k2Owif/dGd7oEmRkaQJEH9ewng==",
"optional": true
},
"tar": {
@@ -7785,26 +7851,22 @@
}
},
"vizion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.0.2.tgz",
- "integrity": "sha512-UGDB/UdC1iyPkwyQaI9AFMwKcluQyD4FleEXObrlu254MEf16MV8l+AZdpFErY/iVKZVWlQ+OgJlVVJIdeMUYg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.0.tgz",
+ "integrity": "sha512-y9Xr35EjExYgnZYkajmlL8b+9dWowQI0AhWJdbeVRgJfylIlXnUI1V9z3H2j9w6srJypqDzu4t3VZg1xQjf+Kg==",
"requires": {
- "async": "2.6.1",
+ "async": "^2.6.3",
"git-node-fs": "^1.0.0",
- "ini": "^1.3.4",
- "js-git": "^0.7.8",
- "lodash.findindex": "^4.6.0",
- "lodash.foreach": "^4.5.0",
- "lodash.get": "^4.4.2",
- "lodash.last": "^3.0.0"
+ "ini": "^1.3.5",
+ "js-git": "^0.7.8"
},
"dependencies": {
"async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
- "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
"requires": {
- "lodash": "^4.17.10"
+ "lodash": "^4.17.14"
}
}
}
diff --git a/package.json b/package.json
index 9b91c274..013044e0 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,7 @@
"mongodb": "^3.5.0",
"node-fetch": "^2.6.0",
"path": "^0.12.7",
- "pm2": "^4.2.3",
+ "pm2": "^4.3.0",
"pug": "^2.0.4",
"redlock": "^4.1.0",
"sanitize-html": "^1.21.1",
diff --git a/views/includes/favicon.pug b/views/includes/favicon.pug
new file mode 100644
index 00000000..a9961aea
--- /dev/null
+++ b/views/includes/favicon.pug
@@ -0,0 +1,5 @@
+link(rel='shortcut icon' href='/favicon.ico' type='image/x-icon')
+link(rel='apple-touch-icon' sizes='144x144' href='/file/apple-touch-icon.png')
+link(rel='manifest' href='/site.webmanifest')
+link(rel='mask-icon' href='/file/safari-pinned-tab.svg' color='#5bbad5')
+meta(name='msapplication-TileColor' content='#00aba9')
diff --git a/views/includes/head.pug b/views/includes/head.pug
index 4b240b1b..1a018f44 100644
--- a/views/includes/head.pug
+++ b/views/includes/head.pug
@@ -15,5 +15,5 @@ link#theme(rel='stylesheet' data-theme=theme href=`/css/themes/${theme}.css`)
if isBoard && board.settings.customCss
style #{board.settings.customCss}
link#codetheme(rel='stylesheet' data-theme=codeTheme href=`/css/codethemes/${codeTheme}.css`)
-link(rel='shortcut icon' href='/favicon.ico' type='image/x-icon')
+include ./favicon.pug
script(src=`/js/all.js?v=${commit}`)