WorkerOutput
Class: WorkerOutput
Defined in: packages/workout/src/core.ts:499
This class allow you to abstract the output for your program
You can send output, ask for input and depending if you are in terminal It will show progress in the terminal, or send it via WebSockets or store it in a DB or in a logfile
Extends
EventEmitter
Constructors
Constructor
new WorkerOutput(
options?):WorkerOutput
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:90
Parameters
options?
EventEmitterOptions
Returns
WorkerOutput
Inherited from
EventEmitter.constructor
Properties
addLogProducerLine
addLogProducerLine:
boolean=false
Defined in: packages/workout/src/core.ts:515
When true, every log call records the caller's file/line/function in the message context
currentProgress?
optionalcurrentProgress?:string
Defined in: packages/workout/src/core.ts:509
UID of the progress that receives increments by default
groups
groups:
string[] =[]
Defined in: packages/workout/src/core.ts:503
Stack of currently open group names
inputs
inputs:
object={}
Defined in: packages/workout/src/core.ts:513
Pending input requests awaiting a user response, keyed by UUID
Index Signature
[key: string]: WorkerInputEmitter
interactive
interactive:
boolean=false
Defined in: packages/workout/src/core.ts:511
Whether the output is connected to an interactive session capable of receiving user input
progresses
progresses:
object={}
Defined in: packages/workout/src/core.ts:505
All active progress indicators keyed by UID
Index Signature
[key: string]: WorkerProgress
progressesStack
progressesStack:
string[] =[]
Defined in: packages/workout/src/core.ts:507
Ordered stack of active progress UIDs (last = current)
title?
optionaltitle?:string
Defined in: packages/workout/src/core.ts:501
Optional title for the current output session
Methods
[captureRejectionSymbol]()?
optional[captureRejectionSymbol](error,event, ...args):void
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:123
The Symbol.for('nodejs.rejection') method is called in case a
promise rejection happens when emitting an event and
captureRejections is enabled on the emitter.
It is possible to use events.captureRejectionSymbol in
place of Symbol.for('nodejs.rejection').
import { EventEmitter, captureRejectionSymbol } from 'node:events';
class MyClass extends EventEmitter {
constructor() {
super({ captureRejections: true });
}
[captureRejectionSymbol](err, event, ...args) {
console.log('rejection happened for', event, 'with', err, ...args);
this.destroy(err);
}
destroy(err) {
// Tear the resource down here.
}
}
Parameters
error
Error
event
string | symbol
args
...any[]
Returns
void
Since
v13.4.0, v12.16.0
Inherited from
EventEmitter.[captureRejectionSymbol]
addListener()
addListener<
E>(eventName,listener):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:128
Alias for emitter.on(eventName, listener).
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
listener
(...args) => void
Returns
this
Since
v0.1.26
Inherited from
EventEmitter.addListener
closeGroup()
closeGroup():
void
Defined in: packages/workout/src/core.ts:632
Close a group of output
Returns
void
emit()
emit<
E>(eventName, ...args):boolean
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:170
Synchronously calls each of the listeners registered for the event named
eventName, in the order they were registered, passing the supplied arguments
to each.
Returns true if the event had listeners, false otherwise.
import { EventEmitter } from 'node:events';
const myEmitter = new EventEmitter();
// First listener
myEmitter.on('event', function firstListener() {
console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
const parameters = args.join(', ');
console.log(`event with parameters ${parameters} in third listener`);
});
console.log(myEmitter.listeners('event'));
myEmitter.emit('event', 1, 2, 3, 4, 5);
// Prints:
// [
// [Function: firstListener],
// [Function: secondListener],
// [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
args
...any[]
Returns
boolean
Since
v0.1.26
Inherited from
EventEmitter.emit
emitMessage()
protectedemitMessage(event,infos?):void
Defined in: packages/workout/src/core.ts:523
Send an event with default informations
Parameters
event
the message type to emit
infos?
any = {}
additional data for the message
Returns
void
eventNames()
eventNames(): (
string|symbol)[]
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:190
Returns an array listing the events for which the emitter has registered listeners.
import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});
const sym = Symbol('symbol');
myEE.on(sym, () => {});
console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
Returns
(string | symbol)[]
Since
v6.0.0
Inherited from
EventEmitter.eventNames
forwardEvent()
forwardEvent(
rawEvent):void
Defined in: packages/workout/src/core.ts:785
Forward an event from another WorkerOutput (typically from a forked process)
Parameters
rawEvent
string
JSON string representation of a WorkerMessage
Returns
void
getBunyanLogger()
getBunyanLogger():
object
Defined in: packages/workout/src/core.ts:673
Get a Bunyan-compatible logger interface
Returns
object
An object with Bunyan-style logging methods (info, trace, warn, debug, error, fatal)
debug
debug: (...
args) =>boolean|void
Parameters
args
...any[]
Returns
boolean | void
error
error: (...
args) =>boolean|void
Parameters
args
...any[]
Returns
boolean | void
fatal
fatal: (...
args) =>boolean|void
Parameters
args
...any[]
Returns
boolean | void
info
info: (...
args) =>boolean|void
Parameters
args
...any[]
Returns
boolean | void
trace
trace: (...
args) =>boolean|void
Parameters
args
...any[]
Returns
boolean | void
warn
warn: (...
args) =>boolean|void
Parameters
args
...any[]
Returns
boolean | void
Example
const logger = output.getBunyanLogger();
logger.info("App started");
logger.error(err, "Request failed");
getMaxListeners()
getMaxListeners():
number
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:197
Returns the current max listener value for the EventEmitter which is either
set by emitter.setMaxListeners(n) or defaults to
events.defaultMaxListeners.
Returns
number
Since
v1.0.0
Inherited from
EventEmitter.getMaxListeners
incrementProgress()
incrementProgress(
inc?,uid?,title?):void
Defined in: packages/workout/src/core.ts:584
Increment to add to progress
Parameters
inc?
number = 1
amount to increment
uid?
string = ...
progress identifier
title?
string
optional title to update
Returns
void
listenerCount()
listenerCount<
E>(eventName,listener?):number
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:206
Returns the number of listeners listening for the event named eventName.
If listener is provided, it will return how many times the listener is found
in the list of the listeners of the event.
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
The name of the event being listened for
listener?
(...args) => void
The event handler function
Returns
number
Since
v3.2.0
Inherited from
EventEmitter.listenerCount
listeners()
listeners<
E>(eventName): (...args) =>void[]
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:222
Returns a copy of the array of listeners for the event named eventName.
server.on('connection', (stream) => {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
Returns
(...args) => void[]
Since
v0.1.26
Inherited from
EventEmitter.listeners
log()
log(
level, ...args):void
Defined in: packages/workout/src/core.ts:655
Log something
Parameters
level
of log to use with filtering
args
...any[]
anything you want to log
Returns
void
logWithContext()
logWithContext(
level,context, ...args):void
Defined in: packages/workout/src/core.ts:727
Log a message with additional context information
Parameters
level
The log level (ERROR, WARN, INFO, DEBUG, TRACE)
context
any
Context object to attach to the log (can include file, line, column, function, etc.)
args
...any[]
Message arguments to log
Returns
void
off()
off<
E>(eventName,listener):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:227
Alias for emitter.removeListener().
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
listener
(...args) => void
Returns
this
Since
v10.0.0
Inherited from
EventEmitter.off
on()
on<
E>(eventName,listener):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:261
Adds the listener function to the end of the listeners array for the
event named eventName. No checks are made to see if the listener has
already been added. Multiple calls passing the same combination of eventName
and listener will result in the listener being added, and called, multiple
times.
server.on('connection', (stream) => {
console.log('someone connected!');
});
Returns a reference to the EventEmitter, so that calls can be chained.
By default, event listeners are invoked in the order they are added. The
emitter.prependListener() method can be used as an alternative to add the
event listener to the beginning of the listeners array.
import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
The name of the event.
listener
(...args) => void
The callback function
Returns
this
Since
v0.1.101
Inherited from
EventEmitter.on
once()
once<
E>(eventName,listener):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:292
Adds a one-time listener function for the event named eventName. The
next time eventName is triggered, this listener is removed and then invoked.
server.once('connection', (stream) => {
console.log('Ah, we have our first user!');
});
Returns a reference to the EventEmitter, so that calls can be chained.
By default, event listeners are invoked in the order they are added. The
emitter.prependOnceListener() method can be used as an alternative to add the
event listener to the beginning of the listeners array.
import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
// b
// a
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
The name of the event.
listener
(...args) => void
The callback function
Returns
this
Since
v0.3.0
Inherited from
EventEmitter.once
openGroup()
openGroup(
name?):void
Defined in: packages/workout/src/core.ts:624
Create a new group of output Groups will stack
Parameters
name?
string = ""
of group
Returns
void
output()
output(
data):void
Defined in: packages/workout/src/core.ts:645
Emit raw program output, such as a command result
Parameters
data
string
the raw output
Returns
void
prependListener()
prependListener<
E>(eventName,listener):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:311
Adds the listener function to the beginning of the listeners array for the
event named eventName. No checks are made to see if the listener has
already been added. Multiple calls passing the same combination of eventName
and listener will result in the listener being added, and called, multiple
times.
server.prependListener('connection', (stream) => {
console.log('someone connected!');
});
Returns a reference to the EventEmitter, so that calls can be chained.
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
The name of the event.
listener
(...args) => void
The callback function
Returns
this
Since
v6.0.0
Inherited from
EventEmitter.prependListener
prependOnceListener()
prependOnceListener<
E>(eventName,listener):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:328
Adds a one-time listener function for the event named eventName to the
beginning of the listeners array. The next time eventName is triggered, this
listener is removed, and then invoked.
server.prependOnceListener('connection', (stream) => {
console.log('Ah, we have our first user!');
});
Returns a reference to the EventEmitter, so that calls can be chained.
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
The name of the event.
listener
(...args) => void
The callback function
Returns
this
Since
v6.0.0
Inherited from
EventEmitter.prependOnceListener
rawListeners()
rawListeners<
E>(eventName): (...args) =>void[]
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:362
Returns a copy of the array of listeners for the event named eventName,
including any wrappers (such as those created by .once()).
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));
// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];
// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();
// Logs "log once" to the console and removes the listener
logFnWrapper();
emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');
// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
Returns
(...args) => void[]
Since
v9.4.0
Inherited from
EventEmitter.rawListeners
removeAllListeners()
removeAllListeners<
E>(eventName?):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:374
Removes all listeners, or those of the specified eventName.
It is bad practice to remove listeners added elsewhere in the code,
particularly when the EventEmitter instance was created by some other
component or module (e.g. sockets or file streams).
Returns a reference to the EventEmitter, so that calls can be chained.
Type Parameters
E
E extends string | symbol
Parameters
eventName?
string | symbol
Returns
this
Since
v0.1.26
Inherited from
EventEmitter.removeAllListeners
removeListener()
removeListener<
E>(eventName,listener):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:461
Removes the specified listener from the listener array for the event named
eventName.
const callback = (stream) => {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
removeListener() will remove, at most, one instance of a listener from the
listener array. If any single listener has been added multiple times to the
listener array for the specified eventName, then removeListener() must be
called multiple times to remove each instance.
Once an event is emitted, all listeners attached to it at the
time of emitting are called in order. This implies that any
removeListener() or removeAllListeners() calls after emitting and
before the last listener finishes execution will not remove them from
emit() in progress. Subsequent events behave as expected.
import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
const callbackA = () => {
console.log('A');
myEmitter.removeListener('event', callbackB);
};
const callbackB = () => {
console.log('B');
};
myEmitter.on('event', callbackA);
myEmitter.on('event', callbackB);
// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
// A
// B
// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
// A
Because listeners are managed using an internal array, calling this will
change the position indexes of any listener registered after the listener
being removed. This will not impact the order in which listeners are called,
but it means that any copies of the listener array as returned by
the emitter.listeners() method will need to be recreated.
When a single function has been added as a handler multiple times for a single
event (as in the example below), removeListener() will remove the most
recently added instance. In the example the once('ping')
listener is removed:
import { EventEmitter } from 'node:events';
const ee = new EventEmitter();
function pong() {
console.log('pong');
}
ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);
ee.emit('ping');
ee.emit('ping');
Returns a reference to the EventEmitter, so that calls can be chained.
Type Parameters
E
E extends string | symbol
Parameters
eventName
string | symbol
listener
(...args) => void
Returns
this
Since
v0.1.26
Inherited from
EventEmitter.removeListener
requestInput()
requestInput(
title,type?,regexp?,waitFor?,timeout?):Promise<string>
Defined in: packages/workout/src/core.ts:749
Request a user input
Parameters
title
string
of the input
type?
WorkerInputType = WorkerInputType.STRING
the input type
regexp?
(string | RegExp)[] = ...
to validate the input
waitFor?
boolean = true
call waitFor method
timeout?
number = 0
before giving up on input
Returns
Promise<string>
the input request uuid if no waitFor or the input value
returnInput()
returnInput(
uuid,value):void
Defined in: packages/workout/src/core.ts:820
Send the result of an input To be used by the listeners
Parameters
uuid
string
of input
value
string
entered by user
Returns
void
setInteractive()
setInteractive(
interactive):void
Defined in: packages/workout/src/core.ts:735
Enable or disable interactive mode for user input
Parameters
interactive
boolean
True to allow user input, false to disable
Returns
void
setMaxListeners()
setMaxListeners(
n):this
Defined in: node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts:472
By default EventEmitters will print a warning if more than 10 listeners are
added for a particular event. This is a useful default that helps finding
memory leaks. The emitter.setMaxListeners() method allows the limit to be
modified for this specific EventEmitter instance. The value can be set to
Infinity (or 0) to indicate an unlimited number of listeners.
Returns a reference to the EventEmitter, so that calls can be chained.
Parameters
n
number
Returns
this
Since
v0.3.5
Inherited from
EventEmitter.setMaxListeners
setTitle()
setTitle(
title):void
Defined in: packages/workout/src/core.ts:532
Set the output title
Parameters
title
string
to set
Returns
void
startActivity()
startActivity(
title?,uid?):void
Defined in: packages/workout/src/core.ts:555
Start an undetermined activity
Parameters
title?
string
optional display title
uid?
string = "activity"
unique identifier for the activity
Returns
void
startProgress()
startProgress(
uid,total,title?):void
Defined in: packages/workout/src/core.ts:543
Start a new progress indicator
Parameters
uid
string
unique identifier for the progress
total
number
total number of steps
title?
string
optional display title
Returns
void
stopActivity()
stopActivity(
status?,title?,uid?):void
Defined in: packages/workout/src/core.ts:569
Stop an activity
Parameters
status?
"info" | "error" | "success" | "warning"
final status of the activity
title?
string
optional display title to set on completion
uid?
string = "activity"
unique identifier for the activity
Returns
void
updateProgress()
updateProgress(
current,uid?,title?):void
Defined in: packages/workout/src/core.ts:598
Update a progress indicator
Parameters
current
number
value
uid?
string = ...
id of the progress or default one
title?
string
update title as well
Returns
void
waitForInput()
waitForInput(
uuid):Promise<string>
Defined in: packages/workout/src/core.ts:803
Wait until an answer is provided
Parameters
uuid
string
of input to wait for
Returns
Promise<string>
the user's input value