iobroker.telegram-menu 2.4.0 → 2.4.2
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 +8 -1
- package/admin/build/index.js +1 -1
- package/admin/build/index.js.map +3 -3
- package/build/app/action.js +4 -3
- package/build/app/action.js.map +2 -2
- package/build/app/echarts.js.map +1 -1
- package/build/app/getstate.js +8 -6
- package/build/app/getstate.js.map +2 -2
- package/build/app/idBySelector.js.map +2 -2
- package/build/app/telegram.js +5 -1
- package/build/app/telegram.js.map +2 -2
- package/build/lib/appUtils.js.map +2 -2
- package/build/lib/exchangeValue.js +8 -4
- package/build/lib/exchangeValue.js.map +2 -2
- package/build/lib/string.js +7 -1
- package/build/lib/string.js.map +2 -2
- package/build/types/types.js.map +1 -1
- package/io-package.json +27 -27
- package/package.json +5 -5
- package/build/.eslintrc.js +0 -70
- package/build/.eslintrc.js.map +0 -1
- package/build/build/src/app/action.js +0 -447
- package/build/build/src/app/adapterStartMenuSend.js +0 -37
- package/build/build/src/app/backMenu.js +0 -70
- package/build/build/src/app/botAction.js +0 -25
- package/build/build/src/app/connection.js +0 -19
- package/build/build/src/app/createState.js +0 -19
- package/build/build/src/app/dynamicSwitch.js +0 -51
- package/build/build/src/app/dynamicValue.js +0 -64
- package/build/build/src/app/echarts.js +0 -45
- package/build/build/src/app/getstate.js +0 -157
- package/build/build/src/app/global.js +0 -59
- package/build/build/src/app/httpRequest.js +0 -64
- package/build/build/src/app/jsonTable.js +0 -147
- package/build/build/src/app/logging.js +0 -13
- package/build/build/src/app/messageIds.js +0 -88
- package/build/build/src/app/processData.js +0 -208
- package/build/build/src/app/sendNav.js +0 -30
- package/build/build/src/app/sendpic.js +0 -69
- package/build/build/src/app/setstate.js +0 -126
- package/build/build/src/app/shoppingList.js +0 -72
- package/build/build/src/app/subMenu.js +0 -361
- package/build/build/src/app/subscribeStates.js +0 -25
- package/build/build/src/app/telegram.js +0 -101
- package/build/build/src/lib/string.js +0 -28
- package/build/build/src/lib/time.js +0 -23
- package/build/build/src/lib/utilities.js +0 -263
- package/build/build/src/lib/utils.js +0 -13
- package/build/build/src/main.js +0 -402
- package/build/io-package.json +0 -324
- package/build/src/app/action.js +0 -239
- package/build/src/app/action.js.map +0 -1
- package/build/src/app/adapterManager.js +0 -12
- package/build/src/app/adapterManager.js.map +0 -1
- package/build/src/app/adapterStartMenuSend.js +0 -36
- package/build/src/app/adapterStartMenuSend.js.map +0 -1
- package/build/src/app/backMenu.js +0 -81
- package/build/src/app/backMenu.js.map +0 -1
- package/build/src/app/botAction.js +0 -25
- package/build/src/app/botAction.js.map +0 -1
- package/build/src/app/configVariables.js +0 -32
- package/build/src/app/configVariables.js.map +0 -1
- package/build/src/app/connection.js +0 -20
- package/build/src/app/connection.js.map +0 -1
- package/build/src/app/createState.js +0 -19
- package/build/src/app/createState.js.map +0 -1
- package/build/src/app/dynamicSwitch.js +0 -52
- package/build/src/app/dynamicSwitch.js.map +0 -1
- package/build/src/app/dynamicSwitchMenu.js +0 -52
- package/build/src/app/dynamicSwitchMenu.js.map +0 -1
- package/build/src/app/dynamicValue.js +0 -52
- package/build/src/app/dynamicValue.js.map +0 -1
- package/build/src/app/echarts.js +0 -33
- package/build/src/app/echarts.js.map +0 -1
- package/build/src/app/getstate.js +0 -122
- package/build/src/app/getstate.js.map +0 -1
- package/build/src/app/global.js +0 -8
- package/build/src/app/global.js.map +0 -1
- package/build/src/app/httpRequest.js +0 -55
- package/build/src/app/httpRequest.js.map +0 -1
- package/build/src/app/jsonTable.js +0 -147
- package/build/src/app/jsonTable.js.map +0 -1
- package/build/src/app/logging.js +0 -22
- package/build/src/app/logging.js.map +0 -1
- package/build/src/app/messageIds.js +0 -89
- package/build/src/app/messageIds.js.map +0 -1
- package/build/src/app/processData.js +0 -153
- package/build/src/app/processData.js.map +0 -1
- package/build/src/app/sendNav.js +0 -26
- package/build/src/app/sendNav.js.map +0 -1
- package/build/src/app/sendpic.js +0 -66
- package/build/src/app/sendpic.js.map +0 -1
- package/build/src/app/sentry.js +0 -18
- package/build/src/app/sentry.js.map +0 -1
- package/build/src/app/setStateIdsToListenTo.js +0 -17
- package/build/src/app/setStateIdsToListenTo.js.map +0 -1
- package/build/src/app/setstate.js +0 -114
- package/build/src/app/setstate.js.map +0 -1
- package/build/src/app/shoppingList.js +0 -74
- package/build/src/app/shoppingList.js.map +0 -1
- package/build/src/app/subMenu.js +0 -237
- package/build/src/app/subMenu.js.map +0 -1
- package/build/src/app/subscribeStates.js +0 -17
- package/build/src/app/subscribeStates.js.map +0 -1
- package/build/src/app/telegram.js +0 -83
- package/build/src/app/telegram.js.map +0 -1
- package/build/src/app/validateMenus.js +0 -30
- package/build/src/app/validateMenus.js.map +0 -1
- package/build/src/config/config.js +0 -100
- package/build/src/config/config.js.map +0 -1
- package/build/src/lib/appUtils.js +0 -126
- package/build/src/lib/appUtils.js.map +0 -1
- package/build/src/lib/appUtilsString.js +0 -13
- package/build/src/lib/appUtilsString.js.map +0 -1
- package/build/src/lib/json.js +0 -37
- package/build/src/lib/json.js.map +0 -1
- package/build/src/lib/math.js +0 -17
- package/build/src/lib/math.js.map +0 -1
- package/build/src/lib/object.js +0 -10
- package/build/src/lib/object.js.map +0 -1
- package/build/src/lib/splitValues.js +0 -35
- package/build/src/lib/splitValues.js.map +0 -1
- package/build/src/lib/string.js +0 -121
- package/build/src/lib/string.js.map +0 -1
- package/build/src/lib/time.js +0 -57
- package/build/src/lib/time.js.map +0 -1
- package/build/src/lib/utilities.js +0 -111
- package/build/src/lib/utilities.js.map +0 -1
- package/build/src/lib/utils.js +0 -37
- package/build/src/lib/utils.js.map +0 -1
- package/build/src/main.js +0 -332
- package/build/src/main.js.map +0 -1
- package/build/src/test/setup.js +0 -12
- package/build/src/test/setup.js.map +0 -1
- package/build/src/types/types.js +0 -3
- package/build/src/types/types.js.map +0 -1
- package/build/test/integration.js +0 -6
- package/build/test/integration.js.map +0 -1
- package/build/test/mocha.setup.js +0 -14
- package/build/test/mocha.setup.js.map +0 -1
- package/build/test/package.js +0 -6
- package/build/test/package.js.map +0 -1
- package/build/test/setup.js +0 -12
- package/build/test/setup.js.map +0 -1
- package/build/test/test/appUtils.test.js +0 -519
- package/build/test/test/appUtils.test.js.map +0 -1
- package/build/test/test/appUtilsString.test.js +0 -16
- package/build/test/test/appUtilsString.test.js.map +0 -1
- package/build/test/test/math.test.js +0 -33
- package/build/test/test/math.test.js.map +0 -1
- package/build/test/test/object.test.js +0 -66
- package/build/test/test/object.test.js.map +0 -1
- package/build/test/test/string.test.js +0 -385
- package/build/test/test/string.test.js.map +0 -1
- package/build/test/test/time.test.js +0 -186
- package/build/test/test/time.test.js.map +0 -1
- package/build/test/test/utils.test.js +0 -115
- package/build/test/test/utils.test.js.map +0 -1
package/build/app/action.js
CHANGED
|
@@ -105,7 +105,7 @@ function generateActions({
|
|
|
105
105
|
import_config.arrayOfEntries.forEach((item) => {
|
|
106
106
|
const actions = action == null ? void 0 : action[item.objName];
|
|
107
107
|
actions == null ? void 0 : actions.forEach(function(element, index) {
|
|
108
|
-
const trigger = element.trigger[0];
|
|
108
|
+
const trigger = element == null ? void 0 : element.trigger[0];
|
|
109
109
|
userObject[trigger] = { [item.name]: [] };
|
|
110
110
|
if (index == 0) {
|
|
111
111
|
userObject[trigger] = { [item.name]: [] };
|
|
@@ -114,14 +114,15 @@ function generateActions({
|
|
|
114
114
|
var _a;
|
|
115
115
|
const newObj = {};
|
|
116
116
|
item.elements.forEach(({ name, value, index: elIndex }) => {
|
|
117
|
+
var _a2;
|
|
117
118
|
const elName = value ? value : name;
|
|
118
119
|
const newIndex = elIndex ? elIndex : index2;
|
|
119
|
-
const val = !element[elName] ? false : element[elName][newIndex]
|
|
120
|
+
const val = !element[elName] ? false : (_a2 = element[elName][newIndex]) != null ? _a2 : "false";
|
|
120
121
|
if (name === "parse_mode") {
|
|
121
122
|
newObj.parse_mode = (0, import_utils.isTruthy)(val);
|
|
122
123
|
}
|
|
123
124
|
if (typeof val === "string") {
|
|
124
|
-
newObj[name] = val.replace(/&/g, "&");
|
|
125
|
+
newObj[name] = String(val).replace(/&/g, "&");
|
|
125
126
|
}
|
|
126
127
|
});
|
|
127
128
|
((_a = userObject == null ? void 0 : userObject[trigger]) == null ? void 0 : _a[item.name]).push(newObj);
|
package/build/app/action.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/action.ts"],
|
|
4
|
-
"sourcesContent": ["import { sendToTelegram } from './telegram';\nimport { callSubMenu } from './subMenu';\nimport { sendNav } from './sendNav';\nimport { backMenuFunc } from './backMenu';\nimport { errorLogger } from './logging';\n\nimport { adapter } from '../main';\n\nimport type {\n Actions,\n BindingObject,\n DataObject,\n GenerateActionsNewObject,\n MenuData,\n NewObjectStructure,\n Part,\n Switch,\n TelegramParams,\n UserListWithChatId,\n UserObjectActions,\n UsersInGroup,\n} from '../types/types';\nimport { decomposeText } from '../lib/string';\nimport { isFalsy, isTruthy } from '../lib/utils';\nimport { evaluate } from '../lib/math';\nimport { arrayOfEntries, config } from '../config/config';\nimport { getBindingValues } from '../lib/splitValues';\n\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA+B;AAC/B,qBAA4B;AAC5B,qBAAwB;AACxB,sBAA6B;AAC7B,qBAA4B;AAE5B,kBAAwB;AAgBxB,oBAA8B;AAC9B,mBAAkC;AAClC,kBAAyB;AACzB,oBAAuC;AACvC,yBAAiC;
|
|
4
|
+
"sourcesContent": ["import { sendToTelegram } from './telegram';\nimport { callSubMenu } from './subMenu';\nimport { sendNav } from './sendNav';\nimport { backMenuFunc } from './backMenu';\nimport { errorLogger } from './logging';\n\nimport { adapter } from '../main';\n\nimport type {\n Actions,\n BindingObject,\n DataObject,\n GenerateActionsNewObject,\n MenuData,\n NewObjectStructure,\n Part,\n Switch,\n TelegramParams,\n UserListWithChatId,\n UserObjectActions,\n UsersInGroup,\n} from '../types/types';\nimport { decomposeText } from '../lib/string';\nimport { isFalsy, isTruthy } from '../lib/utils';\nimport { evaluate } from '../lib/math';\nimport { arrayOfEntries, config } from '../config/config';\nimport { getBindingValues } from '../lib/splitValues';\nimport type { TriggerableActions } from '@/types/app';\n\nexport const bindingFunc = async (\n text: string,\n userToSend: string,\n telegramParams: TelegramParams,\n parse_mode?: boolean,\n): Promise<void> => {\n let textToSend;\n\n try {\n const { substringExcludeSearch } = decomposeText(text, config.binding.start, config.binding.end);\n const arrayOfItems = substringExcludeSearch.split(config.binding.splitChar);\n const bindingObject: BindingObject = {\n values: {},\n };\n\n for (let item of arrayOfItems) {\n if (!item.includes('?')) {\n const { key, id } = getBindingValues(item);\n if (id) {\n const result = await adapter.getForeignStateAsync(id);\n\n if (result) {\n bindingObject.values[key] = result.val?.toString() ?? '';\n }\n }\n } else {\n Object.keys(bindingObject.values).forEach(function (key) {\n item = item.replace(key, bindingObject.values[key]);\n });\n\n const { val } = evaluate(item, adapter);\n textToSend = String(val);\n }\n }\n await sendToTelegram({\n userToSend,\n textToSend,\n telegramParams,\n parse_mode,\n });\n } catch (e: any) {\n errorLogger('Error Binding function: ', e, adapter);\n }\n};\n\nexport function generateActions({\n action,\n userObject,\n}: {\n action?: Actions;\n userObject: NewObjectStructure;\n}): { obj: NewObjectStructure; ids: string[] } | undefined {\n try {\n const listOfSetStateIds: string[] = [];\n action?.set.forEach(function (\n { trigger, switch_checkbox, returnText, parse_mode, values, confirm, ack, IDs },\n index,\n ) {\n const triggerName = trigger[0];\n if (index == 0) {\n userObject[triggerName] = { switch: [] };\n }\n userObject[triggerName] = { switch: [] };\n\n IDs.forEach(function (id: string, index: number) {\n listOfSetStateIds.push(id);\n const toggle = isTruthy(switch_checkbox[index]);\n\n const newObj: Switch = {\n id: IDs[index],\n value: values[index],\n toggle: toggle,\n confirm: confirm[index],\n returnText: returnText[index],\n ack: isTruthy(ack?.[index] ?? false),\n parse_mode: isTruthy(parse_mode[0]),\n };\n if (Array.isArray(userObject[triggerName]?.switch)) {\n userObject[triggerName].switch.push(newObj);\n }\n });\n });\n\n arrayOfEntries.forEach(item => {\n const actions = action?.[item.objName as keyof Actions];\n\n actions?.forEach(function (element, index) {\n const trigger = (element as TriggerableActions)?.trigger[0];\n userObject[trigger] = { [item.name]: [] };\n if (index == 0) {\n userObject[trigger] = { [item.name as keyof UserObjectActions]: [] };\n }\n\n (element[item.loop as keyof typeof element] as []).forEach(function (id, index) {\n const newObj = {} as GenerateActionsNewObject;\n item.elements.forEach(({ name, value, index: elIndex }) => {\n const elName = (value ? value : name) as keyof typeof element;\n const newIndex = elIndex ? elIndex : index;\n\n const val = !element[elName] ? false : (element[elName][newIndex] ?? 'false');\n\n if (name === 'parse_mode') {\n newObj.parse_mode = isTruthy(val);\n }\n\n if (typeof val === 'string') {\n newObj[name as keyof GenerateActionsNewObject] = String(val).replace(/&/g, '&') as any;\n }\n });\n\n (userObject?.[trigger]?.[item.name as keyof Part] as GenerateActionsNewObject[]).push(newObj);\n });\n });\n });\n\n return { obj: userObject, ids: listOfSetStateIds };\n } catch (err: any) {\n errorLogger('Error generateActions:', err, adapter);\n }\n}\n\nexport const adjustValueType = (value: keyof NewObjectStructure, valueType: string): boolean | string | number => {\n if (valueType == 'number') {\n if (!parseFloat(value)) {\n adapter.log.error(`Error: Value is not a number: ${value}`);\n return false;\n }\n return parseFloat(value);\n }\n if (valueType == 'boolean') {\n return isTruthy(value);\n }\n return value;\n};\n\nexport const checkEvent = async (\n dataObject: DataObject,\n id: string,\n state: ioBroker.State,\n menuData: MenuData,\n telegramParams: TelegramParams,\n usersInGroup: UsersInGroup,\n): Promise<boolean> => {\n const menuArray: string[] = [];\n let ok = false;\n let calledNav = '';\n\n if (!dataObject.action) {\n return false;\n }\n\n Object.keys(dataObject.action).forEach(menu => {\n if (dataObject.action?.[menu]?.events) {\n dataObject.action[menu].events.forEach(event => {\n if (event.ID[0] == id && event.ack[0] == state.ack.toString()) {\n const condition = event.condition[0];\n if (\n ((state.val == true || state.val == 'true') && isTruthy(condition)) ||\n ((state.val == false || state.val == 'false') && isFalsy(condition)) ||\n (typeof state.val == 'number' && state.val == parseInt(condition)) ||\n state.val == condition\n ) {\n ok = true;\n menuArray.push(menu);\n calledNav = event.menu[0];\n }\n }\n });\n }\n });\n if (!ok || !menuArray.length) {\n return false;\n }\n\n for (const menu of menuArray) {\n const part = menuData[menu][calledNav as keyof DataObject];\n if (usersInGroup[menu] && part) {\n for (const user of usersInGroup[menu]) {\n const menus = Object.keys(menuData);\n\n if (part.nav) {\n backMenuFunc({ activePage: calledNav, navigation: part.nav, userToSend: user });\n }\n\n if (part?.nav?.[0][0].includes('menu:')) {\n await callSubMenu({\n jsonStringNav: part.nav[0][0],\n userToSend: user,\n telegramParams: telegramParams,\n part: part,\n allMenusWithData: menuData,\n menus: menus,\n });\n return true;\n }\n await sendNav(part, user, telegramParams);\n }\n }\n }\n return true;\n};\n\nexport const getUserToSendFromUserListWithChatID = (\n userListWithChatID: UserListWithChatId[],\n chatID: string,\n): string | undefined => {\n for (const element of userListWithChatID) {\n if (element.chatID == chatID) {\n return element.name;\n }\n }\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["index", "_a"]
|
|
7
7
|
}
|
package/build/app/echarts.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/echarts.ts"],
|
|
4
|
-
"sourcesContent": ["import { adapter } from '../main';\nimport { errorLogger } from './logging';\nimport { sendToTelegram } from './telegram';\nimport type {
|
|
4
|
+
"sourcesContent": ["import { adapter } from '../main';\nimport { errorLogger } from './logging';\nimport { sendToTelegram } from './telegram';\nimport type { ModifiedEchart, TelegramParams } from '../types/types';\nimport { validateDirectory } from '../lib/utils';\nimport { getEchartsValues } from '../lib/splitValues';\n\nexport function getChart(\n echarts: ModifiedEchart[],\n directoryPicture: string,\n user: string,\n telegramParams: TelegramParams,\n): void {\n try {\n for (const echart of echarts) {\n const instanceOfEchart = getEchartsValues(echart.preset);\n\n if (!validateDirectory(adapter, directoryPicture)) {\n return;\n }\n adapter.sendTo(\n instanceOfEchart,\n {\n preset: echart.preset,\n renderer: 'jpg',\n background: echart.background,\n theme: echart.theme,\n quality: 1.0,\n fileOnDisk: directoryPicture + echart.filename,\n },\n async (result: any) => {\n const textToSend = result.error || directoryPicture + echart.filename;\n\n await sendToTelegram({ userToSend: user, textToSend, telegramParams });\n },\n );\n }\n } catch (e: any) {\n errorLogger('Error in Echart:', e, adapter);\n }\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwB;AACxB,qBAA4B;AAC5B,sBAA+B;AAE/B,mBAAkC;AAClC,yBAAiC;AAE1B,SAAS,SACZ,SACA,kBACA,MACA,gBACI;AACJ,MAAI;AACA,eAAW,UAAU,SAAS;AAC1B,YAAM,uBAAmB,qCAAiB,OAAO,MAAM;AAEvD,UAAI,KAAC,gCAAkB,qBAAS,gBAAgB,GAAG;AAC/C;AAAA,MACJ;AACA,0BAAQ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,QAAQ,OAAO;AAAA,UACf,UAAU;AAAA,UACV,YAAY,OAAO;AAAA,UACnB,OAAO,OAAO;AAAA,UACd,SAAS;AAAA,UACT,YAAY,mBAAmB,OAAO;AAAA,QAC1C;AAAA,QACA,OAAO,WAAgB;AACnB,gBAAM,aAAa,OAAO,SAAS,mBAAmB,OAAO;AAE7D,oBAAM,gCAAe,EAAE,YAAY,MAAM,YAAY,eAAe,CAAC;AAAA,QACzE;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,SAAS,GAAQ;AACb,oCAAY,oBAAoB,GAAG,mBAAO;AAAA,EAC9C;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/app/getstate.js
CHANGED
|
@@ -129,12 +129,14 @@ async function getState(part, userToSend, telegramParams) {
|
|
|
129
129
|
valueArrayForCorrectOrder[index] = modifiedTextToSend;
|
|
130
130
|
});
|
|
131
131
|
await Promise.all(promises);
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
if (valueArrayForCorrectOrder.length) {
|
|
133
|
+
await (0, import_telegram.sendToTelegram)({
|
|
134
|
+
userToSend,
|
|
135
|
+
textToSend: valueArrayForCorrectOrder.join(""),
|
|
136
|
+
telegramParams,
|
|
137
|
+
parse_mode
|
|
138
|
+
});
|
|
139
|
+
}
|
|
138
140
|
} catch (error) {
|
|
139
141
|
(0, import_logging.errorLogger)("Error GetData:", error, import_main.adapter);
|
|
140
142
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/getstate.ts"],
|
|
4
|
-
"sourcesContent": ["import { sendToTelegram, sendToTelegramSubmenu } from './telegram';\nimport { bindingFunc } from './action';\nimport { createKeyboardFromJson, createTextTableFromJson } from './jsonTable';\nimport { processTimeIdLc } from '../lib/utilities';\nimport { isDefined } from '../lib/utils';\nimport { adapter } from '../main';\nimport type { Part, TelegramParams } from '../types/types';\nimport { integrateTimeIntoText } from '../lib/time';\nimport { cleanUpString, decomposeText, getNewline, jsonString } from '../lib/string';\nimport { calcValue, roundValue } from '../lib/appUtils';\nimport { config } from '../config/config';\nimport { errorLogger } from './logging';\nimport { exchangeValue } from '../lib/exchangeValue';\nimport { idBySelector } from './idBySelector';\n\nexport async function getState(part: Part, userToSend: string, telegramParams: TelegramParams): Promise<void> {\n try {\n const parse_mode = part.getData?.[0].parse_mode; // Parse Mode ist nur immer im ersten Element\n const valueArrayForCorrectOrder: string[] = [];\n const promises = (part.getData || []).map(async ({ newline, text, id }, index): Promise<void> => {\n adapter.log.debug(`Get Value ID: ${id}`);\n\n if (id.includes(config.functionSelektor)) {\n await idBySelector({\n adapter,\n selector: id,\n text,\n userToSend,\n newline,\n telegramParams,\n });\n return;\n }\n\n if (text.includes(config.binding.start)) {\n await bindingFunc(text, userToSend, telegramParams, parse_mode);\n return;\n }\n\n const state = await adapter.getForeignStateAsync(id);\n\n if (!isDefined(state)) {\n adapter.log.error('The state is empty!');\n valueArrayForCorrectOrder[index] = 'N/A';\n return Promise.resolve();\n }\n\n const stateValue = cleanUpString(state.val?.toString());\n\n let modifiedStateVal = stateValue;\n let modifiedTextToSend = text;\n\n if (text.includes(config.timestamp.ts) || text.includes(config.timestamp.lc)) {\n modifiedTextToSend = await processTimeIdLc(text, id);\n modifiedStateVal = '';\n }\n\n if (modifiedTextToSend.includes(config.time)) {\n modifiedTextToSend = integrateTimeIntoText(modifiedTextToSend, stateValue);\n modifiedStateVal = '';\n }\n\n if (modifiedTextToSend.includes(config.math.start)) {\n const { textToSend, calculated, error } = calcValue(modifiedTextToSend, modifiedStateVal, adapter);\n if (!error) {\n modifiedTextToSend = textToSend;\n modifiedStateVal = calculated;\n\n adapter.log.debug(`textToSend : ${modifiedTextToSend} val : ${modifiedStateVal}`);\n }\n }\n\n if (modifiedTextToSend.includes(config.round.start)) {\n const { error, text, roundedValue } = roundValue(String(modifiedStateVal), modifiedTextToSend);\n if (!error) {\n adapter.log.debug(`Rounded from ${jsonString(modifiedStateVal)} to ${jsonString(roundedValue)}`);\n modifiedStateVal = roundedValue;\n modifiedTextToSend = text;\n }\n }\n\n if (modifiedTextToSend.includes(config.json.start)) {\n const { substring } = decomposeText(modifiedTextToSend, config.json.start, config.json.end);\n\n if (substring.includes(config.json.textTable)) {\n const result = createTextTableFromJson(stateValue, modifiedTextToSend);\n if (result) {\n await sendToTelegram({\n userToSend,\n textToSend: result,\n telegramParams,\n parse_mode,\n });\n return;\n }\n adapter.log.debug('Cannot create a Text-Table');\n } else {\n const result = createKeyboardFromJson(stateValue, modifiedTextToSend, id, userToSend);\n if (stateValue && stateValue.length > 0) {\n if (result && result.text && result.keyboard) {\n sendToTelegramSubmenu(userToSend, result.text, result.keyboard, telegramParams, parse_mode);\n }\n return;\n }\n await sendToTelegram({\n userToSend,\n textToSend: 'The state is empty!',\n telegramParams,\n parse_mode,\n });\n adapter.log.debug('The state is empty!');\n return;\n }\n }\n\n const { textToSend: _text, error } = exchangeValue(adapter, modifiedTextToSend, modifiedStateVal);\n\n const isNewline = getNewline(newline);\n modifiedTextToSend = `${_text} ${isNewline}`;\n\n adapter.log.debug(!error ? `Value Changed to: ${modifiedTextToSend}` : `No Change`);\n\n valueArrayForCorrectOrder[index] = modifiedTextToSend;\n });\n await Promise.all(promises);\n\n await sendToTelegram({\n
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { sendToTelegram, sendToTelegramSubmenu } from './telegram';\nimport { bindingFunc } from './action';\nimport { createKeyboardFromJson, createTextTableFromJson } from './jsonTable';\nimport { processTimeIdLc } from '../lib/utilities';\nimport { isDefined } from '../lib/utils';\nimport { adapter } from '../main';\nimport type { Part, TelegramParams } from '../types/types';\nimport { integrateTimeIntoText } from '../lib/time';\nimport { cleanUpString, decomposeText, getNewline, jsonString } from '../lib/string';\nimport { calcValue, roundValue } from '../lib/appUtils';\nimport { config } from '../config/config';\nimport { errorLogger } from './logging';\nimport { exchangeValue } from '../lib/exchangeValue';\nimport { idBySelector } from './idBySelector';\n\nexport async function getState(part: Part, userToSend: string, telegramParams: TelegramParams): Promise<void> {\n try {\n const parse_mode = part.getData?.[0].parse_mode; // Parse Mode ist nur immer im ersten Element\n const valueArrayForCorrectOrder: string[] = [];\n const promises = (part.getData || []).map(async ({ newline, text, id }, index): Promise<void> => {\n adapter.log.debug(`Get Value ID: ${id}`);\n\n if (id.includes(config.functionSelektor)) {\n await idBySelector({\n adapter,\n selector: id,\n text,\n userToSend,\n newline,\n telegramParams,\n });\n return;\n }\n\n if (text.includes(config.binding.start)) {\n await bindingFunc(text, userToSend, telegramParams, parse_mode);\n return;\n }\n\n const state = await adapter.getForeignStateAsync(id);\n\n if (!isDefined(state)) {\n adapter.log.error('The state is empty!');\n valueArrayForCorrectOrder[index] = 'N/A';\n return Promise.resolve();\n }\n\n const stateValue = cleanUpString(state.val?.toString());\n\n let modifiedStateVal = stateValue;\n let modifiedTextToSend = text;\n\n if (text.includes(config.timestamp.ts) || text.includes(config.timestamp.lc)) {\n modifiedTextToSend = await processTimeIdLc(text, id);\n modifiedStateVal = '';\n }\n\n if (modifiedTextToSend.includes(config.time)) {\n modifiedTextToSend = integrateTimeIntoText(modifiedTextToSend, stateValue);\n modifiedStateVal = '';\n }\n\n if (modifiedTextToSend.includes(config.math.start)) {\n const { textToSend, calculated, error } = calcValue(modifiedTextToSend, modifiedStateVal, adapter);\n if (!error) {\n modifiedTextToSend = textToSend;\n modifiedStateVal = calculated;\n\n adapter.log.debug(`textToSend : ${modifiedTextToSend} val : ${modifiedStateVal}`);\n }\n }\n\n if (modifiedTextToSend.includes(config.round.start)) {\n const { error, text, roundedValue } = roundValue(String(modifiedStateVal), modifiedTextToSend);\n if (!error) {\n adapter.log.debug(`Rounded from ${jsonString(modifiedStateVal)} to ${jsonString(roundedValue)}`);\n modifiedStateVal = roundedValue;\n modifiedTextToSend = text;\n }\n }\n\n if (modifiedTextToSend.includes(config.json.start)) {\n const { substring } = decomposeText(modifiedTextToSend, config.json.start, config.json.end);\n\n if (substring.includes(config.json.textTable)) {\n const result = createTextTableFromJson(stateValue, modifiedTextToSend);\n if (result) {\n await sendToTelegram({\n userToSend,\n textToSend: result,\n telegramParams,\n parse_mode,\n });\n return;\n }\n adapter.log.debug('Cannot create a Text-Table');\n } else {\n const result = createKeyboardFromJson(stateValue, modifiedTextToSend, id, userToSend);\n if (stateValue && stateValue.length > 0) {\n if (result && result.text && result.keyboard) {\n sendToTelegramSubmenu(userToSend, result.text, result.keyboard, telegramParams, parse_mode);\n }\n return;\n }\n await sendToTelegram({\n userToSend,\n textToSend: 'The state is empty!',\n telegramParams,\n parse_mode,\n });\n adapter.log.debug('The state is empty!');\n return;\n }\n }\n\n const { textToSend: _text, error } = exchangeValue(adapter, modifiedTextToSend, modifiedStateVal);\n\n const isNewline = getNewline(newline);\n modifiedTextToSend = `${_text} ${isNewline}`;\n\n adapter.log.debug(!error ? `Value Changed to: ${modifiedTextToSend}` : `No Change`);\n\n valueArrayForCorrectOrder[index] = modifiedTextToSend;\n });\n await Promise.all(promises);\n\n if (valueArrayForCorrectOrder.length) {\n await sendToTelegram({\n userToSend,\n textToSend: valueArrayForCorrectOrder.join(''),\n telegramParams,\n parse_mode,\n });\n }\n } catch (error: any) {\n errorLogger('Error GetData:', error, adapter);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["_a", "error", "text"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/idBySelector.ts"],
|
|
4
|
-
"sourcesContent": ["import type {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AAEvB,2BAA8B;AAC9B,oBAA2B;AAC3B,sBAA+B;AAC/B,qBAA4B;
|
|
4
|
+
"sourcesContent": ["import type { TelegramParams } from '../types/types';\nimport { config } from '../config/config';\nimport type TelegramMenu from '../main';\nimport { exchangeValue } from '../lib/exchangeValue';\nimport { getNewline } from '../lib/string';\nimport { sendToTelegram } from './telegram';\nimport { errorLogger } from './logging';\nimport type { BooleanString } from '@/types/app';\n\nexport const idBySelector = async ({\n adapter,\n selector,\n text,\n userToSend,\n newline,\n telegramParams,\n}: {\n adapter: TelegramMenu;\n selector: string;\n text: string;\n userToSend: string;\n newline: BooleanString;\n telegramParams: TelegramParams;\n}): Promise<void> => {\n let text2Send = '';\n try {\n const functions = selector.replace(config.functionSelektor, '');\n let enums: string[] | undefined = [];\n const result = await adapter.getEnumsAsync();\n const enumsFunctions = result?.['enum.functions'][`enum.functions.${functions}`];\n if (!enumsFunctions) {\n return;\n }\n enums = enumsFunctions.common.members;\n if (!enums) {\n return;\n }\n\n const promises = enums.map(async (id: string) => {\n const value = await adapter.getForeignStateAsync(id);\n\n let newText = text;\n\n if (text.includes('{common.name}')) {\n const result = await adapter.getForeignObjectAsync(id);\n newText = newText.replace('{common.name}', getCommonName({ name: result?.common.name, adapter }));\n }\n if (text.includes('{folder.name}')) {\n const result = await adapter.getForeignObjectAsync(removeLastPartOfId(id));\n newText = newText.replace('{folder.name}', getCommonName({ name: result?.common.name, adapter }));\n }\n\n const { textToSend } = exchangeValue(adapter, newText, value?.val ?? '');\n\n text2Send += textToSend;\n text2Send += getNewline(newline);\n\n adapter.log.debug(`Text to send: ${JSON.stringify(text2Send)}`);\n });\n Promise.all(promises)\n .then(async () => {\n await sendToTelegram({\n userToSend,\n textToSend: text2Send,\n telegramParams,\n });\n })\n .catch(e => {\n errorLogger('Error Promise', e, adapter);\n });\n } catch (error: any) {\n errorLogger('Error idBySelector', error, adapter);\n }\n};\n\nfunction getCommonName({ name, adapter }: { name?: ioBroker.StringOrTranslated; adapter: TelegramMenu }): string {\n const language = adapter.language ?? 'en';\n if (!name) {\n return '';\n }\n if (typeof name === 'string') {\n return name;\n }\n if (language) {\n return name[language] ?? '';\n }\n return '';\n}\n\nfunction removeLastPartOfId(id: string): string {\n const parts = id.split('.');\n parts.pop();\n return parts.join('.');\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AAEvB,2BAA8B;AAC9B,oBAA2B;AAC3B,sBAA+B;AAC/B,qBAA4B;AAGrB,MAAM,eAAe,OAAO;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAOqB;AACjB,MAAI,YAAY;AAChB,MAAI;AACA,UAAM,YAAY,SAAS,QAAQ,qBAAO,kBAAkB,EAAE;AAC9D,QAAI,QAA8B,CAAC;AACnC,UAAM,SAAS,MAAM,QAAQ,cAAc;AAC3C,UAAM,iBAAiB,iCAAS,kBAAkB,kBAAkB,SAAS;AAC7E,QAAI,CAAC,gBAAgB;AACjB;AAAA,IACJ;AACA,YAAQ,eAAe,OAAO;AAC9B,QAAI,CAAC,OAAO;AACR;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM,IAAI,OAAO,OAAe;AAtCzD;AAuCY,YAAM,QAAQ,MAAM,QAAQ,qBAAqB,EAAE;AAEnD,UAAI,UAAU;AAEd,UAAI,KAAK,SAAS,eAAe,GAAG;AAChC,cAAMA,UAAS,MAAM,QAAQ,sBAAsB,EAAE;AACrD,kBAAU,QAAQ,QAAQ,iBAAiB,cAAc,EAAE,MAAMA,WAAA,gBAAAA,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MACpG;AACA,UAAI,KAAK,SAAS,eAAe,GAAG;AAChC,cAAMA,UAAS,MAAM,QAAQ,sBAAsB,mBAAmB,EAAE,CAAC;AACzE,kBAAU,QAAQ,QAAQ,iBAAiB,cAAc,EAAE,MAAMA,WAAA,gBAAAA,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MACpG;AAEA,YAAM,EAAE,WAAW,QAAI,oCAAc,SAAS,UAAS,oCAAO,QAAP,YAAc,EAAE;AAEvE,mBAAa;AACb,uBAAa,0BAAW,OAAO;AAE/B,cAAQ,IAAI,MAAM,kBAAkB,KAAK,UAAU,SAAS,CAAC,EAAE;AAAA,IACnE,CAAC;AACD,YAAQ,IAAI,QAAQ,EACf,KAAK,YAAY;AACd,gBAAM,gCAAe;AAAA,QACjB;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,MACJ,CAAC;AAAA,IACL,CAAC,EACA,MAAM,OAAK;AACR,sCAAY,iBAAiB,GAAG,OAAO;AAAA,IAC3C,CAAC;AAAA,EACT,SAAS,OAAY;AACjB,oCAAY,sBAAsB,OAAO,OAAO;AAAA,EACpD;AACJ;AAEA,SAAS,cAAc,EAAE,MAAM,QAAQ,GAA0E;AA3EjH;AA4EI,QAAM,YAAW,aAAQ,aAAR,YAAoB;AACrC,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AACA,MAAI,OAAO,SAAS,UAAU;AAC1B,WAAO;AAAA,EACX;AACA,MAAI,UAAU;AACV,YAAO,UAAK,QAAQ,MAAb,YAAkB;AAAA,EAC7B;AACA,SAAO;AACX;AAEA,SAAS,mBAAmB,IAAoB;AAC5C,QAAM,QAAQ,GAAG,MAAM,GAAG;AAC1B,QAAM,IAAI;AACV,SAAO,MAAM,KAAK,GAAG;AACzB;",
|
|
6
6
|
"names": ["result"]
|
|
7
7
|
}
|
package/build/app/telegram.js
CHANGED
|
@@ -32,7 +32,9 @@ var import_appUtils = require("../lib/appUtils");
|
|
|
32
32
|
function validateTextToSend(textToSend) {
|
|
33
33
|
if (!textToSend || (0, import_string.isEmptyString)(textToSend)) {
|
|
34
34
|
import_main.adapter.log.error("There is a problem! Text to send is empty or undefined, please check your configuration.");
|
|
35
|
+
return false;
|
|
35
36
|
}
|
|
37
|
+
return true;
|
|
36
38
|
}
|
|
37
39
|
async function sendToTelegram({
|
|
38
40
|
userToSend,
|
|
@@ -82,7 +84,9 @@ async function sendToTelegram({
|
|
|
82
84
|
}
|
|
83
85
|
function sendToTelegramSubmenu(user, textToSend, keyboard, telegramParams, parse_mode) {
|
|
84
86
|
const { telegramInstance: instance, userListWithChatID } = telegramParams;
|
|
85
|
-
validateTextToSend(textToSend)
|
|
87
|
+
if (!validateTextToSend(textToSend)) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
86
90
|
import_main.adapter.sendTo(
|
|
87
91
|
instance,
|
|
88
92
|
"send",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/telegram.ts"],
|
|
4
|
-
"sourcesContent": ["import { errorLogger } from './logging';\nimport { returnTextModifier } from '../lib/utilities';\nimport { adapter } from '../main';\nimport type { Keyboard, Location, Telegram, TelegramParams } from '../types/types';\nimport { getChatID } from '../lib/utils';\nimport { cleanUpString, isEmptyString, jsonString } from '../lib/string';\nimport { getParseMode } from '../lib/appUtils';\n\nfunction validateTextToSend(textToSend: string | undefined):
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA4B;AAC5B,uBAAmC;AACnC,kBAAwB;AAExB,mBAA0B;AAC1B,oBAAyD;AACzD,sBAA6B;AAE7B,SAAS,mBAAmB,
|
|
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): boolean {\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 return false;\n }\n return true;\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 if (!validateTextToSend(textToSend)) {\n return;\n }\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": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -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
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;
|
|
4
|
+
"sourcesContent": ["import { config } from '../config/config';\nimport type {\n Adapter,\n DataObject,\n GetTimeWithPad,\n MenusWithUsers,\n Navigation,\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';\nimport type { RowsNav } from '@/types/app';\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: RowsNav[]): 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
|
}
|
|
@@ -20,7 +20,8 @@ var exchangeValue_exports = {};
|
|
|
20
20
|
__export(exchangeValue_exports, {
|
|
21
21
|
exchangePlaceholderWithValue: () => exchangePlaceholderWithValue,
|
|
22
22
|
exchangeValue: () => exchangeValue,
|
|
23
|
-
getPlaceholderValue: () => getPlaceholderValue
|
|
23
|
+
getPlaceholderValue: () => getPlaceholderValue,
|
|
24
|
+
isNoValueParameter: () => isNoValueParameter
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(exchangeValue_exports);
|
|
26
27
|
var import_config = require("../config/config");
|
|
@@ -28,7 +29,7 @@ var import_string = require("./string");
|
|
|
28
29
|
function isNoValueParameter(textToSend) {
|
|
29
30
|
let insertValue = true;
|
|
30
31
|
if (textToSend.includes("{novalue}")) {
|
|
31
|
-
textToSend.replace("{novalue}", "");
|
|
32
|
+
textToSend = (0, import_string.removeMultiSpaces)(textToSend.replace("{novalue}", ""));
|
|
32
33
|
insertValue = false;
|
|
33
34
|
}
|
|
34
35
|
return { insertValue, textToSend };
|
|
@@ -46,7 +47,9 @@ const exchangeValue = (adapter, textToSend, val) => {
|
|
|
46
47
|
const newValue = (_a = json[String(val)]) != null ? _a : val;
|
|
47
48
|
return {
|
|
48
49
|
newValue,
|
|
49
|
-
textToSend:
|
|
50
|
+
textToSend: (0, import_string.removeMultiSpaces)(
|
|
51
|
+
exchangePlaceholderWithValue(textExcludeSubstring, result.insertValue ? newValue : "")
|
|
52
|
+
),
|
|
50
53
|
error: false
|
|
51
54
|
};
|
|
52
55
|
}
|
|
@@ -76,6 +79,7 @@ function getPlaceholderValue(textToSend) {
|
|
|
76
79
|
0 && (module.exports = {
|
|
77
80
|
exchangePlaceholderWithValue,
|
|
78
81
|
exchangeValue,
|
|
79
|
-
getPlaceholderValue
|
|
82
|
+
getPlaceholderValue,
|
|
83
|
+
isNoValueParameter
|
|
80
84
|
});
|
|
81
85
|
//# sourceMappingURL=exchangeValue.js.map
|
|
@@ -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, replaceAll } from './string';\n\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AACvB,
|
|
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('&&')) {\n return '&&';\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;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/lib/string.js
CHANGED
|
@@ -28,6 +28,7 @@ __export(string_exports, {
|
|
|
28
28
|
jsonString: () => jsonString,
|
|
29
29
|
pad: () => pad,
|
|
30
30
|
parseJSON: () => parseJSON,
|
|
31
|
+
removeMultiSpaces: () => removeMultiSpaces,
|
|
31
32
|
removeQuotes: () => removeQuotes,
|
|
32
33
|
replaceAll: () => replaceAll,
|
|
33
34
|
replaceAllItems: () => replaceAllItems,
|
|
@@ -62,11 +63,15 @@ const replaceAllItems = (text, searched) => {
|
|
|
62
63
|
return text;
|
|
63
64
|
};
|
|
64
65
|
const removeQuotes = (text) => text.replace(/['"]/g, "");
|
|
66
|
+
const removeMultiSpaces = (text) => text.replace(/ {2,}/g, " ");
|
|
65
67
|
const cleanUpString = (text) => {
|
|
66
68
|
if (!text) {
|
|
67
69
|
return "";
|
|
68
70
|
}
|
|
69
|
-
return
|
|
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)
|
|
74
|
+
);
|
|
70
75
|
};
|
|
71
76
|
function decomposeText(text, firstSearch, secondSearch) {
|
|
72
77
|
const startindex = text.indexOf(firstSearch);
|
|
@@ -121,6 +126,7 @@ const isEmptyString = (str) => str.trim() === "";
|
|
|
121
126
|
jsonString,
|
|
122
127
|
pad,
|
|
123
128
|
parseJSON,
|
|
129
|
+
removeMultiSpaces,
|
|
124
130
|
removeQuotes,
|
|
125
131
|
replaceAll,
|
|
126
132
|
replaceAllItems,
|
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 type { Adapter,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAyB;AACzB,qBAA4B;
|
|
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": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/types/types.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["import type { MockAdapter } from '@iobroker/testing';\nimport type TelegramMenu from '../main';\n\nexport type ListOfMenus = string[];\n\nexport type IsUserActiveCheckbox = Record<string, boolean>;\nexport type MenusWithUsers = Record<string, string[]>;\n\nexport type Action = Record<string, Actions>;\n\nexport type Navigation = string[][];\n\nexport
|
|
4
|
+
"sourcesContent": ["import type { MockAdapter } from '@iobroker/testing';\nimport type TelegramMenu from '../main';\nimport type { BooleanString, Echart, EventAction, GetAction, HttpRequest, Pic, RowsNav, SetAction } from '@/types/app';\n\nexport type ListOfMenus = string[];\n\nexport type IsUserActiveCheckbox = Record<string, boolean>;\nexport type MenusWithUsers = Record<string, string[]>;\n\nexport type Action = Record<string, Actions>;\n\nexport type Navigation = string[][];\n\nexport interface UserListWithChatId {\n chatID: string;\n name: string;\n}\n\nexport interface Checkboxes {\n oneTiKey: boolean;\n resKey: boolean;\n checkboxNoValueFound: boolean;\n sendMenuAfterRestart: boolean;\n}\n\nexport interface Actions {\n get: GetAction[];\n set: SetAction[];\n pic: Pic[];\n httpRequest: HttpRequest[];\n echarts: Echart[];\n events: EventAction[];\n}\n\nexport type StartSides = Record<string, string>;\n\nexport type NewObjectStructure = Record<string, Part>;\n\nexport type UsersInGroup = { [key: string]: string[] };\n\nexport type MenuData = Record<string, NewObjectStructure>;\n\nexport interface DataObject {\n action?: Record<string, Actions | undefined>;\n nav: Record<string, RowsNav[]>;\n}\n\nexport interface UserObjectActions {\n [key: string]: {\n nav?: string[][];\n parse_mode?: boolean;\n text?: string;\n switch?: Switch[];\n echarts?: { background: string; echartsInstance: string; filename: string; preset: string; theme: string }[];\n };\n}\n\nexport interface Part {\n text?: string;\n nav?: Navigation;\n parse_mode?: boolean;\n getData?: GetData[];\n switch?: Switch[];\n sendPic?: SendPic[];\n location?: Location[];\n echarts?: ModifiedEchart[];\n httpRequest?: ModifiedHttpRequest[];\n url?: string;\n user?: string;\n password?: string;\n filename?: string;\n}\n\nexport interface ModifiedEchart {\n background: string;\n echartsInstance: string;\n filename: string;\n preset: string;\n theme: string;\n}\n\nexport interface SendPic {\n delay: number;\n id: string;\n fileName: string;\n}\n\nexport interface ModifiedHttpRequest {\n url: string;\n user: string;\n password: string;\n filename: string;\n delay: string;\n}\n\nexport interface GetData {\n id: string;\n text: string;\n parse_mode: boolean;\n newline: BooleanString;\n}\n\nexport type ParseModeType = 'HTML' | 'Markdown';\n\nexport interface Location {\n latitude: string;\n longitude: string;\n}\n\nexport interface SetDynamicValueObj {\n [key: string]: SetDynamicValue;\n}\n\nexport interface SetDynamicValue {\n id: string;\n ack: boolean;\n returnText: string;\n userToSend: string;\n parse_mode: boolean;\n confirm: string;\n telegramParams: TelegramParams;\n valueType: string;\n}\n\nexport type Newline = BooleanString;\n\nexport interface BindingObject {\n values: Record<string, string>;\n}\n\nexport interface splittedNavigation {\n nav: string[][];\n call: string;\n text: string;\n parse_mode: boolean;\n}\n\nexport interface Switch {\n id: string;\n value: string;\n toggle: boolean;\n confirm: BooleanString;\n returnText: string;\n parse_mode: boolean;\n ack: boolean;\n}\n\nexport interface GenerateActionsArrayOfEntries {\n objName: string;\n name: string;\n loop: string;\n elements: GenerateActionsArrayOfElements[];\n}\n\nexport interface GenerateActionsArrayOfElements {\n name: string;\n value?: string;\n index?: number;\n type?: string;\n}\n\nexport interface GenerateActionsNewObject {\n preset?: string;\n echartsInstance?: string;\n background?: string;\n theme?: string;\n url?: string;\n user?: string;\n password?: string;\n id?: string;\n filename?: string;\n delay?: string;\n text?: string;\n newline?: string;\n parse_mode?: boolean;\n}\n\nexport type SplittedData = string[];\n\nexport interface SetStateIds {\n id: string;\n confirm: BooleanString | boolean;\n returnText: string;\n userToSend: string;\n parse_mode?: boolean;\n}\n\nexport type GroupWithUser = string;\n\nexport interface Message {\n time: number;\n}\n\nexport type WhatShouldDelete = 'all' | 'last';\n\nexport type Keyboard = { inline_keyboard: KeyboardItems[][] } | string[][] | undefined;\n\nexport interface KeyboardItems {\n text: string;\n callback_data: string;\n}\n\nexport type LastText = Record<string, string>;\n\nexport type ValArray = Record<string, string>;\n\nexport interface KeyboardItem {\n text: string;\n callback_data: string;\n}\n\nexport type BackMenu = Record<string, BackMenuList | undefined>;\n\ntype BackMenuList = { list: string[]; last: string };\n\nexport interface CheckEveryMenuForDataType {\n menuData: MenuData; // checked !!!!\n calledValue: string;\n menus: string[];\n isUserActiveCheckbox: IsUserActiveCheckbox;\n token: string;\n directoryPicture: string;\n timeoutKey: string;\n userToSend: string;\n telegramParams: TelegramParams;\n}\n\nexport interface ProcessDataType {\n menuData: MenuData;\n calledValue: string;\n groupWithUser: GroupWithUser;\n allMenusWithData: MenuData;\n menus: string[];\n isUserActiveCheckbox: IsUserActiveCheckbox;\n token: string;\n directoryPicture: string;\n timeoutKey: string;\n groupData: NewObjectStructure;\n userToSend: string;\n telegramParams: TelegramParams;\n}\n\nexport interface BackMenuType {\n allMenusWithData: MenuData;\n menus: string[];\n userToSend: string;\n telegramParams: TelegramParams;\n}\n\nexport type AllMenusWithData = Record<string, NewObjectStructure>;\n\nexport interface TelegramParams {\n telegramInstance: string;\n resize_keyboard: boolean;\n one_time_keyboard: boolean;\n userListWithChatID: UserListWithChatId[];\n}\n\nexport interface SetMenuValue {\n part: Part;\n userToSend: string;\n telegramParams: TelegramParams;\n menuNumber: 1 | 2;\n}\n\nexport interface CreateMenu {\n cbData: string;\n menuToHandle: string;\n text?: string;\n}\n\nexport interface ExchangeValueReturn {\n newValue: string | number | boolean;\n textToSend: string;\n error: boolean;\n}\n\nexport type PrimitiveType = string | number | boolean;\n\nexport type Adapter = MockAdapter | TelegramMenu;\n\nexport interface Timeouts {\n key: string;\n timeout: ioBroker.Timeout;\n}\n\nexport interface StringReplacerObj {\n val: string;\n newValue: string;\n}\n\nexport interface DecomposeTextReturnType {\n startindex: number;\n endindex: number;\n substring: string;\n textExcludeSubstring: string;\n substringExcludeSearch: string;\n}\n\nexport interface EvaluateReturnType {\n val: any;\n error: boolean;\n}\n\nexport interface Telegram {\n textToSend?: string;\n keyboard?: Keyboard;\n parse_mode?: boolean;\n userToSend: string;\n telegramParams: TelegramParams;\n}\n\nexport interface ExtractTimeValues {\n milliseconds: number;\n seconds: number;\n minutes: number;\n hours: number;\n day: number;\n month: number;\n year: number;\n}\n\nexport interface GetTimeWithPad {\n ms: string;\n s: string;\n m: string;\n h: string;\n d: string;\n mo: string;\n y: string;\n}\n\nexport type Messages = Record<string, MessageInfos[]>;\n\nexport interface MessageInfos {\n id: ioBroker.StateValue;\n time?: number;\n request?: ioBroker.StateValue | null | undefined;\n}\n\nexport interface CallSubMenu {\n jsonStringNav: string;\n userToSend: string;\n telegramParams: TelegramParams;\n part: Part;\n allMenusWithData: AllMenusWithData;\n menus: string[];\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "telegram-menu",
|
|
4
|
-
"version": "2.4.
|
|
4
|
+
"version": "2.4.2",
|
|
5
5
|
"news": {
|
|
6
|
+
"2.4.2": {
|
|
7
|
+
"en": "FIX: Error returnText is empty",
|
|
8
|
+
"de": "FIX: Fehlerrückgabe Text ist leer",
|
|
9
|
+
"ru": "FIX: Возвращение ошибки Текст пустой",
|
|
10
|
+
"pt": "FIX: Retorno de erro O texto está vazio",
|
|
11
|
+
"nl": "FIX: Fout bij terugsturen Tekst is leeg",
|
|
12
|
+
"fr": "FIX : retour d'erreur Le texte est vide",
|
|
13
|
+
"it": "FIX: Ritorno errore Il testo è vuoto",
|
|
14
|
+
"es": "FIX: Retorno de error El texto está vacío",
|
|
15
|
+
"pl": "FIX: Zwrot błędu Tekst jest pusty",
|
|
16
|
+
"uk": "FIX: повернення помилки Текст порожній",
|
|
17
|
+
"zh-cn": "FIX: 返回错误 文本为空"
|
|
18
|
+
},
|
|
19
|
+
"2.4.1": {
|
|
20
|
+
"en": "Fix some errors and update tests",
|
|
21
|
+
"de": "Fehler beheben und Tests aktualisieren",
|
|
22
|
+
"ru": "Исправить некоторые ошибки и обновить тесты",
|
|
23
|
+
"pt": "Corrigir alguns erros e testes de atualização",
|
|
24
|
+
"nl": "Fix enkele fouten en update tests",
|
|
25
|
+
"fr": "Correction de certaines erreurs et mise à jour des tests",
|
|
26
|
+
"it": "Risolvere alcuni errori e aggiornare i test",
|
|
27
|
+
"es": "Arregla algunos errores y pruebas de actualización",
|
|
28
|
+
"pl": "Napraw kilka błędów i uaktualnij testy",
|
|
29
|
+
"uk": "Виправлення помилок і оновлення тестів",
|
|
30
|
+
"zh-cn": "纠正一些错误并更新测试"
|
|
31
|
+
},
|
|
6
32
|
"2.4.0": {
|
|
7
33
|
"en": "FIX: Error returnText is empty\nFEAT: Extension for get by function \nFIX: Errors reported by sentry",
|
|
8
34
|
"de": "FIX: Fehlerrückgabe Text ist leer\nFEAT: Erweiterung um Funktion zu erhalten\nFIX: Fehler, die von sentry gemeldet werden",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "FIX: # 279 Backslash jest w wiadomości przy użyciu nowej linii",
|
|
68
94
|
"uk": "FIX: #279 Backslash знаходиться в повідомленні при використанні newline",
|
|
69
95
|
"zh-cn": "FIX: # 279 使用新线时反斜线在信件中"
|
|
70
|
-
},
|
|
71
|
-
"2.2.2": {
|
|
72
|
-
"en": "FIX: Style and update dependencies",
|
|
73
|
-
"de": "FIX: Stil- und Updateabhängigkeiten",
|
|
74
|
-
"ru": "FIX: Стиль и зависимости от обновлений",
|
|
75
|
-
"pt": "FIX: Estilo e dependências de atualização",
|
|
76
|
-
"nl": "FIX: Stijl en update afhankelijkheden",
|
|
77
|
-
"fr": "FIX: Dépendances de style et de mise à jour",
|
|
78
|
-
"it": "FIX: Stile e dipendenze di aggiornamento",
|
|
79
|
-
"es": "FIX: dependencias de estilo y actualización",
|
|
80
|
-
"pl": "FIX: Styl i uaktualnianie zależności",
|
|
81
|
-
"uk": "FIX: Стиль і оновлення залежності",
|
|
82
|
-
"zh-cn": "FIX:样式和更新依赖性"
|
|
83
|
-
},
|
|
84
|
-
"2.2.1": {
|
|
85
|
-
"en": "FIX: Infinite loop on open events\nFIX: #248 Error converting time",
|
|
86
|
-
"de": "FIX: Unendliche Schleife auf offenen Veranstaltungen\nFIX: #248 Zeit ändern",
|
|
87
|
-
"ru": "FIX: Бесконечный цикл на открытых мероприятиях\nFIX: #248 Ошибка преобразования времени",
|
|
88
|
-
"pt": "FIX: loop infinito em eventos abertos\nFIX: #248 Tempo de conversão de erro",
|
|
89
|
-
"nl": "FIX: Oneindige lus op open gebeurtenissen\nFIX: #248 Fout bij het omzetten tijd",
|
|
90
|
-
"fr": "FIX: Boucle infinie sur les événements ouverts\nFIX: #248 Temps de conversion des erreurs",
|
|
91
|
-
"it": "FIX: Ciclo infinito sugli eventi aperti\nFIX: #248 Tempo di conversione di errore",
|
|
92
|
-
"es": "FIX: bucle infinito en eventos abiertos\nFIX: #248 Tiempo de conversión del error",
|
|
93
|
-
"pl": "FIX: Nieskończona pętla na otwartych zdarzeniach\nFIX: # 248 Czas konwersji błędów",
|
|
94
|
-
"uk": "FIX: Нескінченна петля на відкритих заходах\nFIX: #248 Час перетворення помилки",
|
|
95
|
-
"zh-cn": "FIX:关于公开事件的无限循环\nFIX: # 248 转换时间出错"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|