This commit is contained in:
Arne
2023-09-28 15:33:05 +02:00
parent 11bdecc6d3
commit 37e6e6d003
20 changed files with 901 additions and 898 deletions

View File

@@ -1,48 +1,46 @@
import { app, shell } from 'electron';
import { Window } from './window';
export class App {
static launch() {
app.on('window-all-closed', App.quit);
app.on('activate', App.start);
app.on('ready', App.start);
// Limit navigation and open external links in default browser
app.on('web-contents-created', App.openExternalLinksInDefaultBrowser);
}
static get electronWindow() {
return this._wrapper ? this._wrapper.electronWindow : undefined;
}
static start() {
// On MacOS it is common to re-create a window from app even after all windows have been closed
if (!App.electronWindow) {
App._wrapper = new Window();
}
}
static quit() {
// On MacOS it is common for applications to stay open until the user explicitly quits
// But WebDriverIO Test Runner does handle that behaviour yet
if (
process.platform !== 'darwin' ||
global.appConfig.configId === 'e2e-test'
) {
app.quit();
}
}
static launch() {
app.on('window-all-closed', App.quit);
app.on('activate', App.start);
app.on('ready', App.start);
// Limit navigation and open external links in default browser
app.on('web-contents-created', App.openExternalLinksInDefaultBrowser);
}
static get electronWindow() {
return this._wrapper ? this._wrapper.electronWindow : undefined;
}
static start() {
// On MacOS it is common to re-create a window from app even after all windows have been closed
if (!App.electronWindow) {
App._wrapper = new Window();
}
}
static quit() {
// On MacOS it is common for applications to stay open until the user explicitly quits
// But WebDriverIO Test Runner does handle that behaviour yet
if (process.platform !== 'darwin' ||
global.appConfig.configId === 'e2e-test') {
app.quit();
}
}
}
App.openExternalLinksInDefaultBrowser = (event, contents) => {
// Disabling creation of new windows
contents.setWindowOpenHandler((handler) => {
// Telling the user platform to open this event's url in the default browser
shell.openExternal(handler.url);
// Blocking this event from loading in current app
return { action: 'deny' };
});
// Limiting navigation
contents.on('will-navigate', (event, navigationUrl) => {
const parsedUrl = new URL(navigationUrl);
// Allowing local navigation only
if (parsedUrl.origin !== 'http://localhost:4200') {
event.preventDefault();
}
});
// Disabling creation of new windows
contents.setWindowOpenHandler((handler) => {
// Telling the user platform to open this event's url in the default browser
shell.openExternal(handler.url);
// Blocking this event from loading in current app
return { action: 'deny' };
});
// Limiting navigation
contents.on('will-navigate', (event, navigationUrl) => {
const parsedUrl = new URL(navigationUrl);
// Allowing local navigation only
if (parsedUrl.origin !== 'http://localhost:4200') {
event.preventDefault();
}
});
};
//# sourceMappingURL=app.js.map
//# sourceMappingURL=app.js.map

View File

@@ -1,141 +1,126 @@
var __awaiter =
(this && this.__awaiter) ||
function (thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P
? value
: new P(function (resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator['throw'](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done
? resolve(result.value)
: adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import * as remoteMain from '@electron/remote/main';
import { app, BrowserWindow, ipcMain, nativeImage } from 'electron';
import * as path from 'node:path';
import { FileListService } from '../services/file-list-service';
import { PrintService } from './../services/print-service';
import { Logger } from '../utils/logger';
import { DoorService } from '../services/door-service';
import { readFile } from 'node:fs';
export class Window {
constructor() {
this.createWindow();
this.loadRenderer();
this.registerService(new FileListService());
}
createWindow() {
this._electronWindow = new BrowserWindow({
width: 1280,
height: 720,
backgroundColor: '#FFFFFF',
icon: this.loadIcon(),
webPreferences: {
// Default behavior in Electron since 5, that
// limits the powers granted to remote content
// except in e2e test when those powers are required
nodeIntegration: global.appConfig.isNodeIntegration,
// Isolate window context to protect against prototype pollution
// except in e2e test when that access is required
contextIsolation: global.appConfig.isContextIsolation,
// Introduced in Electron 20 and enabled by default
// Among others security constraints, it prevents from required
// CommonJS modules imports into preload script
// which is not bundled yet in dev mode
sandbox: global.appConfig.isSandbox,
// Use a preload script to enhance security
preload: MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY,
},
});
// Disable the remote module to enhance security
// except in e2e test when that access is required
if (global.appConfig.isEnableRemoteModule) {
remoteMain.enable(this._electronWindow.webContents);
}
}
loadIcon() {
let iconObject;
if (global.appConfig.isIconAvailable) {
const iconPath = path.join(__dirname, 'icons/icon.png');
Logger.debug('Icon Path', iconPath);
iconObject = nativeImage.createFromPath(iconPath);
// Change dock icon on MacOS
if (iconObject && process.platform === 'darwin') {
app.dock.setIcon(iconObject);
}
}
return iconObject;
}
loadRenderer() {
if (global.appConfig.configId === 'development') {
// Dev mode, take advantage of the live reload by loading local URL
this.electronWindow.loadURL(`http://localhost:4200`);
} else {
// Else mode, we simply load angular bundle
const indexPath = path.join(
__dirname,
'../renderer/angular_window/index.html'
);
this.electronWindow.loadURL(`file://${indexPath}`);
}
if (global.appConfig.isOpenDevTools) {
this.openDevTools();
}
// When the window is closed`
this._electronWindow.on('closed', () => {
// Remove IPC Main listeners
ipcMain.removeAllListeners();
// Delete current reference
delete this._electronWindow;
});
}
openDevTools() {
this._electronWindow.webContents.openDevTools();
this._electronWindow.webContents.on('devtools-opened', () => {
this._electronWindow.focus();
setImmediate(() => {
this._electronWindow.focus();
});
});
}
registerService(service) {
ipcMain.on(service.receptionChannel(), (event, ...parameters) =>
__awaiter(this, void 0, void 0, function* () {
// Handling input
const input = parameters[0];
Logger.debug(`[${service.receptionChannel()}] =====> `, input);
const output = service.process(input);
// Handling output
if (service.sendingChannel()) {
Logger.debug(`[${service.sendingChannel()}] =====> `, output);
this._electronWindow.webContents.send(
service.sendingChannel(),
output
);
}
})
);
}
get electronWindow() {
return this._electronWindow;
}
constructor() {
this.createWindow();
this.loadRenderer();
const fileListService = new FileListService();
this.registerService(fileListService);
this.registerService(new DoorService());
readFile('./config.json', 'utf8', (error, data) => {
if (error) {
console.log(error);
return;
}
const config = JSON.parse(data);
fileListService.setPaths(config.filePaths);
});
}
createWindow() {
this._electronWindow = new BrowserWindow({
fullscreen: false,
backgroundColor: '#FFFFFF',
icon: this.loadIcon(),
webPreferences: {
// Default behavior in Electron since 5, that
// limits the powers granted to remote content
// except in e2e test when those powers are required
nodeIntegration: global.appConfig.isNodeIntegration,
// Isolate window context to protect against prototype pollution
// except in e2e test when that access is required
contextIsolation: global.appConfig.isContextIsolation,
// Introduced in Electron 20 and enabled by default
// Among others security constraints, it prevents from required
// CommonJS modules imports into preload script
// which is not bundled yet in dev mode
sandbox: global.appConfig.isSandbox,
// Use a preload script to enhance security
preload: MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY,
},
});
this._printService = new PrintService();
this._printService.setWindow(this._electronWindow);
this.registerService(this._printService);
// Disable the remote module to enhance security
// except in e2e test when that access is required
if (global.appConfig.isEnableRemoteModule) {
remoteMain.enable(this._electronWindow.webContents);
}
}
loadIcon() {
let iconObject;
if (global.appConfig.isIconAvailable) {
const iconPath = path.join(__dirname, 'icons/icon.png');
Logger.debug('Icon Path', iconPath);
iconObject = nativeImage.createFromPath(iconPath);
// Change dock icon on MacOS
if (iconObject && process.platform === 'darwin') {
app.dock.setIcon(iconObject);
}
}
return iconObject;
}
loadRenderer() {
if (global.appConfig.configId === 'development') {
// Dev mode, take advantage of the live reload by loading local URL
this.electronWindow.loadURL(`http://localhost:4200`);
}
else {
// Else mode, we simply load angular bundle
const indexPath = path.join(__dirname, '../renderer/angular_window/index.html');
this.electronWindow.loadURL(`file://${indexPath}`);
}
if (global.appConfig.isOpenDevTools) {
this.openDevTools();
}
// When the window is closed`
this._electronWindow.on('closed', () => {
// Remove IPC Main listeners
ipcMain.removeAllListeners();
// Delete current reference
delete this._electronWindow;
});
}
openDevTools() {
this._electronWindow.webContents.openDevTools();
this._electronWindow.webContents.on('devtools-opened', () => {
this._electronWindow.focus();
setImmediate(() => {
this._electronWindow.focus();
});
});
}
registerService(service) {
ipcMain.on(service.receptionChannel(), (event, ...parameters) => __awaiter(this, void 0, void 0, function* () {
// Handling input
const input = parameters[0];
Logger.debug(`[${service.receptionChannel()}] =====> `, input);
service.process(input).then((output) => {
// Handling output
if (service.sendingChannel()) {
Logger.debug(`[${service.sendingChannel()}] =====> `, output);
this._electronWindow.webContents.send(service.sendingChannel(), output);
}
});
}));
}
get electronWindow() {
return this._electronWindow;
}
}
//# sourceMappingURL=window.js.map
//# sourceMappingURL=window.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../../../workspaces/electron-app/main/components/window.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"window.js","sourceRoot":"","sources":["../../../../workspaces/electron-app/main/components/window.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,MAAM,OAAO,MAAM;IAIlB;QACC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;QAElB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAChD,IAAI,CAAC,eAAe,CAAc,eAAe,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,CAAc,IAAI,WAAW,EAAE,CAAC,CAAC;QAErD,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACjD,IAAG,KAAK,EAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO;aACT;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE1C,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,YAAY;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,aAAa,CAAC;YACxC,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,SAAS;YAC1B,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,cAAc,EAAE;gBACf,6CAA6C;gBAC7C,8CAA8C;gBAC9C,oDAAoD;gBACpD,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB;gBACnD,gEAAgE;gBAChE,kDAAkD;gBAClD,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,kBAAkB;gBACrD,mDAAmD;gBACnD,+DAA+D;gBAC/D,+CAA+C;gBAC/C,uCAAuC;gBACvC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS;gBACnC,2CAA2C;gBAC3C,OAAO,EAAE,iCAAiC;aAC1C;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,CAAe,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvD,gDAAgD;QAChD,kDAAkD;QAClD,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE;YAC1C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;SACpD;IACF,CAAC;IAEO,QAAQ;QACf,IAAI,UAAU,CAAC;QACf,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpC,UAAU,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClD,4BAA4B;YAC5B,IAAI,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBAChD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC7B;SACD;QACD,OAAO,UAAU,CAAC;IACnB,CAAC;IAEO,YAAY;QACnB,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,aAAa,EAAE;YAChD,mEAAmE;YACnE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;SACrD;aAAM;YACN,2CAA2C;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,uCAAuC,CACvC,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC;SACnD;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE;YACpC,IAAI,CAAC,YAAY,EAAE,CAAC;SACpB;QAED,6BAA6B;QAC7B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtC,4BAA4B;YAC5B,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC7B,2BAA2B;YAC3B,OAAO,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,YAAY;QACnB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC3D,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,YAAY,CAAC,GAAG,EAAE;gBACjB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,eAAe,CAAU,OAAiC;QACjE,OAAO,CAAC,EAAE,CACT,OAAO,CAAC,gBAAgB,EAAE,EAC1B,CAAO,KAA4B,EAAE,GAAG,UAAiB,EAAE,EAAE;YAC5D,iBAAiB;YACjB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,gBAAgB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;gBAC3C,kBAAkB;gBAClB,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE;oBAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;oBAC9D,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CACpC,OAAO,CAAC,cAAc,EAAE,EACxB,MAAM,CACN,CAAC;iBACF;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAA,CACD,CAAC;IACH,CAAC;IAED,IAAW,cAAc;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;CACD"}

View File

@@ -8,9 +8,9 @@ const appConfigs = fs.readJsonSync(path.join(__dirname, 'config.json'));
const defaultConfig = appConfigs.development;
const currentConfig = appConfigs[currentEnvironment];
global.appConfig =
currentEnvironment === 'development'
? defaultConfig
: _.merge(defaultConfig, currentConfig);
currentEnvironment === 'development'
? defaultConfig
: _.merge(defaultConfig, currentConfig);
// Launch app
App.launch();
//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map

View File

@@ -1,13 +1,13 @@
const NOT_IMPEMENTED_YET = 'Method not implemented yet.';
export class AbstractService {
receptionChannel() {
throw new Error(NOT_IMPEMENTED_YET);
}
sendingChannel() {
throw new Error(NOT_IMPEMENTED_YET);
}
process(_input) {
throw new Error(NOT_IMPEMENTED_YET);
}
receptionChannel() {
throw new Error(NOT_IMPEMENTED_YET);
}
sendingChannel() {
throw new Error(NOT_IMPEMENTED_YET);
}
process(_input) {
throw new Error(NOT_IMPEMENTED_YET);
}
}
//# sourceMappingURL=abstract-service.js.map
//# sourceMappingURL=abstract-service.js.map

View File

@@ -0,0 +1,65 @@
import { WindowApiConst } from 'shared-lib';
import { AbstractService } from './abstract-service';
import { readFile, set_fs } from 'xlsx';
import * as fs from 'node:fs';
set_fs(fs);
export class DoorService extends AbstractService {
receptionChannel() {
return WindowApiConst.PROJECT_INPUT;
}
sendingChannel() {
return WindowApiConst.PROJECT_OUTPUT;
}
process(input) {
return new Promise((resolve) => {
var _a, _b, _c, _d, _e, _f, _g, _h;
const workbook = readFile(`${input.path}/${input.name}`);
const workingSheet = workbook.Sheets['DEURLIJST'];
const doorList = [];
// remove 2 top rows
const headers = {};
// get header values
for (let index = 65; index <= 90; index++) {
const currentValue = (_a = workingSheet[`${index}3`]) === null || _a === void 0 ? void 0 : _a.v;
switch (currentValue) {
case 'L/R':
headers['lr'] = index;
break;
case 'KRUK/SLOT':
headers['krukSlot'] = index;
break;
case 'SCHARNIER':
headers['pivot'] = index;
break;
case 'SOORT DEUR':
headers['type'] = index;
break;
case 'MODEL KRUK':
headers['modelKruk'] = index;
break;
case 'OPMERKING':
headers['remark'] = index;
break;
default: break;
}
}
console.log(headers);
// stop at 19
for (let index = 4; index < 19; index++) {
const door = {};
door.nr = (_b = workingSheet[`A${index}`]) === null || _b === void 0 ? void 0 : _b.v;
if (door.nr) {
door.lr = (_c = workingSheet[`${headers['lr']}${index}`]) === null || _c === void 0 ? void 0 : _c.v;
door.krukSlot = (_d = workingSheet[`${headers['krukSlot']}${index}`]) === null || _d === void 0 ? void 0 : _d.v;
door.pivot = (_e = workingSheet[`${headers['pivot']}${index}`]) === null || _e === void 0 ? void 0 : _e.v;
door.type = (_f = workingSheet[`${headers['type']}${index}`]) === null || _f === void 0 ? void 0 : _f.v;
door.modelKruk = (_g = workingSheet[`${headers['modelKruk']}${index}`]) === null || _g === void 0 ? void 0 : _g.v;
door.remark = (_h = workingSheet[`${headers['remark']}${index}`]) === null || _h === void 0 ? void 0 : _h.v;
doorList.push(door);
}
}
resolve(doorList);
});
}
}
//# sourceMappingURL=door-service.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"door-service.js","sourceRoot":"","sources":["../../../../workspaces/electron-app/main/services/door-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAQ,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,MAAM,CAAC,EAAE,CAAC,CAAC;AAEX,MAAM,OAAO,WAAY,SAAQ,eAA4B;IAC5D,gBAAgB;QACf,OAAO,cAAc,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,cAAc;QACb,OAAO,cAAc,CAAC,cAAc,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,KAAmC;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;;YAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAW,EAAE,CAAC;YAE5B,oBAAoB;YAEpB,MAAM,OAAO,GAAQ,EAAE,CAAC;YACxB,oBAAoB;YACpB,KAAK,IAAI,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE;gBAC1C,MAAM,YAAY,GAAG,MAAA,YAAY,CAAC,GAAG,KAAK,GAAG,CAAC,0CAAE,CAAC,CAAC;gBAClD,QAAO,YAAY,EAAE;oBACpB,KAAK,KAAK;wBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;wBAAC,MAAM;oBACzC,KAAK,WAAW;wBAAE,OAAO,CAAC,UAAU,CAAC,GAAI,KAAK,CAAC;wBAAC,MAAM;oBACtD,KAAK,WAAW;wBAAE,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;wBAAC,MAAM;oBAClD,KAAK,YAAY;wBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;wBAAC,MAAM;oBAClD,KAAK,YAAY;wBAAE,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;wBAAC,MAAM;oBACvD,KAAK,WAAW;wBAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;wBAAC,MAAM;oBACnD,OAAO,CAAC,CAAC,MAAM;iBACf;aACD;YAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAErB,aAAa;YAEb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;gBACxC,MAAM,IAAI,GAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,EAAE,GAAG,MAAA,YAAY,CAAC,IAAI,KAAK,EAAE,CAAC,0CAAE,CAAC,CAAC;gBACvC,IAAI,IAAI,CAAC,EAAE,EAAE;oBACZ,IAAI,CAAC,EAAE,GAAG,MAAA,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,0CAAE,CAAC,CAAC;oBACtD,IAAI,CAAC,QAAQ,GAAG,MAAA,YAAY,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,CAAC,0CAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,KAAK,GAAG,MAAA,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC,0CAAE,CAAC,CAAC;oBAC5D,IAAI,CAAC,IAAI,GAAG,MAAA,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,0CAAE,CAAC,CAAC;oBAC1D,IAAI,CAAC,SAAS,GAAG,MAAA,YAAY,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,0CAAE,CAAC,CAAC;oBACpE,IAAI,CAAC,MAAM,GAAG,MAAA,YAAY,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,0CAAE,CAAC,CAAC;oBAE9D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpB;aACD;YAED,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}

View File

@@ -2,23 +2,51 @@ import { readdir } from 'node:fs';
import { WindowApiConst } from 'shared-lib';
import { AbstractService } from './abstract-service';
export class FileListService extends AbstractService {
receptionChannel() {
return WindowApiConst.FILELIST_INPUT;
}
sendingChannel() {
return WindowApiConst.FILELIST_OUTPUT;
}
process() {
readdir('./', (error, fileList) => {
if (!error) {
const newList = {};
for (const file in fileList) {
newList[file] = [];
}
return newList;
}
return {};
});
}
constructor() {
super(...arguments);
this._paths = ['./assets'];
}
receptionChannel() {
return WindowApiConst.FILELIST_INPUT;
}
sendingChannel() {
return WindowApiConst.FILELIST_OUTPUT;
}
process() {
return new Promise((resolve) => {
const projects = [];
Promise.all(this._paths.map((path) => this.readPath(path))).then((result) => {
for (const entry of result.entries()) {
for (const file of entry[1].result) {
projects.push({
path: entry[1].path,
name: file,
});
}
}
resolve(projects);
});
});
}
readPath(path) {
return new Promise((resolve) => {
readdir(path, (error, fileList) => {
if (!error) {
const newList = [];
for (const file of fileList) {
newList.push(file);
}
return resolve({
path,
result: newList,
});
}
return {};
});
});
}
setPaths(inputPaths) {
this._paths = inputPaths;
}
}
//# sourceMappingURL=file-list-service.js.map
//# sourceMappingURL=file-list-service.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"file-list-service.js","sourceRoot":"","sources":["../../../../workspaces/electron-app/main/services/file-list-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAQ,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,eAAgB,SAAQ,eAA8C;IAClF,gBAAgB;QACf,OAAO,cAAc,CAAC,cAAc,CAAC;IACtC,CAAC;IAED,cAAc;QACb,OAAO,cAAc,CAAC,eAAe,CAAC;IACvC,CAAC;IAED,OAAO;QACA,QAAQ,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAkB,EAAE,EAAE;YACxC,IAAI,CAAC,KAAK,EAAE;gBACR,MAAO,OAAO,GAA4B,EAAE,CAAC;gBAC7C,KAAI,MAAM,IAAI,IAAI,QAAQ,EAAE;oBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBACtB;gBACD,OAAO,OAAO,CAAC;aAClB;YAED,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC;IACjB,CAAC;CACD"}
{"version":3,"file":"file-list-service.js","sourceRoot":"","sources":["../../../../workspaces/electron-app/main/services/file-list-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,eAAgB,SAAQ,eAA4B;IAAjE;;QACS,WAAM,GAAa,CAAC,UAAU,CAAC,CAAC;IAiDzC,CAAC;IA/CA,gBAAgB;QACf,OAAO,cAAc,CAAC,cAAc,CAAC;IACtC,CAAC;IAED,cAAc;QACb,OAAO,cAAc,CAAC,eAAe,CAAC;IACvC,CAAC;IAED,OAAO;QACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,QAAQ,GAAU,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;gBAChF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;oBACrC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;wBACnC,QAAQ,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;4BACnB,IAAI,EAAE,IAAI;yBACV,CAAC,CAAC;qBACH;iBACD;gBACD,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnB,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,IAAY;QAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAkB,EAAE,EAAE;gBAC3C,IAAI,CAAC,KAAK,EAAE;oBACX,MAAM,OAAO,GAAa,EAAE,CAAC;oBAC7B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;wBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACnB;oBACD,OAAO,OAAO,CAAC;wBACd,IAAI;wBACJ,MAAM,EAAE,OAAO;qBACf,CAAC,CAAC;iBACH;gBAED,OAAO,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,QAAQ,CAAC,UAAoB;QACnC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;IAC1B,CAAC;CACD"}

View File

@@ -0,0 +1,22 @@
import { WindowApiConst } from 'shared-lib';
import { AbstractService } from './abstract-service';
export class PrintService extends AbstractService {
sendingChannel() {
return WindowApiConst.PRINT_OUTPUT;
}
receptionChannel() {
return WindowApiConst.PRINT_INPUT;
}
process() {
return new Promise((resolve) => {
if (this._browserWindow) {
this._browserWindow.webContents.print({ silent: true });
}
resolve();
});
}
setWindow(window) {
this._browserWindow = window;
}
}
//# sourceMappingURL=print-service.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"print-service.js","sourceRoot":"","sources":["../../../../workspaces/electron-app/main/services/print-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,YAAa,SAAQ,eAA6B;IAE9D,cAAc;QACb,OAAO,cAAc,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,gBAAgB;QACf,OAAO,cAAc,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,OAAO;QACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACxD;YACD,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,SAAS,CAAC,MAAqB;QACrC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;IAC9B,CAAC;CACD"}

View File

@@ -3,119 +3,111 @@ import * as os from 'node:os';
import * as path from 'node:path';
import * as winston from 'winston';
export class Logger {
constructor() {
/**
* Custom winston file format
* Write JSON logs with given format :
* `${timestamp} ${level} : ${info.message} : ${meta})`
*/
this.fileFormat = winston.format.printf((data) => {
return JSON.stringify(this.prepareLogData(data));
});
/**
* Custom winston console format
* Write logs with given format :
* `${timestamp} ${level} : ${info.message} : JSON.stringify({ ...meta }) `
*/
this.consoleFormat = winston.format.printf((data) => {
const preparedData = this.prepareLogData(data);
return (
`${preparedData.timestamp} ${preparedData.level} : ` +
`${preparedData.message} : ${JSON.stringify(preparedData.meta)}`
);
});
this.prepareLogData = (data) => {
const additionalData = Object.assign({}, data);
delete additionalData.timestamp;
delete additionalData.level;
delete additionalData.message;
delete additionalData.service;
return {
timestamp: data.timestamp,
level: data.level,
message: data.message,
meta: additionalData,
};
};
this._logger = winston.createLogger({
level: 'debug',
format: winston.format.json(),
defaultMeta: { service: 'user-service' },
transports: [
new winston.transports.File({
filename: this.getLogFilename(),
level: global.appConfig.mainLogLevel,
format: winston.format.combine(
winston.format.timestamp(),
this.fileFormat
),
}),
],
});
// If we're not in production then log also to the `console` with the format:
// `${info.timestamp} ${info.level}: ${info.message} JSON.stringify({ ...rest }) `
if (global.appConfig.configId === 'development') {
this._logger.add(
new winston.transports.Console({
stderrLevels: ['error', 'warn'],
format: winston.format.combine(
winston.format.timestamp(),
this.consoleFormat
),
})
);
}
}
static error(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.error(message, meta);
}
static warn(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.warn(message, meta);
}
static info(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.info(message, meta);
}
static http(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.http(message, meta);
}
static verbose(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.verbose(message, meta);
}
static debug(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.debug(message, meta);
}
static silly(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.silly(message, meta);
}
static initSingleton() {
if (!Logger.singleton) {
Logger.singleton = new Logger();
}
}
/**
* Returns log filename with standard path
* In production, returns absolute standard path depending on platform
*/
getLogFilename() {
let filename = global.appConfig.mainLogFile;
if (global.appConfig.configId === 'production') {
const appName = app.getName();
if (process.platform == 'linux') {
filename = `.config/${appName}/${filename}`;
} else if (process.platform == 'darwin') {
filename = `Library/Logs/${appName}/${filename}`;
} else if (process.platform == 'win32') {
filename = `AppData\\Roaming\\${appName}\\${filename}`;
}
}
return path.join(os.homedir(), filename);
}
constructor() {
/**
* Custom winston file format
* Write JSON logs with given format :
* `${timestamp} ${level} : ${info.message} : ${meta})`
*/
this.fileFormat = winston.format.printf((data) => {
return JSON.stringify(this.prepareLogData(data));
});
/**
* Custom winston console format
* Write logs with given format :
* `${timestamp} ${level} : ${info.message} : JSON.stringify({ ...meta }) `
*/
this.consoleFormat = winston.format.printf((data) => {
const preparedData = this.prepareLogData(data);
return (`${preparedData.timestamp} ${preparedData.level} : ` +
`${preparedData.message} : ${JSON.stringify(preparedData.meta)}`);
});
this.prepareLogData = (data) => {
const additionalData = Object.assign({}, data);
delete additionalData.timestamp;
delete additionalData.level;
delete additionalData.message;
delete additionalData.service;
return {
timestamp: data.timestamp,
level: data.level,
message: data.message,
meta: additionalData,
};
};
this._logger = winston.createLogger({
level: 'debug',
format: winston.format.json(),
defaultMeta: { service: 'user-service' },
transports: [
new winston.transports.File({
filename: this.getLogFilename(),
level: global.appConfig.mainLogLevel,
format: winston.format.combine(winston.format.timestamp(), this.fileFormat),
}),
],
});
// If we're not in production then log also to the `console` with the format:
// `${info.timestamp} ${info.level}: ${info.message} JSON.stringify({ ...rest }) `
if (global.appConfig.configId === 'development') {
this._logger.add(new winston.transports.Console({
stderrLevels: ['error', 'warn'],
format: winston.format.combine(winston.format.timestamp(), this.consoleFormat),
}));
}
}
static error(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.error(message, meta);
}
static warn(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.warn(message, meta);
}
static info(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.info(message, meta);
}
static http(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.http(message, meta);
}
static verbose(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.verbose(message, meta);
}
static debug(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.debug(message, meta);
}
static silly(message, ...meta) {
Logger.initSingleton();
Logger.singleton._logger.silly(message, meta);
}
static initSingleton() {
if (!Logger.singleton) {
Logger.singleton = new Logger();
}
}
/**
* Returns log filename with standard path
* In production, returns absolute standard path depending on platform
*/
getLogFilename() {
let filename = global.appConfig.mainLogFile;
if (global.appConfig.configId === 'production') {
const appName = app.getName();
if (process.platform == 'linux') {
filename = `.config/${appName}/${filename}`;
}
else if (process.platform == 'darwin') {
filename = `Library/Logs/${appName}/${filename}`;
}
else if (process.platform == 'win32') {
filename = `AppData\\Roaming\\${appName}\\${filename}`;
}
}
return path.join(os.homedir(), filename);
}
}
//# sourceMappingURL=logger.js.map
//# sourceMappingURL=logger.js.map

View File

@@ -26,7 +26,5 @@
* ```
*/
import './index.css';
console.log(
'👋 This message is being logged by "renderer.js", included via webpack'
);
//# sourceMappingURL=index.js.map
console.log('👋 This message is being logged by "renderer.js", included via webpack');
//# sourceMappingURL=index.js.map

View File

@@ -35,19 +35,19 @@ if (process.env.X_NODE_ENV === 'e2e-test') {
import { contextBridge, ipcRenderer } from 'electron';
import { WindowApiConst } from 'shared-lib';
contextBridge.exposeInMainWorld('api', {
node: () => process.versions.node,
chrome: () => process.versions.chrome,
electron: () => process.versions.electron,
send: (channel, input) => {
if (WindowApiConst.SENDING_SAFE_CHANNELS.includes(channel)) {
ipcRenderer.send(channel, input);
}
},
receive: (channel, callback) => {
// Deliberately strip event as it includes `sender`
ipcRenderer.on(channel, (_event, ...parameters) => callback(parameters[0]));
},
// we can also expose variables, not just functions
node: () => process.versions.node,
chrome: () => process.versions.chrome,
electron: () => process.versions.electron,
send: (channel, input) => {
if (WindowApiConst.SENDING_SAFE_CHANNELS.includes(channel)) {
ipcRenderer.send(channel, input);
}
},
receive: (channel, callback) => {
// Deliberately strip event as it includes `sender`
ipcRenderer.on(channel, (_event, ...parameters) => callback(parameters[0]));
},
// we can also expose variables, not just functions
});
console.log('The preload script has been injected successfully.');
//# sourceMappingURL=preload.js.map
//# sourceMappingURL=preload.js.map