UNPKG

@constructorfleet/ultimate-govee

Version:

Library for interacting with Govee devices written in Typescript.

73 lines 2.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CQRSLogger = void 0; const common_1 = require("@nestjs/common"); var TokenType; (function (TokenType) { TokenType[TokenType["CATEGORY"] = 0] = "CATEGORY"; TokenType[TokenType["TYPE"] = 1] = "TYPE"; TokenType[TokenType["PLAIN"] = 2] = "PLAIN"; })(TokenType || (TokenType = {})); const tokenize = (value) => value .replace(/(IoT)|(CQRS)|(API)|([A-Z]+)/g, (substring) => ` ${substring}`) .trim() .split(' '); const tokenTypes = { Handler: TokenType.TYPE, Command: TokenType.CATEGORY, Event: TokenType.CATEGORY, Query: TokenType.CATEGORY, Sagas: TokenType.CATEGORY, Service: TokenType.CATEGORY, Client: TokenType.CATEGORY, Factory: TokenType.CATEGORY, Bus: TokenType.TYPE, }; const processTokens = (tokens) => { const tempTokens = [...tokens].reverse(); const tokenMetas = tempTokens.reduce((acc, token, index) => { let tokenType = TokenType.PLAIN; if (tokenTypes[token] !== undefined) { tokenType = tokenTypes[token]; } else if (index < tempTokens.length - 1 && tokenTypes[tempTokens[index + 1]]) { if (index > 0 && tokenTypes[tempTokens[index + 1]] === acc[index - 1].type) { // Found a plain token between two non-plain tokens, next matches previous, assume this token is that type tokenType = acc[index - 1].type; } } acc.push({ value: token, type: tokenType, }); return acc; }, []); return tokenMetas.reverse(); }; class CQRSLogger extends common_1.ConsoleLogger { formatContext(context) { const contextTokens = tokenize(context); const processedTokens = processTokens(contextTokens); const categoryString = processedTokens .filter((token) => token.type === TokenType.CATEGORY) .map((token) => token.value) .join(''); const typeTokens = processedTokens .filter((token) => token.type === TokenType.TYPE) .map((token) => token.value); const typeString = typeTokens.length > 0 ? `[${typeTokens.join('')}]` : ''; const plainString = processedTokens .filter((token) => token.type === TokenType.PLAIN) .map((token) => token.value) .join(''); const separator = (categoryString.length > 0 || typeString.length > 0) && plainString.length > 0 ? ' - ' : ''; return super.formatContext(`${categoryString}${typeString}${separator}${plainString}`); } } exports.CQRSLogger = CQRSLogger; //# sourceMappingURL=cqrs-logger.js.map