From 739e26bf0edfa5ec7844906f56cc54904d47c19a Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Wed, 25 Feb 2026 21:32:10 +0100 Subject: [PATCH 1/9] fix(Kill): increase kill timeout --- app/utils/local.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/utils/local.js b/app/utils/local.js index 3cef5bef..4c6332ec 100644 --- a/app/utils/local.js +++ b/app/utils/local.js @@ -209,7 +209,7 @@ function kill_back(back_port) { } } return pTimeout(do_kill(), { - milliseconds: 500, + milliseconds: 5000, message: "Failed to kill back", }) } @@ -254,7 +254,7 @@ function kill_viewer(viewer_port) { } return pTimeout(do_kill(), { - milliseconds: 500, + milliseconds: 5000, message: "Failed to kill viewer", }) } From 434405651fbf2e97059f5f374b1c062597895675 Mon Sep 17 00:00:00 2001 From: BotellaA <3213882+BotellaA@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:33:19 +0000 Subject: [PATCH 2/9] Apply prepare changes --- tests/integration/microservices/back/requirements.txt | 1 - tests/integration/microservices/viewer/requirements.txt | 1 - 2 files changed, 2 deletions(-) diff --git a/tests/integration/microservices/back/requirements.txt b/tests/integration/microservices/back/requirements.txt index c4caed69..bd3a3ef5 100644 --- a/tests/integration/microservices/back/requirements.txt +++ b/tests/integration/microservices/back/requirements.txt @@ -5,4 +5,3 @@ # pip-compile --output-file=tests/integration/microservices/back/requirements.txt tests/integration/microservices/back/requirements.in # -opengeodeweb-back==6.*,>=6.1.3 diff --git a/tests/integration/microservices/viewer/requirements.txt b/tests/integration/microservices/viewer/requirements.txt index 5922c2c7..4d097394 100644 --- a/tests/integration/microservices/viewer/requirements.txt +++ b/tests/integration/microservices/viewer/requirements.txt @@ -5,4 +5,3 @@ # pip-compile --output-file=tests/integration/microservices/viewer/requirements.txt tests/integration/microservices/viewer/requirements.in # -opengeodeweb-viewer==1.*,>=1.15.3 From 565103441e86c5c82c7fe94dc4102a63e03e2da4 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Wed, 25 Feb 2026 22:03:26 +0100 Subject: [PATCH 3/9] rimraf --- app/utils/local.js | 4 +++- package.json | 39 ++++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/utils/local.js b/app/utils/local.js index 4c6332ec..8eec0dc2 100644 --- a/app/utils/local.js +++ b/app/utils/local.js @@ -3,6 +3,7 @@ import child_process from "node:child_process" import fs from "node:fs" import path from "node:path" import { setTimeout } from "timers/promises" +import { rimraf } from "rimraf" // Third party imports import { WebSocket } from "ws" @@ -182,7 +183,7 @@ async function delete_folder_recursive(data_folder_path) { for (let i = 0; i <= MAX_DELETE_FOLDER_RETRIES; i += 1) { try { console.log(`Deleting folder: ${data_folder_path}`) - fs.rmSync(data_folder_path, { recursive: true, force: true }) + await rimraf(data_folder_path) console.log(`Deleted folder: ${data_folder_path}`) return } catch (error) { @@ -190,6 +191,7 @@ async function delete_folder_recursive(data_folder_path) { // Wait before retrying const DELAY = 1000 * (i + 1) await setTimeout(DELAY) + console.log("Retrying delete folder") } } } diff --git a/package.json b/package.json index 01bd5c53..a949c44e 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,26 @@ { "name": "@geode/opengeodeweb-front", + "version": "0.0.0", "description": "OpenSource Vue/Nuxt/Pinia/Vuetify framework for web applications", + "homepage": "https://github.com/Geode-solutions/OpenGeodeWeb-Front", + "bugs": { + "url": "https://github.com/Geode-solutions/OpenGeodeWeb-Front/issues" + }, + "license": "MIT", + "author": { + "name": "Geode-solutions", + "email": "contact@geode-solutions.com", + "url": "https://geode-solutions.com/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Geode-solutions/OpenGeodeWeb-Front.git" + }, "type": "module", - "version": "0.0.0", "main": "./nuxt.config.js", + "publishConfig": { + "access": "public" + }, "scripts": { "lint": "eslint --fix --ext .js,.vue --ignore-path .gitignore .", "test": "npm run test:unit", @@ -31,7 +48,8 @@ "nuxt": "4.2.2", "p-timeout": "7.0.1", "pinia": "3.0.4", - "rxjs": "^7.8.2", + "rimraf": "6.1.3", + "rxjs": "7.8.2", "sass": "1.87.0", "semver": "7.7.1", "uuid": "11.1.0", @@ -70,22 +88,5 @@ }, "overrides": { "vue": "latest" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Geode-solutions/OpenGeodeWeb-Front.git" - }, - "author": { - "name": "Geode-solutions", - "email": "contact@geode-solutions.com", - "url": "https://geode-solutions.com/" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/Geode-solutions/OpenGeodeWeb-Front/issues" - }, - "homepage": "https://github.com/Geode-solutions/OpenGeodeWeb-Front", - "publishConfig": { - "access": "public" } } From 24d4bc504a463907c70fcb9eba44cfdf32724903 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Thu, 26 Feb 2026 08:49:32 +0100 Subject: [PATCH 4/9] revert kill viewer --- app/utils/local.js | 92 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 68 insertions(+), 24 deletions(-) diff --git a/app/utils/local.js b/app/utils/local.js index 8eec0dc2..63afc2e1 100644 --- a/app/utils/local.js +++ b/app/utils/local.js @@ -217,20 +217,64 @@ function kill_back(back_port) { } function kill_viewer(viewer_port) { - async function do_kill() { - const socket = new WebSocket(`ws://localhost:${viewer_port}/ws`) - try { - await once(socket, "open") - console.log("Connected to WebSocket server") - socket.send( - JSON.stringify({ - id: "system:hello", - method: "wslink.hello", - args: [{ secret: "wslink-secret" }], - }), - ) + return pTimeout( + new Promise((resolve) => { + const socket = new WebSocket("ws://localhost:" + viewer_port + "/ws") + socket.on("open", () => { + console.log("Connected to WebSocket server") + socket.send( + JSON.stringify({ + id: "system:hello", + method: "wslink.hello", + args: [{ secret: "wslink-secret" }], + }), + ) + }) + socket.on("message", (data) => { + const message = data.toString() + console.log("Received from server:", message) + + if (message.includes("hello")) { + socket.send( + JSON.stringify({ + id: viewer_schemas.opengeodeweb_viewer.kill.$id, + method: viewer_schemas.opengeodeweb_viewer.kill.$id, + }), + ) + resolve() + } + }) + socket.on("close", () => { + console.log("Disconnected from WebSocket server") + resolve() + }) + socket.on("error", (error) => { + console.error("WebSocket error:", error) + resolve() + }) + }), + { + milliseconds: 500, + message: "Failed to kill viewer", + }, + ) +} - for await (const [data] of on(socket, "message")) { +function kill_viewer(viewer_port) { + async function do_kill() { + new Promise((resolve) => { + const socket = new WebSocket("ws://localhost:" + viewer_port + "/ws") + socket.on("open", () => { + console.log("Connected to WebSocket server") + socket.send( + JSON.stringify({ + id: "system:hello", + method: "wslink.hello", + args: [{ secret: "wslink-secret" }], + }), + ) + }) + socket.on("message", (data) => { const message = data.toString() console.log("Received from server:", message) @@ -241,18 +285,18 @@ function kill_viewer(viewer_port) { method: viewer_schemas.opengeodeweb_viewer.kill.$id, }), ) - break + resolve() } - } - await once(socket, "close") - console.log("Disconnected from WebSocket server") - } catch (error) { - console.error("WebSocket error:", error) - } finally { - if (socket.readyState === WebSocket.OPEN) { - socket.close() - } - } + }) + socket.on("close", () => { + console.log("Disconnected from WebSocket server") + resolve() + }) + socket.on("error", (error) => { + console.error("WebSocket error:", error) + resolve() + }) + }) } return pTimeout(do_kill(), { From a7ba336a318665b259e0778d438a7f1f7dce3bde Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Thu, 26 Feb 2026 09:10:27 +0100 Subject: [PATCH 5/9] clean --- app/utils/local.js | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/app/utils/local.js b/app/utils/local.js index 63afc2e1..9f81a259 100644 --- a/app/utils/local.js +++ b/app/utils/local.js @@ -216,50 +216,6 @@ function kill_back(back_port) { }) } -function kill_viewer(viewer_port) { - return pTimeout( - new Promise((resolve) => { - const socket = new WebSocket("ws://localhost:" + viewer_port + "/ws") - socket.on("open", () => { - console.log("Connected to WebSocket server") - socket.send( - JSON.stringify({ - id: "system:hello", - method: "wslink.hello", - args: [{ secret: "wslink-secret" }], - }), - ) - }) - socket.on("message", (data) => { - const message = data.toString() - console.log("Received from server:", message) - - if (message.includes("hello")) { - socket.send( - JSON.stringify({ - id: viewer_schemas.opengeodeweb_viewer.kill.$id, - method: viewer_schemas.opengeodeweb_viewer.kill.$id, - }), - ) - resolve() - } - }) - socket.on("close", () => { - console.log("Disconnected from WebSocket server") - resolve() - }) - socket.on("error", (error) => { - console.error("WebSocket error:", error) - resolve() - }) - }), - { - milliseconds: 500, - message: "Failed to kill viewer", - }, - ) -} - function kill_viewer(viewer_port) { async function do_kill() { new Promise((resolve) => { From deb97a2adf3c2c3fd38d17a91355782a3ae01273 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Thu, 26 Feb 2026 09:57:11 +0100 Subject: [PATCH 6/9] missing return --- app/utils/local.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/utils/local.js b/app/utils/local.js index 9f81a259..a5ca91be 100644 --- a/app/utils/local.js +++ b/app/utils/local.js @@ -217,8 +217,8 @@ function kill_back(back_port) { } function kill_viewer(viewer_port) { - async function do_kill() { - new Promise((resolve) => { + function do_kill() { + return new Promise((resolve) => { const socket = new WebSocket("ws://localhost:" + viewer_port + "/ws") socket.on("open", () => { console.log("Connected to WebSocket server") @@ -233,7 +233,6 @@ function kill_viewer(viewer_port) { socket.on("message", (data) => { const message = data.toString() console.log("Received from server:", message) - if (message.includes("hello")) { socket.send( JSON.stringify({ @@ -254,7 +253,6 @@ function kill_viewer(viewer_port) { }) }) } - return pTimeout(do_kill(), { milliseconds: 5000, message: "Failed to kill viewer", From c601512ac828b118acadb988e5c6dbc3c3644d36 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Thu, 26 Feb 2026 10:42:25 +0100 Subject: [PATCH 7/9] socket.close() --- app/utils/local.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/utils/local.js b/app/utils/local.js index a5ca91be..c182b88a 100644 --- a/app/utils/local.js +++ b/app/utils/local.js @@ -240,6 +240,7 @@ function kill_viewer(viewer_port) { method: viewer_schemas.opengeodeweb_viewer.kill.$id, }), ) + socket.close() resolve() } }) @@ -249,6 +250,7 @@ function kill_viewer(viewer_port) { }) socket.on("error", (error) => { console.error("WebSocket error:", error) + socket.close() resolve() }) }) From 621fc852e92601b9ef9ee1c12b3547c74609dbf0 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Thu, 26 Feb 2026 10:42:50 +0100 Subject: [PATCH 8/9] test --- app/utils/local.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/utils/local.js b/app/utils/local.js index c182b88a..e5918d40 100644 --- a/app/utils/local.js +++ b/app/utils/local.js @@ -241,7 +241,6 @@ function kill_viewer(viewer_port) { }), ) socket.close() - resolve() } }) socket.on("close", () => { From b42c5f984af856ab78b71a08d01e644ae44f2eb5 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Thu, 26 Feb 2026 11:11:41 +0100 Subject: [PATCH 9/9] application.exit --- app/utils/local.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/utils/local.js b/app/utils/local.js index e5918d40..fd3183b2 100644 --- a/app/utils/local.js +++ b/app/utils/local.js @@ -236,11 +236,12 @@ function kill_viewer(viewer_port) { if (message.includes("hello")) { socket.send( JSON.stringify({ - id: viewer_schemas.opengeodeweb_viewer.kill.$id, - method: viewer_schemas.opengeodeweb_viewer.kill.$id, + id: "application.exit", + method: "application.exit", }), ) socket.close() + resolve() } }) socket.on("close", () => {