UNPKG

@logosnetwork/logos-webwallet-sdk

Version:

Create Logos wallets with or without a full Logos node

55 lines 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var SEPARATOR = '/'; var SINGLE = '+'; var ALL = '#'; var matches = function (pattern, topic) { var patternSegments = pattern.split(SEPARATOR); var topicSegments = topic.split(SEPARATOR); var patternLength = patternSegments.length; var topicLength = topicSegments.length; var lastIndex = patternLength - 1; for (var i = 0; i < patternLength; i++) { var currentPattern = patternSegments[i]; var patternChar = currentPattern[0]; var currentTopic = topicSegments[i]; if (!currentTopic && !currentPattern) { continue; } if (!currentTopic && currentPattern !== ALL) return false; // Only allow # at end if (patternChar === ALL) { return i === lastIndex; } if (patternChar !== SINGLE && currentPattern !== currentTopic) { return false; } } return patternLength === topicLength; }; var extract = function (pattern, topic) { var params = {}; var patternSegments = pattern.split(SEPARATOR); var topicSegments = topic.split(SEPARATOR); var patternLength = patternSegments.length; for (var i = 0; i < patternLength; i++) { var currentPattern = patternSegments[i]; var patternChar = currentPattern[0]; if (currentPattern.length === 1) { continue; } if (patternChar === ALL) { params[currentPattern.slice(1)] = topicSegments.slice(i); break; } else if (patternChar === SINGLE) { params[currentPattern.slice(1)] = topicSegments[i]; } } return params; }; exports.default = (function (pattern, topic) { return matches(pattern, topic) ? extract(pattern, topic) : null; }); //# sourceMappingURL=mqttPattern.js.map