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\//] }, + }, +});