From 2b8952c5361e314477c62121a068fcd6d328e26a Mon Sep 17 00:00:00 2001 From: Felix Woestmann <felix.wostmann@edps.europa.eu> Date: Tue, 17 Dec 2024 14:33:53 +0100 Subject: [PATCH 1/4] feature: add output of package version to website --- .../src/components/EvidenceCollectorForm.vue | 28 +++++++++++++++---- src/server/server.ts | 12 ++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/EvidenceCollectorForm.vue b/frontend/src/components/EvidenceCollectorForm.vue index adfc65b..ffb0c2b 100644 --- a/frontend/src/components/EvidenceCollectorForm.vue +++ b/frontend/src/components/EvidenceCollectorForm.vue @@ -134,6 +134,9 @@ :add-class="{ button_enabled: ['hover:bg-eu-primary-80'] }" /> </Vueform> + <p class="text-0.5sm text-gray-600 text-center pt-2"> + Version {{ version == null ? "not fetched" : version }} + </p> </div> </div> <!-- Right panel --> @@ -256,7 +259,7 @@ const pdfUrl = ref<string | null>(null); const htmlUrl = ref<string | null>(null); const isRequestRunning = ref<boolean>(false); const iFrame = useTemplateRef("output-iframe"); - +const version = ref<string | null>(null); const isDownloadOverlayMinimized = ref(true); // Listen to chnages in the path from anchor links within the iFrame then scroll the corresponding element into view @@ -275,13 +278,26 @@ function reset() { sanitizedHtml.value = null; } +function getUrl(slug) { + return isViteDevEnv + ? `http://localhost:8080/${slug}` + : new URL(slug, document.location.toString()).href; +} + +window.onload = async (_) => { + version.value = await fetchVersion(); +}; + +async function fetchVersion() { + let url = getUrl("version"); + const response = await fetch(url); + const json = await response.json(); + return json.version; +} + async function handleSubmit(form$, _) { reset(); - const WEC_ENDPOINT = isViteDevEnv - ? "http://localhost:8080/start-collection" - : new URL("start-collection", document.location.toString()).href; - // Using FormData will EXCLUDE conditional elements and it // will submit the form as "Content-Type: multipart/form-data". const data = form$.data; @@ -302,7 +318,7 @@ async function handleSubmit(form$, _) { try { // Sending the request - response = await form$.$vueform.services.axios.post(WEC_ENDPOINT, data, { + response = await form$.$vueform.services.axios.post(wec_endpoint, data, { cancelToken: form$.cancelToken.token, }); diff --git a/src/server/server.ts b/src/server/server.ts index 3587ea0..dcade54 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -10,6 +10,7 @@ import { generateHtmlAndPdf, runCollection } from "./runCollection.js"; import path from "path"; import { create } from "../lib/logger.js"; import crypto from "crypto"; +import fs from "fs"; const __dirname = import.meta.dirname; const corsDefault = "http://localhost:8080"; @@ -120,6 +121,17 @@ function configureRoutes(browser_options: any[]): Router { res.status(200).json({ status: "OK" }); }); + router.get("/version", (_, res: Response) => { + try { + const packageJsonPath = path.resolve(__dirname, "../..", "package.json"); + const packageJson = fs.readFileSync(packageJsonPath, "utf-8"); + const { version } = JSON.parse(packageJson); + res.status(200).json({ version }); + } catch (error) { + res.status(500).json({ error: "Unable to retrieve version information" }); + } + }); + return router; } -- GitLab From d097af91dd74a28ffc3a77f679e41fe284862ef5 Mon Sep 17 00:00:00 2001 From: Felix Woestmann <felix.wostmann@edps.europa.eu> Date: Wed, 18 Dec 2024 12:45:38 +0100 Subject: [PATCH 2/4] refactor: import package.json as a module --- src/server/server.ts | 5 +---- tsconfig.json | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/server/server.ts b/src/server/server.ts index dcade54..5391be8 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -10,7 +10,7 @@ import { generateHtmlAndPdf, runCollection } from "./runCollection.js"; import path from "path"; import { create } from "../lib/logger.js"; import crypto from "crypto"; -import fs from "fs"; +import { version } from "../../package.json"; const __dirname = import.meta.dirname; const corsDefault = "http://localhost:8080"; @@ -123,9 +123,6 @@ function configureRoutes(browser_options: any[]): Router { router.get("/version", (_, res: Response) => { try { - const packageJsonPath = path.resolve(__dirname, "../..", "package.json"); - const packageJson = fs.readFileSync(packageJsonPath, "utf-8"); - const { version } = JSON.parse(packageJson); res.status(200).json({ version }); } catch (error) { res.status(500).json({ error: "Unable to retrieve version information" }); diff --git a/tsconfig.json b/tsconfig.json index 2e0ed3d..469d179 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,8 @@ "allowJs": true, "target": "es2020", "moduleResolution": "nodenext", - "module": "nodenext" + "module": "nodenext", + "resolveJsonModule": true, }, "include": ["./src/**/*", "./bin/**/*"], "exclude": ["./src/assets/frontend/**/*"] -- GitLab From a64583b308538bb3293f2da4947ae35ef2a7fb94 Mon Sep 17 00:00:00 2001 From: Felix Woestmann <felix.wostmann@edps.europa.eu> Date: Wed, 18 Dec 2024 12:45:47 +0100 Subject: [PATCH 3/4] fix: missing url --- frontend/src/components/EvidenceCollectorForm.vue | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/EvidenceCollectorForm.vue b/frontend/src/components/EvidenceCollectorForm.vue index ffb0c2b..fdf3f40 100644 --- a/frontend/src/components/EvidenceCollectorForm.vue +++ b/frontend/src/components/EvidenceCollectorForm.vue @@ -318,9 +318,13 @@ async function handleSubmit(form$, _) { try { // Sending the request - response = await form$.$vueform.services.axios.post(wec_endpoint, data, { - cancelToken: form$.cancelToken.token, - }); + response = await form$.$vueform.services.axios.post( + getUrl("/start-collection"), + data, + { + cancelToken: form$.cancelToken.token, + }, + ); sanitizedHtml.value = response.data.html; -- GitLab From fb913efe2cae7fddc2d9871c5f5197e0d66a7eb8 Mon Sep 17 00:00:00 2001 From: Felix Woestmann <felix.wostmann@edps.europa.eu> Date: Wed, 18 Dec 2024 12:52:02 +0100 Subject: [PATCH 4/4] fix: error in .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 297cba8..2a63592 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,7 +21,7 @@ build-job: - cd build/ - npm pack --pack-destination='../artifacts' - cd ../artifacts - - mv website-evidence-collector-$(PACKAGE_VERSION).tgz website-evidence-collector.tgz + - mv website-evidence-collector-$PACKAGE_VERSION.tgz website-evidence-collector.tgz artifacts: paths: - build/artifacts -- GitLab