@signalk/streams
Version:
Utilities for handling streams of Signal K data
74 lines (73 loc) • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createMockApp = createMockApp;
exports.collectStreamOutput = collectStreamOutput;
exports.noopDebug = noopDebug;
exports.createDebugStub = createDebugStub;
const events_1 = require("events");
function createMockApp(options = {}) {
const emitter = new events_1.EventEmitter();
const signalk = new events_1.EventEmitter();
const providerStatuses = [];
const providerErrors = [];
const handledMessages = [];
const propertyValues = [];
const sourceDeltaStore = {};
const app = Object.assign(emitter, {
selfContext: options.selfContext ?? 'vessels.urn:mrn:imo:mmsi:000000000',
isNmea2000OutAvailable: options.isNmea2000OutAvailable ?? false,
deltaCache: {
setSourceDelta(key, delta) {
sourceDeltaStore[key] = delta;
}
},
config: {
configPath: options.configPath ?? '/tmp/test-config',
settings: {
loggingDirectory: options.loggingDirectory,
keepMostRecentLogsOnly: options.keepMostRecentLogsOnly,
logCountToKeep: options.logCountToKeep
},
getExternalHostname() {
return 'localhost';
},
getExternalPort() {
return 3000;
}
},
setProviderStatus(id, msg) {
providerStatuses.push({ id, msg });
},
setProviderError(id, msg) {
providerErrors.push({ id, msg });
},
handleMessage(id, delta) {
handledMessages.push({ id, delta });
},
emitPropertyValue(name, value) {
propertyValues.push({ name, value });
},
signalk,
providerStatuses,
providerErrors,
handledMessages,
propertyValues
});
return app;
}
function collectStreamOutput(stream) {
return new Promise((resolve, reject) => {
const results = [];
stream.on('data', (chunk) => results.push(chunk));
stream.on('end', () => resolve(results));
stream.on('error', reject);
});
}
function noopDebug() {
const fn = ((..._args) => { });
fn.enabled = false;
return fn;
}
function createDebugStub() {
return () => noopDebug();
}