iobroker.telegram-menu 2.4.3 → 2.4.4

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.
@@ -143,7 +143,7 @@ async function processData({
143
143
  return true;
144
144
  }
145
145
  if (part == null ? void 0 : part.switch) {
146
- await (0, import_setstate.handleSetState)(part, userToSend, 0, telegramParams);
146
+ await (0, import_setstate.handleSetState)(part, userToSend, null, telegramParams);
147
147
  return true;
148
148
  }
149
149
  if (part == null ? void 0 : part.getData) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/app/processData.ts"],
4
- "sourcesContent": ["import { adapter } from '../main';\nimport { sendLocationToTelegram, sendToTelegram } from './telegram';\nimport { sendNav } from './sendNav';\nimport { callSubMenu } from './subMenu';\nimport { backMenuFunc, switchBack } from './backMenu';\nimport { handleSetState, setstateIobroker } from './setstate';\nimport { getState } from './getstate';\nimport { sendPic } from './sendpic';\nimport { getDynamicValue, removeUserFromDynamicValue } from './dynamicValue';\nimport { adjustValueType } from './action';\nimport { getChart } from './echarts';\nimport { httpRequest } from './httpRequest';\nimport { errorLogger } from './logging';\nimport type { CheckEveryMenuForDataType, Part, ProcessDataType, Timeouts } from '../types/types';\nimport { jsonString } from '../lib/string';\nimport { isSubmenuOrMenu } from './validateMenus';\n\nlet timeouts: Timeouts[] = [];\n\nexport async function checkEveryMenuForData({\n menuData,\n navToGoTo,\n userToSend,\n telegramParams,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n}: CheckEveryMenuForDataType): Promise<boolean> {\n for (const menu of menus) {\n const groupData = menuData[menu];\n\n adapter.log.debug(`Menu : ${menu}`);\n adapter.log.debug(`Nav : ${jsonString(menuData[menu])}`);\n\n if (\n await processData({\n menuData,\n calledValue: navToGoTo,\n userToSend,\n groupWithUser: menu,\n telegramParams,\n allMenusWithData: menuData,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n groupData,\n })\n ) {\n adapter.log.debug('Menu found');\n return true;\n }\n }\n return false;\n}\n\nasync function processData({\n menuData,\n calledValue,\n userToSend,\n groupWithUser,\n telegramParams,\n allMenusWithData,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n groupData,\n}: ProcessDataType): Promise<boolean | undefined> {\n try {\n let part: Part | undefined = {} as Part;\n\n const dynamicValue = getDynamicValue(userToSend);\n if (dynamicValue) {\n const valueToSet = dynamicValue?.valueType\n ? adjustValueType(calledValue, dynamicValue.valueType)\n : calledValue;\n\n valueToSet && dynamicValue?.id\n ? await setstateIobroker({ id: dynamicValue.id, value: valueToSet, ack: dynamicValue?.ack })\n : await sendToTelegram({\n userToSend,\n textToSend: `You insert a wrong Type of value, please insert type : ${dynamicValue?.valueType}`,\n telegramParams,\n });\n\n removeUserFromDynamicValue(userToSend);\n const result = await switchBack(userToSend, allMenusWithData, menus, true);\n\n if (result && !dynamicValue.navToGoTo) {\n const { textToSend, keyboard, parse_mode } = result;\n await sendToTelegram({ userToSend, textToSend, keyboard, telegramParams, parse_mode });\n return true;\n }\n\n await sendNav(part, userToSend, telegramParams);\n return true;\n }\n\n const call = calledValue.includes('menu:') ? calledValue.split(':')[2] : calledValue;\n part = groupData[call];\n\n if (!calledValue.toString().includes('menu:') && isUserActiveCheckbox[groupWithUser]) {\n const nav = part?.nav;\n if (nav) {\n adapter.log.debug(`Menu to Send: ${jsonString(nav)}`);\n\n backMenuFunc({ activePage: call, navigation: nav, userToSend });\n\n if (jsonString(nav).includes('menu:')) {\n adapter.log.debug(`Submenu: ${jsonString(nav)}`);\n\n const result = await callSubMenu({\n jsonStringNav: jsonString(nav),\n userToSend,\n telegramParams,\n part,\n allMenusWithData,\n menus,\n });\n if (result?.newNav) {\n await checkEveryMenuForData({\n menuData,\n navToGoTo: result.newNav,\n userToSend,\n telegramParams,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n });\n }\n return true;\n }\n await sendNav(part, userToSend, telegramParams);\n return true;\n }\n\n if (part?.switch) {\n await handleSetState(part, userToSend, 0, telegramParams);\n return true;\n }\n\n if (part?.getData) {\n await getState(part, userToSend, telegramParams);\n return true;\n }\n\n if (part?.sendPic) {\n timeouts = sendPic(part, userToSend, telegramParams, token, directoryPicture, timeouts, timeoutKey);\n return true;\n }\n\n if (part?.location) {\n adapter.log.debug('Send location');\n await sendLocationToTelegram(userToSend, part.location, telegramParams);\n return true;\n }\n\n if (part?.echarts) {\n adapter.log.debug('Send echarts');\n getChart(part.echarts, directoryPicture, userToSend, telegramParams);\n return true;\n }\n\n if (part?.httpRequest) {\n adapter.log.debug('Send http request');\n const result = await httpRequest(part, userToSend, telegramParams, directoryPicture);\n return !!result;\n }\n }\n if (isSubmenuOrMenu(calledValue) && menuData[groupWithUser][call]) {\n adapter.log.debug('Call Submenu');\n await callSubMenu({\n jsonStringNav: calledValue,\n userToSend: userToSend,\n telegramParams: telegramParams,\n part: part,\n allMenusWithData: allMenusWithData,\n menus: menus,\n });\n return true;\n }\n return false;\n } catch (e: any) {\n errorLogger('Error processData:', e, adapter);\n }\n}\n\nexport function getTimeouts(): Timeouts[] {\n return timeouts;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { adapter } from '../main';\nimport { sendLocationToTelegram, sendToTelegram } from './telegram';\nimport { sendNav } from './sendNav';\nimport { callSubMenu } from './subMenu';\nimport { backMenuFunc, switchBack } from './backMenu';\nimport { handleSetState, setstateIobroker } from './setstate';\nimport { getState } from './getstate';\nimport { sendPic } from './sendpic';\nimport { getDynamicValue, removeUserFromDynamicValue } from './dynamicValue';\nimport { adjustValueType } from './action';\nimport { getChart } from './echarts';\nimport { httpRequest } from './httpRequest';\nimport { errorLogger } from './logging';\nimport type { CheckEveryMenuForDataType, Part, ProcessDataType, Timeouts } from '../types/types';\nimport { jsonString } from '../lib/string';\nimport { isSubmenuOrMenu } from './validateMenus';\n\nlet timeouts: Timeouts[] = [];\n\nexport async function checkEveryMenuForData({\n menuData,\n navToGoTo,\n userToSend,\n telegramParams,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n}: CheckEveryMenuForDataType): Promise<boolean> {\n for (const menu of menus) {\n const groupData = menuData[menu];\n\n adapter.log.debug(`Menu : ${menu}`);\n adapter.log.debug(`Nav : ${jsonString(menuData[menu])}`);\n\n if (\n await processData({\n menuData,\n calledValue: navToGoTo,\n userToSend,\n groupWithUser: menu,\n telegramParams,\n allMenusWithData: menuData,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n groupData,\n })\n ) {\n adapter.log.debug('Menu found');\n return true;\n }\n }\n return false;\n}\n\nasync function processData({\n menuData,\n calledValue,\n userToSend,\n groupWithUser,\n telegramParams,\n allMenusWithData,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n groupData,\n}: ProcessDataType): Promise<boolean | undefined> {\n try {\n let part: Part | undefined = {} as Part;\n\n const dynamicValue = getDynamicValue(userToSend);\n if (dynamicValue) {\n const valueToSet = dynamicValue?.valueType\n ? adjustValueType(calledValue, dynamicValue.valueType)\n : calledValue;\n\n valueToSet && dynamicValue?.id\n ? await setstateIobroker({ id: dynamicValue.id, value: valueToSet, ack: dynamicValue?.ack })\n : await sendToTelegram({\n userToSend,\n textToSend: `You insert a wrong Type of value, please insert type : ${dynamicValue?.valueType}`,\n telegramParams,\n });\n\n removeUserFromDynamicValue(userToSend);\n const result = await switchBack(userToSend, allMenusWithData, menus, true);\n\n if (result && !dynamicValue.navToGoTo) {\n const { textToSend, keyboard, parse_mode } = result;\n await sendToTelegram({ userToSend, textToSend, keyboard, telegramParams, parse_mode });\n return true;\n }\n\n await sendNav(part, userToSend, telegramParams);\n return true;\n }\n\n const call = calledValue.includes('menu:') ? calledValue.split(':')[2] : calledValue;\n part = groupData[call];\n\n if (!calledValue.toString().includes('menu:') && isUserActiveCheckbox[groupWithUser]) {\n const nav = part?.nav;\n if (nav) {\n adapter.log.debug(`Menu to Send: ${jsonString(nav)}`);\n\n backMenuFunc({ activePage: call, navigation: nav, userToSend });\n\n if (jsonString(nav).includes('menu:')) {\n adapter.log.debug(`Submenu: ${jsonString(nav)}`);\n\n const result = await callSubMenu({\n jsonStringNav: jsonString(nav),\n userToSend,\n telegramParams,\n part,\n allMenusWithData,\n menus,\n });\n if (result?.newNav) {\n await checkEveryMenuForData({\n menuData,\n navToGoTo: result.newNav,\n userToSend,\n telegramParams,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n });\n }\n return true;\n }\n await sendNav(part, userToSend, telegramParams);\n return true;\n }\n\n if (part?.switch) {\n await handleSetState(part, userToSend, null, telegramParams);\n return true;\n }\n\n if (part?.getData) {\n await getState(part, userToSend, telegramParams);\n return true;\n }\n\n if (part?.sendPic) {\n timeouts = sendPic(part, userToSend, telegramParams, token, directoryPicture, timeouts, timeoutKey);\n return true;\n }\n\n if (part?.location) {\n adapter.log.debug('Send location');\n await sendLocationToTelegram(userToSend, part.location, telegramParams);\n return true;\n }\n\n if (part?.echarts) {\n adapter.log.debug('Send echarts');\n getChart(part.echarts, directoryPicture, userToSend, telegramParams);\n return true;\n }\n\n if (part?.httpRequest) {\n adapter.log.debug('Send http request');\n const result = await httpRequest(part, userToSend, telegramParams, directoryPicture);\n return !!result;\n }\n }\n if (isSubmenuOrMenu(calledValue) && menuData[groupWithUser][call]) {\n adapter.log.debug('Call Submenu');\n await callSubMenu({\n jsonStringNav: calledValue,\n userToSend: userToSend,\n telegramParams: telegramParams,\n part: part,\n allMenusWithData: allMenusWithData,\n menus: menus,\n });\n return true;\n }\n return false;\n } catch (e: any) {\n errorLogger('Error processData:', e, adapter);\n }\n}\n\nexport function getTimeouts(): Timeouts[] {\n return timeouts;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -113,7 +113,12 @@ const handleSetState = async (part, userToSend, valueFromSubmenu, telegramParams
113
113
  return;
114
114
  }
115
115
  const text2 = returnText.replace(substring, json.text);
116
- const { textToSend } = (0, import_exchangeValue.exchangeValue)(import_main.adapter, text2, valueFromSubmenu);
116
+ let value2 = null;
117
+ if (json.id) {
118
+ const state = await import_main.adapter.getForeignStateAsync(json.id);
119
+ value2 = state ? state.val : null;
120
+ }
121
+ const { textToSend } = (0, import_exchangeValue.exchangeValue)(import_main.adapter, text2, valueFromSubmenu != null ? valueFromSubmenu : value2);
117
122
  await (0, import_telegram.sendToTelegram)({
118
123
  userToSend,
119
124
  textToSend,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/app/setstate.ts"],
4
- "sourcesContent": ["import { sendToTelegram } from './telegram';\nimport { transformValueToTypeOfId } from '../lib/utilities';\nimport { setDynamicValue } from './dynamicValue';\nimport { adapter } from '../main';\nimport { errorLogger } from './logging';\nimport type { Part, TelegramParams } from '../types/types';\nimport { decomposeText, isNonEmptyString, jsonString, parseJSON } from '../lib/string';\nimport { isDefined } from '../lib/utils';\nimport { config } from '../config/config';\nimport { addSetStateIds } from './setStateIdsToListenTo';\nimport { exchangeValue } from '../lib/exchangeValue';\n\nconst modifiedValue = (valueFromSubmenu: string, value: string): string => {\n return value.includes(config.modifiedValue)\n ? value.replace(config.modifiedValue, valueFromSubmenu)\n : valueFromSubmenu;\n};\n\nconst isDynamicValueToSet = async (value: string | number | boolean): Promise<string | number | boolean> => {\n if (typeof value === 'string' && value.includes(config.dynamicValue.start)) {\n const { substring, substringExcludeSearch: id } = decomposeText(\n value,\n config.dynamicValue.start,\n config.dynamicValue.end,\n );\n\n const newValue = await adapter.getForeignStateAsync(id);\n\n return value.replace(substring, String(newValue?.val));\n }\n return value;\n};\n\nexport const setstateIobroker = async ({\n id,\n value,\n ack,\n}: {\n id: string;\n value: string | number | boolean;\n ack: boolean;\n}): Promise<void> => {\n try {\n const val = await transformValueToTypeOfId(id, value);\n\n adapter.log.debug(`Value to Set: ${jsonString(val)}`);\n if (isDefined(val)) {\n await adapter.setForeignStateAsync(id, val, ack);\n }\n } catch (error: any) {\n errorLogger('Error Setstate', error, adapter);\n }\n};\n\nconst setValue = async (\n id: string,\n value: string,\n valueFromSubmenu: string | number | boolean,\n ack: boolean,\n): Promise<void> => {\n try {\n // If Value is set in Config the value will set to datapoint otherwise the value from submenu, so submenuValuePriority is obsolete\n const valueToSet =\n isDefined(value) && isNonEmptyString(value)\n ? await isDynamicValueToSet(value)\n : modifiedValue(String(valueFromSubmenu), value);\n\n await setstateIobroker({ id, value: valueToSet, ack });\n } catch (error: any) {\n errorLogger('Error setValue', error, adapter);\n }\n};\n\nexport const handleSetState = async (\n part: Part,\n userToSend: string,\n valueFromSubmenu: string | number | boolean,\n telegramParams: TelegramParams,\n): Promise<void> => {\n try {\n if (!part.switch) {\n return;\n }\n for (const { returnText: text, id: ID, parse_mode, confirm, ack, toggle, value } of part.switch) {\n let returnText = text;\n if (returnText.includes(config.setDynamicValue)) {\n const { confirmText, id } = await setDynamicValue(\n returnText,\n ack,\n ID,\n userToSend,\n telegramParams,\n parse_mode,\n confirm,\n );\n\n if (confirm) {\n await addSetStateIds({\n id: id ?? ID,\n confirm,\n returnText: confirmText,\n userToSend,\n });\n }\n return;\n }\n\n if (!returnText.includes(\"{'id':'\")) {\n await addSetStateIds({\n id: ID,\n confirm,\n returnText,\n userToSend,\n parse_mode,\n });\n } else {\n returnText = returnText.replace(/'/g, '\"');\n const { substring } = decomposeText(returnText, '{\"id\":', '}');\n const { json, isValidJson } = parseJSON<{ text: string; id: string }>(substring);\n if (!isValidJson) {\n return;\n }\n const text = returnText.replace(substring, json.text);\n const { textToSend } = exchangeValue(adapter, text, valueFromSubmenu);\n\n await sendToTelegram({\n userToSend,\n textToSend,\n telegramParams,\n parse_mode,\n });\n\n await addSetStateIds({\n id: json.id,\n confirm: true,\n returnText: json.text,\n userToSend: userToSend,\n });\n }\n if (toggle) {\n const state = await adapter.getForeignStateAsync(ID);\n\n state\n ? await setstateIobroker({ id: ID, value: !state.val, ack })\n : await setstateIobroker({ id: ID, value: false, ack });\n } else {\n await setValue(ID, value, valueFromSubmenu, ack);\n }\n }\n } catch (error: any) {\n errorLogger('Error Switch', error, adapter);\n }\n};\n"],
5
- "mappings": "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",
6
- "names": ["text"]
4
+ "sourcesContent": ["import { sendToTelegram } from './telegram';\nimport { transformValueToTypeOfId } from '../lib/utilities';\nimport { setDynamicValue } from './dynamicValue';\nimport { adapter } from '../main';\nimport { errorLogger } from './logging';\nimport type { Part, TelegramParams } from '../types/types';\nimport { decomposeText, isNonEmptyString, jsonString, parseJSON } from '../lib/string';\nimport { isDefined } from '../lib/utils';\nimport { config } from '../config/config';\nimport { addSetStateIds } from './setStateIdsToListenTo';\nimport { exchangeValue } from '../lib/exchangeValue';\n\nconst modifiedValue = (valueFromSubmenu: string, value: string): string => {\n return value.includes(config.modifiedValue)\n ? value.replace(config.modifiedValue, valueFromSubmenu)\n : valueFromSubmenu;\n};\n\nconst isDynamicValueToSet = async (value: string | number | boolean): Promise<string | number | boolean> => {\n if (typeof value === 'string' && value.includes(config.dynamicValue.start)) {\n const { substring, substringExcludeSearch: id } = decomposeText(\n value,\n config.dynamicValue.start,\n config.dynamicValue.end,\n );\n\n const newValue = await adapter.getForeignStateAsync(id);\n\n return value.replace(substring, String(newValue?.val));\n }\n return value;\n};\n\nexport const setstateIobroker = async ({\n id,\n value,\n ack,\n}: {\n id: string;\n value: string | number | boolean;\n ack: boolean;\n}): Promise<void> => {\n try {\n const val = await transformValueToTypeOfId(id, value);\n\n adapter.log.debug(`Value to Set: ${jsonString(val)}`);\n if (isDefined(val)) {\n await adapter.setForeignStateAsync(id, val, ack);\n }\n } catch (error: any) {\n errorLogger('Error Setstate', error, adapter);\n }\n};\n\nconst setValue = async (\n id: string,\n value: string,\n valueFromSubmenu: null | string | number | boolean,\n ack: boolean,\n): Promise<void> => {\n try {\n // If Value is set in Config the value will set to datapoint otherwise the value from submenu, so submenuValuePriority is obsolete\n const valueToSet =\n isDefined(value) && isNonEmptyString(value)\n ? await isDynamicValueToSet(value)\n : modifiedValue(String(valueFromSubmenu), value);\n\n await setstateIobroker({ id, value: valueToSet, ack });\n } catch (error: any) {\n errorLogger('Error setValue', error, adapter);\n }\n};\n\nexport const handleSetState = async (\n part: Part,\n userToSend: string,\n valueFromSubmenu: null | string | number | boolean,\n telegramParams: TelegramParams,\n): Promise<void> => {\n try {\n if (!part.switch) {\n return;\n }\n for (const { returnText: text, id: ID, parse_mode, confirm, ack, toggle, value } of part.switch) {\n let returnText = text;\n if (returnText.includes(config.setDynamicValue)) {\n const { confirmText, id } = await setDynamicValue(\n returnText,\n ack,\n ID,\n userToSend,\n telegramParams,\n parse_mode,\n confirm,\n );\n\n if (confirm) {\n await addSetStateIds({\n id: id ?? ID,\n confirm,\n returnText: confirmText,\n userToSend,\n });\n }\n return;\n }\n\n if (!returnText.includes(\"{'id':'\")) {\n await addSetStateIds({\n id: ID,\n confirm,\n returnText,\n userToSend,\n parse_mode,\n });\n } else {\n returnText = returnText.replace(/'/g, '\"');\n const { substring } = decomposeText(returnText, '{\"id\":', '}');\n const { json, isValidJson } = parseJSON<{ text: string; id: string }>(substring);\n if (!isValidJson) {\n return;\n }\n const text = returnText.replace(substring, json.text);\n let value: null | ioBroker.StateValue = null;\n\n if (json.id) {\n const state = await adapter.getForeignStateAsync(json.id);\n value = state ? state.val : null;\n }\n\n const { textToSend } = exchangeValue(adapter, text, valueFromSubmenu ?? value);\n\n await sendToTelegram({\n userToSend,\n textToSend,\n telegramParams,\n parse_mode,\n });\n\n await addSetStateIds({\n id: json.id,\n confirm: true,\n returnText: json.text,\n userToSend: userToSend,\n });\n }\n if (toggle) {\n const state = await adapter.getForeignStateAsync(ID);\n\n state\n ? await setstateIobroker({ id: ID, value: !state.val, ack })\n : await setstateIobroker({ id: ID, value: false, ack });\n } else {\n await setValue(ID, value, valueFromSubmenu, ack);\n }\n }\n } catch (error: any) {\n errorLogger('Error Switch', error, adapter);\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["text", "value"]
7
7
  }
@@ -0,0 +1,54 @@
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 status_exports = {};
20
+ __export(status_exports, {
21
+ checkStatus: () => checkStatus
22
+ });
23
+ module.exports = __toCommonJS(status_exports);
24
+ var import_string = require("../lib/string");
25
+ var import_config = require("../config/config");
26
+ var import_appUtils = require("../lib/appUtils");
27
+ var import_utils = require("../lib/utils");
28
+ var import_time = require("../lib/time");
29
+ var import_exchangeValue = require("../lib/exchangeValue");
30
+ const checkStatus = async (adapter, text) => {
31
+ const { substring, substringExcludeSearch, textExcludeSubstring } = (0, import_string.decomposeText)(
32
+ text,
33
+ import_config.config.status.start,
34
+ import_config.config.status.end
35
+ );
36
+ const { id, shouldChangeByStatusParameter } = (0, import_appUtils.statusIdAndParams)(substringExcludeSearch);
37
+ const stateValue = await adapter.getForeignStateAsync(id);
38
+ if (!(0, import_utils.isDefined)(stateValue == null ? void 0 : stateValue.val)) {
39
+ adapter.log.debug(`State not found for id : "${id}"`);
40
+ return text.replace(substring, "");
41
+ }
42
+ const stateValueString = String(stateValue.val);
43
+ if (text.includes(import_config.config.time)) {
44
+ return (0, import_time.integrateTimeIntoText)(textExcludeSubstring, stateValueString).replace(stateValueString, "");
45
+ }
46
+ const modifiedText = text.replace(substring, "&&");
47
+ const { textToSend, error } = (0, import_exchangeValue.exchangeValue)(adapter, modifiedText, stateValue.val, shouldChangeByStatusParameter);
48
+ return !error ? textToSend : modifiedText;
49
+ };
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ checkStatus
53
+ });
54
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/app/status.ts"],
4
+ "sourcesContent": ["import type TelegramMenu from '../main';\nimport { decomposeText } from '../lib/string';\nimport { config } from '../config/config';\nimport { statusIdAndParams } from '../lib/appUtils';\nimport { isDefined } from '../lib/utils';\nimport { integrateTimeIntoText } from '../lib/time';\nimport { exchangeValue } from '../lib/exchangeValue';\n\nexport const checkStatus = async (adapter: TelegramMenu, 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 const modifiedText = text.replace(substring, '&&');\n const { textToSend, error } = exchangeValue(adapter, modifiedText, stateValue.val, shouldChangeByStatusParameter);\n return !error ? textToSend : modifiedText;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA8B;AAC9B,oBAAuB;AACvB,sBAAkC;AAClC,mBAA0B;AAC1B,kBAAsC;AACtC,2BAA8B;AAEvB,MAAM,cAAc,OAAO,SAAuB,SAAkC;AACvF,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,QAAQ,qBAAqB,EAAE;AAExD,MAAI,KAAC,wBAAU,yCAAY,GAAG,GAAG;AAC7B,YAAQ,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,QAAM,eAAe,KAAK,QAAQ,WAAW,IAAI;AACjD,QAAM,EAAE,YAAY,MAAM,QAAI,oCAAc,SAAS,cAAc,WAAW,KAAK,6BAA6B;AAChH,SAAO,CAAC,QAAQ,aAAa;AACjC;",
6
+ "names": []
7
+ }
@@ -34,11 +34,11 @@ function isNoValueParameter(textToSend) {
34
34
  }
35
35
  return { insertValue, textToSend };
36
36
  }
37
- const exchangeValue = (adapter, textToSend, val) => {
37
+ const exchangeValue = (adapter, textToSend, val, shouldChange = true) => {
38
38
  var _a;
39
39
  const result = isNoValueParameter(textToSend);
40
40
  textToSend = result.textToSend;
41
- if (textToSend.includes(import_config.config.change.start)) {
41
+ if (textToSend.includes(import_config.config.change.start) && shouldChange) {
42
42
  const { start, end, command } = import_config.config.change;
43
43
  const { substring, textExcludeSubstring } = (0, import_string.decomposeText)(textToSend, start, end);
44
44
  const stringExcludedChange = (0, import_string.replaceAll)(substring, "'", '"').replace(command, "");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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, removeMultiSpaces, replaceAll } from './string';\n\nexport function isNoValueParameter(textToSend: string): { insertValue: boolean; textToSend: string } {\n let insertValue = true;\n if (textToSend.includes('{novalue}')) {\n textToSend = removeMultiSpaces(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: removeMultiSpaces(\n exchangePlaceholderWithValue(textExcludeSubstring, result.insertValue ? newValue : ''),\n ),\n error: false,\n };\n }\n adapter.log.error(`There is a error in your input: ${stringExcludedChange}`);\n return { newValue: val ?? '', textToSend, error: true };\n }\n\n return {\n textToSend: exchangePlaceholderWithValue(textToSend, result.insertValue ? (val ?? '') : ''),\n newValue: val ?? '',\n error: false,\n };\n};\n\nexport function exchangePlaceholderWithValue(textToSend: string, val: PrimitiveType): string {\n const searchString = getPlaceholderValue(textToSend);\n return searchString !== ''\n ? textToSend.replace(searchString, val.toString()).trim()\n : `${textToSend} ${val}`.trim();\n}\n\nexport function getPlaceholderValue(textToSend: string): string {\n if (textToSend.includes('&&')) {\n return '&&';\n }\n if (textToSend.includes('&amp;&amp;')) {\n return '&amp;&amp;';\n }\n return '';\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AACvB,oBAAwE;AAEjE,SAAS,mBAAmB,YAAkE;AACjG,MAAI,cAAc;AAClB,MAAI,WAAW,SAAS,WAAW,GAAG;AAClC,qBAAa,iCAAkB,WAAW,QAAQ,aAAa,EAAE,CAAC;AAClE,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,gBAAY;AAAA,UACR,6BAA6B,sBAAsB,OAAO,cAAc,WAAW,EAAE;AAAA,QACzF;AAAA,QACA,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;",
4
+ "sourcesContent": ["import type { Adapter, ExchangeValueReturn, PrimitiveType } from '../types/types';\nimport { config } from '../config/config';\nimport { decomposeText, parseJSON, removeMultiSpaces, replaceAll } from './string';\n\nexport function isNoValueParameter(textToSend: string): { insertValue: boolean; textToSend: string } {\n let insertValue = true;\n if (textToSend.includes('{novalue}')) {\n textToSend = removeMultiSpaces(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 shouldChange = true,\n): ExchangeValueReturn => {\n const result = isNoValueParameter(textToSend);\n\n textToSend = result.textToSend;\n if (textToSend.includes(config.change.start) && shouldChange) {\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: removeMultiSpaces(\n exchangePlaceholderWithValue(textExcludeSubstring, result.insertValue ? newValue : ''),\n ),\n error: false,\n };\n }\n adapter.log.error(`There is a error in your input: ${stringExcludedChange}`);\n return { newValue: val ?? '', textToSend, error: true };\n }\n\n return {\n textToSend: exchangePlaceholderWithValue(textToSend, result.insertValue ? (val ?? '') : ''),\n newValue: val ?? '',\n error: false,\n };\n};\n\nexport function exchangePlaceholderWithValue(textToSend: string, val: PrimitiveType): string {\n const searchString = getPlaceholderValue(textToSend);\n return searchString !== ''\n ? textToSend.replace(searchString, val.toString()).trim()\n : `${textToSend} ${val}`.trim();\n}\n\nexport function getPlaceholderValue(textToSend: string): string {\n if (textToSend.includes('&&')) {\n return '&&';\n }\n if (textToSend.includes('&amp;&amp;')) {\n return '&amp;&amp;';\n }\n return '';\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AACvB,oBAAwE;AAEjE,SAAS,mBAAmB,YAAkE;AACjG,MAAI,cAAc;AAClB,MAAI,WAAW,SAAS,WAAW,GAAG;AAClC,qBAAa,iCAAkB,WAAW,QAAQ,aAAa,EAAE,CAAC;AAClE,kBAAc;AAAA,EAClB;AACA,SAAO,EAAE,aAAa,WAAW;AACrC;AAEO,MAAM,gBAAgB,CACzB,SACA,YACA,KACA,eAAe,SACO;AAlB1B;AAmBI,QAAM,SAAS,mBAAmB,UAAU;AAE5C,eAAa,OAAO;AACpB,MAAI,WAAW,SAAS,qBAAO,OAAO,KAAK,KAAK,cAAc;AAC1D,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,gBAAY;AAAA,UACR,6BAA6B,sBAAsB,OAAO,cAAc,WAAW,EAAE;AAAA,QACzF;AAAA,QACA,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
6
  "names": []
7
7
  }
@@ -69,8 +69,8 @@ const cleanUpString = (text) => {
69
69
  return "";
70
70
  }
71
71
  return removeMultiSpaces(
72
- text.replace(/^['"]|['"]$/g, "").replace(/\\n/g, "\n").replace(/ \\\n/g, "\n").replace(/\\(?!n)/g, "")
73
- // Entferne alle Backslashes, die nicht von einem 'n' gefolgt werden)
72
+ text.replace(/^['"]|['"]$/g, "").replace(/\\n/g, "\n").replace(/ \\\n/g, "\n").replace(/\\(?!n)/g, "").replace(/\n /g, "\n")
73
+ // Entferne Leerzeichen vor Zeilenumbrüchen
74
74
  );
75
75
  };
76
76
  function decomposeText(text, firstSearch, secondSearch) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/string.ts"],
4
- "sourcesContent": ["import type { Adapter, DecomposeTextReturnType, StringReplacerObj } from '../types/types';\nimport { isTruthy } from './utils';\nimport { errorLogger } from '../app/logging';\nimport type { BooleanString } from '@/types/app';\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, '');\nexport const removeMultiSpaces = (text: string): string => text.replace(/ {2,}/g, ' ');\n\nexport const cleanUpString = (text?: string): string => {\n if (!text) {\n return '';\n }\n return removeMultiSpaces(\n text\n .replace(/^['\"]|['\"]$/g, '') // Entferne Anf\u00FChrungszeichen am Anfang/Ende\n .replace(/\\\\n/g, '\\n') // Ersetze \\n durch einen echten Zeilenumbruch\n .replace(/ \\\\\\n/g, '\\n') // Ersetze \\n mit Leerzeichen davor durch einen echten Zeilenumbruch\n .replace(/\\\\(?!n)/g, ''), // Entferne alle Backslashes, die nicht von einem 'n' gefolgt werden)\n );\n};\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;AAAA;AACA,mBAAyB;AACzB,qBAA4B;AAGrB,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;AACvE,MAAM,oBAAoB,CAAC,SAAyB,KAAK,QAAQ,UAAU,GAAG;AAE9E,MAAM,gBAAgB,CAAC,SAA0B;AACpD,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AACA,SAAO;AAAA,IACH,KACK,QAAQ,gBAAgB,EAAE,EAC1B,QAAQ,QAAQ,IAAI,EACpB,QAAQ,UAAU,IAAI,EACtB,QAAQ,YAAY,EAAE;AAAA;AAAA,EAC/B;AACJ;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;",
4
+ "sourcesContent": ["import type { Adapter, DecomposeTextReturnType, StringReplacerObj } from '../types/types';\nimport { isTruthy } from './utils';\nimport { errorLogger } from '../app/logging';\nimport type { BooleanString } from '@/types/app';\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, '');\nexport const removeMultiSpaces = (text: string): string => text.replace(/ {2,}/g, ' ');\n\nexport const cleanUpString = (text?: string): string => {\n if (!text) {\n return '';\n }\n return removeMultiSpaces(\n 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(/\\n /g, '\\n'), // Entferne Leerzeichen vor Zeilenumbr\u00FCchen\n );\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": "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",
6
6
  "names": []
7
7
  }
@@ -18,7 +18,6 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var utilities_exports = {};
20
20
  __export(utilities_exports, {
21
- checkStatus: () => checkStatus,
22
21
  processTimeIdLc: () => processTimeIdLc,
23
22
  returnTextModifier: () => returnTextModifier,
24
23
  transformValueToTypeOfId: () => transformValueToTypeOfId
@@ -33,7 +32,7 @@ var import_config = require("../config/config");
33
32
  var import_appUtils = require("./appUtils");
34
33
  var import_setstate = require("../app/setstate");
35
34
  var import_splitValues = require("./splitValues");
36
- var import_exchangeValue = require("./exchangeValue");
35
+ var import_status = require("../app/status");
37
36
  const processTimeIdLc = async (textToSend, id) => {
38
37
  const { substring, substringExcludeSearch } = (0, import_string.decomposeText)(
39
38
  textToSend,
@@ -54,40 +53,14 @@ const processTimeIdLc = async (textToSend, id) => {
54
53
  const timeStringReplaced = (0, import_appUtils.timeStringReplacer)(timeWithPad, timeStringUser);
55
54
  return timeStringReplaced != null ? timeStringReplaced : textToSend;
56
55
  };
57
- const checkStatus = async (text) => {
58
- const { substring, substringExcludeSearch, textExcludeSubstring } = (0, import_string.decomposeText)(
59
- text,
60
- import_config.config.status.start,
61
- import_config.config.status.end
62
- );
63
- const { id, shouldChangeByStatusParameter } = (0, import_appUtils.statusIdAndParams)(substringExcludeSearch);
64
- const stateValue = await import_main.adapter.getForeignStateAsync(id);
65
- if (!(0, import_utils.isDefined)(stateValue == null ? void 0 : stateValue.val)) {
66
- import_main.adapter.log.debug(`State not found for id : "${id}"`);
67
- return text.replace(substring, "");
68
- }
69
- const stateValueString = String(stateValue.val);
70
- if (text.includes(import_config.config.time)) {
71
- return (0, import_time.integrateTimeIntoText)(textExcludeSubstring, stateValueString).replace(stateValueString, "");
72
- }
73
- if (!shouldChangeByStatusParameter) {
74
- const modifiedText = text.replace(substring, "&&");
75
- const { textToSend: textToSend2, error: error2 } = (0, import_exchangeValue.exchangeValue)(import_main.adapter, modifiedText, stateValue.val);
76
- return !error2 ? textToSend2 : modifiedText;
77
- }
78
- const { textToSend, error } = (0, import_exchangeValue.exchangeValue)(import_main.adapter, textExcludeSubstring, stateValue.val);
79
- return !error ? textToSend : textExcludeSubstring;
80
- };
81
56
  const returnTextModifier = async (text) => {
82
57
  if (!text) {
83
58
  return "";
84
59
  }
85
60
  try {
86
61
  const inputText = text;
87
- if (text.includes(import_config.config.status.start)) {
88
- while (text.includes(import_config.config.status.start)) {
89
- text = await checkStatus(text);
90
- }
62
+ while (text.includes(import_config.config.status.start)) {
63
+ text = await (0, import_status.checkStatus)(import_main.adapter, text);
91
64
  }
92
65
  if (text.includes(import_config.config.timestamp.lc) || text.includes(import_config.config.timestamp.ts)) {
93
66
  text = await processTimeIdLc(text);
@@ -137,7 +110,6 @@ async function transformValueToTypeOfId(id, value) {
137
110
  }
138
111
  // Annotate the CommonJS export names for ESM import in node:
139
112
  0 && (module.exports = {
140
- checkStatus,
141
113
  processTimeIdLc,
142
114
  returnTextModifier,
143
115
  transformValueToTypeOfId
@@ -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, 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 const modifiedText = text.replace(substring, '&&');\n const { textToSend, error } = exchangeValue(adapter, modifiedText, stateValue.val);\n return !error ? textToSend : modifiedText;\n }\n\n const { textToSend, error } = exchangeValue(adapter, textExcludeSubstring, stateValue.val);\n\n return !error ? textToSend : textExcludeSubstring;\n};\n\nexport const returnTextModifier = async (text?: string): Promise<string> => {\n if (!text) {\n return '';\n }\n try {\n const inputText = text;\n\n if (text.includes(config.status.start)) {\n while (text.includes(config.status.start)) {\n text = await checkStatus(text);\n }\n }\n if (text.includes(config.timestamp.lc) || text.includes(config.timestamp.ts)) {\n text = await processTimeIdLc(text);\n }\n if (text.includes(config.set.start)) {\n const { substring, textExcludeSubstring } = decomposeText(text, config.set.start, config.set.end);\n const id = substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = substring.split(',')[1];\n\n text = textExcludeSubstring;\n const convertedValue = await transformValueToTypeOfId(id, importedValue);\n\n const ack = substring.split(',')[2].replace('}', '') == 'true';\n\n if (isEmptyString(text)) {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await setstateIobroker({ id, value: convertedValue, ack });\n }\n }\n\n text === inputText\n ? adapter.log.debug(`Return text : ${text} `)\n : adapter.log.debug(`Return text was modified from \"${inputText}\" to \"${text}\" `);\n return text;\n } catch (e: any) {\n errorLogger('Error returnTextModifier:', e, adapter);\n return '';\n }\n};\n\nexport async function transformValueToTypeOfId(\n id: string,\n value: ioBroker.StateValue,\n): Promise<ioBroker.StateValue | undefined> {\n try {\n const receivedType = typeof value;\n const obj = await adapter.getForeignObjectAsync(id);\n\n if (!obj || !isDefined(value) || isSameType(receivedType, obj)) {\n return value;\n }\n\n adapter.log.debug(`Change Value type from \"${receivedType}\" to \"${obj.common.type}\"`);\n\n switch (obj.common.type) {\n case 'string':\n return String(value);\n case 'number':\n return typeof value === 'string' ? parseFloat(value) : parseFloat(jsonString(value));\n case 'boolean':\n return isDefined(value) && !['false', false, 0, '0', 'null', 'undefined'].includes(value);\n default:\n return value;\n }\n } catch (e: any) {\n errorLogger('Error checkTypeOfId:', e, adapter);\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["textToSend", "error"]
4
+ "sourcesContent": ["import { isDefined } from './utils';\nimport { decomposeText, isEmptyString, jsonString, replaceAllItems } from './string';\nimport { errorLogger } from '../app/logging';\nimport { extractTimeValues, getTimeWithPad } from './time';\nimport { adapter } from '../main';\nimport { config } from '../config/config';\nimport { isSameType, timeStringReplacer } from './appUtils';\nimport { setstateIobroker } from '../app/setstate';\nimport { getProcessTimeValues } from './splitValues';\nimport { checkStatus } from '../app/status';\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 returnTextModifier = async (text?: string): Promise<string> => {\n if (!text) {\n return '';\n }\n try {\n const inputText = text;\n\n while (text.includes(config.status.start)) {\n text = await checkStatus(adapter, text);\n }\n\n if (text.includes(config.timestamp.lc) || text.includes(config.timestamp.ts)) {\n text = await processTimeIdLc(text);\n }\n if (text.includes(config.set.start)) {\n const { substring, textExcludeSubstring } = decomposeText(text, config.set.start, config.set.end);\n const id = substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = substring.split(',')[1];\n\n text = textExcludeSubstring;\n const convertedValue = await transformValueToTypeOfId(id, importedValue);\n\n const ack = substring.split(',')[2].replace('}', '') == 'true';\n\n if (isEmptyString(text)) {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await setstateIobroker({ id, value: convertedValue, ack });\n }\n }\n\n text === inputText\n ? adapter.log.debug(`Return text : ${text} `)\n : adapter.log.debug(`Return text was modified from \"${inputText}\" to \"${text}\" `);\n return text;\n } catch (e: any) {\n errorLogger('Error returnTextModifier:', e, adapter);\n return '';\n }\n};\n\nexport async function transformValueToTypeOfId(\n id: string,\n value: ioBroker.StateValue,\n): Promise<ioBroker.StateValue | undefined> {\n try {\n const receivedType = typeof value;\n const obj = await adapter.getForeignObjectAsync(id);\n\n if (!obj || !isDefined(value) || isSameType(receivedType, obj)) {\n return value;\n }\n\n adapter.log.debug(`Change Value type from \"${receivedType}\" to \"${obj.common.type}\"`);\n\n switch (obj.common.type) {\n case 'string':\n return String(value);\n case 'number':\n return typeof value === 'string' ? parseFloat(value) : parseFloat(jsonString(value));\n case 'boolean':\n return isDefined(value) && !['false', false, 0, '0', 'null', 'undefined'].includes(value);\n default:\n return value;\n }\n } catch (e: any) {\n errorLogger('Error checkTypeOfId:', e, adapter);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "telegram-menu",
4
- "version": "2.4.3",
4
+ "version": "2.4.4",
5
5
  "news": {
6
+ "2.4.4": {
7
+ "en": "FIX: #342 Result not in the correct order\nFIX: #341 Setstate changeValue\nFIX: #338 Exchange value does not work in newline",
8
+ "de": "FIX: #342 Ergebnis nicht in der richtigen Reihenfolge\nFIX: #341 Setstate change Wert\nFIX: #338 Exchange Value funktioniert nicht in Newline",
9
+ "ru": "FIX: #342 Результат не в правильном порядке\nFIX: #341 Изменение состояния ценность\nИсполнитель: #338 Обменная стоимость не работает в новом режиме",
10
+ "pt": "FIX: #342 Resultado não na ordem correta\nFIX: # 341 Setstate change Valor\nFIX: #338 O valor da troca não funciona em nova linha",
11
+ "nl": "FIX: #342 Resultaat niet in de juiste volgorde\nFIX: #341 Setstate change Waarde\nFIX: #338 Exchange value werkt niet in newline",
12
+ "fr": "N°342 Résultat non conforme à l'ordre\nFIX: #341 Changement de configuration Valeur\nN°338 La valeur d'échange ne fonctionne pas dans newline",
13
+ "it": "FIX: #342 Risultato non nell'ordine corretto\nFIX: #341 Cambiamento di stato Valore\nFIX: #338 Valore di scambio non funziona in newline",
14
+ "es": "FIX: #342 Resultado no en el orden correcto\nFIX: #341 Cambio de estado Valor\nFIX: #338 El valor de cambio no funciona en nueva línea",
15
+ "pl": "FIX: # 342 Wynik nie w prawidłowej kolejności\nFIX: # 341 Zmiana stanu ustawienia Wartość\nFIX: # 338 Wartość wymiany nie działa w nowej linii",
16
+ "uk": "FIX: #342 Результат не в правильному порядку\nFIX: #341 Зміна Setstate Ціна\nFIX: #338 Вартість обміну не працює в новому режимі",
17
+ "zh-cn": "FIX: #342 (英语). 结果不正确\nFIX: # 341 状态变化 数值\nFIX: 第338号 交换值在新行中无效"
18
+ },
6
19
  "2.4.3": {
7
20
  "en": "FIX: #332 Copy dropdown\nFIX: SetDynamicValue \nFIX: Change value in getStatus",
8
21
  "de": "FIX: #332 Dropdown kopieren\nFIX: SetDynamicValue\nFIX: Wert ändern in getStatus",
@@ -80,19 +93,6 @@
80
93
  "pl": "FIX: # 303 Wyjście GetState w niewłaściwej kolejności\nFIX: # 296\nFIX: # 295 Usuń niedziałający przycisk\nFIX: # 291 Przycisk menu nie działa\nFEAT: Nodeje > = 20.0.0\nFEAT: Dodaj wartownik\nFEAT: Dodaj testy mocha",
81
94
  "uk": "FIX: #303 Отримувати вихід в некоректному порядку\nFIX: #296 Передня фіксація\nFIX: #295 Видалити кнопка не працює\nFIX: #291 Меню не працює\nFEAT: Nodejs >= 20.0.0\nFEAT: Додати відправлення\nFEAT: Додати тести",
82
95
  "zh-cn": "FIX: # 303 GetState 输出顺序不正确\nFIX: # 296 前端修正\nFIX: # 295 删除不起作用的按钮\nFIX: #291 (英语). 菜单按钮不工作\nFEAT: 节点 >= 20.0.0\nFEAT: 添加哨兵\nFEAT: 添加摩卡测试"
83
- },
84
- "2.2.4": {
85
- "en": "FIX: #279 Backslash is in the message when using newline",
86
- "de": "FIX: #279 Backslash ist in der Nachricht bei der Verwendung von newline",
87
- "ru": "FIX: #279 Backslash находится в сообщении при использовании новой линии",
88
- "pt": "FIX: #279 Backslash está na mensagem ao usar newline",
89
- "nl": "FIX: #279 Backslash zit in het bericht bij het gebruik van nieuwe regel",
90
- "fr": "FIX: #279 Backslash est dans le message lorsque vous utilisez newline",
91
- "it": "FIX: #279 Backslash è nel messaggio quando si utilizza la nuova linea",
92
- "es": "FIX: #279 Backslash está en el mensaje al usar newline",
93
- "pl": "FIX: # 279 Backslash jest w wiadomości przy użyciu nowej linii",
94
- "uk": "FIX: #279 Backslash знаходиться в повідомленні при використанні newline",
95
- "zh-cn": "FIX: # 279 使用新线时反斜线在信件中"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.telegram-menu",
3
- "version": "2.4.3",
3
+ "version": "2.4.4",
4
4
  "description": "Easily create Telegram Menus",
5
5
  "author": {
6
6
  "name": "MiRo1310",
@@ -67,7 +67,7 @@
67
67
  "prebuild:react": "rimraf admin/build",
68
68
  "build:react": "build-adapter react",
69
69
  "watch:react": "build-adapter react --watch",
70
- "test:js": "mocha -r ts-node/register test/**/*.test.ts --config test/mocharc.custom.json \"{!(node_modules|test)/**/*.test.js,*.test.js,test/**/test!(PackageFiles|Startup).js}\"",
70
+ "test:js": "mocha -r ts-node/register \"test/**/*.test.ts\" --config test/mocharc.custom.json",
71
71
  "test:package": "mocha test/package --exit",
72
72
  "test:integration": "mocha test/integration --exit",
73
73
  "test": "npm run test:js && npm run test:package",