93 lines
3.7 KiB
JavaScript
93 lines
3.7 KiB
JavaScript
exports.newFoundationsFunctionLibrariesNodeJSFunctions = function () {
|
|
|
|
let thisObject = {
|
|
exitProcess: exitProcess
|
|
}
|
|
|
|
let isNodeJsProcessShuttingDown = false
|
|
return thisObject
|
|
|
|
function exitProcess() {
|
|
|
|
let uiError
|
|
|
|
if (TS.projects.foundations.globals.taskVariables.FATAL_ERROR_MESSAGE !== undefined) {
|
|
uiError = "An unexpected error caused the Task to stop. " + TS.projects.foundations.globals.taskVariables.FATAL_ERROR_MESSAGE
|
|
} else {
|
|
uiError = "An unexpected error caused the Task to stop."
|
|
}
|
|
|
|
let docs = {
|
|
project: 'Foundations',
|
|
category: 'Topic',
|
|
type: 'TS Task Error - Unexpected Error',
|
|
placeholder: {}
|
|
}
|
|
|
|
if (TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR !== undefined) {
|
|
if (TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR.message !== undefined) {
|
|
docs.placeholder.errorMessage = {
|
|
style: 'Error',
|
|
text: TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR.message
|
|
}
|
|
}
|
|
if (TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR.stack !== undefined) {
|
|
docs.placeholder.errorStack = {
|
|
style: 'Javascript',
|
|
text: TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR.stack
|
|
}
|
|
}
|
|
if (TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR.code !== undefined) {
|
|
docs.placeholder.errorCode = {
|
|
style: 'Json',
|
|
text: TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR.code
|
|
}
|
|
}
|
|
docs.placeholder.errorDetails = {
|
|
style: 'Json',
|
|
text: JSON.stringify(TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR, undefined, 4)
|
|
}
|
|
}
|
|
|
|
if (TS.projects.foundations.globals.taskVariables.FATAL_ERROR_MESSAGE || TS.projects.foundations.globals.taskVariables.UNEXPECTED_ERROR) {
|
|
TS.projects.foundations.functionLibraries.taskFunctions.taskError(
|
|
undefined,
|
|
uiError,
|
|
docs
|
|
)
|
|
}
|
|
|
|
if (isNodeJsProcessShuttingDown === true) { return }
|
|
isNodeJsProcessShuttingDown = true
|
|
|
|
/* Signal that all sessions are stopping. */
|
|
TS.projects.foundations.functionLibraries.sessionFunctions.finalizeSessions()
|
|
|
|
/* Cleaning Before Exiting. */
|
|
clearInterval(TS.projects.foundations.globals.taskConstants.TASK_HEARTBEAT_INTERVAL_HANDLER)
|
|
|
|
if (TS.projects.foundations.globals.taskConstants.TASK_NODE !== undefined) {
|
|
for (let i = 0; i < TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes.length; i++) {
|
|
let config = TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[i].config
|
|
let process = TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[i]
|
|
|
|
let key = process.name + '-' + process.type + '-' + process.id
|
|
TS.projects.foundations.globals.taskConstants.EVENT_SERVER_CLIENT_MODULE_OBJECT.raiseEvent(key, 'Stopped') // Meaning Process Stopped
|
|
}
|
|
}
|
|
|
|
finalizeLoggers()
|
|
|
|
setTimeout(process.exit, 10000) // We will give 10 seconds to logs be written on file
|
|
|
|
function finalizeLoggers() {
|
|
TS.projects.foundations.globals.taskVariables.LOGGER_MAP.forEach(forEachLogger)
|
|
|
|
function forEachLogger(logger) {
|
|
if (logger !== undefined) {
|
|
logger.finalize()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |