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.
- package/README.md +6 -0
- package/build/app/action.js +10 -65
- package/build/app/action.js.map +2 -2
- package/build/app/getstate.js +6 -9
- package/build/app/getstate.js.map +2 -2
- package/build/app/idBySelector.js +103 -0
- package/build/app/idBySelector.js.map +7 -0
- package/build/app/setstate.js +5 -5
- package/build/app/setstate.js.map +3 -3
- package/build/app/subMenu.js +8 -21
- package/build/app/subMenu.js.map +2 -2
- package/build/app/telegram.js +2 -3
- package/build/app/telegram.js.map +2 -2
- package/build/lib/appUtils.js +2 -12
- package/build/lib/appUtils.js.map +2 -2
- package/build/lib/exchangeValue.js +81 -0
- package/build/lib/exchangeValue.js.map +7 -0
- package/build/lib/string.js +1 -23
- package/build/lib/string.js.map +2 -2
- package/build/lib/utilities.js +5 -4
- package/build/lib/utilities.js.map +2 -2
- package/build/main.js +10 -22
- package/build/main.js.map +3 -3
- package/build/types/types.js.map +1 -1
- package/io-package.json +14 -14
- package/package.json +1 -1
package/build/app/subMenu.js.map
CHANGED
|
@@ -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": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA2B;AAC3B,sBAA+B;AAC/B,sBAAsD;AACtD,uBAAmC;AACnC,wBAAiC;AACjC,+BAAwC;
|
|
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
|
}
|
package/build/app/telegram.js
CHANGED
|
@@ -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:
|
|
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)(
|
|
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
|
|
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,
|
|
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
|
}
|
package/build/lib/appUtils.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
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": "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",
|
|
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("&&")) {
|
|
71
|
+
return "&&";
|
|
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('&&')) {\n return '&&';\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
|
+
}
|
package/build/lib/string.js
CHANGED
|
@@ -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,
|
package/build/lib/string.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/lib/string.ts"],
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
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
|
}
|
package/build/lib/utilities.js
CHANGED
|
@@ -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,
|
|
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 (!
|
|
73
|
+
if (!shouldChangeByStatusParameter) {
|
|
73
74
|
return text.replace(substring, stateValueString);
|
|
74
75
|
}
|
|
75
|
-
const {
|
|
76
|
-
return
|
|
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,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0B;AAC1B,
|
|
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": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0B;AAC1B,oBAA0E;AAC1E,qBAA4B;AAC5B,kBAAyE;AACzE,kBAAwB;AACxB,oBAAuB;AACvB,sBAAkE;AAClE,sBAAiC;AACjC,yBAAqC;AACrC,2BAA8B;AAEvB,MAAM,kBAAkB,OAAO,YAAoB,OAAiC;AACvF,QAAM,EAAE,WAAW,uBAAuB,QAAI;AAAA,IAC1C;AAAA,IACA,qBAAO,UAAU;AAAA,IACjB,qBAAO,UAAU;AAAA,EACrB;AACA,QAAM,EAAE,iBAAiB,YAAY,SAAS,QAAI,yCAAqB,sBAAsB;AAE7F,MAAI,CAAC,OAAO,CAAC,YAAY,SAAS,SAAS,IAAI;AAC3C,WAAO,WAAW,QAAQ,WAAW,YAAY;AAAA,EACrD;AACA,QAAM,QAAQ,MAAM,oBAAQ,qBAAqB,kBAAM,QAAQ;AAE/D,MAAI,CAAC,OAAO;AACR,WAAO,WAAW,QAAQ,WAAW,YAAY;AAAA,EACrD;AACA,QAAM,qBAAiB,+BAAgB,YAAY,CAAC,MAAM,KAAK,GAAG,CAAC;AACnE,QAAM,SAAS,MAAM,eAAe;AAEpC,QAAM,kBAAc,gCAAe,+BAAkB,MAAM,CAAC;AAC5D,QAAM,yBAAqB,oCAAmB,aAAa,cAAc;AAEzE,SAAO,kDAAsB;AACjC;AAEO,MAAM,cAAc,OAAO,SAAkC;AAChE,QAAM,EAAE,WAAW,wBAAwB,qBAAqB,QAAI;AAAA,IAChE;AAAA,IACA,qBAAO,OAAO;AAAA,IACd,qBAAO,OAAO;AAAA,EAClB;AAEA,QAAM,EAAE,IAAI,8BAA8B,QAAI,mCAAkB,sBAAsB;AAEtF,QAAM,aAAa,MAAM,oBAAQ,qBAAqB,EAAE;AAExD,MAAI,KAAC,wBAAU,yCAAY,GAAG,GAAG;AAC7B,wBAAQ,IAAI,MAAM,6BAA6B,EAAE,GAAG;AACpD,WAAO,KAAK,QAAQ,WAAW,EAAE;AAAA,EACrC;AAEA,QAAM,mBAAmB,OAAO,WAAW,GAAG;AAE9C,MAAI,KAAK,SAAS,qBAAO,IAAI,GAAG;AAC5B,eAAO,mCAAsB,sBAAsB,gBAAgB,EAAE,QAAQ,kBAAkB,EAAE;AAAA,EACrG;AAEA,MAAI,CAAC,+BAA+B;AAChC,WAAO,KAAK,QAAQ,WAAW,gBAAgB;AAAA,EACnD;AAEA,QAAM,EAAE,YAAY,MAAM,QAAI,oCAAc,qBAAS,sBAAsB,WAAW,GAAG;AAEzF,SAAO,CAAC,QAAQ,aAAa;AACjC;AAEO,MAAM,qBAAqB,OAAO,SAAmC;AACxE,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AACA,MAAI;AACA,UAAM,YAAY;AAElB,QAAI,KAAK,SAAS,qBAAO,OAAO,KAAK,GAAG;AACpC,aAAO,KAAK,SAAS,qBAAO,OAAO,KAAK,GAAG;AACvC,eAAO,MAAM,YAAY,IAAI;AAAA,MACjC;AAAA,IACJ;AACA,QAAI,KAAK,SAAS,qBAAO,UAAU,EAAE,KAAK,KAAK,SAAS,qBAAO,UAAU,EAAE,GAAG;AAC1E,aAAO,MAAM,gBAAgB,IAAI;AAAA,IACrC;AACA,QAAI,KAAK,SAAS,qBAAO,IAAI,KAAK,GAAG;AACjC,YAAM,EAAE,WAAW,qBAAqB,QAAI,6BAAc,MAAM,qBAAO,IAAI,OAAO,qBAAO,IAAI,GAAG;AAChG,YAAM,KAAK,UAAU,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,cAAc,EAAE,EAAE,QAAQ,MAAM,EAAE;AAC7E,YAAM,gBAAgB,UAAU,MAAM,GAAG,EAAE,CAAC;AAE5C,aAAO;AACP,YAAM,iBAAiB,MAAM,yBAAyB,IAAI,aAAa;AAEvE,YAAM,MAAM,UAAU,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,KAAK,EAAE,KAAK;AAExD,cAAI,6BAAc,IAAI,GAAG;AACrB,eAAO;AAAA,MACX;AACA,UAAI,gBAAgB;AAChB,kBAAM,kCAAiB,EAAE,IAAI,OAAO,gBAAgB,IAAI,CAAC;AAAA,MAC7D;AAAA,IACJ;AAEA,aAAS,YACH,oBAAQ,IAAI,MAAM,iBAAiB,IAAI,GAAG,IAC1C,oBAAQ,IAAI,MAAM,kCAAkC,SAAS,SAAS,IAAI,IAAI;AACpF,WAAO;AAAA,EACX,SAAS,GAAQ;AACb,oCAAY,6BAA6B,GAAG,mBAAO;AACnD,WAAO;AAAA,EACX;AACJ;AAEA,eAAsB,yBAClB,IACA,OACwC;AACxC,MAAI;AACA,UAAM,eAAe,OAAO;AAC5B,UAAM,MAAM,MAAM,oBAAQ,sBAAsB,EAAE;AAElD,QAAI,CAAC,OAAO,KAAC,wBAAU,KAAK,SAAK,4BAAW,cAAc,GAAG,GAAG;AAC5D,aAAO;AAAA,IACX;AAEA,wBAAQ,IAAI,MAAM,2BAA2B,YAAY,SAAS,IAAI,OAAO,IAAI,GAAG;AAEpF,YAAQ,IAAI,OAAO,MAAM;AAAA,MACrB,KAAK;AACD,eAAO,OAAO,KAAK;AAAA,MACvB,KAAK;AACD,eAAO,OAAO,UAAU,WAAW,WAAW,KAAK,IAAI,eAAW,0BAAW,KAAK,CAAC;AAAA,MACvF,KAAK;AACD,mBAAO,wBAAU,KAAK,KAAK,CAAC,CAAC,SAAS,OAAO,GAAG,KAAK,QAAQ,WAAW,EAAE,SAAS,KAAK;AAAA,MAC5F;AACI,eAAO;AAAA,IACf;AAAA,EACJ,SAAS,GAAQ;AACb,oCAAY,wBAAwB,GAAG,mBAAO;AAAA,EAClD;AACJ;",
|
|
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 :
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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,
|