39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import fs from 'node:fs'
|
|
import path from 'node:path'
|
|
|
|
/**
|
|
* Function to clean up unwanted characters from the output data.
|
|
* @param {string} data - The raw data to be cleaned.
|
|
* @returns {string} - The cleaned data.
|
|
*/
|
|
export const cleanData = (data: string) => {
|
|
return data
|
|
.replace(/--More--\s*BS\s*BS\s*BS\s*BS\s*BS\s*BS/g, '')
|
|
.replace(/\s*--More--\s*/g, '')
|
|
.replace(/\x1b\[[0-9;]*m/g, '') // Remove ANSI escape codes
|
|
.replace(/\x08/g, '')
|
|
.replace(/[^\x20-\x7E\r\n]/g, '') // Remove non-printable characters
|
|
// .replace(/\r\n/g, '\n')
|
|
}
|
|
|
|
export function sleep(ms: number) {
|
|
return new Promise((resolve) => setTimeout(resolve, ms))
|
|
}
|
|
|
|
export function appendLog(output: string, stationId: number, lineNumber: number, port: number) {
|
|
const date = new Date().toISOString().slice(0, 10).replace(/-/g, '') // YYYYMMDD
|
|
const logDir = path.join('storage', 'system_logs')
|
|
const logFile = path.join(logDir, `${date}-Station_${stationId}-Line_${lineNumber}_${port}.log`)
|
|
|
|
// Ensure folder exists
|
|
if (!fs.existsSync(logDir)) {
|
|
fs.mkdirSync(logDir, { recursive: true })
|
|
}
|
|
|
|
fs.appendFile(logFile, output, (err) => {
|
|
if (err) {
|
|
console.error('❌ Failed to write log:', err.message)
|
|
}
|
|
})
|
|
}
|