iobroker.telegram-menu 2.3.0 → 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 +12 -0
- package/build/app/action.js +10 -65
- package/build/app/action.js.map +2 -2
- package/build/app/backMenu.js +1 -1
- package/build/app/backMenu.js.map +2 -2
- package/build/app/dynamicSwitchMenu.js +1 -1
- package/build/app/dynamicSwitchMenu.js.map +2 -2
- package/build/app/getstate.js +9 -11
- package/build/app/getstate.js.map +2 -2
- package/build/app/httpRequest.js +2 -2
- package/build/app/httpRequest.js.map +2 -2
- package/build/app/idBySelector.js +103 -0
- package/build/app/idBySelector.js.map +7 -0
- package/build/app/jsonTable.js +3 -3
- package/build/app/jsonTable.js.map +2 -2
- package/build/app/messageIds.js +7 -1
- package/build/app/messageIds.js.map +2 -2
- package/build/app/processData.js +7 -7
- package/build/app/processData.js.map +2 -2
- package/build/app/sendNav.js +1 -1
- package/build/app/sendNav.js.map +2 -2
- package/build/app/sendpic.js +4 -5
- package/build/app/sendpic.js.map +2 -2
- package/build/app/setstate.js +9 -9
- package/build/app/setstate.js.map +3 -3
- package/build/app/shoppingList.js +3 -3
- package/build/app/shoppingList.js.map +2 -2
- package/build/app/subMenu.js +21 -32
- package/build/app/subMenu.js.map +2 -2
- package/build/app/telegram.js +14 -10
- package/build/app/telegram.js.map +2 -2
- package/build/lib/appUtils.js +6 -17
- 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 +14 -13
- package/build/lib/utilities.js.map +2 -2
- package/build/main.js +11 -25
- package/build/main.js.map +3 -3
- package/build/src/lib/appUtils.js +3 -3
- package/build/src/lib/appUtils.js.map +1 -1
- package/build/src/lib/utilities.js +1 -1
- package/build/src/lib/utilities.js.map +1 -1
- package/build/test/test/appUtils.test.js +12 -0
- package/build/test/test/appUtils.test.js.map +1 -1
- package/build/test/test/object.test.js +12 -0
- package/build/test/test/object.test.js.map +1 -1
- package/build/test/test/string.test.js +30 -6
- package/build/test/test/string.test.js.map +1 -1
- package/build/test/test/time.test.js +183 -198
- package/build/test/test/time.test.js.map +1 -1
- package/build/types/types.js.map +1 -1
- package/io-package.json +27 -27
- 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 { checkStatusInfo } 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, true, 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, true, 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 checkStatusInfo(part.text);\n const { cbData, menuToHandle, val } = getMenuValues(menuString);\n\n if (isDeleteMenu(cbData) && menuToHandle) {\n await deleteMessageIds(userToSend, telegramParams, 'all');\n if (isNonEmptyString(menuToHandle)) {\n return { navToGoBack: menuToHandle };\n }\n }\n\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, true, 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, true, 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, true, 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,
|
|
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
|
@@ -29,6 +29,11 @@ var import_main = require("../main");
|
|
|
29
29
|
var import_utils = require("../lib/utils");
|
|
30
30
|
var import_string = require("../lib/string");
|
|
31
31
|
var import_appUtils = require("../lib/appUtils");
|
|
32
|
+
function validateTextToSend(textToSend) {
|
|
33
|
+
if (!textToSend || (0, import_string.isEmptyString)(textToSend)) {
|
|
34
|
+
import_main.adapter.log.error("There is a problem! Text to send is empty or undefined, please check your configuration.");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
32
37
|
async function sendToTelegram({
|
|
33
38
|
userToSend,
|
|
34
39
|
textToSend,
|
|
@@ -39,18 +44,16 @@ async function sendToTelegram({
|
|
|
39
44
|
try {
|
|
40
45
|
const { telegramInstance, resize_keyboard, one_time_keyboard, userListWithChatID } = telegramParams;
|
|
41
46
|
const chatId = (0, import_utils.getChatID)(userListWithChatID, userToSend);
|
|
42
|
-
import_main.adapter.log.debug(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
import_main.adapter.log.debug(`ChatId : ${chatId}`);
|
|
47
|
-
const validatedTextToSend = (0, import_string.cleanUpString)(textToSend != null ? textToSend : "");
|
|
47
|
+
import_main.adapter.log.debug(
|
|
48
|
+
`Send to: { user: ${userToSend} , chatId :${chatId} , text: ${textToSend} , instance: ${telegramInstance} , userListWithChatID: ${(0, import_string.jsonString)(userListWithChatID)} , parseMode: ${parse_mode} }`
|
|
49
|
+
);
|
|
50
|
+
validateTextToSend(textToSend);
|
|
48
51
|
if (!keyboard) {
|
|
49
52
|
import_main.adapter.sendTo(
|
|
50
53
|
telegramInstance,
|
|
51
54
|
"send",
|
|
52
55
|
{
|
|
53
|
-
text:
|
|
56
|
+
text: (0, import_string.cleanUpString)(textToSend),
|
|
54
57
|
chatId,
|
|
55
58
|
parse_mode: (0, import_appUtils.getParseMode)(parse_mode)
|
|
56
59
|
},
|
|
@@ -64,7 +67,7 @@ async function sendToTelegram({
|
|
|
64
67
|
{
|
|
65
68
|
chatId,
|
|
66
69
|
parse_mode: (0, import_appUtils.getParseMode)(parse_mode),
|
|
67
|
-
text: await (0, import_utilities.
|
|
70
|
+
text: await (0, import_utilities.returnTextModifier)((0, import_string.cleanUpString)(textToSend)),
|
|
68
71
|
reply_markup: {
|
|
69
72
|
keyboard,
|
|
70
73
|
resize_keyboard,
|
|
@@ -79,6 +82,7 @@ async function sendToTelegram({
|
|
|
79
82
|
}
|
|
80
83
|
function sendToTelegramSubmenu(user, textToSend, keyboard, telegramParams, parse_mode) {
|
|
81
84
|
const { telegramInstance: instance, userListWithChatID } = telegramParams;
|
|
85
|
+
validateTextToSend(textToSend);
|
|
82
86
|
import_main.adapter.sendTo(
|
|
83
87
|
instance,
|
|
84
88
|
"send",
|
|
@@ -116,11 +120,11 @@ const sendLocationToTelegram = async (user, data, telegramParams) => {
|
|
|
116
120
|
);
|
|
117
121
|
}
|
|
118
122
|
} catch (e) {
|
|
119
|
-
(0, import_logging.errorLogger)("Error
|
|
123
|
+
(0, import_logging.errorLogger)("Error send location to telegram:", e, import_main.adapter);
|
|
120
124
|
}
|
|
121
125
|
};
|
|
122
126
|
function telegramLogger(res) {
|
|
123
|
-
import_main.adapter.log.debug(`
|
|
127
|
+
import_main.adapter.log.debug(`Telegram response : "${(0, import_string.jsonString)(res)}"`);
|
|
124
128
|
}
|
|
125
129
|
// Annotate the CommonJS export names for ESM import in node:
|
|
126
130
|
0 && (module.exports = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/telegram.ts"],
|
|
4
|
-
"sourcesContent": ["import { errorLogger } from './logging';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA4B;AAC5B,
|
|
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,13 +20,12 @@ 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,
|
|
27
26
|
getStartSides: () => getStartSides,
|
|
28
27
|
getTypeofTimestamp: () => getTypeofTimestamp,
|
|
29
|
-
|
|
28
|
+
isSameType: () => isSameType,
|
|
30
29
|
isStartside: () => isStartside,
|
|
31
30
|
roundValue: () => roundValue,
|
|
32
31
|
splitNavigation: () => splitNavigation,
|
|
@@ -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,28 +125,19 @@ const getStartSides = (menusWithUsers, dataObject) => {
|
|
|
127
125
|
});
|
|
128
126
|
return startSides;
|
|
129
127
|
};
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (searchString !== "") {
|
|
133
|
-
return textToSend.replace(searchString, val.toString()).trim();
|
|
134
|
-
}
|
|
135
|
-
return `${textToSend} ${val}`.trim();
|
|
136
|
-
};
|
|
137
|
-
function isNoTypeDefined(receivedType, obj) {
|
|
138
|
-
var _a, _b;
|
|
139
|
-
return receivedType === ((_a = obj == null ? void 0 : obj.common) == null ? void 0 : _a.type) || !((_b = obj == null ? void 0 : obj.common) == null ? void 0 : _b.type);
|
|
128
|
+
function isSameType(receivedType, obj) {
|
|
129
|
+
return receivedType === obj.common.type;
|
|
140
130
|
}
|
|
141
131
|
// Annotate the CommonJS export names for ESM import in node:
|
|
142
132
|
0 && (module.exports = {
|
|
143
133
|
calcValue,
|
|
144
134
|
checkOneLineValue,
|
|
145
|
-
exchangePlaceholderWithValue,
|
|
146
135
|
getListOfMenusIncludingUser,
|
|
147
136
|
getNewStructure,
|
|
148
137
|
getParseMode,
|
|
149
138
|
getStartSides,
|
|
150
139
|
getTypeofTimestamp,
|
|
151
|
-
|
|
140
|
+
isSameType,
|
|
152
141
|
isStartside,
|
|
153
142
|
roundValue,
|
|
154
143
|
splitNavigation,
|
|
@@ -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
|
@@ -19,8 +19,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var utilities_exports = {};
|
|
20
20
|
__export(utilities_exports, {
|
|
21
21
|
checkStatus: () => checkStatus,
|
|
22
|
-
checkStatusInfo: () => checkStatusInfo,
|
|
23
22
|
processTimeIdLc: () => processTimeIdLc,
|
|
23
|
+
returnTextModifier: () => returnTextModifier,
|
|
24
24
|
transformValueToTypeOfId: () => transformValueToTypeOfId
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(utilities_exports);
|
|
@@ -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,28 +60,28 @@ 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
|
-
import_main.adapter.log.debug(`State not found: ${id}`);
|
|
66
|
+
import_main.adapter.log.debug(`State not found for id : "${id}"`);
|
|
66
67
|
return text.replace(substring, "");
|
|
67
68
|
}
|
|
68
69
|
const stateValueString = String(stateValue.val);
|
|
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
|
-
const
|
|
79
|
+
const returnTextModifier = async (text) => {
|
|
79
80
|
if (!text) {
|
|
80
81
|
return "";
|
|
81
82
|
}
|
|
82
83
|
try {
|
|
83
|
-
|
|
84
|
+
const inputText = text;
|
|
84
85
|
if (text.includes(import_config.config.status.start)) {
|
|
85
86
|
while (text.includes(import_config.config.status.start)) {
|
|
86
87
|
text = await checkStatus(text);
|
|
@@ -103,10 +104,10 @@ const checkStatusInfo = async (text) => {
|
|
|
103
104
|
await (0, import_setstate.setstateIobroker)({ id, value: convertedValue, ack });
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
|
-
import_main.adapter.log.debug(`
|
|
107
|
+
text === inputText ? import_main.adapter.log.debug(`Return text : ${text} `) : import_main.adapter.log.debug(`Return text was modified from "${inputText}" to "${text}" `);
|
|
107
108
|
return text;
|
|
108
109
|
} catch (e) {
|
|
109
|
-
(0, import_logging.errorLogger)("Error
|
|
110
|
+
(0, import_logging.errorLogger)("Error returnTextModifier:", e, import_main.adapter);
|
|
110
111
|
return "";
|
|
111
112
|
}
|
|
112
113
|
};
|
|
@@ -114,7 +115,7 @@ async function transformValueToTypeOfId(id, value) {
|
|
|
114
115
|
try {
|
|
115
116
|
const receivedType = typeof value;
|
|
116
117
|
const obj = await import_main.adapter.getForeignObjectAsync(id);
|
|
117
|
-
if (!obj || !(0, import_utils.isDefined)(value) || (0, import_appUtils.
|
|
118
|
+
if (!obj || !(0, import_utils.isDefined)(value) || (0, import_appUtils.isSameType)(receivedType, obj)) {
|
|
118
119
|
return value;
|
|
119
120
|
}
|
|
120
121
|
import_main.adapter.log.debug(`Change Value type from "${receivedType}" to "${obj.common.type}"`);
|
|
@@ -124,7 +125,7 @@ async function transformValueToTypeOfId(id, value) {
|
|
|
124
125
|
case "number":
|
|
125
126
|
return typeof value === "string" ? parseFloat(value) : parseFloat((0, import_string.jsonString)(value));
|
|
126
127
|
case "boolean":
|
|
127
|
-
return (0, import_utils.
|
|
128
|
+
return (0, import_utils.isDefined)(value) && !["false", false, 0, "0", "null", "undefined"].includes(value);
|
|
128
129
|
default:
|
|
129
130
|
return value;
|
|
130
131
|
}
|
|
@@ -135,8 +136,8 @@ async function transformValueToTypeOfId(id, value) {
|
|
|
135
136
|
// Annotate the CommonJS export names for ESM import in node:
|
|
136
137
|
0 && (module.exports = {
|
|
137
138
|
checkStatus,
|
|
138
|
-
checkStatusInfo,
|
|
139
139
|
processTimeIdLc,
|
|
140
|
+
returnTextModifier,
|
|
140
141
|
transformValueToTypeOfId
|
|
141
142
|
});
|
|
142
143
|
//# sourceMappingURL=utilities.js.map
|