diff --git a/package-lock.json b/package-lock.json index 1885508..8c6f344 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "dependencies": { "archiver": "^6.0.2", + "exif-reader": "^2.0.3", "express": "^4.19.2", "libheif-js": "^1.18.0", "sharp": "^0.33.5" @@ -805,6 +806,12 @@ "bare-events": "^2.7.0" } }, + "node_modules/exif-reader": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/exif-reader/-/exif-reader-2.0.3.tgz", + "integrity": "sha512-zFbQvguwT9JkqyYhR7pjE1Yn8SagwaGLNRU0Oh14xFa1paSf5Gzxn4gxgk0XhnudI0UIqU+HgnBX93+nva592A==", + "license": "MIT" + }, "node_modules/express": { "version": "4.22.1", "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", diff --git a/package.json b/package.json index 824e877..ac74f5f 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "archiver": "^6.0.2", + "exif-reader": "^2.0.3", "express": "^4.19.2", "libheif-js": "^1.18.0", "sharp": "^0.33.5" diff --git a/server.js b/server.js index 83dc6be..65729d4 100644 --- a/server.js +++ b/server.js @@ -6,6 +6,7 @@ import fs from "fs/promises"; import { randomUUID } from "crypto"; import libheifModule from "libheif-js"; +import exifReader from "exif-reader"; const libheif = libheifModule?.default ?? libheifModule; const app = express(); @@ -299,6 +300,15 @@ app.get("/", (_req, res) => { .drop input { display: none; } .status { margin-top: 1rem; text-align: center; font-size: .9rem; color: #888; } .status.error { color: #f66; } + .removed { margin-top: 1.2rem; background: #1a1a1a; border: 1px solid #333; border-radius: 10px; + padding: 1rem 1.2rem; font-size: .85rem; } + .removed h3 { font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; color: #666; + margin-bottom: .6rem; } + .removed table { width: 100%; border-collapse: collapse; } + .removed td { padding: .25rem 0; vertical-align: top; } + .removed td:first-child { color: #888; padding-right: .8rem; white-space: nowrap; } + .removed td:last-child { color: #eee; word-break: break-word; } + .removed .warn { color: #f90; } .overlay { position: fixed; inset: 0; background: #111; display: flex; align-items: center; justify-content: center; z-index: 10; } .auth { max-width: 340px; width: 100%; padding: 2rem; text-align: center; } @@ -328,6 +338,10 @@ app.get("/", (_req, res) => {
+