From 1b537da5f0227db06686668f86dc89bf7341e49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20S=C3=BCdkamp?= Date: Fri, 22 Sep 2023 18:12:00 +0200 Subject: [PATCH] favicon --- app.ts | 2 ++ dist/app.js | 2 ++ package-lock.json | 26 ++++++++++++++++++++++++++ package.json | 1 + public/favicon.ico | Bin 0 -> 15406 bytes 5 files changed, 31 insertions(+) create mode 100755 public/favicon.ico diff --git a/app.ts b/app.ts index 1183823..f3763d5 100644 --- a/app.ts +++ b/app.ts @@ -17,6 +17,7 @@ import jwt from "jsonwebtoken"; var QRCode = require("qrcode"); const { I18n } = require("i18n"); const path = require("path"); +var favicon = require('serve-favicon') // we must ensure that no write access to the file system is needed; as we are running on a readonly serverless platform const i18n = new I18n({ @@ -32,6 +33,7 @@ const app = express(); // middleware app.use(express.static("public")); +app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(express.json()); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: true })); diff --git a/dist/app.js b/dist/app.js index 9195dbd..96f9899 100644 --- a/dist/app.js +++ b/dist/app.js @@ -25,6 +25,7 @@ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); var QRCode = require("qrcode"); const { I18n } = require("i18n"); const path = require("path"); +var favicon = require('serve-favicon'); // we must ensure that no write access to the file system is needed; as we are running on a readonly serverless platform const i18n = new I18n({ locales: ["en", "de"], @@ -37,6 +38,7 @@ const i18n = new I18n({ const app = express(); // middleware app.use(express.static("public")); +app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(express.json()); app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: true })); diff --git a/package-lock.json b/package-lock.json index a997137..8531908 100644 --- a/package-lock.json +++ b/package-lock.json @@ -664,6 +664,8 @@ }, "@playwright/test": { "version": "1.37.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.37.1.tgz", + "integrity": "sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg==", "dev": true, "requires": { "@types/node": "*", @@ -3014,6 +3016,30 @@ } } }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==", + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, "serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", diff --git a/package.json b/package.json index 647f477..a41f196 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "nodemailer": "^6.9.3", "playwright": "^1.37.1", "qrcode": "^1.5.3", + "serve-favicon": "^2.5.0", "short-uuid": "^4.2.2", "uuid": "^9.0.0", "validator": "^13.9.0" diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..b0a0410deef507a5729b8c985a2a100ef4356fae GIT binary patch literal 15406 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