Files
Petri Järvisalo 798c85e70f prepare 1.7.1: Refactor build process to use nexe and update dependencies
- Updated package.json to replace pkg with nexe for building executables.
- Added rebuild-native-node20.js for rebuilding native modules for Node.js 20.18.1.
- Introduced test-exe.js to facilitate testing of the generated executable.
- Modified webpack.config.cjs to output bundle.cjs and set libraryTarget to commonjs2.
- Enhanced profiler plugin for memory usage tracking with simplified output.
- Removed unused dependencies and updated existing ones in package.json.
2025-12-05 13:42:12 +02:00

109 lines
3.5 KiB
JavaScript

import config from '../config.js';
let availableDisplays = config.displays;
import display from './display.js';
import admin from './admin.js';
import adminLobby from './adminLobby.js';
import cli from './cli.js';
import _bundleManager from './bundleManager.js';
import fs from 'fs';
/**
* @param server
* @param app
* @param io
* @param dispatcher
* @return {{screenView: display[], adminView: admin[], bundleManager: bundleManager}}
*/
export default function (pluginManager, io, dispatcher) {
/**
* @type {display[]}
*/
let screenView = [];
/** @type {admin[]} */
let adminView = [];
console.log(">> InfoScreen3 <<");
cli.log("Checking for write permissions...");
try {
fs.accessSync(process.cwd() + "/data", fs.constants.W_OK);
cli.success("data directory (./data) is writable");
} catch (err) {
cli.error("data directory (./data) is not writable", err);
process.exit(1);
}
try {
fs.accessSync(process.cwd() + "/trash", fs.constants.W_OK);
cli.success("trash directory (./trash) is writable");
} catch (err) {
cli.error("trash directory (./trash) is not writable", err);
process.exit(1);
}
try {
fs.accessSync(process.cwd() + "/tmp", fs.constants.W_OK);
cli.success("temp directory (./tmp) is writable ");
let tempFiles = fs.readdirSync(process.cwd() + "/tmp/", {
dotfiles: false
});
cli.info("removing temp-files...");
for (let file of tempFiles) {
if (file !== ".gitkeep") {
fs.unlinkSync(process.cwd() + "/tmp/" + file);
}
}
cli.info("done.");
} catch (err) {
cli.error("temp directory (./tmp) is not writable", err);
process.exit(1);
}
cli.info("Starting bundle manager...");
let bundleManager = new _bundleManager();
cli.info("Starting websocket backend...");
let screenId = 0;
// create screens and admin socket interfaces
for (let metadata of availableDisplays) {
let view = new display(io, dispatcher, metadata, screenId, bundleManager);
screenView.push(view);
adminView.push(new admin(io, dispatcher, view, screenId, bundleManager));
screenId += 1;
}
let adminLobby1 = new adminLobby(io, dispatcher, screenView, adminView, bundleManager);
// create lobby
io.of("/lobby").on("connection", function (socket) {
// cli.info("WS/" + socket.conn.remoteAddress + " connect");
socket.on('error', function (error) {
cli.error(error, "WS/ error");
});
socket.on('disconnect', function (reason) {
// cli.info("WS/ " + reason + " " + socket.conn.remoteAddress);
});
socket.on('displays', function () {
let previewImages = [];
for (let display of screenView) {
if (display.serverOptions.currentMeta.type === "slide") {
previewImages.push("/render/" + display.serverOptions.currentBundle + "/" + display.serverOptions.currentFile + ".png");
} else {
previewImages.push("/img/nopreview.png");
}
}
socket.emit("callback.displays", { displays: availableDisplays, previewImages: previewImages });
});
});
return { screenView: screenView, adminView: adminView, bundleManager: bundleManager };
};