From 5222424e06dc230b014ef32023fc3fd7fb7eb8d1 Mon Sep 17 00:00:00 2001
From: Isaac Hill <71404865+isaachilly@users.noreply.github.com>
Date: Fri, 23 Oct 2026 16:00:29 +0200
Subject: [PATCH] Bundle ILG frontend with Vite and serve dist
---
InfoLogger/.dockerignore | 3 +
InfoLogger/.gitignore | 1 +
InfoLogger/.npmignore | 11 +
InfoLogger/README.md | 14 +-
InfoLogger/docker-compose.dev.yaml | 12 +
InfoLogger/eslint.config.js | 1 +
InfoLogger/{public => }/index.html | 9 +-
InfoLogger/index.js | 13 +-
InfoLogger/package-lock.json | 752 +++++++++++++++++-
InfoLogger/package.json | 8 +-
.../public/{common => }/moment-timezone.js | 0
InfoLogger/public/{common => }/moment.js | 0
InfoLogger/{public => src}/Model.js | 0
.../{public => src}/about/about.component.js | 0
InfoLogger/{public => src}/app.css | 0
InfoLogger/{public => src}/common/Timezone.js | 0
.../common/bkpLogEntryRedirectButton.js | 0
.../{public => src}/common/datePicker.js | 0
.../{public => src}/common/errorComponent.js | 0
.../{public => src}/common/jsonFetch.js | 0
InfoLogger/{public => src}/common/jsonPost.js | 0
.../common/loadingAnimation.js | 0
InfoLogger/{public => src}/common/utils.js | 0
.../constants/button-states.const.js | 0
.../constants/log-level-filters.const.js | 0
.../{public => src}/constants/mode.const.js | 0
.../constants/text-filter-operators.const.js | 0
.../{public => src}/constants/visual.const.js | 0
InfoLogger/{public => src}/index.js | 2 +-
InfoLogger/{public => src}/log/ContextMenu.js | 0
InfoLogger/{public => src}/log/Log.js | 0
InfoLogger/{public => src}/log/Zoom.js | 0
.../{public => src}/log/cellContextMenu.js | 0
InfoLogger/{public => src}/log/commandLogs.js | 0
InfoLogger/{public => src}/log/inspector.js | 0
.../{public => src}/log/severityUtils.js | 0
InfoLogger/{public => src}/log/statusBar.js | 0
.../{public => src}/log/tableColGroup.js | 0
.../{public => src}/log/tableLogsContent.js | 0
.../{public => src}/log/tableLogsHeader.js | 0
.../{public => src}/log/tableLogsScrollMap.js | 0
.../{public => src}/logFilter/LogFilter.js | 3 +-
.../logFilter/commandFilters.js | 0
.../{public => src}/logFilter/tableFilters.js | 0
.../services/ConfigurationService.js | 0
.../externalRouting/getBkpLogEntryFormUrl.js | 0
InfoLogger/{public => src}/table/Table.js | 0
InfoLogger/{public => src}/view.js | 0
InfoLogger/test/public/query-mode-mocha.js | 2 +-
InfoLogger/test/public/zoom.mocha.js | 8 +-
InfoLogger/vite.config.mjs | 20 +
51 files changed, 833 insertions(+), 26 deletions(-)
create mode 100644 InfoLogger/.npmignore
rename InfoLogger/{public => }/index.html (74%)
rename InfoLogger/public/{common => }/moment-timezone.js (100%)
rename InfoLogger/public/{common => }/moment.js (100%)
rename InfoLogger/{public => src}/Model.js (100%)
rename InfoLogger/{public => src}/about/about.component.js (100%)
rename InfoLogger/{public => src}/app.css (100%)
rename InfoLogger/{public => src}/common/Timezone.js (100%)
rename InfoLogger/{public => src}/common/bkpLogEntryRedirectButton.js (100%)
rename InfoLogger/{public => src}/common/datePicker.js (100%)
rename InfoLogger/{public => src}/common/errorComponent.js (100%)
rename InfoLogger/{public => src}/common/jsonFetch.js (100%)
rename InfoLogger/{public => src}/common/jsonPost.js (100%)
rename InfoLogger/{public => src}/common/loadingAnimation.js (100%)
rename InfoLogger/{public => src}/common/utils.js (100%)
rename InfoLogger/{public => src}/constants/button-states.const.js (100%)
rename InfoLogger/{public => src}/constants/log-level-filters.const.js (100%)
rename InfoLogger/{public => src}/constants/mode.const.js (100%)
rename InfoLogger/{public => src}/constants/text-filter-operators.const.js (100%)
rename InfoLogger/{public => src}/constants/visual.const.js (100%)
rename InfoLogger/{public => src}/index.js (95%)
rename InfoLogger/{public => src}/log/ContextMenu.js (100%)
rename InfoLogger/{public => src}/log/Log.js (100%)
rename InfoLogger/{public => src}/log/Zoom.js (100%)
rename InfoLogger/{public => src}/log/cellContextMenu.js (100%)
rename InfoLogger/{public => src}/log/commandLogs.js (100%)
rename InfoLogger/{public => src}/log/inspector.js (100%)
rename InfoLogger/{public => src}/log/severityUtils.js (100%)
rename InfoLogger/{public => src}/log/statusBar.js (100%)
rename InfoLogger/{public => src}/log/tableColGroup.js (100%)
rename InfoLogger/{public => src}/log/tableLogsContent.js (100%)
rename InfoLogger/{public => src}/log/tableLogsHeader.js (100%)
rename InfoLogger/{public => src}/log/tableLogsScrollMap.js (100%)
rename InfoLogger/{public => src}/logFilter/LogFilter.js (98%)
rename InfoLogger/{public => src}/logFilter/commandFilters.js (100%)
rename InfoLogger/{public => src}/logFilter/tableFilters.js (100%)
rename InfoLogger/{public => src}/services/ConfigurationService.js (100%)
rename InfoLogger/{public => src}/services/externalRouting/getBkpLogEntryFormUrl.js (100%)
rename InfoLogger/{public => src}/table/Table.js (100%)
rename InfoLogger/{public => src}/view.js (100%)
create mode 100644 InfoLogger/vite.config.mjs
diff --git a/InfoLogger/.dockerignore b/InfoLogger/.dockerignore
index 3476a2a3bb..82c1be9e7c 100644
--- a/InfoLogger/.dockerignore
+++ b/InfoLogger/.dockerignore
@@ -5,7 +5,10 @@
!lib/
!package*.json
!public/
+!src/
+!index.html
!index.js
+!vite.config.mjs
!test/
!eslint.config.js
!config.js
diff --git a/InfoLogger/.gitignore b/InfoLogger/.gitignore
index ebfc1ab9a7..15a49435a0 100644
--- a/InfoLogger/.gitignore
+++ b/InfoLogger/.gitignore
@@ -7,5 +7,6 @@ node_modules
coverage*
db.json
testdb.json
+dist
error.log
\ No newline at end of file
diff --git a/InfoLogger/.npmignore b/InfoLogger/.npmignore
new file mode 100644
index 0000000000..6ed091a0a1
--- /dev/null
+++ b/InfoLogger/.npmignore
@@ -0,0 +1,11 @@
+config.js
+*~
+.DS_Store
+cert/*
+node_modules
+.nyc*
+coverage*
+db.json
+testdb.json
+
+error.log
diff --git a/InfoLogger/README.md b/InfoLogger/README.md
index 4b0aa2c5f3..0f23f7fce0 100644
--- a/InfoLogger/README.md
+++ b/InfoLogger/README.md
@@ -104,12 +104,14 @@ Run `npm run docker:cleanup` to remove all containers created by the above and t
## Frontend
-Static files served from [public/](public/); no build step. A lightweight MVC app on top of `@aliceo2/web-ui`.
-
-- **App shell** - [index.html](public/index.html) bootstraps [index.js](public/index.js), which mounts the top-level [Model](public/Model.js) and renders [view.js](public/view.js).
-- **Sub-models** - [log/Log.js](public/log/Log.js) drives the log table (rendering in `tableLogs*.js`, inspector, status bar, context menu, zoom, etc.). [logFilter/LogFilter.js](public/logFilter/LogFilter.js) owns the filter inputs. [table/Table.js](public/table/Table.js) holds shared table state.
-- **Supporting code** - [services/](public/services/), [constants/](public/constants/), [common/](public/common/), [about/](public/about/) (about component).
-- **Styles** - [app.css](public/app.css), layered on the framework's [bootstrap.css](../Framework/Frontend/css/src/bootstrap.css).
+Sources live in [src/](src/) and are bundled by [Vite](https://vite.dev/) ([vite.config.mjs](vite.config.mjs)). A lightweight MVC app on top of `@aliceo2/web-ui`.
+
+- **Build & serving** - `npm run build` bundles the frontend into `dist/`, which [index.js](index.js) serves (`npm run mocha` builds first).
+- **App shell** - [index.html](index.html) bootstraps [src/index.js](src/index.js), which mounts the top-level [Model](src/Model.js) and renders [view.js](src/view.js).
+- **Sub-models** - [log/Log.js](src/log/Log.js) drives the log table (rendering in `tableLogs*.js`, inspector, status bar, context menu, zoom, etc.). [logFilter/LogFilter.js](src/logFilter/LogFilter.js) owns the filter inputs. [table/Table.js](src/table/Table.js) holds shared table state.
+- **Supporting code** - [services/](src/services/), [constants/](src/constants/), [common/](src/common/), [about/](src/about/) (about component).
+- **Styles** - [app.css](src/app.css), layered on the framework's [bootstrap.css](../Framework/Frontend/css/src/bootstrap.css).
+- **Static assets** - [public/](public/) holds files copied as-is into the bundle (vendored `moment` / `moment-timezone`).
## Local Development
diff --git a/InfoLogger/docker-compose.dev.yaml b/InfoLogger/docker-compose.dev.yaml
index b98754263f..001329a0c4 100644
--- a/InfoLogger/docker-compose.dev.yaml
+++ b/InfoLogger/docker-compose.dev.yaml
@@ -21,6 +21,18 @@ services:
read_only: true
source: ./public
target: /home/node/app/public
+ - type: bind
+ read_only: true
+ source: ./src
+ target: /home/node/app/src
+ - type: bind
+ read_only: true
+ source: ./index.html
+ target: /home/node/app/index.html
+ - type: bind
+ read_only: true
+ source: ./vite.config.mjs
+ target: /home/node/app/vite.config.mjs
- type: bind
read_only: true
source: ./config.js
diff --git a/InfoLogger/eslint.config.js b/InfoLogger/eslint.config.js
index c9aa70ccba..b11dfccfd6 100644
--- a/InfoLogger/eslint.config.js
+++ b/InfoLogger/eslint.config.js
@@ -25,6 +25,7 @@ module.exports = [
'tmp/',
'.nyc_output/',
'coverage/',
+ 'dist/',
'docker/database/',
],
},
diff --git a/InfoLogger/public/index.html b/InfoLogger/index.html
similarity index 74%
rename from InfoLogger/public/index.html
rename to InfoLogger/index.html
index 95a76decec..93279c4c7a 100644
--- a/InfoLogger/public/index.html
+++ b/InfoLogger/index.html
@@ -2,7 +2,8 @@
InfoLogger - Alice O2 UI
-
+
+
@@ -19,6 +20,6 @@
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/InfoLogger/index.js b/InfoLogger/index.js
index b46cbe2261..9a87605b2e 100644
--- a/InfoLogger/index.js
+++ b/InfoLogger/index.js
@@ -12,8 +12,9 @@
* or submit itself to any jurisdiction.
*/
+const fs = require('fs');
const path = require('path');
-const { HttpServer, WebSocket } = require('@aliceo2/web-ui');
+const { HttpServer, WebSocket, LogManager } = require('@aliceo2/web-ui');
const config = require('./lib/configProvider.js');
const api = require('./lib/api.js');
@@ -24,8 +25,16 @@ const api = require('./lib/api.js');
const http = new HttpServer(config.http, config.jwt, config.openId);
const ws = new WebSocket(http);
+const logger = LogManager.getLogger(`${process.env.npm_config_log_label ?? 'ilg'}/index`);
+
// Expose application to /
-http.addStaticPath(path.join(__dirname, 'public'));
+const distPath = path.join(__dirname, 'dist');
+if (!fs.existsSync(distPath)) {
+ logger.errorMessage(`Frontend build not found at ${distPath}, run "npm run build" first`);
+} else {
+ logger.infoMessage(`Serving frontend files from ${distPath}`);
+}
+http.addStaticPath(distPath);
// Attach services to web server
api.attachTo(http, ws);
diff --git a/InfoLogger/package-lock.json b/InfoLogger/package-lock.json
index 6f65adaefe..fc590e8b18 100644
--- a/InfoLogger/package-lock.json
+++ b/InfoLogger/package-lock.json
@@ -25,7 +25,8 @@
"nodemon": "3.1.14",
"nyc": "18.0.0",
"puppeteer": "25.14.0",
- "sinon": "22.1.0"
+ "sinon": "22.1.0",
+ "vite": "8.3.5"
},
"engines": {
"node": ">= 22.x"
@@ -765,6 +766,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@oxc-project/types": {
+ "version": "0.155.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.155.0.tgz",
+ "integrity": "sha512-SeE8JPwW1xs1tHeNycjUtUBdhorRa8o4jlvjwk49R7/Z291i+4DQa7JJIgOm/TaYQZx+QrPQbVJ/9c8dMIZN8Q==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/oxc-project"
+ }
+ },
"node_modules/@puppeteer/browsers": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.2.5.tgz",
@@ -794,6 +805,286 @@
}
}
},
+ "node_modules/@rolldown/binding-android-arm-eabi": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.15.tgz",
+ "integrity": "sha512-aLcgK9gIJ3YRvrrtfSBbRa27F5WrpiTaPulnFpsHPxpUHgFlSgnU4854MHwoRGEBhfRJDWCS2WQ7lIjskE9Olw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.15.tgz",
+ "integrity": "sha512-xD7DdZCrbThKuxNg7ooQmvp07ys4J/pnSEMTG3/OdOWl6daC67m/Q4fL78sRHMxTH/N4fGUbYhcPM0MF5WFHkg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.15.tgz",
+ "integrity": "sha512-m2WuQ6r0B4OTYxyPpNLtXaMRbRDUbG8YQV2Q3KTdSSK8Th6KHCnC8jVCJt8bvYeSB5WivkkNbc85mKadaSdOxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.15.tgz",
+ "integrity": "sha512-5RtnsHM36nodM9WbMy+zip0LGS/G+y5wro5RHrpOlr4ac24+1zSi9kiV2MP1myZeZ/ifEHfulQcWjnAXzc2C2A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.15.tgz",
+ "integrity": "sha512-g3l09pyFqhu+135JKkbkwiKGQmwU5hUMUPJ4VdBADvuqR8d33L6H578rh8m7rtxbdp+VmX/+nzI7nvhSZlzpUQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.15.tgz",
+ "integrity": "sha512-nIe3VugI97nGQtspPxDqA4sXMUpeiocKIP/CqpY/u/vgbT+alX+cVxu1C/oVBPKg4feNTmYovE91v4DgXvXNwQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.15.tgz",
+ "integrity": "sha512-iTBjXx+B5QSvgI89lJfmqh4wTh8NabR1YZIIN3hNx4zSG0EVfVqkOvLulNpG4251pbd6/IAmZ/LefVk1Y4rPhw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.15.tgz",
+ "integrity": "sha512-uN26XOnVR7rqQupG3V9oAG2EGGatWjcJHOeDOHUFCh4TBWmP2tHTFoVN13aYbwfm0aHqJAEmcwhAu6sooIjfqQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.15.tgz",
+ "integrity": "sha512-9nWkcdd+H+XhaA3fQIwpHnKIrfx/PQ6rO0pivr78Og07tXlUlctBBJoEYLPfhTmCR/QxEVdn6uPjHV5SymPhdw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-s390x-gnu": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.15.tgz",
+ "integrity": "sha512-Ggh0ciFjLwIusLSLz7LZYEaGdxOAUJXI+Qu5JCbhPJJHEt8vP+IjRATTJheiJsdzzTYgUiHUiw3X1Ea3ZpMBdA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.15.tgz",
+ "integrity": "sha512-FHg60rS6DBePAYZ9X9F67x+JObFdmgn6tupA1C/a3B+CufFmTD4mX+e8M75tCiAO3foR/6xwVBI0KQiI7sn/rw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.15.tgz",
+ "integrity": "sha512-/cvV/7v5VGz/moiz0XKRj2dE8DzsKyhIu1KpOvJGPjRywg3yscON889UGvAe8zfiJLHup7VLjBduoGWi3HusWQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.15.tgz",
+ "integrity": "sha512-MyzC5Hrv/sm+Z7TSGKP/j8001RO2xQm1zOpCNVL4j0cY/VhBZviludA2YFQ7i4lH6ZAXxQm0lcMdBzM+99mE7w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.15.tgz",
+ "integrity": "sha512-+PgYiS+AH5omy6L45ZLxybasauJaj3M8buoT83D+nzPmCayXlxUV9hydhciCKVyIg0B/v0BtXPDE1uGqNwCPpg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.15.tgz",
+ "integrity": "sha512-HFZd2QNQYn1JbIi+Hpd7H+r/lkWxcfIu28nirZ6eCn2LafuvmExMlb/P96Sfx5tf7pPArw39IdhmCF8vmV+NhQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz",
+ "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@sindresorhus/base62": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz",
@@ -1840,6 +2131,16 @@
"npm": "1.2.8000 || >= 1.4.16"
}
},
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/devtools-protocol": {
"version": "0.0.1696802",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1696802.tgz",
@@ -3307,6 +3608,279 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/lightningcss": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
+ "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-android-arm64": "1.33.0",
+ "lightningcss-darwin-arm64": "1.33.0",
+ "lightningcss-darwin-x64": "1.33.0",
+ "lightningcss-freebsd-x64": "1.33.0",
+ "lightningcss-linux-arm-gnueabihf": "1.33.0",
+ "lightningcss-linux-arm64-gnu": "1.33.0",
+ "lightningcss-linux-arm64-musl": "1.33.0",
+ "lightningcss-linux-x64-gnu": "1.33.0",
+ "lightningcss-linux-x64-musl": "1.33.0",
+ "lightningcss-win32-arm64-msvc": "1.33.0",
+ "lightningcss-win32-x64-msvc": "1.33.0"
+ }
+ },
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz",
+ "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz",
+ "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz",
+ "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz",
+ "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz",
+ "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz",
+ "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz",
+ "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz",
+ "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz",
+ "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz",
+ "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz",
+ "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
"node_modules/lilconfig": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
@@ -3671,6 +4245,25 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"inBundle": true
},
+ "node_modules/nanoid": {
+ "version": "3.3.20",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
+ "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -4303,9 +4896,9 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4379,6 +4972,35 @@
"node": ">=8"
}
},
+ "node_modules/postcss": {
+ "version": "8.5.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.31.tgz",
+ "integrity": "sha512-YUbWYCgErwnMAVkjUnYa+KlMBzGpHwiIt/DE7f0G33AuX2LH9UcTk6KgWxd3zRU+pN3u/C+Xl3EnMLM4Hea7Sg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.20",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -4647,6 +5269,40 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/rolldown": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.15.tgz",
+ "integrity": "sha512-6odND+fel5zVw3I4Yc2e69gvguDnX0CAAGiNDZSq4ik5WUcaLrkD2GLuog0XcODbor31hZ5ayEMgVDno+KPV5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@oxc-project/types": "=0.155.0",
+ "@rolldown/pluginutils": "^1.0.0"
+ },
+ "bin": {
+ "rolldown": "bin/cli.mjs"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "optionalDependencies": {
+ "@rolldown/binding-android-arm-eabi": "1.2.15",
+ "@rolldown/binding-android-arm64": "1.2.15",
+ "@rolldown/binding-darwin-arm64": "1.2.15",
+ "@rolldown/binding-darwin-x64": "1.2.15",
+ "@rolldown/binding-freebsd-x64": "1.2.15",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.2.15",
+ "@rolldown/binding-linux-arm64-gnu": "1.2.15",
+ "@rolldown/binding-linux-arm64-musl": "1.2.15",
+ "@rolldown/binding-linux-ppc64-gnu": "1.2.15",
+ "@rolldown/binding-linux-s390x-gnu": "1.2.15",
+ "@rolldown/binding-linux-x64-gnu": "1.2.15",
+ "@rolldown/binding-linux-x64-musl": "1.2.15",
+ "@rolldown/binding-openharmony-arm64": "1.2.15",
+ "@rolldown/binding-win32-arm64-msvc": "1.2.15",
+ "@rolldown/binding-win32-x64-msvc": "1.2.15"
+ }
+ },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -4919,6 +5575,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/source-map-js": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
+ "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/spawn-wrap": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-3.0.0.tgz",
@@ -5343,6 +6009,84 @@
"node": ">= 0.8"
}
},
+ "node_modules/vite": {
+ "version": "8.3.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.5.tgz",
+ "integrity": "sha512-z1YpjieJ9g0ebTmQpLBv/oq9E3F9EIlOe+7LahW8SrE3LTiG3udBRUXQOlYXP9b+IC2q2phHeVxj9xGlw34OEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lightningcss": "^1.33.0",
+ "picomatch": "^4.0.7",
+ "postcss": "^8.5.30",
+ "rolldown": "~1.2.14",
+ "tinyglobby": "^0.2.17"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "@vitejs/devtools": "^0.7.1 || ^0.8.0",
+ "esbuild": "^0.27.0 || ^0.28.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "@vitejs/devtools": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
"node_modules/webdriver-bidi-protocol": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-1.0.1.tgz",
diff --git a/InfoLogger/package.json b/InfoLogger/package.json
index 0c89358434..7a79f439f1 100644
--- a/InfoLogger/package.json
+++ b/InfoLogger/package.json
@@ -21,11 +21,12 @@
"lint": "eslint --config eslint.config.js",
"lint:fix": "npm run lint -- --fix",
"test": "npm run lint && npm run mocha",
- "mocha": "mocha --exit $(find test -name 'mocha-*.js')",
+ "build": "vite build",
+ "mocha": "npm run build && mocha --exit $(find test -name 'mocha-*.js')",
"coverage": "nyc npm test && npm run coverage:report",
"coverage:report": "nyc report --reporter=html --reporter=json",
"start": "node index.js",
- "start:dev": "nodemon --inspect --watch index.js --watch lib --watch config.js index.js",
+ "start:dev": "vite build && nodemon --inspect --watch index.js --watch lib --watch config.js index.js",
"simul": "node test/live-simulator/runInfoLoggerServer.js",
"seed": "node docker/database/seed-messages.js",
"docker:dev": "docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up --build",
@@ -50,7 +51,8 @@
"nodemon": "3.1.14",
"nyc": "18.0.0",
"puppeteer": "25.14.0",
- "sinon": "22.1.0"
+ "sinon": "22.1.0",
+ "vite": "8.3.5"
},
"bundleDependencies": [
"@aliceo2/web-ui"
diff --git a/InfoLogger/public/common/moment-timezone.js b/InfoLogger/public/moment-timezone.js
similarity index 100%
rename from InfoLogger/public/common/moment-timezone.js
rename to InfoLogger/public/moment-timezone.js
diff --git a/InfoLogger/public/common/moment.js b/InfoLogger/public/moment.js
similarity index 100%
rename from InfoLogger/public/common/moment.js
rename to InfoLogger/public/moment.js
diff --git a/InfoLogger/public/Model.js b/InfoLogger/src/Model.js
similarity index 100%
rename from InfoLogger/public/Model.js
rename to InfoLogger/src/Model.js
diff --git a/InfoLogger/public/about/about.component.js b/InfoLogger/src/about/about.component.js
similarity index 100%
rename from InfoLogger/public/about/about.component.js
rename to InfoLogger/src/about/about.component.js
diff --git a/InfoLogger/public/app.css b/InfoLogger/src/app.css
similarity index 100%
rename from InfoLogger/public/app.css
rename to InfoLogger/src/app.css
diff --git a/InfoLogger/public/common/Timezone.js b/InfoLogger/src/common/Timezone.js
similarity index 100%
rename from InfoLogger/public/common/Timezone.js
rename to InfoLogger/src/common/Timezone.js
diff --git a/InfoLogger/public/common/bkpLogEntryRedirectButton.js b/InfoLogger/src/common/bkpLogEntryRedirectButton.js
similarity index 100%
rename from InfoLogger/public/common/bkpLogEntryRedirectButton.js
rename to InfoLogger/src/common/bkpLogEntryRedirectButton.js
diff --git a/InfoLogger/public/common/datePicker.js b/InfoLogger/src/common/datePicker.js
similarity index 100%
rename from InfoLogger/public/common/datePicker.js
rename to InfoLogger/src/common/datePicker.js
diff --git a/InfoLogger/public/common/errorComponent.js b/InfoLogger/src/common/errorComponent.js
similarity index 100%
rename from InfoLogger/public/common/errorComponent.js
rename to InfoLogger/src/common/errorComponent.js
diff --git a/InfoLogger/public/common/jsonFetch.js b/InfoLogger/src/common/jsonFetch.js
similarity index 100%
rename from InfoLogger/public/common/jsonFetch.js
rename to InfoLogger/src/common/jsonFetch.js
diff --git a/InfoLogger/public/common/jsonPost.js b/InfoLogger/src/common/jsonPost.js
similarity index 100%
rename from InfoLogger/public/common/jsonPost.js
rename to InfoLogger/src/common/jsonPost.js
diff --git a/InfoLogger/public/common/loadingAnimation.js b/InfoLogger/src/common/loadingAnimation.js
similarity index 100%
rename from InfoLogger/public/common/loadingAnimation.js
rename to InfoLogger/src/common/loadingAnimation.js
diff --git a/InfoLogger/public/common/utils.js b/InfoLogger/src/common/utils.js
similarity index 100%
rename from InfoLogger/public/common/utils.js
rename to InfoLogger/src/common/utils.js
diff --git a/InfoLogger/public/constants/button-states.const.js b/InfoLogger/src/constants/button-states.const.js
similarity index 100%
rename from InfoLogger/public/constants/button-states.const.js
rename to InfoLogger/src/constants/button-states.const.js
diff --git a/InfoLogger/public/constants/log-level-filters.const.js b/InfoLogger/src/constants/log-level-filters.const.js
similarity index 100%
rename from InfoLogger/public/constants/log-level-filters.const.js
rename to InfoLogger/src/constants/log-level-filters.const.js
diff --git a/InfoLogger/public/constants/mode.const.js b/InfoLogger/src/constants/mode.const.js
similarity index 100%
rename from InfoLogger/public/constants/mode.const.js
rename to InfoLogger/src/constants/mode.const.js
diff --git a/InfoLogger/public/constants/text-filter-operators.const.js b/InfoLogger/src/constants/text-filter-operators.const.js
similarity index 100%
rename from InfoLogger/public/constants/text-filter-operators.const.js
rename to InfoLogger/src/constants/text-filter-operators.const.js
diff --git a/InfoLogger/public/constants/visual.const.js b/InfoLogger/src/constants/visual.const.js
similarity index 100%
rename from InfoLogger/public/constants/visual.const.js
rename to InfoLogger/src/constants/visual.const.js
diff --git a/InfoLogger/public/index.js b/InfoLogger/src/index.js
similarity index 95%
rename from InfoLogger/public/index.js
rename to InfoLogger/src/index.js
index 7f56cad9e9..3ff5b7ed60 100644
--- a/InfoLogger/public/index.js
+++ b/InfoLogger/src/index.js
@@ -12,7 +12,7 @@
* or submit itself to any jurisdiction.
*/
-import sessionService from '/js/src/sessionService.js';
+import { sessionService } from '/js/src/index.js';
sessionService.loadAndHideParameters();
// Expose sessionService to interact with it the browser's console
diff --git a/InfoLogger/public/log/ContextMenu.js b/InfoLogger/src/log/ContextMenu.js
similarity index 100%
rename from InfoLogger/public/log/ContextMenu.js
rename to InfoLogger/src/log/ContextMenu.js
diff --git a/InfoLogger/public/log/Log.js b/InfoLogger/src/log/Log.js
similarity index 100%
rename from InfoLogger/public/log/Log.js
rename to InfoLogger/src/log/Log.js
diff --git a/InfoLogger/public/log/Zoom.js b/InfoLogger/src/log/Zoom.js
similarity index 100%
rename from InfoLogger/public/log/Zoom.js
rename to InfoLogger/src/log/Zoom.js
diff --git a/InfoLogger/public/log/cellContextMenu.js b/InfoLogger/src/log/cellContextMenu.js
similarity index 100%
rename from InfoLogger/public/log/cellContextMenu.js
rename to InfoLogger/src/log/cellContextMenu.js
diff --git a/InfoLogger/public/log/commandLogs.js b/InfoLogger/src/log/commandLogs.js
similarity index 100%
rename from InfoLogger/public/log/commandLogs.js
rename to InfoLogger/src/log/commandLogs.js
diff --git a/InfoLogger/public/log/inspector.js b/InfoLogger/src/log/inspector.js
similarity index 100%
rename from InfoLogger/public/log/inspector.js
rename to InfoLogger/src/log/inspector.js
diff --git a/InfoLogger/public/log/severityUtils.js b/InfoLogger/src/log/severityUtils.js
similarity index 100%
rename from InfoLogger/public/log/severityUtils.js
rename to InfoLogger/src/log/severityUtils.js
diff --git a/InfoLogger/public/log/statusBar.js b/InfoLogger/src/log/statusBar.js
similarity index 100%
rename from InfoLogger/public/log/statusBar.js
rename to InfoLogger/src/log/statusBar.js
diff --git a/InfoLogger/public/log/tableColGroup.js b/InfoLogger/src/log/tableColGroup.js
similarity index 100%
rename from InfoLogger/public/log/tableColGroup.js
rename to InfoLogger/src/log/tableColGroup.js
diff --git a/InfoLogger/public/log/tableLogsContent.js b/InfoLogger/src/log/tableLogsContent.js
similarity index 100%
rename from InfoLogger/public/log/tableLogsContent.js
rename to InfoLogger/src/log/tableLogsContent.js
diff --git a/InfoLogger/public/log/tableLogsHeader.js b/InfoLogger/src/log/tableLogsHeader.js
similarity index 100%
rename from InfoLogger/public/log/tableLogsHeader.js
rename to InfoLogger/src/log/tableLogsHeader.js
diff --git a/InfoLogger/public/log/tableLogsScrollMap.js b/InfoLogger/src/log/tableLogsScrollMap.js
similarity index 100%
rename from InfoLogger/public/log/tableLogsScrollMap.js
rename to InfoLogger/src/log/tableLogsScrollMap.js
diff --git a/InfoLogger/public/logFilter/LogFilter.js b/InfoLogger/src/logFilter/LogFilter.js
similarity index 98%
rename from InfoLogger/public/logFilter/LogFilter.js
rename to InfoLogger/src/logFilter/LogFilter.js
index 61e0bfe7e0..340f3dacbf 100644
--- a/InfoLogger/public/logFilter/LogFilter.js
+++ b/InfoLogger/src/logFilter/LogFilter.js
@@ -380,7 +380,8 @@ export default class LogFilter extends Observable {
const criteriasJSON = JSON.stringify(this.criterias);
const functionAsString = filterFunction.toString();
- const functionWithCriterias = functionAsString.replace('\'DATA_PLACEHOLDER\'', criteriasJSON);
+ // Minifiers can rewrite the placeholder's quotes so match any quote style
+ const functionWithCriterias = functionAsString.replace(/(['"`])DATA_PLACEHOLDER\1/, criteriasJSON);
return functionWithCriterias;
}
diff --git a/InfoLogger/public/logFilter/commandFilters.js b/InfoLogger/src/logFilter/commandFilters.js
similarity index 100%
rename from InfoLogger/public/logFilter/commandFilters.js
rename to InfoLogger/src/logFilter/commandFilters.js
diff --git a/InfoLogger/public/logFilter/tableFilters.js b/InfoLogger/src/logFilter/tableFilters.js
similarity index 100%
rename from InfoLogger/public/logFilter/tableFilters.js
rename to InfoLogger/src/logFilter/tableFilters.js
diff --git a/InfoLogger/public/services/ConfigurationService.js b/InfoLogger/src/services/ConfigurationService.js
similarity index 100%
rename from InfoLogger/public/services/ConfigurationService.js
rename to InfoLogger/src/services/ConfigurationService.js
diff --git a/InfoLogger/public/services/externalRouting/getBkpLogEntryFormUrl.js b/InfoLogger/src/services/externalRouting/getBkpLogEntryFormUrl.js
similarity index 100%
rename from InfoLogger/public/services/externalRouting/getBkpLogEntryFormUrl.js
rename to InfoLogger/src/services/externalRouting/getBkpLogEntryFormUrl.js
diff --git a/InfoLogger/public/table/Table.js b/InfoLogger/src/table/Table.js
similarity index 100%
rename from InfoLogger/public/table/Table.js
rename to InfoLogger/src/table/Table.js
diff --git a/InfoLogger/public/view.js b/InfoLogger/src/view.js
similarity index 100%
rename from InfoLogger/public/view.js
rename to InfoLogger/src/view.js
diff --git a/InfoLogger/test/public/query-mode-mocha.js b/InfoLogger/test/public/query-mode-mocha.js
index 0435a81937..d1601d75d1 100644
--- a/InfoLogger/test/public/query-mode-mocha.js
+++ b/InfoLogger/test/public/query-mode-mocha.js
@@ -186,7 +186,7 @@ describe('Query Mode test-suite', async () => {
before(async () => {
({
TEXT_FILTER_OPERATORS: textFilterOperators,
- } = await import('../../public/constants/text-filter-operators.const.js'));
+ } = await import('../../src/constants/text-filter-operators.const.js'));
});
it('should ask for confirmation when no text filters are set and not execute query when user cancels', async () => {
diff --git a/InfoLogger/test/public/zoom.mocha.js b/InfoLogger/test/public/zoom.mocha.js
index 5c86a52f59..920d2afb0a 100644
--- a/InfoLogger/test/public/zoom.mocha.js
+++ b/InfoLogger/test/public/zoom.mocha.js
@@ -36,8 +36,8 @@ describe('Zoom test-suite', async () => {
});
assert.strictEqual(result.zoomLevel, 1, 'default zoom level should be 1');
- assert.strictEqual(result.fontSize, '0.7rem', 'default font size should be 0.7rem');
- assert.strictEqual(result.rowHeight, '0.91rem', 'default row height should be 0.91rem');
+ assert.match(result.fontSize, /^0*\.70*rem$/, 'default font size should be 0.7rem');
+ assert.match(result.rowHeight, /^0*\.910*rem$/, 'default row height should be 0.91rem');
});
});
@@ -252,8 +252,8 @@ describe('Zoom test-suite', async () => {
});
assert.strictEqual(result.zoomLevel, 1, 'zoom level should reset to 1');
- assert.strictEqual(result.fontSize, '0.700rem', 'font size should reset to default');
- assert.strictEqual(result.rowHeight, '0.910rem', 'row height should reset to default');
+ assert.match(result.fontSize, /^0*\.70*rem$/, 'font size should reset to default');
+ assert.match(result.rowHeight, /^0*\.910*rem$/, 'row height should reset to default');
});
});
diff --git a/InfoLogger/vite.config.mjs b/InfoLogger/vite.config.mjs
new file mode 100644
index 0000000000..077e62899a
--- /dev/null
+++ b/InfoLogger/vite.config.mjs
@@ -0,0 +1,20 @@
+import { createRequire } from 'node:module';
+import path from 'node:path';
+import { defineConfig } from 'vite';
+
+const webUi = path.resolve(import.meta.dirname, 'node_modules/@aliceo2/web-ui');
+const requireFromWebUi = createRequire(path.join(webUi, 'package.json'));
+
+export default defineConfig({
+ resolve: {
+ alias: {
+ '/js/src': path.join(webUi, 'Frontend/js/src'),
+ '/mithril': path.dirname(requireFromWebUi.resolve('mithril')),
+ },
+ },
+ build: {
+ outDir: 'dist',
+ emptyOutDir: true,
+ rolldownOptions: { external: [/^\/mithril\//] },
+ },
+});