signalk-server
Version:
An implementation of a [Signal K](http://signalk.org) server for boats.
39 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildTalkerLookup = buildTalkerLookup;
exports.buildProviderTalkerLookups = buildProviderTalkerLookups;
// Group names are normalised to lowercase to match the admin UI, so that
// manual settings.json edits with mixed case still match canonical group ids.
function buildTalkerLookup(groups) {
const lookup = new Map();
for (const [rawGroupName, talkers] of Object.entries(groups)) {
const groupName = rawGroupName.trim().toLowerCase();
for (const talker of talkers) {
const existing = lookup.get(talker);
if (existing && existing !== groupName) {
console.warn(`nmea0183 talker '${talker}' is mapped to multiple groups ` +
`('${existing}' and '${groupName}'); the later mapping wins.`);
}
lookup.set(talker, groupName);
}
}
return lookup;
}
function buildProviderTalkerLookups(pipedProviders) {
const result = new Map();
if (!Array.isArray(pipedProviders))
return result;
for (const provider of pipedProviders) {
if (!provider.id || !provider.pipeElements?.[0]?.options)
continue;
const options = provider.pipeElements[0].options;
const subOptions = options.subOptions || options;
if (subOptions.talkerGroups &&
typeof subOptions.talkerGroups === 'object' &&
!Array.isArray(subOptions.talkerGroups)) {
result.set(provider.id, buildTalkerLookup(subOptions.talkerGroups));
}
}
return result;
}
//# sourceMappingURL=nmea0183TalkerGroups.js.map