iobroker.telegram-menu 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/app/subMenu.ts"],
4
- "sourcesContent": ["import { switchBack } from './backMenu';\nimport { handleSetState } from './setstate';\nimport { sendToTelegram, sendToTelegramSubmenu } from './telegram';\nimport { returnTextModifier } from '../lib/utilities';\nimport { deleteMessageIds } from './messageIds';\nimport { createDynamicSwitchMenu } from './dynamicSwitchMenu';\nimport type {\n AllMenusWithData,\n BackMenuType,\n CallSubMenu,\n CreateMenu,\n Keyboard,\n KeyboardItems,\n Part,\n SetFirstMenuValue,\n SetSecondMenuValue,\n SplittedData,\n TelegramParams,\n} from '../types/types';\nimport { isNonEmptyString, jsonString } from '../lib/string';\nimport { adapter } from '../main';\nimport { errorLogger } from './logging';\nimport { getMenuValues, getSubmenuNumberValues } from '../lib/splitValues';\nimport {\n isCreateSubmenuNumber,\n isCreateSwitch,\n isDeleteMenu,\n isCreateDynamicSwitch,\n isFirstMenuValue,\n isMenuBack,\n isSecondMenuValue,\n isSetDynamicSwitchVal,\n isCreateSubmenuPercent,\n isSetSubmenuPercent,\n isSetSubmenuNumber,\n} from './validateMenus';\n\nlet step = 0;\nlet splittedData: SplittedData = [];\n\nconst createSubmenuPercent = (obj: CreateMenu): { text?: string; keyboard: Keyboard; device: string } => {\n const { cbData, menuToHandle } = obj;\n\n step = parseFloat(cbData.replace('percent', ''));\n let rowEntries = 0;\n let menu: KeyboardItems[] = [];\n const keyboard: Keyboard = {\n inline_keyboard: [],\n };\n for (let i = 100; i >= 0; i -= step) {\n menu.push({\n text: `${i}%`,\n callback_data: `submenu:percent${step},${i}:${menuToHandle}`,\n });\n if (i != 0 && i - step < 0) {\n menu.push({\n text: `0%`,\n callback_data: `submenu:percent${step},${0}:${menuToHandle}`,\n });\n }\n rowEntries++;\n if (rowEntries == 8) {\n keyboard.inline_keyboard.push(menu);\n menu = [];\n rowEntries = 0;\n }\n }\n\n if (rowEntries != 0) {\n keyboard.inline_keyboard.push(menu);\n }\n return { text: obj.text, keyboard: keyboard, device: menuToHandle };\n};\n\nconst setFirstMenuValue = async ({ telegramParams, userToSend, part }: SetFirstMenuValue): Promise<void> => {\n let val;\n adapter.log.debug(`SplitData : ${jsonString(splittedData)}`);\n\n if (splittedData[1].split('.')[1] == 'false') {\n val = false;\n } else if (splittedData[1].split('.')[1] == 'true') {\n val = true;\n } else {\n val = splittedData[1].split('.')[1];\n }\n await handleSetState(part, userToSend, val as string, telegramParams);\n};\n\nconst setSecondMenuValue = async ({ telegramParams, part, userToSend }: SetSecondMenuValue): Promise<void> => {\n let val;\n if (splittedData[2].split('.')[1] == 'false') {\n val = false;\n } else if (splittedData[2].split('.')[1] == 'true') {\n val = true;\n } else {\n val = splittedData[2].split('.')[1];\n }\n await handleSetState(part, userToSend, val as string, telegramParams);\n};\n\nconst createSubmenuNumber = ({\n cbData,\n menuToHandle,\n text,\n}: CreateMenu): { text?: string; keyboard: Keyboard; menuToHandle: string } => {\n if (cbData.includes('(-)')) {\n cbData = cbData.replace('(-)', 'negativ');\n }\n const splittedData = cbData.replace('number', '').split('-');\n let rowEntries = 0;\n let menu: { text: string; callback_data: string }[] = [];\n const keyboard: Keyboard = {\n inline_keyboard: [],\n };\n let unit = '';\n if (splittedData[3] != '') {\n unit = splittedData[3];\n }\n let start: number, end: number;\n const firstValueInText = parseFloat(\n splittedData[0].includes('negativ') ? splittedData[0].replace('negativ', '-') : splittedData[0],\n );\n const secondValueInText = parseFloat(\n splittedData[1].includes('negativ') ? splittedData[1].replace('negativ', '-') : splittedData[1],\n );\n\n if (firstValueInText < secondValueInText) {\n start = secondValueInText;\n end = firstValueInText;\n } else {\n start = firstValueInText;\n end = secondValueInText;\n }\n let index = -1;\n\n let maxEntriesPerRow = 8;\n const step = parseFloat(\n splittedData[2].includes('negativ') ? splittedData[2].replace('negativ', '-') : splittedData[2],\n );\n if (step < 1) {\n maxEntriesPerRow = 6;\n }\n\n for (let i = start; i >= end; i -= step) {\n // Zahlen umdrehen\n if (parseFloat(splittedData[0]) < parseFloat(splittedData[1])) {\n if (i === start) {\n index = end - step;\n }\n index = index + step;\n } else {\n index = i;\n }\n menu.push({\n text: `${index}${unit}`,\n callback_data: `submenu:${cbData}:${menuToHandle}:${index}`,\n });\n rowEntries++;\n if (rowEntries == maxEntriesPerRow) {\n keyboard.inline_keyboard.push(menu);\n menu = [];\n rowEntries = 0;\n }\n }\n\n if (rowEntries != 0) {\n keyboard.inline_keyboard.push(menu);\n }\n adapter.log.debug(`Keyboard : ${jsonString(keyboard)}`);\n\n return { text, keyboard, menuToHandle };\n};\n\nconst createSwitchMenu = ({\n menuToHandle,\n cbData,\n text,\n}: CreateMenu): { text?: string; keyboard: Keyboard; device: string } => {\n splittedData = cbData.split('-');\n const keyboard = {\n inline_keyboard: [\n [\n {\n text: splittedData[1].split('.')[0],\n callback_data: `menu:first:${menuToHandle}`,\n },\n {\n text: splittedData[2].split('.')[0],\n callback_data: `menu:second:${menuToHandle}`,\n },\n ],\n ],\n };\n return { text: text, keyboard, device: menuToHandle };\n};\n\nconst back = async ({ telegramParams, userToSend, allMenusWithData, menus }: BackMenuType): Promise<void> => {\n const result = await switchBack(userToSend, allMenusWithData, menus);\n if (result) {\n const { keyboard, parse_mode, textToSend = '' } = result;\n await sendToTelegram({ userToSend, textToSend, keyboard, parse_mode: parse_mode, telegramParams });\n }\n};\n\nexport async function callSubMenu({\n jsonStringNav,\n userToSend,\n telegramParams,\n part,\n allMenusWithData,\n menus,\n}: CallSubMenu): Promise<{ newNav: string | undefined } | undefined> {\n try {\n const obj = await subMenu({\n menuString: jsonStringNav,\n userToSend,\n telegramParams,\n part,\n allMenusWithData,\n menus,\n });\n adapter.log.debug(`Submenu : ${jsonString(obj)}`);\n\n if (obj?.text && obj?.keyboard) {\n sendToTelegramSubmenu(userToSend, obj.text, obj.keyboard, telegramParams, part.parse_mode);\n }\n return { newNav: obj?.navToGoBack };\n } catch (e: any) {\n errorLogger('Error callSubMenu:', e, adapter);\n }\n}\n\nexport async function subMenu({\n menuString,\n userToSend,\n telegramParams,\n part,\n allMenusWithData,\n menus,\n}: {\n menuString: string;\n userToSend: string;\n telegramParams: TelegramParams;\n part: Part;\n allMenusWithData: AllMenusWithData;\n menus: string[];\n}): Promise<{ text?: string; keyboard?: Keyboard; device?: string; navToGoBack?: string } | undefined> {\n try {\n adapter.log.debug(`Menu : ${menuString}`);\n\n const text = await returnTextModifier(part.text);\n\n if (isDeleteMenu(menuString)) {\n await deleteMessageIds(userToSend, telegramParams, 'all');\n const menu: string | undefined = menuString.split(':')?.[2]?.split('\"')?.[0]; //[[\"menu:deleteAll:\u00DCbersicht\"],[\"\"]]\n if (menu && isNonEmptyString(menu)) {\n return { navToGoBack: menu };\n }\n }\n\n const { cbData, menuToHandle, val } = getMenuValues(menuString);\n if (isCreateSwitch(cbData) && menuToHandle) {\n return createSwitchMenu({ cbData, text, menuToHandle: menuToHandle });\n }\n\n if (isFirstMenuValue(cbData)) {\n await setFirstMenuValue({\n part,\n userToSend,\n telegramParams,\n });\n }\n\n if (isSecondMenuValue(cbData)) {\n await setSecondMenuValue({ part, userToSend, telegramParams });\n }\n\n if (isCreateDynamicSwitch(cbData) && menuToHandle) {\n return createDynamicSwitchMenu(menuString, menuToHandle, text);\n }\n\n if (isSetDynamicSwitchVal(cbData) && val) {\n await handleSetState(part, userToSend, val, telegramParams); //SetDynamicValue\n }\n\n if (isCreateSubmenuPercent(menuString, cbData) && menuToHandle) {\n return createSubmenuPercent({ cbData, text, menuToHandle: menuToHandle });\n }\n\n if (isSetSubmenuPercent(menuString, step)) {\n const value = parseInt(menuString.split(':')[1].split(',')[1]);\n await handleSetState(part, userToSend, value, telegramParams);\n }\n\n if (isCreateSubmenuNumber(menuString, cbData) && menuToHandle) {\n return createSubmenuNumber({ cbData, text, menuToHandle: menuToHandle });\n }\n\n if (isSetSubmenuNumber(menuString, cbData)) {\n const { value } = getSubmenuNumberValues(menuString);\n await handleSetState(part, userToSend, value, telegramParams);\n }\n\n if (isMenuBack(menuString)) {\n await back({\n userToSend,\n allMenusWithData,\n menus,\n telegramParams,\n });\n }\n } catch (error: any) {\n errorLogger('Error subMenu:', error, adapter);\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { switchBack } from './backMenu';\nimport { handleSetState } from './setstate';\nimport { sendToTelegram, sendToTelegramSubmenu } from './telegram';\nimport { returnTextModifier } from '../lib/utilities';\nimport { deleteMessageIds } from './messageIds';\nimport { createDynamicSwitchMenu } from './dynamicSwitchMenu';\nimport type {\n AllMenusWithData,\n BackMenuType,\n CallSubMenu,\n CreateMenu,\n Keyboard,\n KeyboardItems,\n Part,\n SetMenuValue,\n SplittedData,\n TelegramParams,\n} from '../types/types';\nimport { isNonEmptyString, jsonString } from '../lib/string';\nimport { adapter } from '../main';\nimport { errorLogger } from './logging';\nimport { getMenuValues, getSubmenuNumberValues } from '../lib/splitValues';\nimport {\n isCreateDynamicSwitch,\n isCreateSubmenuNumber,\n isCreateSubmenuPercent,\n isCreateSwitch,\n isDeleteMenu,\n isFirstMenuValue,\n isMenuBack,\n isSecondMenuValue,\n isSetDynamicSwitchVal,\n isSetSubmenuNumber,\n isSetSubmenuPercent,\n} from './validateMenus';\n\nlet step = 0;\nlet splittedData: SplittedData = [];\n\nconst createSubmenuPercent = (obj: CreateMenu): { text?: string; keyboard: Keyboard; device: string } => {\n const { cbData, menuToHandle } = obj;\n\n step = parseFloat(cbData.replace('percent', ''));\n let rowEntries = 0;\n let menu: KeyboardItems[] = [];\n const keyboard: Keyboard = {\n inline_keyboard: [],\n };\n for (let i = 100; i >= 0; i -= step) {\n menu.push({\n text: `${i}%`,\n callback_data: `submenu:percent${step},${i}:${menuToHandle}`,\n });\n if (i != 0 && i - step < 0) {\n menu.push({\n text: `0%`,\n callback_data: `submenu:percent${step},${0}:${menuToHandle}`,\n });\n }\n rowEntries++;\n if (rowEntries == 8) {\n keyboard.inline_keyboard.push(menu);\n menu = [];\n rowEntries = 0;\n }\n }\n\n if (rowEntries != 0) {\n keyboard.inline_keyboard.push(menu);\n }\n return { text: obj.text, keyboard: keyboard, device: menuToHandle };\n};\n\nconst setMenuValue = async ({ telegramParams, userToSend, part, menuNumber }: SetMenuValue): Promise<void> => {\n let val: string | boolean = splittedData[menuNumber].split('.')[1];\n if (val === 'false') {\n val = false;\n } else if (val === 'true') {\n val = true;\n }\n await handleSetState(part, userToSend, val, telegramParams);\n};\n\nconst createSubmenuNumber = ({\n cbData,\n menuToHandle,\n text,\n}: CreateMenu): { text?: string; keyboard: Keyboard; menuToHandle: string } => {\n if (cbData.includes('(-)')) {\n cbData = cbData.replace('(-)', 'negativ');\n }\n const splittedData = cbData.replace('number', '').split('-');\n let rowEntries = 0;\n let menu: { text: string; callback_data: string }[] = [];\n const keyboard: Keyboard = {\n inline_keyboard: [],\n };\n let unit = '';\n if (splittedData[3] != '') {\n unit = splittedData[3];\n }\n let start: number, end: number;\n const firstValueInText = parseFloat(\n splittedData[0].includes('negativ') ? splittedData[0].replace('negativ', '-') : splittedData[0],\n );\n const secondValueInText = parseFloat(\n splittedData[1].includes('negativ') ? splittedData[1].replace('negativ', '-') : splittedData[1],\n );\n\n if (firstValueInText < secondValueInText) {\n start = secondValueInText;\n end = firstValueInText;\n } else {\n start = firstValueInText;\n end = secondValueInText;\n }\n let index = -1;\n\n let maxEntriesPerRow = 8;\n const step = parseFloat(\n splittedData[2].includes('negativ') ? splittedData[2].replace('negativ', '-') : splittedData[2],\n );\n if (step < 1) {\n maxEntriesPerRow = 6;\n }\n\n for (let i = start; i >= end; i -= step) {\n // Zahlen umdrehen\n if (parseFloat(splittedData[0]) < parseFloat(splittedData[1])) {\n if (i === start) {\n index = end - step;\n }\n index = index + step;\n } else {\n index = i;\n }\n menu.push({\n text: `${index}${unit}`,\n callback_data: `submenu:${cbData}:${menuToHandle}:${index}`,\n });\n rowEntries++;\n if (rowEntries == maxEntriesPerRow) {\n keyboard.inline_keyboard.push(menu);\n menu = [];\n rowEntries = 0;\n }\n }\n\n if (rowEntries != 0) {\n keyboard.inline_keyboard.push(menu);\n }\n adapter.log.debug(`Keyboard : ${jsonString(keyboard)}`);\n\n return { text, keyboard, menuToHandle };\n};\n\nconst createSwitchMenu = ({\n menuToHandle,\n cbData,\n text,\n}: CreateMenu): { text?: string; keyboard: Keyboard; device: string } => {\n splittedData = cbData.split('-');\n const keyboard = {\n inline_keyboard: [\n [\n {\n text: splittedData[1].split('.')[0],\n callback_data: `menu:first:${menuToHandle}`,\n },\n {\n text: splittedData[2].split('.')[0],\n callback_data: `menu:second:${menuToHandle}`,\n },\n ],\n ],\n };\n return { text: text, keyboard, device: menuToHandle };\n};\n\nconst back = async ({ telegramParams, userToSend, allMenusWithData, menus }: BackMenuType): Promise<void> => {\n const result = await switchBack(userToSend, allMenusWithData, menus);\n if (result) {\n const { keyboard, parse_mode, textToSend = '' } = result;\n await sendToTelegram({ userToSend, textToSend, keyboard, parse_mode: parse_mode, telegramParams });\n }\n};\n\nexport async function callSubMenu({\n jsonStringNav,\n userToSend,\n telegramParams,\n part,\n allMenusWithData,\n menus,\n}: CallSubMenu): Promise<{ newNav: string | undefined } | undefined> {\n try {\n const obj = await subMenu({\n menuString: jsonStringNav,\n userToSend,\n telegramParams,\n part,\n allMenusWithData,\n menus,\n });\n adapter.log.debug(`Submenu : ${jsonString(obj)}`);\n\n if (obj?.text && obj?.keyboard) {\n sendToTelegramSubmenu(userToSend, obj.text, obj.keyboard, telegramParams, part.parse_mode);\n }\n return { newNav: obj?.navToGoBack };\n } catch (e: any) {\n errorLogger('Error callSubMenu:', e, adapter);\n }\n}\n\nexport async function subMenu({\n menuString,\n userToSend,\n telegramParams,\n part,\n allMenusWithData,\n menus,\n}: {\n menuString: string;\n userToSend: string;\n telegramParams: TelegramParams;\n part: Part;\n allMenusWithData: AllMenusWithData;\n menus: string[];\n}): Promise<{ text?: string; keyboard?: Keyboard; device?: string; navToGoBack?: string } | undefined> {\n try {\n adapter.log.debug(`Menu : ${menuString}`);\n\n const text = await returnTextModifier(part.text);\n\n if (isDeleteMenu(menuString)) {\n await deleteMessageIds(userToSend, telegramParams, 'all');\n const menu: string | undefined = menuString.split(':')?.[2]?.split('\"')?.[0]; //[[\"menu:deleteAll:\u00DCbersicht\"],[\"\"]]\n if (menu && isNonEmptyString(menu)) {\n return { navToGoBack: menu };\n }\n }\n\n const { cbData, menuToHandle, val } = getMenuValues(menuString);\n if (isCreateSwitch(cbData) && menuToHandle) {\n return createSwitchMenu({ cbData, text, menuToHandle: menuToHandle });\n }\n\n if (isFirstMenuValue(cbData)) {\n await setMenuValue({\n part,\n userToSend,\n telegramParams,\n menuNumber: 1,\n });\n }\n\n if (isSecondMenuValue(cbData)) {\n await setMenuValue({ part, userToSend, telegramParams, menuNumber: 2 });\n }\n\n if (isCreateDynamicSwitch(cbData) && menuToHandle) {\n return createDynamicSwitchMenu(menuString, menuToHandle, text);\n }\n\n if (isSetDynamicSwitchVal(cbData) && val) {\n await handleSetState(part, userToSend, val, telegramParams); //SetDynamicValue\n }\n\n if (isCreateSubmenuPercent(menuString, cbData) && menuToHandle) {\n return createSubmenuPercent({ cbData, text, menuToHandle: menuToHandle });\n }\n\n if (isSetSubmenuPercent(menuString, step)) {\n const value = parseInt(menuString.split(':')[1].split(',')[1]);\n await handleSetState(part, userToSend, value, telegramParams);\n }\n\n if (isCreateSubmenuNumber(menuString, cbData) && menuToHandle) {\n return createSubmenuNumber({ cbData, text, menuToHandle: menuToHandle });\n }\n\n if (isSetSubmenuNumber(menuString, cbData)) {\n const { value } = getSubmenuNumberValues(menuString);\n await handleSetState(part, userToSend, value, telegramParams);\n }\n\n if (isMenuBack(menuString)) {\n await back({\n userToSend,\n allMenusWithData,\n menus,\n telegramParams,\n });\n }\n } catch (error: any) {\n errorLogger('Error subMenu:', error, adapter);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["splittedData", "step"]
7
7
  }
@@ -48,13 +48,12 @@ async function sendToTelegram({
48
48
  `Send to: { user: ${userToSend} , chatId :${chatId} , text: ${textToSend} , instance: ${telegramInstance} , userListWithChatID: ${(0, import_string.jsonString)(userListWithChatID)} , parseMode: ${parse_mode} }`
49
49
  );
50
50
  validateTextToSend(textToSend);
51
- const validatedTextToSend = (0, import_string.cleanUpString)(textToSend);
52
51
  if (!keyboard) {
53
52
  import_main.adapter.sendTo(
54
53
  telegramInstance,
55
54
  "send",
56
55
  {
57
- text: validatedTextToSend,
56
+ text: (0, import_string.cleanUpString)(textToSend),
58
57
  chatId,
59
58
  parse_mode: (0, import_appUtils.getParseMode)(parse_mode)
60
59
  },
@@ -68,7 +67,7 @@ async function sendToTelegram({
68
67
  {
69
68
  chatId,
70
69
  parse_mode: (0, import_appUtils.getParseMode)(parse_mode),
71
- text: await (0, import_utilities.returnTextModifier)(validatedTextToSend),
70
+ text: await (0, import_utilities.returnTextModifier)((0, import_string.cleanUpString)(textToSend)),
72
71
  reply_markup: {
73
72
  keyboard,
74
73
  resize_keyboard,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/app/telegram.ts"],
4
- "sourcesContent": ["import { errorLogger } from './logging';\nimport { returnTextModifier } from '../lib/utilities';\nimport { adapter } from '../main';\nimport type { Keyboard, Location, Telegram, TelegramParams } from '../types/types';\nimport { getChatID } from '../lib/utils';\nimport { cleanUpString, isEmptyString, jsonString } from '../lib/string';\nimport { getParseMode } from '../lib/appUtils';\n\nfunction validateTextToSend(textToSend: string | undefined): void {\n if (!textToSend || isEmptyString(textToSend)) {\n adapter.log.error('There is a problem! Text to send is empty or undefined, please check your configuration.');\n }\n}\n\nasync function sendToTelegram({\n userToSend,\n textToSend,\n keyboard,\n telegramParams,\n parse_mode,\n}: Telegram): Promise<void> {\n try {\n const { telegramInstance, resize_keyboard, one_time_keyboard, userListWithChatID } = telegramParams;\n const chatId = getChatID(userListWithChatID, userToSend);\n\n adapter.log.debug(\n `Send to: { user: ${userToSend} , chatId :${chatId} , text: ${textToSend} , instance: ${telegramInstance} , userListWithChatID: ${jsonString(userListWithChatID)} , parseMode: ${parse_mode} }`,\n );\n validateTextToSend(textToSend);\n\n const validatedTextToSend = cleanUpString(textToSend);\n if (!keyboard) {\n adapter.sendTo(\n telegramInstance,\n 'send',\n {\n text: validatedTextToSend,\n chatId,\n parse_mode: getParseMode(parse_mode),\n },\n res => telegramLogger(res),\n );\n return;\n }\n\n adapter.sendTo(\n telegramInstance,\n 'send',\n {\n chatId,\n parse_mode: getParseMode(parse_mode),\n text: await returnTextModifier(validatedTextToSend),\n reply_markup: {\n keyboard,\n resize_keyboard,\n one_time_keyboard,\n },\n },\n res => telegramLogger(res),\n );\n } catch (e) {\n errorLogger('Error sendToTelegram:', e, adapter);\n }\n}\n\nfunction sendToTelegramSubmenu(\n user: string,\n textToSend: string,\n keyboard: Keyboard,\n telegramParams: TelegramParams,\n parse_mode?: boolean,\n): void {\n const { telegramInstance: instance, userListWithChatID } = telegramParams;\n validateTextToSend(textToSend);\n adapter.sendTo(\n instance,\n 'send',\n {\n chatId: getChatID(userListWithChatID, user),\n parse_mode: getParseMode(parse_mode),\n text: cleanUpString(textToSend),\n reply_markup: keyboard,\n },\n (res: any) => telegramLogger(res),\n );\n}\n\nconst sendLocationToTelegram = async (\n user: string,\n data: Location[],\n telegramParams: TelegramParams,\n): Promise<void> => {\n const { userListWithChatID, telegramInstance: instance } = telegramParams;\n try {\n const chatId = getChatID(userListWithChatID, user);\n\n for (const { longitude: longitudeID, latitude: latitudeID } of data) {\n if (!(latitudeID || longitudeID)) {\n continue;\n }\n\n const latitude = await adapter.getForeignStateAsync(latitudeID);\n const longitude = await adapter.getForeignStateAsync(longitudeID);\n if (!latitude || !longitude) {\n continue;\n }\n adapter.sendTo(\n instance,\n {\n chatId: chatId,\n latitude: latitude.val,\n longitude: longitude.val,\n disable_notification: true,\n },\n (res: any) => telegramLogger(res),\n );\n }\n } catch (e: any) {\n errorLogger('Error send location to telegram:', e, adapter);\n }\n};\n\nfunction telegramLogger(res: any): void {\n adapter.log.debug(`Telegram response : \"${jsonString(res)}\"`);\n}\n\nexport { sendToTelegram, sendToTelegramSubmenu, sendLocationToTelegram };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA4B;AAC5B,uBAAmC;AACnC,kBAAwB;AAExB,mBAA0B;AAC1B,oBAAyD;AACzD,sBAA6B;AAE7B,SAAS,mBAAmB,YAAsC;AAC9D,MAAI,CAAC,kBAAc,6BAAc,UAAU,GAAG;AAC1C,wBAAQ,IAAI,MAAM,0FAA0F;AAAA,EAChH;AACJ;AAEA,eAAe,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAA4B;AACxB,MAAI;AACA,UAAM,EAAE,kBAAkB,iBAAiB,mBAAmB,mBAAmB,IAAI;AACrF,UAAM,aAAS,wBAAU,oBAAoB,UAAU;AAEvD,wBAAQ,IAAI;AAAA,MACR,oBAAoB,UAAU,cAAc,MAAM,YAAY,UAAU,gBAAgB,gBAAgB,8BAA0B,0BAAW,kBAAkB,CAAC,iBAAiB,UAAU;AAAA,IAC/L;AACA,uBAAmB,UAAU;AAE7B,UAAM,0BAAsB,6BAAc,UAAU;AACpD,QAAI,CAAC,UAAU;AACX,0BAAQ;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,UACI,MAAM;AAAA,UACN;AAAA,UACA,gBAAY,8BAAa,UAAU;AAAA,QACvC;AAAA,QACA,SAAO,eAAe,GAAG;AAAA,MAC7B;AACA;AAAA,IACJ;AAEA,wBAAQ;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,QACI;AAAA,QACA,gBAAY,8BAAa,UAAU;AAAA,QACnC,MAAM,UAAM,qCAAmB,mBAAmB;AAAA,QAClD,cAAc;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,SAAO,eAAe,GAAG;AAAA,IAC7B;AAAA,EACJ,SAAS,GAAG;AACR,oCAAY,yBAAyB,GAAG,mBAAO;AAAA,EACnD;AACJ;AAEA,SAAS,sBACL,MACA,YACA,UACA,gBACA,YACI;AACJ,QAAM,EAAE,kBAAkB,UAAU,mBAAmB,IAAI;AAC3D,qBAAmB,UAAU;AAC7B,sBAAQ;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,MACI,YAAQ,wBAAU,oBAAoB,IAAI;AAAA,MAC1C,gBAAY,8BAAa,UAAU;AAAA,MACnC,UAAM,6BAAc,UAAU;AAAA,MAC9B,cAAc;AAAA,IAClB;AAAA,IACA,CAAC,QAAa,eAAe,GAAG;AAAA,EACpC;AACJ;AAEA,MAAM,yBAAyB,OAC3B,MACA,MACA,mBACgB;AAChB,QAAM,EAAE,oBAAoB,kBAAkB,SAAS,IAAI;AAC3D,MAAI;AACA,UAAM,aAAS,wBAAU,oBAAoB,IAAI;AAEjD,eAAW,EAAE,WAAW,aAAa,UAAU,WAAW,KAAK,MAAM;AACjE,UAAI,EAAE,cAAc,cAAc;AAC9B;AAAA,MACJ;AAEA,YAAM,WAAW,MAAM,oBAAQ,qBAAqB,UAAU;AAC9D,YAAM,YAAY,MAAM,oBAAQ,qBAAqB,WAAW;AAChE,UAAI,CAAC,YAAY,CAAC,WAAW;AACzB;AAAA,MACJ;AACA,0BAAQ;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA,UAAU,SAAS;AAAA,UACnB,WAAW,UAAU;AAAA,UACrB,sBAAsB;AAAA,QAC1B;AAAA,QACA,CAAC,QAAa,eAAe,GAAG;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,SAAS,GAAQ;AACb,oCAAY,oCAAoC,GAAG,mBAAO;AAAA,EAC9D;AACJ;AAEA,SAAS,eAAe,KAAgB;AACpC,sBAAQ,IAAI,MAAM,4BAAwB,0BAAW,GAAG,CAAC,GAAG;AAChE;",
4
+ "sourcesContent": ["import { errorLogger } from './logging';\nimport { returnTextModifier } from '../lib/utilities';\nimport { adapter } from '../main';\nimport type { Keyboard, Location, Telegram, TelegramParams } from '../types/types';\nimport { getChatID } from '../lib/utils';\nimport { cleanUpString, isEmptyString, jsonString } from '../lib/string';\nimport { getParseMode } from '../lib/appUtils';\n\nfunction validateTextToSend(textToSend: string | undefined): void {\n if (!textToSend || isEmptyString(textToSend)) {\n adapter.log.error('There is a problem! Text to send is empty or undefined, please check your configuration.');\n }\n}\n\nasync function sendToTelegram({\n userToSend,\n textToSend,\n keyboard,\n telegramParams,\n parse_mode,\n}: Telegram): Promise<void> {\n try {\n const { telegramInstance, resize_keyboard, one_time_keyboard, userListWithChatID } = telegramParams;\n const chatId = getChatID(userListWithChatID, userToSend);\n\n adapter.log.debug(\n `Send to: { user: ${userToSend} , chatId :${chatId} , text: ${textToSend} , instance: ${telegramInstance} , userListWithChatID: ${jsonString(userListWithChatID)} , parseMode: ${parse_mode} }`,\n );\n validateTextToSend(textToSend);\n\n if (!keyboard) {\n adapter.sendTo(\n telegramInstance,\n 'send',\n {\n text: cleanUpString(textToSend),\n chatId,\n parse_mode: getParseMode(parse_mode),\n },\n res => telegramLogger(res),\n );\n return;\n }\n\n adapter.sendTo(\n telegramInstance,\n 'send',\n {\n chatId,\n parse_mode: getParseMode(parse_mode),\n text: await returnTextModifier(cleanUpString(textToSend)),\n reply_markup: {\n keyboard,\n resize_keyboard,\n one_time_keyboard,\n },\n },\n res => telegramLogger(res),\n );\n } catch (e) {\n errorLogger('Error sendToTelegram:', e, adapter);\n }\n}\n\nfunction sendToTelegramSubmenu(\n user: string,\n textToSend: string,\n keyboard: Keyboard,\n telegramParams: TelegramParams,\n parse_mode?: boolean,\n): void {\n const { telegramInstance: instance, userListWithChatID } = telegramParams;\n validateTextToSend(textToSend);\n adapter.sendTo(\n instance,\n 'send',\n {\n chatId: getChatID(userListWithChatID, user),\n parse_mode: getParseMode(parse_mode),\n text: cleanUpString(textToSend),\n reply_markup: keyboard,\n },\n (res: any) => telegramLogger(res),\n );\n}\n\nconst sendLocationToTelegram = async (\n user: string,\n data: Location[],\n telegramParams: TelegramParams,\n): Promise<void> => {\n const { userListWithChatID, telegramInstance: instance } = telegramParams;\n try {\n const chatId = getChatID(userListWithChatID, user);\n\n for (const { longitude: longitudeID, latitude: latitudeID } of data) {\n if (!(latitudeID || longitudeID)) {\n continue;\n }\n\n const latitude = await adapter.getForeignStateAsync(latitudeID);\n const longitude = await adapter.getForeignStateAsync(longitudeID);\n if (!latitude || !longitude) {\n continue;\n }\n adapter.sendTo(\n instance,\n {\n chatId: chatId,\n latitude: latitude.val,\n longitude: longitude.val,\n disable_notification: true,\n },\n (res: any) => telegramLogger(res),\n );\n }\n } catch (e: any) {\n errorLogger('Error send location to telegram:', e, adapter);\n }\n};\n\nfunction telegramLogger(res: any): void {\n adapter.log.debug(`Telegram response : \"${jsonString(res)}\"`);\n}\n\nexport { sendToTelegram, sendToTelegramSubmenu, sendLocationToTelegram };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA4B;AAC5B,uBAAmC;AACnC,kBAAwB;AAExB,mBAA0B;AAC1B,oBAAyD;AACzD,sBAA6B;AAE7B,SAAS,mBAAmB,YAAsC;AAC9D,MAAI,CAAC,kBAAc,6BAAc,UAAU,GAAG;AAC1C,wBAAQ,IAAI,MAAM,0FAA0F;AAAA,EAChH;AACJ;AAEA,eAAe,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAA4B;AACxB,MAAI;AACA,UAAM,EAAE,kBAAkB,iBAAiB,mBAAmB,mBAAmB,IAAI;AACrF,UAAM,aAAS,wBAAU,oBAAoB,UAAU;AAEvD,wBAAQ,IAAI;AAAA,MACR,oBAAoB,UAAU,cAAc,MAAM,YAAY,UAAU,gBAAgB,gBAAgB,8BAA0B,0BAAW,kBAAkB,CAAC,iBAAiB,UAAU;AAAA,IAC/L;AACA,uBAAmB,UAAU;AAE7B,QAAI,CAAC,UAAU;AACX,0BAAQ;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,UACI,UAAM,6BAAc,UAAU;AAAA,UAC9B;AAAA,UACA,gBAAY,8BAAa,UAAU;AAAA,QACvC;AAAA,QACA,SAAO,eAAe,GAAG;AAAA,MAC7B;AACA;AAAA,IACJ;AAEA,wBAAQ;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,QACI;AAAA,QACA,gBAAY,8BAAa,UAAU;AAAA,QACnC,MAAM,UAAM,yCAAmB,6BAAc,UAAU,CAAC;AAAA,QACxD,cAAc;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,SAAO,eAAe,GAAG;AAAA,IAC7B;AAAA,EACJ,SAAS,GAAG;AACR,oCAAY,yBAAyB,GAAG,mBAAO;AAAA,EACnD;AACJ;AAEA,SAAS,sBACL,MACA,YACA,UACA,gBACA,YACI;AACJ,QAAM,EAAE,kBAAkB,UAAU,mBAAmB,IAAI;AAC3D,qBAAmB,UAAU;AAC7B,sBAAQ;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,MACI,YAAQ,wBAAU,oBAAoB,IAAI;AAAA,MAC1C,gBAAY,8BAAa,UAAU;AAAA,MACnC,UAAM,6BAAc,UAAU;AAAA,MAC9B,cAAc;AAAA,IAClB;AAAA,IACA,CAAC,QAAa,eAAe,GAAG;AAAA,EACpC;AACJ;AAEA,MAAM,yBAAyB,OAC3B,MACA,MACA,mBACgB;AAChB,QAAM,EAAE,oBAAoB,kBAAkB,SAAS,IAAI;AAC3D,MAAI;AACA,UAAM,aAAS,wBAAU,oBAAoB,IAAI;AAEjD,eAAW,EAAE,WAAW,aAAa,UAAU,WAAW,KAAK,MAAM;AACjE,UAAI,EAAE,cAAc,cAAc;AAC9B;AAAA,MACJ;AAEA,YAAM,WAAW,MAAM,oBAAQ,qBAAqB,UAAU;AAC9D,YAAM,YAAY,MAAM,oBAAQ,qBAAqB,WAAW;AAChE,UAAI,CAAC,YAAY,CAAC,WAAW;AACzB;AAAA,MACJ;AACA,0BAAQ;AAAA,QACJ;AAAA,QACA;AAAA,UACI;AAAA,UACA,UAAU,SAAS;AAAA,UACnB,WAAW,UAAU;AAAA,UACrB,sBAAsB;AAAA,QAC1B;AAAA,QACA,CAAC,QAAa,eAAe,GAAG;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,SAAS,GAAQ;AACb,oCAAY,oCAAoC,GAAG,mBAAO;AAAA,EAC9D;AACJ;AAEA,SAAS,eAAe,KAAgB;AACpC,sBAAQ,IAAI,MAAM,4BAAwB,0BAAW,GAAG,CAAC,GAAG;AAChE;",
6
6
  "names": []
7
7
  }
@@ -20,7 +20,6 @@ var appUtils_exports = {};
20
20
  __export(appUtils_exports, {
21
21
  calcValue: () => calcValue,
22
22
  checkOneLineValue: () => checkOneLineValue,
23
- exchangePlaceholderWithValue: () => exchangePlaceholderWithValue,
24
23
  getListOfMenusIncludingUser: () => getListOfMenusIncludingUser,
25
24
  getNewStructure: () => getNewStructure,
26
25
  getParseMode: () => getParseMode,
@@ -39,7 +38,6 @@ var import_string = require("./string");
39
38
  var import_math = require("./math");
40
39
  var import_utils = require("./utils");
41
40
  var import_object = require("./object");
42
- var import_appUtilsString = require("./appUtilsString");
43
41
  const checkOneLineValue = (text) => !text.includes(import_config.config.rowSplitter) ? `${text} ${import_config.config.rowSplitter}` : text;
44
42
  function calcValue(textToSend, val, adapter) {
45
43
  const { substringExcludeSearch, textExcludeSubstring } = (0, import_string.decomposeText)(
@@ -92,11 +90,11 @@ function statusIdAndParams(substringExcludeSearch) {
92
90
  return substringExcludeSearch.includes(import_config.config.status.oldWithId) ? {
93
91
  id: (0, import_string.removeQuotes)(secondEl),
94
92
  //'id':'ID':true
95
- shouldChange: (0, import_utils.isTruthy)((0, import_string.removeQuotes)(thirdEl))
93
+ shouldChangeByStatusParameter: (0, import_utils.isTruthy)((0, import_string.removeQuotes)(thirdEl))
96
94
  } : {
97
95
  id: (0, import_string.removeQuotes)(firstEl),
98
96
  //'ID':true
99
- shouldChange: (0, import_utils.isTruthy)((0, import_string.removeQuotes)(secondEl))
97
+ shouldChangeByStatusParameter: (0, import_utils.isTruthy)((0, import_string.removeQuotes)(secondEl))
100
98
  };
101
99
  }
102
100
  function isStartside(startSide) {
@@ -127,13 +125,6 @@ const getStartSides = (menusWithUsers, dataObject) => {
127
125
  });
128
126
  return startSides;
129
127
  };
130
- const exchangePlaceholderWithValue = (textToSend, val) => {
131
- const searchString = (0, import_appUtilsString.getPlaceholderValue)(textToSend);
132
- if (searchString !== "") {
133
- return textToSend.replace(searchString, val.toString()).trim();
134
- }
135
- return `${textToSend} ${val}`.trim();
136
- };
137
128
  function isSameType(receivedType, obj) {
138
129
  return receivedType === obj.common.type;
139
130
  }
@@ -141,7 +132,6 @@ function isSameType(receivedType, obj) {
141
132
  0 && (module.exports = {
142
133
  calcValue,
143
134
  checkOneLineValue,
144
- exchangePlaceholderWithValue,
145
135
  getListOfMenusIncludingUser,
146
136
  getNewStructure,
147
137
  getParseMode,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/appUtils.ts"],
4
- "sourcesContent": ["import { config } from '../config/config';\nimport type {\n Adapter,\n DataObject,\n GetTimeWithPad,\n MenusWithUsers,\n Navigation,\n NavigationRow,\n NewObjectStructure,\n ParseModeType,\n PrimitiveType,\n splittedNavigation,\n StartSides,\n UsersInGroup,\n} from '../types/types';\nimport { decomposeText, removeQuotes } from './string';\nimport { evaluate } from './math';\nimport { isTruthy } from './utils';\nimport { trimAllItems } from './object';\nimport { getPlaceholderValue } from './appUtilsString';\n\nexport const checkOneLineValue = (text: string): string =>\n !text.includes(config.rowSplitter) ? `${text} ${config.rowSplitter}` : text;\n\nexport function calcValue(\n textToSend: string,\n val: string,\n adapter: Adapter,\n): { textToSend: string; calculated: any; error: boolean } {\n const { substringExcludeSearch, textExcludeSubstring } = decomposeText(\n textToSend,\n config.math.start,\n config.math.end,\n );\n const { val: evalVal, error } = evaluate([val, substringExcludeSearch], adapter);\n\n return error\n ? { textToSend: textExcludeSubstring, calculated: val, error }\n : { textToSend: textExcludeSubstring, calculated: evalVal, error };\n}\n\nexport function roundValue(val: string, textToSend: string): { roundedValue: string; text: string; error: boolean } {\n const floatVal = parseFloat(val);\n const { textExcludeSubstring, substringExcludeSearch: decimalPlaces } = decomposeText(\n textToSend,\n config.round.start,\n config.round.end,\n );\n const decimalPlacesNum = parseInt(decimalPlaces);\n\n if (isNaN(floatVal)) {\n return { roundedValue: 'NaN', text: textExcludeSubstring, error: true };\n }\n if (isNaN(decimalPlacesNum)) {\n return { roundedValue: val, text: textExcludeSubstring, error: true };\n }\n\n return { roundedValue: floatVal.toFixed(decimalPlacesNum), text: textExcludeSubstring, error: false };\n}\n\nexport const getListOfMenusIncludingUser = (menusWithUsers: MenusWithUsers, userToSend: string): string[] => {\n const menus: string[] = [];\n for (const key in menusWithUsers) {\n if (menusWithUsers[key].includes(userToSend)) {\n menus.push(key);\n }\n }\n return menus;\n};\n\nexport const getParseMode = (val = false): ParseModeType => (val ? 'HTML' : 'Markdown');\n\nexport const getTypeofTimestamp = (val: string): 'lc' | 'ts' => (val.includes('lc') ? 'lc' : 'ts');\n\nexport const timeStringReplacer = ({ d, h, m, ms, y, s, mo }: GetTimeWithPad, string?: string): string | undefined => {\n if (string) {\n string = string\n .replace('sss', ms)\n .replace('ss', s)\n .replace('mm', m)\n .replace('hh', h)\n .replace('DD', d)\n .replace('MM', mo)\n .replace('YYYY', y)\n .replace('YY', y.slice(-2))\n .replace('(', '')\n .replace(')', '');\n }\n return string;\n};\n\nexport function statusIdAndParams(substringExcludeSearch: string): { id: string; shouldChange: boolean } {\n const splitArray = substringExcludeSearch.split(':');\n const firstEl = splitArray[0];\n const secondEl = splitArray[1] ?? '';\n const thirdEl = splitArray[2] ?? '';\n return substringExcludeSearch.includes(config.status.oldWithId)\n ? {\n id: removeQuotes(secondEl), //'id':'ID':true\n shouldChange: isTruthy(removeQuotes(thirdEl)),\n }\n : {\n id: removeQuotes(firstEl), //'ID':true\n shouldChange: isTruthy(removeQuotes(secondEl)),\n };\n}\n\nexport function isStartside(startSide: string): boolean {\n return startSide != '-' && startSide != '';\n}\n\nexport function splitNavigation(rows: NavigationRow[]): splittedNavigation[] {\n const generatedNavigation: splittedNavigation[] = [];\n\n rows.forEach(({ value, text, parse_mode, call }) => {\n const nav: Navigation = [];\n\n checkOneLineValue(value)\n .split(config.rowSplitter)\n .forEach(function (el, index: number) {\n nav[index] = trimAllItems(el.split(','));\n });\n\n generatedNavigation.push({ call, text, parse_mode: isTruthy(parse_mode), nav });\n });\n return generatedNavigation;\n}\n\nexport function getNewStructure(val: splittedNavigation[]): NewObjectStructure {\n const obj: NewObjectStructure = {};\n val.forEach(function ({ nav, text, parse_mode, call }) {\n obj[call] = { nav, text, parse_mode };\n });\n return obj;\n}\n\nexport const getStartSides = (menusWithUsers: UsersInGroup, dataObject: DataObject): StartSides => {\n const startSides: StartSides = {};\n Object.keys(menusWithUsers).forEach(element => {\n startSides[element] = dataObject.nav[element][0].call;\n });\n return startSides;\n};\n\nexport const exchangePlaceholderWithValue = (textToSend: string, val: PrimitiveType): string => {\n const searchString = getPlaceholderValue(textToSend);\n if (searchString !== '') {\n return textToSend.replace(searchString, val.toString()).trim();\n }\n return `${textToSend} ${val}`.trim();\n};\n\nexport function isSameType(\n receivedType: 'undefined' | 'object' | 'boolean' | 'number' | 'string' | 'function' | 'symbol' | 'bigint',\n obj: ioBroker.Object,\n): boolean {\n return receivedType === obj.common.type;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { config } from '../config/config';\nimport type {\n Adapter,\n DataObject,\n GetTimeWithPad,\n MenusWithUsers,\n Navigation,\n NavigationRow,\n NewObjectStructure,\n ParseModeType,\n splittedNavigation,\n StartSides,\n UsersInGroup,\n} from '../types/types';\nimport { decomposeText, removeQuotes } from './string';\nimport { evaluate } from './math';\nimport { isTruthy } from './utils';\nimport { trimAllItems } from './object';\n\nexport const checkOneLineValue = (text: string): string =>\n !text.includes(config.rowSplitter) ? `${text} ${config.rowSplitter}` : text;\n\nexport function calcValue(\n textToSend: string,\n val: string,\n adapter: Adapter,\n): { textToSend: string; calculated: any; error: boolean } {\n const { substringExcludeSearch, textExcludeSubstring } = decomposeText(\n textToSend,\n config.math.start,\n config.math.end,\n );\n const { val: evalVal, error } = evaluate([val, substringExcludeSearch], adapter);\n\n return error\n ? { textToSend: textExcludeSubstring, calculated: val, error }\n : { textToSend: textExcludeSubstring, calculated: evalVal, error };\n}\n\nexport function roundValue(val: string, textToSend: string): { roundedValue: string; text: string; error: boolean } {\n const floatVal = parseFloat(val);\n const { textExcludeSubstring, substringExcludeSearch: decimalPlaces } = decomposeText(\n textToSend,\n config.round.start,\n config.round.end,\n );\n const decimalPlacesNum = parseInt(decimalPlaces);\n\n if (isNaN(floatVal)) {\n return { roundedValue: 'NaN', text: textExcludeSubstring, error: true };\n }\n if (isNaN(decimalPlacesNum)) {\n return { roundedValue: val, text: textExcludeSubstring, error: true };\n }\n\n return { roundedValue: floatVal.toFixed(decimalPlacesNum), text: textExcludeSubstring, error: false };\n}\n\nexport const getListOfMenusIncludingUser = (menusWithUsers: MenusWithUsers, userToSend: string): string[] => {\n const menus: string[] = [];\n for (const key in menusWithUsers) {\n if (menusWithUsers[key].includes(userToSend)) {\n menus.push(key);\n }\n }\n return menus;\n};\n\nexport const getParseMode = (val = false): ParseModeType => (val ? 'HTML' : 'Markdown');\n\nexport const getTypeofTimestamp = (val: string): 'lc' | 'ts' => (val.includes('lc') ? 'lc' : 'ts');\n\nexport const timeStringReplacer = ({ d, h, m, ms, y, s, mo }: GetTimeWithPad, string?: string): string | undefined => {\n if (string) {\n string = string\n .replace('sss', ms)\n .replace('ss', s)\n .replace('mm', m)\n .replace('hh', h)\n .replace('DD', d)\n .replace('MM', mo)\n .replace('YYYY', y)\n .replace('YY', y.slice(-2))\n .replace('(', '')\n .replace(')', '');\n }\n return string;\n};\n\nexport function statusIdAndParams(substringExcludeSearch: string): {\n id: string;\n shouldChangeByStatusParameter: boolean;\n} {\n const splitArray = substringExcludeSearch.split(':');\n const firstEl = splitArray[0];\n const secondEl = splitArray[1] ?? '';\n const thirdEl = splitArray[2] ?? '';\n return substringExcludeSearch.includes(config.status.oldWithId)\n ? {\n id: removeQuotes(secondEl), //'id':'ID':true\n shouldChangeByStatusParameter: isTruthy(removeQuotes(thirdEl)),\n }\n : {\n id: removeQuotes(firstEl), //'ID':true\n shouldChangeByStatusParameter: isTruthy(removeQuotes(secondEl)),\n };\n}\n\nexport function isStartside(startSide: string): boolean {\n return startSide != '-' && startSide != '';\n}\n\nexport function splitNavigation(rows: NavigationRow[]): splittedNavigation[] {\n const generatedNavigation: splittedNavigation[] = [];\n\n rows.forEach(({ value, text, parse_mode, call }) => {\n const nav: Navigation = [];\n\n checkOneLineValue(value)\n .split(config.rowSplitter)\n .forEach(function (el, index: number) {\n nav[index] = trimAllItems(el.split(','));\n });\n\n generatedNavigation.push({ call, text, parse_mode: isTruthy(parse_mode), nav });\n });\n return generatedNavigation;\n}\n\nexport function getNewStructure(val: splittedNavigation[]): NewObjectStructure {\n const obj: NewObjectStructure = {};\n val.forEach(function ({ nav, text, parse_mode, call }) {\n obj[call] = { nav, text, parse_mode };\n });\n return obj;\n}\n\nexport const getStartSides = (menusWithUsers: UsersInGroup, dataObject: DataObject): StartSides => {\n const startSides: StartSides = {};\n Object.keys(menusWithUsers).forEach(element => {\n startSides[element] = dataObject.nav[element][0].call;\n });\n return startSides;\n};\n\nexport function isSameType(\n receivedType: 'undefined' | 'object' | 'boolean' | 'number' | 'string' | 'function' | 'symbol' | 'bigint',\n obj: ioBroker.Object,\n): boolean {\n return receivedType === obj.common.type;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AAcvB,oBAA4C;AAC5C,kBAAyB;AACzB,mBAAyB;AACzB,oBAA6B;AAEtB,MAAM,oBAAoB,CAAC,SAC9B,CAAC,KAAK,SAAS,qBAAO,WAAW,IAAI,GAAG,IAAI,IAAI,qBAAO,WAAW,KAAK;AAEpE,SAAS,UACZ,YACA,KACA,SACuD;AACvD,QAAM,EAAE,wBAAwB,qBAAqB,QAAI;AAAA,IACrD;AAAA,IACA,qBAAO,KAAK;AAAA,IACZ,qBAAO,KAAK;AAAA,EAChB;AACA,QAAM,EAAE,KAAK,SAAS,MAAM,QAAI,sBAAS,CAAC,KAAK,sBAAsB,GAAG,OAAO;AAE/E,SAAO,QACD,EAAE,YAAY,sBAAsB,YAAY,KAAK,MAAM,IAC3D,EAAE,YAAY,sBAAsB,YAAY,SAAS,MAAM;AACzE;AAEO,SAAS,WAAW,KAAa,YAA4E;AAChH,QAAM,WAAW,WAAW,GAAG;AAC/B,QAAM,EAAE,sBAAsB,wBAAwB,cAAc,QAAI;AAAA,IACpE;AAAA,IACA,qBAAO,MAAM;AAAA,IACb,qBAAO,MAAM;AAAA,EACjB;AACA,QAAM,mBAAmB,SAAS,aAAa;AAE/C,MAAI,MAAM,QAAQ,GAAG;AACjB,WAAO,EAAE,cAAc,OAAO,MAAM,sBAAsB,OAAO,KAAK;AAAA,EAC1E;AACA,MAAI,MAAM,gBAAgB,GAAG;AACzB,WAAO,EAAE,cAAc,KAAK,MAAM,sBAAsB,OAAO,KAAK;AAAA,EACxE;AAEA,SAAO,EAAE,cAAc,SAAS,QAAQ,gBAAgB,GAAG,MAAM,sBAAsB,OAAO,MAAM;AACxG;AAEO,MAAM,8BAA8B,CAAC,gBAAgC,eAAiC;AACzG,QAAM,QAAkB,CAAC;AACzB,aAAW,OAAO,gBAAgB;AAC9B,QAAI,eAAe,GAAG,EAAE,SAAS,UAAU,GAAG;AAC1C,YAAM,KAAK,GAAG;AAAA,IAClB;AAAA,EACJ;AACA,SAAO;AACX;AAEO,MAAM,eAAe,CAAC,MAAM,UAA0B,MAAM,SAAS;AAErE,MAAM,qBAAqB,CAAC,QAA8B,IAAI,SAAS,IAAI,IAAI,OAAO;AAEtF,MAAM,qBAAqB,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAmB,WAAwC;AAClH,MAAI,QAAQ;AACR,aAAS,OACJ,QAAQ,OAAO,EAAE,EACjB,QAAQ,MAAM,CAAC,EACf,QAAQ,MAAM,CAAC,EACf,QAAQ,MAAM,CAAC,EACf,QAAQ,MAAM,CAAC,EACf,QAAQ,MAAM,EAAE,EAChB,QAAQ,QAAQ,CAAC,EACjB,QAAQ,MAAM,EAAE,MAAM,EAAE,CAAC,EACzB,QAAQ,KAAK,EAAE,EACf,QAAQ,KAAK,EAAE;AAAA,EACxB;AACA,SAAO;AACX;AAEO,SAAS,kBAAkB,wBAGhC;AA5FF;AA6FI,QAAM,aAAa,uBAAuB,MAAM,GAAG;AACnD,QAAM,UAAU,WAAW,CAAC;AAC5B,QAAM,YAAW,gBAAW,CAAC,MAAZ,YAAiB;AAClC,QAAM,WAAU,gBAAW,CAAC,MAAZ,YAAiB;AACjC,SAAO,uBAAuB,SAAS,qBAAO,OAAO,SAAS,IACxD;AAAA,IACI,QAAI,4BAAa,QAAQ;AAAA;AAAA,IACzB,mCAA+B,2BAAS,4BAAa,OAAO,CAAC;AAAA,EACjE,IACA;AAAA,IACI,QAAI,4BAAa,OAAO;AAAA;AAAA,IACxB,mCAA+B,2BAAS,4BAAa,QAAQ,CAAC;AAAA,EAClE;AACV;AAEO,SAAS,YAAY,WAA4B;AACpD,SAAO,aAAa,OAAO,aAAa;AAC5C;AAEO,SAAS,gBAAgB,MAA6C;AACzE,QAAM,sBAA4C,CAAC;AAEnD,OAAK,QAAQ,CAAC,EAAE,OAAO,MAAM,YAAY,KAAK,MAAM;AAChD,UAAM,MAAkB,CAAC;AAEzB,sBAAkB,KAAK,EAClB,MAAM,qBAAO,WAAW,EACxB,QAAQ,SAAU,IAAI,OAAe;AAClC,UAAI,KAAK,QAAI,4BAAa,GAAG,MAAM,GAAG,CAAC;AAAA,IAC3C,CAAC;AAEL,wBAAoB,KAAK,EAAE,MAAM,MAAM,gBAAY,uBAAS,UAAU,GAAG,IAAI,CAAC;AAAA,EAClF,CAAC;AACD,SAAO;AACX;AAEO,SAAS,gBAAgB,KAA+C;AAC3E,QAAM,MAA0B,CAAC;AACjC,MAAI,QAAQ,SAAU,EAAE,KAAK,MAAM,YAAY,KAAK,GAAG;AACnD,QAAI,IAAI,IAAI,EAAE,KAAK,MAAM,WAAW;AAAA,EACxC,CAAC;AACD,SAAO;AACX;AAEO,MAAM,gBAAgB,CAAC,gBAA8B,eAAuC;AAC/F,QAAM,aAAyB,CAAC;AAChC,SAAO,KAAK,cAAc,EAAE,QAAQ,aAAW;AAC3C,eAAW,OAAO,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC,EAAE;AAAA,EACrD,CAAC;AACD,SAAO;AACX;AAEO,SAAS,WACZ,cACA,KACO;AACP,SAAO,iBAAiB,IAAI,OAAO;AACvC;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var exchangeValue_exports = {};
20
+ __export(exchangeValue_exports, {
21
+ exchangePlaceholderWithValue: () => exchangePlaceholderWithValue,
22
+ exchangeValue: () => exchangeValue,
23
+ getPlaceholderValue: () => getPlaceholderValue
24
+ });
25
+ module.exports = __toCommonJS(exchangeValue_exports);
26
+ var import_config = require("../config/config");
27
+ var import_string = require("./string");
28
+ function isNoValueParameter(textToSend) {
29
+ let insertValue = true;
30
+ if (textToSend.includes("{novalue}")) {
31
+ textToSend.replace("{novalue}", "");
32
+ insertValue = false;
33
+ }
34
+ return { insertValue, textToSend };
35
+ }
36
+ const exchangeValue = (adapter, textToSend, val) => {
37
+ var _a;
38
+ const result = isNoValueParameter(textToSend);
39
+ textToSend = result.textToSend;
40
+ if (textToSend.includes(import_config.config.change.start)) {
41
+ const { start, end, command } = import_config.config.change;
42
+ const { substring, textExcludeSubstring } = (0, import_string.decomposeText)(textToSend, start, end);
43
+ const stringExcludedChange = (0, import_string.replaceAll)(substring, "'", '"').replace(command, "");
44
+ const { json, isValidJson } = (0, import_string.parseJSON)(stringExcludedChange);
45
+ if (isValidJson) {
46
+ const newValue = (_a = json[String(val)]) != null ? _a : val;
47
+ return {
48
+ newValue,
49
+ textToSend: exchangePlaceholderWithValue(textExcludeSubstring, result.insertValue ? newValue : ""),
50
+ error: false
51
+ };
52
+ }
53
+ adapter.log.error(`There is a error in your input: ${stringExcludedChange}`);
54
+ return { newValue: val != null ? val : "", textToSend, error: true };
55
+ }
56
+ return {
57
+ textToSend: exchangePlaceholderWithValue(textToSend, result.insertValue ? val != null ? val : "" : ""),
58
+ newValue: val != null ? val : "",
59
+ error: false
60
+ };
61
+ };
62
+ function exchangePlaceholderWithValue(textToSend, val) {
63
+ const searchString = getPlaceholderValue(textToSend);
64
+ return searchString !== "" ? textToSend.replace(searchString, val.toString()).trim() : `${textToSend} ${val}`.trim();
65
+ }
66
+ function getPlaceholderValue(textToSend) {
67
+ if (textToSend.includes("&&")) {
68
+ return "&&";
69
+ }
70
+ if (textToSend.includes("&amp;&amp;")) {
71
+ return "&amp;&amp;";
72
+ }
73
+ return "";
74
+ }
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ exchangePlaceholderWithValue,
78
+ exchangeValue,
79
+ getPlaceholderValue
80
+ });
81
+ //# sourceMappingURL=exchangeValue.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/lib/exchangeValue.ts"],
4
+ "sourcesContent": ["import type { Adapter, ExchangeValueReturn, PrimitiveType } from '../types/types';\nimport { config } from '../config/config';\nimport { decomposeText, parseJSON, replaceAll } from './string';\n\nfunction isNoValueParameter(textToSend: string): { insertValue: boolean; textToSend: string } {\n let insertValue = true;\n if (textToSend.includes('{novalue}')) {\n textToSend.replace('{novalue}', '');\n insertValue = false;\n }\n return { insertValue, textToSend };\n}\n\nexport const exchangeValue = (\n adapter: Adapter,\n textToSend: string,\n val: PrimitiveType | null | undefined,\n): ExchangeValueReturn => {\n const result = isNoValueParameter(textToSend);\n\n textToSend = result.textToSend;\n if (textToSend.includes(config.change.start)) {\n const { start, end, command } = config.change;\n const { substring, textExcludeSubstring } = decomposeText(textToSend, start, end); // change{\"true\":\"an\",\"false\":\"aus\"}\n\n const stringExcludedChange = replaceAll(substring, \"'\", '\"').replace(command, ''); // {\"true\":\"an\",\"false\":\"aus\"}\n\n const { json, isValidJson } = parseJSON<Record<string, string>>(stringExcludedChange);\n if (isValidJson) {\n const newValue = json[String(val)] ?? val;\n\n return {\n newValue,\n textToSend: exchangePlaceholderWithValue(textExcludeSubstring, result.insertValue ? newValue : ''),\n error: false,\n };\n }\n adapter.log.error(`There is a error in your input: ${stringExcludedChange}`);\n return { newValue: val ?? '', textToSend, error: true };\n }\n\n return {\n textToSend: exchangePlaceholderWithValue(textToSend, result.insertValue ? (val ?? '') : ''),\n newValue: val ?? '',\n error: false,\n };\n};\n\nexport function exchangePlaceholderWithValue(textToSend: string, val: PrimitiveType): string {\n const searchString = getPlaceholderValue(textToSend);\n return searchString !== ''\n ? textToSend.replace(searchString, val.toString()).trim()\n : `${textToSend} ${val}`.trim();\n}\n\nexport function getPlaceholderValue(textToSend: string): string {\n if (textToSend.includes('&&')) {\n return '&&';\n }\n if (textToSend.includes('&amp;&amp;')) {\n return '&amp;&amp;';\n }\n return '';\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AACvB,oBAAqD;AAErD,SAAS,mBAAmB,YAAkE;AAC1F,MAAI,cAAc;AAClB,MAAI,WAAW,SAAS,WAAW,GAAG;AAClC,eAAW,QAAQ,aAAa,EAAE;AAClC,kBAAc;AAAA,EAClB;AACA,SAAO,EAAE,aAAa,WAAW;AACrC;AAEO,MAAM,gBAAgB,CACzB,SACA,YACA,QACsB;AAjB1B;AAkBI,QAAM,SAAS,mBAAmB,UAAU;AAE5C,eAAa,OAAO;AACpB,MAAI,WAAW,SAAS,qBAAO,OAAO,KAAK,GAAG;AAC1C,UAAM,EAAE,OAAO,KAAK,QAAQ,IAAI,qBAAO;AACvC,UAAM,EAAE,WAAW,qBAAqB,QAAI,6BAAc,YAAY,OAAO,GAAG;AAEhF,UAAM,2BAAuB,0BAAW,WAAW,KAAK,GAAG,EAAE,QAAQ,SAAS,EAAE;AAEhF,UAAM,EAAE,MAAM,YAAY,QAAI,yBAAkC,oBAAoB;AACpF,QAAI,aAAa;AACb,YAAM,YAAW,UAAK,OAAO,GAAG,CAAC,MAAhB,YAAqB;AAEtC,aAAO;AAAA,QACH;AAAA,QACA,YAAY,6BAA6B,sBAAsB,OAAO,cAAc,WAAW,EAAE;AAAA,QACjG,OAAO;AAAA,MACX;AAAA,IACJ;AACA,YAAQ,IAAI,MAAM,mCAAmC,oBAAoB,EAAE;AAC3E,WAAO,EAAE,UAAU,oBAAO,IAAI,YAAY,OAAO,KAAK;AAAA,EAC1D;AAEA,SAAO;AAAA,IACH,YAAY,6BAA6B,YAAY,OAAO,cAAe,oBAAO,KAAM,EAAE;AAAA,IAC1F,UAAU,oBAAO;AAAA,IACjB,OAAO;AAAA,EACX;AACJ;AAEO,SAAS,6BAA6B,YAAoB,KAA4B;AACzF,QAAM,eAAe,oBAAoB,UAAU;AACnD,SAAO,iBAAiB,KAClB,WAAW,QAAQ,cAAc,IAAI,SAAS,CAAC,EAAE,KAAK,IACtD,GAAG,UAAU,IAAI,GAAG,GAAG,KAAK;AACtC;AAEO,SAAS,oBAAoB,YAA4B;AAC5D,MAAI,WAAW,SAAS,IAAI,GAAG;AAC3B,WAAO;AAAA,EACX;AACA,MAAI,WAAW,SAAS,YAAY,GAAG;AACnC,WAAO;AAAA,EACX;AACA,SAAO;AACX;",
6
+ "names": []
7
+ }
@@ -21,7 +21,6 @@ __export(string_exports, {
21
21
  cleanUpString: () => cleanUpString,
22
22
  decomposeText: () => decomposeText,
23
23
  getNewline: () => getNewline,
24
- getValueToExchange: () => getValueToExchange,
25
24
  isBooleanString: () => isBooleanString,
26
25
  isEmptyString: () => isEmptyString,
27
26
  isNonEmptyString: () => isNonEmptyString,
@@ -35,7 +34,6 @@ __export(string_exports, {
35
34
  stringReplacer: () => stringReplacer
36
35
  });
37
36
  module.exports = __toCommonJS(string_exports);
38
- var import_config = require("../config/config");
39
37
  var import_utils = require("./utils");
40
38
  var import_logging = require("../app/logging");
41
39
  const jsonString = (val) => JSON.stringify(val);
@@ -68,7 +66,7 @@ const cleanUpString = (text) => {
68
66
  if (!text) {
69
67
  return "";
70
68
  }
71
- return text.replace(/^['"]|['"]$/g, "").replace(/\\n/g, "\n").replace(/ \\\n/g, "\n").replace(/\\(?!n)/g, "");
69
+ return text.replace(/^['"]|['"]$/g, "").replace(/\\n/g, "\n").replace(/ \\\n/g, "\n").replace(/\\(?!n)/g, "").replace(/ {2,}/g, " ");
72
70
  };
73
71
  function decomposeText(text, firstSearch, secondSearch) {
74
72
  const startindex = text.indexOf(firstSearch);
@@ -84,25 +82,6 @@ function decomposeText(text, firstSearch, secondSearch) {
84
82
  substringExcludeSearch: substringExcludedSearch
85
83
  };
86
84
  }
87
- const getValueToExchange = (adapter, textToSend, val) => {
88
- var _a;
89
- if (textToSend.includes(import_config.config.change.start)) {
90
- const { start, end, command } = import_config.config.change;
91
- const { startindex, endindex, substring } = decomposeText(textToSend, start, end);
92
- const modifiedString = replaceAll(substring, "'", '"').replace(command, "");
93
- const { json, isValidJson } = parseJSON(modifiedString);
94
- if (isValidJson) {
95
- return {
96
- newValue: (_a = json[String(val)]) != null ? _a : val,
97
- textToSend: textToSend.substring(0, startindex) + textToSend.substring(endindex + 1),
98
- error: false
99
- };
100
- }
101
- adapter.log.error(`There is a error in your input: ${modifiedString}`);
102
- return { newValue: val, textToSend, error: true };
103
- }
104
- return { textToSend, newValue: val, error: false };
105
- };
106
85
  const isString = (value) => typeof value === "string";
107
86
  function stringReplacer(substring, valueToReplace) {
108
87
  if (typeof valueToReplace[0] === "string") {
@@ -135,7 +114,6 @@ const isEmptyString = (str) => str.trim() === "";
135
114
  cleanUpString,
136
115
  decomposeText,
137
116
  getNewline,
138
- getValueToExchange,
139
117
  isBooleanString,
140
118
  isEmptyString,
141
119
  isNonEmptyString,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/string.ts"],
4
- "sourcesContent": ["import { config } from '../config/config';\nimport type {\n Adapter,\n BooleanString,\n DecomposeTextReturnType,\n ExchangeValueReturn,\n PrimitiveType,\n StringReplacerObj,\n} from '../types/types';\nimport { isTruthy } from './utils';\nimport { errorLogger } from '../app/logging';\n\nexport const jsonString = (val?: string | number | boolean | object | null): string => JSON.stringify(val);\n\nexport function parseJSON<T>(\n val: string,\n adapter?: Adapter,\n): { json: string; isValidJson: false } | { json: T; isValidJson: true } {\n try {\n return { json: JSON.parse(val) as T, isValidJson: true };\n } catch (e) {\n if (adapter) {\n errorLogger('Error parseJSON:', e, adapter);\n }\n return { json: val, isValidJson: false };\n }\n}\n\nexport const replaceAll = (text: string, searchValue: string, replaceValue: string): string => {\n const escapedSearchValue = searchValue.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // Escape-Sonderzeichen\n return text.replace(new RegExp(escapedSearchValue, 'g'), replaceValue);\n};\n\nexport const replaceAllItems = (text: string, searched: (string | { search: string; val: string })[]): string => {\n searched.forEach(item => {\n if (typeof item === 'string') {\n text = replaceAll(text, item, '');\n } else {\n text = replaceAll(text, item.search, item.val);\n }\n });\n return text;\n};\n\nexport const removeQuotes = (text: string): string => text.replace(/['\"]/g, '');\n\nexport const cleanUpString = (text?: string): string => {\n if (!text) {\n return '';\n }\n return text\n .replace(/^['\"]|['\"]$/g, '') // Entferne Anf\u00FChrungszeichen am Anfang/Ende\n .replace(/\\\\n/g, '\\n') // Ersetze \\n durch einen echten Zeilenumbruch\n .replace(/ \\\\\\n/g, '\\n') // Ersetze \\n mit Leerzeichen davor durch einen echten Zeilenumbruch\n .replace(/\\\\(?!n)/g, ''); // Entferne alle Backslashes, die nicht von einem 'n' gefolgt werden\n};\n\nexport function decomposeText(text: string, firstSearch: string, secondSearch: string): DecomposeTextReturnType {\n const startindex = text.indexOf(firstSearch);\n const endindex = text.indexOf(secondSearch, startindex);\n const substring = text.substring(startindex, endindex + secondSearch.length);\n const substringExcludedSearch = stringReplacer(substring, [firstSearch, secondSearch]);\n const textWithoutSubstring = text.replace(substring, '').trim();\n return {\n startindex,\n endindex,\n substring,\n textExcludeSubstring: textWithoutSubstring,\n substringExcludeSearch: substringExcludedSearch,\n };\n}\n// TODO : Move to utils\nexport const getValueToExchange = (adapter: Adapter, textToSend: string, val: PrimitiveType): ExchangeValueReturn => {\n //TODO Use JSON => change{\"true\":\"W\u00E4rmepumpe ist verbunden\",\"false\":\"W\u00E4rmepumpe ist nicht verbunden\"}\n if (textToSend.includes(config.change.start)) {\n const { start, end, command } = config.change;\n const { startindex, endindex, substring } = decomposeText(textToSend, start, end); // change{\"true\":\"an\",\"false\":\"aus\"}\n\n const modifiedString = replaceAll(substring, \"'\", '\"').replace(command, ''); // {\"true\":\"an\",\"false\":\"aus\"}\n\n const { json, isValidJson } = parseJSON<Record<string, string>>(modifiedString);\n\n if (isValidJson) {\n return {\n newValue: json[String(val)] ?? val,\n textToSend: textToSend.substring(0, startindex) + textToSend.substring(endindex + 1),\n error: false,\n };\n }\n adapter.log.error(`There is a error in your input: ${modifiedString}`);\n return { newValue: val, textToSend, error: true };\n }\n return { textToSend, newValue: val, error: false };\n};\n\nexport const isString = (value: unknown): value is string => typeof value === 'string';\n\nexport function stringReplacer(substring: string, valueToReplace: string[] | StringReplacerObj[]): string {\n if (typeof valueToReplace[0] === 'string') {\n (valueToReplace as string[]).forEach(item => {\n substring = substring.replace(item, '');\n });\n return substring;\n }\n\n (valueToReplace as StringReplacerObj[]).forEach(({ val, newValue }) => {\n substring = substring.replace(val, newValue);\n });\n return substring;\n}\n\nexport const pad = (value: number, length: number = 2): string => {\n if (value < 0) {\n return `-${(value * -1).toString().padStart(length - 1, '0')}`;\n }\n return value.toString().padStart(length, '0');\n};\n\nexport function getNewline(newline: BooleanString): '' | '\\n' {\n return isTruthy(newline) ? '\\n' : '';\n}\n\nexport function isBooleanString(str: string): boolean {\n return str === 'true' || str === 'false';\n}\n\nexport const isNonEmptyString = (str: string): boolean => str.trim() !== '';\nexport const isEmptyString = (str: string): boolean => str.trim() === '';\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { Adapter, BooleanString, DecomposeTextReturnType, StringReplacerObj } from '../types/types';\nimport { isTruthy } from './utils';\nimport { errorLogger } from '../app/logging';\n\nexport const jsonString = (val?: string | number | boolean | object | null): string => JSON.stringify(val);\n\nexport function parseJSON<T>(\n val: string,\n adapter?: Adapter,\n): { json: string; isValidJson: false } | { json: T; isValidJson: true } {\n try {\n return { json: JSON.parse(val) as T, isValidJson: true };\n } catch (e) {\n if (adapter) {\n errorLogger('Error parseJSON:', e, adapter);\n }\n return { json: val, isValidJson: false };\n }\n}\n\nexport const replaceAll = (text: string, searchValue: string, replaceValue: string): string => {\n const escapedSearchValue = searchValue.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // Escape-Sonderzeichen\n return text.replace(new RegExp(escapedSearchValue, 'g'), replaceValue);\n};\n\nexport const replaceAllItems = (text: string, searched: (string | { search: string; val: string })[]): string => {\n searched.forEach(item => {\n if (typeof item === 'string') {\n text = replaceAll(text, item, '');\n } else {\n text = replaceAll(text, item.search, item.val);\n }\n });\n return text;\n};\n\nexport const removeQuotes = (text: string): string => text.replace(/['\"]/g, '');\n\nexport const cleanUpString = (text?: string): string => {\n if (!text) {\n return '';\n }\n return text\n .replace(/^['\"]|['\"]$/g, '') // Entferne Anf\u00FChrungszeichen am Anfang/Ende\n .replace(/\\\\n/g, '\\n') // Ersetze \\n durch einen echten Zeilenumbruch\n .replace(/ \\\\\\n/g, '\\n') // Ersetze \\n mit Leerzeichen davor durch einen echten Zeilenumbruch\n .replace(/\\\\(?!n)/g, '') // Entferne alle Backslashes, die nicht von einem 'n' gefolgt werden\n .replace(/ {2,}/g, ' '); // Ersetze mehrere Leerzeichen durch ein einzelnes Leerzeichen\n};\n\nexport function decomposeText(text: string, firstSearch: string, secondSearch: string): DecomposeTextReturnType {\n const startindex = text.indexOf(firstSearch);\n const endindex = text.indexOf(secondSearch, startindex);\n const substring = text.substring(startindex, endindex + secondSearch.length);\n const substringExcludedSearch = stringReplacer(substring, [firstSearch, secondSearch]);\n const textWithoutSubstring = text.replace(substring, '').trim();\n return {\n startindex,\n endindex,\n substring,\n textExcludeSubstring: textWithoutSubstring,\n substringExcludeSearch: substringExcludedSearch,\n };\n}\n\nexport const isString = (value: unknown): value is string => typeof value === 'string';\n\nexport function stringReplacer(substring: string, valueToReplace: string[] | StringReplacerObj[]): string {\n if (typeof valueToReplace[0] === 'string') {\n (valueToReplace as string[]).forEach(item => {\n substring = substring.replace(item, '');\n });\n return substring;\n }\n\n (valueToReplace as StringReplacerObj[]).forEach(({ val, newValue }) => {\n substring = substring.replace(val, newValue);\n });\n return substring;\n}\n\nexport const pad = (value: number, length: number = 2): string => {\n if (value < 0) {\n return `-${(value * -1).toString().padStart(length - 1, '0')}`;\n }\n return value.toString().padStart(length, '0');\n};\n\nexport function getNewline(newline: BooleanString): '' | '\\n' {\n return isTruthy(newline) ? '\\n' : '';\n}\n\nexport function isBooleanString(str: string): boolean {\n return str === 'true' || str === 'false';\n}\n\nexport const isNonEmptyString = (str: string): boolean => str.trim() !== '';\nexport const isEmptyString = (str: string): boolean => str.trim() === '';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAyB;AACzB,qBAA4B;AAErB,MAAM,aAAa,CAAC,QAA4D,KAAK,UAAU,GAAG;AAElG,SAAS,UACZ,KACA,SACqE;AACrE,MAAI;AACA,WAAO,EAAE,MAAM,KAAK,MAAM,GAAG,GAAQ,aAAa,KAAK;AAAA,EAC3D,SAAS,GAAG;AACR,QAAI,SAAS;AACT,sCAAY,oBAAoB,GAAG,OAAO;AAAA,IAC9C;AACA,WAAO,EAAE,MAAM,KAAK,aAAa,MAAM;AAAA,EAC3C;AACJ;AAEO,MAAM,aAAa,CAAC,MAAc,aAAqB,iBAAiC;AAC3F,QAAM,qBAAqB,YAAY,QAAQ,uBAAuB,MAAM;AAC5E,SAAO,KAAK,QAAQ,IAAI,OAAO,oBAAoB,GAAG,GAAG,YAAY;AACzE;AAEO,MAAM,kBAAkB,CAAC,MAAc,aAAmE;AAC7G,WAAS,QAAQ,UAAQ;AACrB,QAAI,OAAO,SAAS,UAAU;AAC1B,aAAO,WAAW,MAAM,MAAM,EAAE;AAAA,IACpC,OAAO;AACH,aAAO,WAAW,MAAM,KAAK,QAAQ,KAAK,GAAG;AAAA,IACjD;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AAEO,MAAM,eAAe,CAAC,SAAyB,KAAK,QAAQ,SAAS,EAAE;AAEvE,MAAM,gBAAgB,CAAC,SAA0B;AACpD,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AACA,SAAO,KACF,QAAQ,gBAAgB,EAAE,EAC1B,QAAQ,QAAQ,IAAI,EACpB,QAAQ,UAAU,IAAI,EACtB,QAAQ,YAAY,EAAE,EACtB,QAAQ,UAAU,GAAG;AAC9B;AAEO,SAAS,cAAc,MAAc,aAAqB,cAA+C;AAC5G,QAAM,aAAa,KAAK,QAAQ,WAAW;AAC3C,QAAM,WAAW,KAAK,QAAQ,cAAc,UAAU;AACtD,QAAM,YAAY,KAAK,UAAU,YAAY,WAAW,aAAa,MAAM;AAC3E,QAAM,0BAA0B,eAAe,WAAW,CAAC,aAAa,YAAY,CAAC;AACrF,QAAM,uBAAuB,KAAK,QAAQ,WAAW,EAAE,EAAE,KAAK;AAC9D,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,EAC5B;AACJ;AAEO,MAAM,WAAW,CAAC,UAAoC,OAAO,UAAU;AAEvE,SAAS,eAAe,WAAmB,gBAAwD;AACtG,MAAI,OAAO,eAAe,CAAC,MAAM,UAAU;AACvC,IAAC,eAA4B,QAAQ,UAAQ;AACzC,kBAAY,UAAU,QAAQ,MAAM,EAAE;AAAA,IAC1C,CAAC;AACD,WAAO;AAAA,EACX;AAEA,EAAC,eAAuC,QAAQ,CAAC,EAAE,KAAK,SAAS,MAAM;AACnE,gBAAY,UAAU,QAAQ,KAAK,QAAQ;AAAA,EAC/C,CAAC;AACD,SAAO;AACX;AAEO,MAAM,MAAM,CAAC,OAAe,SAAiB,MAAc;AAC9D,MAAI,QAAQ,GAAG;AACX,WAAO,KAAK,QAAQ,IAAI,SAAS,EAAE,SAAS,SAAS,GAAG,GAAG,CAAC;AAAA,EAChE;AACA,SAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,GAAG;AAChD;AAEO,SAAS,WAAW,SAAmC;AAC1D,aAAO,uBAAS,OAAO,IAAI,OAAO;AACtC;AAEO,SAAS,gBAAgB,KAAsB;AAClD,SAAO,QAAQ,UAAU,QAAQ;AACrC;AAEO,MAAM,mBAAmB,CAAC,QAAyB,IAAI,KAAK,MAAM;AAClE,MAAM,gBAAgB,CAAC,QAAyB,IAAI,KAAK,MAAM;",
6
6
  "names": []
7
7
  }
@@ -33,6 +33,7 @@ var import_config = require("../config/config");
33
33
  var import_appUtils = require("./appUtils");
34
34
  var import_setstate = require("../app/setstate");
35
35
  var import_splitValues = require("./splitValues");
36
+ var import_exchangeValue = require("./exchangeValue");
36
37
  const processTimeIdLc = async (textToSend, id) => {
37
38
  const { substring, substringExcludeSearch } = (0, import_string.decomposeText)(
38
39
  textToSend,
@@ -59,7 +60,7 @@ const checkStatus = async (text) => {
59
60
  import_config.config.status.start,
60
61
  import_config.config.status.end
61
62
  );
62
- const { id, shouldChange } = (0, import_appUtils.statusIdAndParams)(substringExcludeSearch);
63
+ const { id, shouldChangeByStatusParameter } = (0, import_appUtils.statusIdAndParams)(substringExcludeSearch);
63
64
  const stateValue = await import_main.adapter.getForeignStateAsync(id);
64
65
  if (!(0, import_utils.isDefined)(stateValue == null ? void 0 : stateValue.val)) {
65
66
  import_main.adapter.log.debug(`State not found for id : "${id}"`);
@@ -69,11 +70,11 @@ const checkStatus = async (text) => {
69
70
  if (text.includes(import_config.config.time)) {
70
71
  return (0, import_time.integrateTimeIntoText)(textExcludeSubstring, stateValueString).replace(stateValueString, "");
71
72
  }
72
- if (!shouldChange) {
73
+ if (!shouldChangeByStatusParameter) {
73
74
  return text.replace(substring, stateValueString);
74
75
  }
75
- const { newValue: val, textToSend, error } = (0, import_string.getValueToExchange)(import_main.adapter, text, stateValue.val);
76
- return (!error ? textToSend : text).replace(substring, !error ? val.toString() : stateValueString);
76
+ const { textToSend, error } = (0, import_exchangeValue.exchangeValue)(import_main.adapter, textExcludeSubstring, stateValue.val);
77
+ return !error ? textToSend : textExcludeSubstring;
77
78
  };
78
79
  const returnTextModifier = async (text) => {
79
80
  if (!text) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/utilities.ts"],
4
- "sourcesContent": ["import { isDefined } from './utils';\nimport { decomposeText, getValueToExchange, isEmptyString, jsonString, replaceAllItems } from './string';\nimport { errorLogger } from '../app/logging';\nimport { extractTimeValues, getTimeWithPad, integrateTimeIntoText } from './time';\nimport { adapter } from '../main';\nimport { config } from '../config/config';\nimport { isSameType, statusIdAndParams, timeStringReplacer } from './appUtils';\nimport { setstateIobroker } from '../app/setstate';\nimport { getProcessTimeValues } from './splitValues';\n\nexport const processTimeIdLc = async (textToSend: string, id?: string): Promise<string> => {\n const { substring, substringExcludeSearch } = decomposeText(\n textToSend,\n config.timestamp.start,\n config.timestamp.end,\n ); //{time.lc,(DD MM YYYY hh:mm:ss:sss),id:'ID'}\n const { typeofTimestamp, timeString, idString } = getProcessTimeValues(substringExcludeSearch);\n\n if (!id && (!idString || idString.length < 5)) {\n return textToSend.replace(substring, 'Invalid ID');\n }\n const value = await adapter.getForeignStateAsync(id ?? idString);\n\n if (!value) {\n return textToSend.replace(substring, 'Invalid ID');\n }\n const timeStringUser = replaceAllItems(timeString, [',(', ')', '}']); //\"(DD MM YYYY hh:mm:ss:sss)\"\n const unixTs = value[typeofTimestamp];\n\n const timeWithPad = getTimeWithPad(extractTimeValues(unixTs));\n const timeStringReplaced = timeStringReplacer(timeWithPad, timeStringUser);\n\n return timeStringReplaced ?? textToSend;\n};\n\n// TODO Check Usage of function\nexport const checkStatus = async (text: string): Promise<string> => {\n const { substring, substringExcludeSearch, textExcludeSubstring } = decomposeText(\n text,\n config.status.start,\n config.status.end,\n ); //substring {status:'ID':true} new | old {status:'id':'ID':true}\n\n const { id, shouldChange } = statusIdAndParams(substringExcludeSearch);\n\n const stateValue = await adapter.getForeignStateAsync(id);\n\n if (!isDefined(stateValue?.val)) {\n adapter.log.debug(`State not found for id : \"${id}\"`);\n return text.replace(substring, '');\n }\n\n const stateValueString = String(stateValue.val);\n\n if (text.includes(config.time)) {\n return integrateTimeIntoText(textExcludeSubstring, stateValueString).replace(stateValueString, '');\n }\n\n if (!shouldChange) {\n return text.replace(substring, stateValueString);\n }\n\n const { newValue: val, textToSend, error } = getValueToExchange(adapter, text, stateValue.val);\n\n return (!error ? textToSend : text).replace(substring, !error ? val.toString() : stateValueString);\n};\n\nexport const returnTextModifier = async (text?: string): Promise<string> => {\n if (!text) {\n return '';\n }\n try {\n const inputText = text;\n\n if (text.includes(config.status.start)) {\n while (text.includes(config.status.start)) {\n text = await checkStatus(text);\n }\n }\n if (text.includes(config.timestamp.lc) || text.includes(config.timestamp.ts)) {\n text = await processTimeIdLc(text);\n }\n if (text.includes(config.set.start)) {\n const { substring, textExcludeSubstring } = decomposeText(text, config.set.start, config.set.end);\n const id = substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = substring.split(',')[1];\n\n text = textExcludeSubstring;\n const convertedValue = await transformValueToTypeOfId(id, importedValue);\n\n const ack = substring.split(',')[2].replace('}', '') == 'true';\n\n if (isEmptyString(text)) {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await setstateIobroker({ id, value: convertedValue, ack });\n }\n }\n\n text === inputText\n ? adapter.log.debug(`Return text : ${text} `)\n : adapter.log.debug(`Return text was modified from \"${inputText}\" to \"${text}\" `);\n return text;\n } catch (e: any) {\n errorLogger('Error returnTextModifier:', e, adapter);\n return '';\n }\n};\n\nexport async function transformValueToTypeOfId(\n id: string,\n value: ioBroker.StateValue,\n): Promise<ioBroker.StateValue | undefined> {\n try {\n const receivedType = typeof value;\n const obj = await adapter.getForeignObjectAsync(id);\n\n if (!obj || !isDefined(value) || isSameType(receivedType, obj)) {\n return value;\n }\n\n adapter.log.debug(`Change Value type from \"${receivedType}\" to \"${obj.common.type}\"`);\n\n switch (obj.common.type) {\n case 'string':\n return String(value);\n case 'number':\n return typeof value === 'string' ? parseFloat(value) : parseFloat(jsonString(value));\n case 'boolean':\n return isDefined(value) && !['false', false, 0, '0', 'null', 'undefined'].includes(value);\n default:\n return value;\n }\n } catch (e: any) {\n errorLogger('Error checkTypeOfId:', e, adapter);\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { isDefined } from './utils';\nimport { decomposeText, isEmptyString, jsonString, replaceAllItems } from './string';\nimport { errorLogger } from '../app/logging';\nimport { extractTimeValues, getTimeWithPad, integrateTimeIntoText } from './time';\nimport { adapter } from '../main';\nimport { config } from '../config/config';\nimport { isSameType, statusIdAndParams, timeStringReplacer } from './appUtils';\nimport { setstateIobroker } from '../app/setstate';\nimport { getProcessTimeValues } from './splitValues';\nimport { exchangeValue } from './exchangeValue';\n\nexport const processTimeIdLc = async (textToSend: string, id?: string): Promise<string> => {\n const { substring, substringExcludeSearch } = decomposeText(\n textToSend,\n config.timestamp.start,\n config.timestamp.end,\n ); //{time.lc,(DD MM YYYY hh:mm:ss:sss),id:'ID'}\n const { typeofTimestamp, timeString, idString } = getProcessTimeValues(substringExcludeSearch);\n\n if (!id && (!idString || idString.length < 5)) {\n return textToSend.replace(substring, 'Invalid ID');\n }\n const value = await adapter.getForeignStateAsync(id ?? idString);\n\n if (!value) {\n return textToSend.replace(substring, 'Invalid ID');\n }\n const timeStringUser = replaceAllItems(timeString, [',(', ')', '}']); //\"(DD MM YYYY hh:mm:ss:sss)\"\n const unixTs = value[typeofTimestamp];\n\n const timeWithPad = getTimeWithPad(extractTimeValues(unixTs));\n const timeStringReplaced = timeStringReplacer(timeWithPad, timeStringUser);\n\n return timeStringReplaced ?? textToSend;\n};\n\nexport const checkStatus = async (text: string): Promise<string> => {\n const { substring, substringExcludeSearch, textExcludeSubstring } = decomposeText(\n text,\n config.status.start,\n config.status.end,\n ); //substring {status:'ID':true} new | old {status:'id':'ID':true}\n\n const { id, shouldChangeByStatusParameter } = statusIdAndParams(substringExcludeSearch);\n\n const stateValue = await adapter.getForeignStateAsync(id);\n\n if (!isDefined(stateValue?.val)) {\n adapter.log.debug(`State not found for id : \"${id}\"`);\n return text.replace(substring, '');\n }\n\n const stateValueString = String(stateValue.val);\n\n if (text.includes(config.time)) {\n return integrateTimeIntoText(textExcludeSubstring, stateValueString).replace(stateValueString, '');\n }\n\n if (!shouldChangeByStatusParameter) {\n return text.replace(substring, stateValueString);\n }\n\n const { textToSend, error } = exchangeValue(adapter, textExcludeSubstring, stateValue.val);\n\n return !error ? textToSend : textExcludeSubstring;\n};\n\nexport const returnTextModifier = async (text?: string): Promise<string> => {\n if (!text) {\n return '';\n }\n try {\n const inputText = text;\n\n if (text.includes(config.status.start)) {\n while (text.includes(config.status.start)) {\n text = await checkStatus(text);\n }\n }\n if (text.includes(config.timestamp.lc) || text.includes(config.timestamp.ts)) {\n text = await processTimeIdLc(text);\n }\n if (text.includes(config.set.start)) {\n const { substring, textExcludeSubstring } = decomposeText(text, config.set.start, config.set.end);\n const id = substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = substring.split(',')[1];\n\n text = textExcludeSubstring;\n const convertedValue = await transformValueToTypeOfId(id, importedValue);\n\n const ack = substring.split(',')[2].replace('}', '') == 'true';\n\n if (isEmptyString(text)) {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await setstateIobroker({ id, value: convertedValue, ack });\n }\n }\n\n text === inputText\n ? adapter.log.debug(`Return text : ${text} `)\n : adapter.log.debug(`Return text was modified from \"${inputText}\" to \"${text}\" `);\n return text;\n } catch (e: any) {\n errorLogger('Error returnTextModifier:', e, adapter);\n return '';\n }\n};\n\nexport async function transformValueToTypeOfId(\n id: string,\n value: ioBroker.StateValue,\n): Promise<ioBroker.StateValue | undefined> {\n try {\n const receivedType = typeof value;\n const obj = await adapter.getForeignObjectAsync(id);\n\n if (!obj || !isDefined(value) || isSameType(receivedType, obj)) {\n return value;\n }\n\n adapter.log.debug(`Change Value type from \"${receivedType}\" to \"${obj.common.type}\"`);\n\n switch (obj.common.type) {\n case 'string':\n return String(value);\n case 'number':\n return typeof value === 'string' ? parseFloat(value) : parseFloat(jsonString(value));\n case 'boolean':\n return isDefined(value) && !['false', false, 0, '0', 'null', 'undefined'].includes(value);\n default:\n return value;\n }\n } catch (e: any) {\n errorLogger('Error checkTypeOfId:', e, adapter);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/build/main.js CHANGED
@@ -48,6 +48,7 @@ var import_utils = require("./lib/utils");
48
48
  var import_appUtils = require("./lib/appUtils");
49
49
  var import_configVariables = require("./app/configVariables");
50
50
  var import_setStateIdsToListenTo = require("./app/setStateIdsToListenTo");
51
+ var import_exchangeValue = require("./lib/exchangeValue");
51
52
  const timeoutKey = "0";
52
53
  let adapter;
53
54
  class TelegramMenu extends utils.Adapter {
@@ -90,7 +91,7 @@ class TelegramMenu extends utils.Adapter {
90
91
  const startSides = (0, import_appUtils.getStartSides)(menusWithUsers, dataObject);
91
92
  try {
92
93
  await this.getForeignObject(infoConnectionOfTelegram, async (err, obj) => {
93
- var _a;
94
+ var _a, _b;
94
95
  if (err || !obj) {
95
96
  this.log.error(`The State ${infoConnectionOfTelegram} was not found! ${err}`);
96
97
  return;
@@ -103,7 +104,7 @@ class TelegramMenu extends utils.Adapter {
103
104
  for (const name in nav) {
104
105
  const splittedNavigation = (0, import_appUtils.splitNavigation)(nav[name]);
105
106
  const newStructure = (0, import_appUtils.getNewStructure)(splittedNavigation);
106
- const generatedActions = (0, import_action.generateActions)({ action: action[name], userObject: newStructure });
107
+ const generatedActions = (0, import_action.generateActions)({ action: action == null ? void 0 : action[name], userObject: newStructure });
107
108
  menuData[name] = newStructure;
108
109
  if (generatedActions) {
109
110
  menuData[name] = generatedActions == null ? void 0 : generatedActions.obj;
@@ -114,7 +115,7 @@ class TelegramMenu extends utils.Adapter {
114
115
  } else {
115
116
  adapter.log.debug("No Actions generated!");
116
117
  }
117
- if ((_a = dataObject.action[name]) == null ? void 0 : _a.events) {
118
+ if ((_b = (_a = dataObject.action) == null ? void 0 : _a[name]) == null ? void 0 : _b.events) {
118
119
  for (const event of dataObject.action[name].events) {
119
120
  await (0, import_subscribeStates._subscribeForeignStates)(event.ID);
120
121
  }
@@ -136,7 +137,7 @@ class TelegramMenu extends utils.Adapter {
136
137
  );
137
138
  }
138
139
  this.on("stateChange", async (id, state) => {
139
- var _a2, _b, _c;
140
+ var _a2, _b2;
140
141
  const setStateIdsToListenTo = (0, import_setStateIdsToListenTo.getStateIdsToListenTo)();
141
142
  const isTelegramInstanceActive = await this.checkInfoConnection(id, infoConnectionOfTelegram);
142
143
  if (!isTelegramInstanceActive) {
@@ -201,7 +202,7 @@ class TelegramMenu extends utils.Adapter {
201
202
  const splitSubstring = substring.split(":");
202
203
  let text = "";
203
204
  if ((0, import_utils.isDefined)(state.val)) {
204
- text = ((_a2 = splitSubstring[2]) == null ? void 0 : _a2.includes("noValue")) ? splitSubstring[1] : (0, import_appUtils.exchangePlaceholderWithValue)(splitSubstring[1], state.val.toString());
205
+ text = ((_a2 = splitSubstring[2]) == null ? void 0 : _a2.includes("noValue")) ? splitSubstring[1] : (0, import_exchangeValue.exchangePlaceholderWithValue)(splitSubstring[1], state.val.toString());
205
206
  }
206
207
  adapter.log.debug(`Return-text: ${text}`);
207
208
  if (text === "") {
@@ -222,28 +223,15 @@ class TelegramMenu extends utils.Adapter {
222
223
  const { textExcludeSubstring } = (0, import_string.decomposeText)(textToSend, "{confirmSet:", "}");
223
224
  textToSend = textExcludeSubstring;
224
225
  }
225
- let value = "";
226
- let valueChange = null;
227
226
  const {
228
- newValue,
229
227
  textToSend: changedText,
230
- error: error2
231
- } = (0, import_string.getValueToExchange)(adapter, textToSend, (_b = state.val) == null ? void 0 : _b.toString());
228
+ error: error2,
229
+ newValue
230
+ } = (0, import_exchangeValue.exchangeValue)(adapter, textToSend, (_b2 = state.val) == null ? void 0 : _b2.toString());
232
231
  if (!error2) {
233
- valueChange = newValue;
234
232
  textToSend = changedText;
235
233
  }
236
- if (textToSend == null ? void 0 : textToSend.toString().includes("{novalue}")) {
237
- value = "";
238
- textToSend = textToSend.replace("{novalue}", "");
239
- } else if ((0, import_utils.isDefined)(state == null ? void 0 : state.val)) {
240
- value = (_c = state.val) == null ? void 0 : _c.toString();
241
- }
242
- if ((0, import_utils.isDefined)(valueChange)) {
243
- value = valueChange;
244
- }
245
- adapter.log.debug(`Value to send: ${value}`);
246
- textToSend = (0, import_appUtils.exchangePlaceholderWithValue)(textToSend, value);
234
+ adapter.log.debug(`Value to send: ${newValue}`);
247
235
  await (0, import_telegram.sendToTelegram)({
248
236
  userToSend: userToSend2,
249
237
  textToSend,