iobroker.telegram-menu 2.2.2 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/utilities.ts"],
4
- "sourcesContent": ["import TelegramMenu from '../main';\nimport { isDefined, isJSON, replaceAll } from './global';\nimport { debug, error } from './logging';\nimport type { UserListWithChatId, ProzessTimeValue } from './telegram-menu';\n\nconst processTimeValue = (textToSend: string, obj: ioBroker.State): string => {\n const date = Number(obj.val);\n\n if (!isDefined(date)) {\n return textToSend;\n }\n const time = new Date(date);\n if (isNaN(time.getTime())) {\n error([{ text: 'Invalid Date:', val: date }]);\n return textToSend;\n }\n const timeString = time.toLocaleDateString('de-DE', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n return textToSend.replace('{time}', timeString);\n};\n\nconst getChatID = (userListWithChatID: UserListWithChatId[], user: string): string => {\n let chatId = '';\n userListWithChatID.forEach(element => {\n if (element.name === user) {\n chatId = element.chatID;\n }\n });\n return chatId;\n};\nconst exchangeValue = (\n textToSend: string,\n stateVal: string | number | boolean,\n): { valueChange: string; textToSend: string } | boolean => {\n const { startindex, endindex } = decomposeText(textToSend, 'change{', '}');\n\n let match = textToSend.substring(startindex + 'change'.length + 1, textToSend.indexOf('}', startindex));\n\n let objChangeValue;\n match = match.replace(/'/g, '\"');\n\n if (isJSON(`{${match}}`)) {\n objChangeValue = JSON.parse(`{${match}}`);\n } else {\n error([{ text: `There is a error in your input:`, val: replaceAll(match, '\"', \"'\") }]);\n return false;\n }\n\n let newValue;\n objChangeValue[String(stateVal)] ? (newValue = objChangeValue[String(stateVal)]) : (newValue = stateVal);\n return {\n valueChange: newValue,\n textToSend: textToSend.substring(0, startindex) + textToSend.substring(endindex + 1),\n };\n};\n\nfunction decomposeText(\n text: string,\n searchValue: string,\n secondValue: string,\n): { startindex: number; endindex: number; substring: string; textWithoutSubstring: string } {\n const startindex = text.indexOf(searchValue);\n const endindex = text.indexOf(secondValue, startindex);\n const substring = text.substring(startindex, endindex + secondValue.length);\n const textWithoutSubstring = text.replace(substring, '').trim();\n return {\n startindex: startindex,\n endindex: endindex,\n substring: substring,\n textWithoutSubstring: textWithoutSubstring,\n };\n}\n\nfunction changeValue(\n textToSend: string,\n val: string | number | boolean,\n): { textToSend: string; val: string | number } | undefined {\n if (textToSend.includes('change{')) {\n const result = exchangeValue(textToSend, val);\n if (!result) {\n return;\n }\n if (typeof result === 'boolean') {\n return;\n }\n return { textToSend: result.textToSend, val: result.valueChange };\n }\n}\n\nconst processTimeIdLc = async (textToSend: string, id: string | null): Promise<string | undefined> => {\n const _this = TelegramMenu.getInstance();\n\n let key = '';\n const { substring } = decomposeText(textToSend, '{time.', '}');\n const array = substring.split(',');\n let changedSubstring = substring;\n changedSubstring = changedSubstring.replace(array[0], '');\n\n if (array[0].includes('lc')) {\n key = 'lc';\n } else if (array[0].includes('ts')) {\n key = 'ts';\n }\n let idFromText = '';\n if (!id) {\n if (!changedSubstring.includes('id:')) {\n debug([{ text: 'Error processTimeIdLc: id not found in:', val: changedSubstring }]);\n return;\n }\n\n if (array[2]) {\n idFromText = array[2].replace('id:', '').replace('}', '').replace(/'/g, '');\n changedSubstring = changedSubstring.replace(array[2], '').replace(/,/g, '');\n }\n }\n if (!id && !idFromText) {\n return;\n }\n const value = await _this.getForeignStateAsync(id || idFromText);\n let timeValue;\n let timeStringUser;\n if (key && value) {\n timeStringUser = changedSubstring.replace(',(', '').replace(')', '').replace('}', '');\n timeValue = value[key as keyof ioBroker.StateValue];\n }\n if (!timeValue) {\n return;\n }\n const timeObj = new Date(timeValue);\n const milliseconds = timeObj.getMilliseconds();\n const seconds = timeObj.getSeconds();\n const minutes = timeObj.getMinutes();\n const hours = timeObj.getHours();\n const day = timeObj.getDate();\n const month = timeObj.getMonth() + 1;\n const year = timeObj.getFullYear();\n\n const time = {\n ms: milliseconds < 10 ? `00${milliseconds}` : milliseconds < 100 ? `0${milliseconds}` : milliseconds,\n s: seconds < 10 ? `0${seconds}` : seconds,\n m: minutes < 10 ? `0${minutes}` : minutes,\n h: hours < 10 ? `0${hours}` : hours,\n d: day < 10 ? `0${day}` : day,\n mo: month < 10 ? `0${month}` : month,\n y: year,\n };\n\n if (timeStringUser) {\n if (timeStringUser.includes('sss')) {\n timeStringUser = timeStringUser.replace('sss', time.ms.toString());\n }\n if (timeStringUser.includes('ss')) {\n timeStringUser = timeStringUser.replace('ss', time.s.toString());\n }\n if (timeStringUser.includes('mm')) {\n timeStringUser = timeStringUser.replace('mm', time.m.toString());\n }\n if (timeStringUser.includes('hh')) {\n timeStringUser = timeStringUser.replace('hh', time.h.toString());\n }\n if (timeStringUser.includes('DD')) {\n timeStringUser = timeStringUser.replace('DD', time.d.toString());\n }\n if (timeStringUser.includes('MM')) {\n timeStringUser = timeStringUser.replace('MM', time.mo.toString());\n }\n if (timeStringUser.includes('YYYY')) {\n timeStringUser = timeStringUser.replace('YYYY', time.y.toString());\n }\n if (timeStringUser.includes('YY')) {\n timeStringUser = timeStringUser.replace('YY', time.y.toString().slice(-2));\n }\n timeStringUser = timeStringUser.replace('(', '').replace(')', '');\n return textToSend.replace(substring, timeStringUser);\n }\n\n return textToSend;\n};\n\nconst checkStatus = async (\n text: string,\n processTimeValue?: ProzessTimeValue,\n): Promise<string | undefined | ioBroker.State | null> => {\n try {\n const _this = TelegramMenu.getInstance();\n debug([{ text: 'CheckStatusInfo:', val: text }]);\n\n const substring = decomposeText(text, '{status:', '}').substring;\n let id, valueChange;\n\n if (substring.includes(\"status:'id':\")) {\n id = substring.split(':')[2].replace(\"'}\", '').replace(/'/g, '').replace(/}/g, '');\n\n valueChange = substring.split(':')[3] ? substring.split(':')[3].replace('}', '') !== 'false' : true;\n } else {\n id = substring.split(':')[1].replace(\"'}\", '').replace(/'/g, '').replace(/}/g, '');\n valueChange = substring.split(':')[2] ? substring.split(':')[2].replace('}', '') !== 'false' : true;\n }\n\n const stateValue = await _this.getForeignStateAsync(id);\n\n if (!stateValue) {\n debug([{ text: 'Error getting Value from:', val: id }]);\n return;\n }\n\n if (text.includes('{time}') && processTimeValue) {\n text = text.replace(substring, '');\n if (stateValue.val && typeof stateValue.val === 'string') {\n return processTimeValue(text, stateValue).replace(stateValue.val, '');\n }\n }\n if (stateValue.val === undefined || stateValue.val === null) {\n debug([{ text: 'Id', val: id }, { text: 'Value is null or undefined!' }]);\n return text.replace(substring, '');\n }\n if (!valueChange) {\n return text.replace(substring, stateValue.val.toString());\n }\n const changedResult = changeValue(text, stateValue.val);\n let newValue;\n if (changedResult) {\n text = changedResult.textToSend;\n newValue = changedResult.val;\n } else {\n newValue = stateValue.val;\n }\n return text.replace(substring, newValue.toString());\n } catch (e: any) {\n error([\n { text: 'Error checkStatus:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n};\nconst checkStatusInfo = async (text: string): Promise<string | undefined> => {\n const _this = TelegramMenu.getInstance();\n\n try {\n if (!text) {\n return;\n }\n _this.log.debug(`Text: ${JSON.stringify(text)}`);\n if (text.includes('{status:')) {\n while (text.includes('{status:')) {\n const result = await checkStatus(text, processTimeValue);\n text = result ? JSON.stringify(result) : '';\n }\n }\n if (text.includes('{time.lc') || text.includes('{time.ts')) {\n text = (await processTimeIdLc(text, null)) || '';\n }\n if (text.includes('{set:')) {\n const result = decomposeText(text, '{set:', '}');\n const id = result.substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = result.substring.split(',')[1];\n\n text = result.textWithoutSubstring;\n const convertedValue = await checkTypeOfId(id, importedValue);\n\n const ack = result.substring.split(',')[2].replace('}', '') == 'true';\n\n if (text === '') {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await _this.setForeignStateAsync(id, convertedValue, ack);\n }\n }\n if (text) {\n return text;\n }\n } catch (e: any) {\n error([\n { text: 'Error checkStatusInfo:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n};\n\nasync function checkTypeOfId(\n id: string,\n value: ioBroker.State | ioBroker.StateValue | ioBroker.SettableState,\n): Promise<ioBroker.State | null | undefined | ioBroker.StateValue | ioBroker.SettableState> {\n const _this = TelegramMenu.getInstance();\n try {\n debug([{ text: `Check Type of Id: ${id}` }]);\n const obj = await _this.getForeignObjectAsync(id);\n const receivedType = typeof value;\n if (!obj || !value) {\n return value;\n }\n if (receivedType === obj.common.type || !obj.common.type) {\n return value;\n }\n\n debug([{ text: `Change Value type from \"${receivedType}\" to \"${obj.common.type}\"` }]);\n\n if (obj.common.type === 'boolean') {\n if (value == 'true') {\n value = true;\n }\n if (value == 'false') {\n value = false;\n }\n return value;\n }\n if (obj.common.type === 'string') {\n return JSON.stringify(value);\n }\n if (obj && obj.common && obj.common.type === 'number' && typeof value === 'string') {\n return parseFloat(value);\n }\n\n return value;\n } catch (e: any) {\n error([\n { text: 'Error checkTypeOfId:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n}\n\nconst newLine = (text: string): string => {\n if (text && text.includes('\\\\n')) {\n return text.replace(/\\\\n/g, '\\n');\n }\n return text;\n};\n\nexport {\n checkStatusInfo,\n checkTypeOfId,\n changeValue,\n newLine,\n processTimeIdLc,\n processTimeValue,\n decomposeText,\n replaceAll,\n getChatID,\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import TelegramMenu from '../main';\nimport { isDefined, isJSON, replaceAll } from './global';\nimport { debug, error } from './logging';\nimport type { UserListWithChatId, ProzessTimeValue } from './telegram-menu';\n\nconst processTimeValue = (textToSend: string, obj: ioBroker.State): string => {\n const date = Number(obj.val);\n\n if (!isDefined(date)) {\n return textToSend;\n }\n const time = new Date(date);\n if (isNaN(time.getTime())) {\n error([{ text: 'Invalid Date:', val: date }]);\n return textToSend;\n }\n const timeString = time.toLocaleDateString('de-DE', {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n return textToSend.replace('{time}', timeString);\n};\n\nconst getChatID = (userListWithChatID: UserListWithChatId[], user: string): string => {\n let chatId = '';\n userListWithChatID.forEach(element => {\n if (element.name === user) {\n chatId = element.chatID;\n }\n });\n return chatId;\n};\nconst exchangeValue = (\n textToSend: string,\n stateVal: string | number | boolean,\n): { valueChange: string; textToSend: string } | boolean => {\n const { startindex, endindex } = decomposeText(textToSend, 'change{', '}');\n\n let match = textToSend.substring(startindex + 'change'.length + 1, textToSend.indexOf('}', startindex));\n\n let objChangeValue;\n match = match.replace(/'/g, '\"');\n\n if (isJSON(`{${match}}`)) {\n objChangeValue = JSON.parse(`{${match}}`);\n } else {\n error([{ text: `There is a error in your input:`, val: replaceAll(match, '\"', \"'\") }]);\n return false;\n }\n\n let newValue;\n objChangeValue[String(stateVal)] ? (newValue = objChangeValue[String(stateVal)]) : (newValue = stateVal);\n return {\n valueChange: newValue,\n textToSend: textToSend.substring(0, startindex) + textToSend.substring(endindex + 1),\n };\n};\n\nfunction decomposeText(\n text: string,\n searchValue: string,\n secondValue: string,\n): { startindex: number; endindex: number; substring: string; textWithoutSubstring: string } {\n const startindex = text.indexOf(searchValue);\n const endindex = text.indexOf(secondValue, startindex);\n const substring = text.substring(startindex, endindex + secondValue.length);\n const textWithoutSubstring = text.replace(substring, '').trim();\n return {\n startindex: startindex,\n endindex: endindex,\n substring: substring,\n textWithoutSubstring: textWithoutSubstring,\n };\n}\n\nfunction changeValue(\n textToSend: string,\n val: string | number | boolean,\n): { textToSend: string; val: string | number } | undefined {\n if (textToSend.includes('change{')) {\n const result = exchangeValue(textToSend, val);\n if (!result) {\n return;\n }\n if (typeof result === 'boolean') {\n return;\n }\n return { textToSend: result.textToSend, val: result.valueChange };\n }\n}\n\nconst processTimeIdLc = async (textToSend: string, id: string | null): Promise<string | undefined> => {\n const _this = TelegramMenu.getInstance();\n\n let key = '';\n const { substring } = decomposeText(textToSend, '{time.', '}');\n const array = substring.split(',');\n let changedSubstring = substring;\n changedSubstring = changedSubstring.replace(array[0], '');\n\n if (array[0].includes('lc')) {\n key = 'lc';\n } else if (array[0].includes('ts')) {\n key = 'ts';\n }\n let idFromText = '';\n if (!id) {\n if (!changedSubstring.includes('id:')) {\n debug([{ text: 'Error processTimeIdLc: id not found in:', val: changedSubstring }]);\n return;\n }\n\n if (array[2]) {\n idFromText = array[2].replace('id:', '').replace('}', '').replace(/'/g, '');\n changedSubstring = changedSubstring.replace(array[2], '').replace(/,/g, '');\n }\n }\n if (!id && !idFromText) {\n return;\n }\n const value = await _this.getForeignStateAsync(id || idFromText);\n let timeValue;\n let timeStringUser;\n if (key && value) {\n timeStringUser = changedSubstring.replace(',(', '').replace(')', '').replace('}', '');\n timeValue = value[key as keyof ioBroker.StateValue];\n }\n if (!timeValue) {\n return;\n }\n const timeObj = new Date(timeValue);\n const milliseconds = timeObj.getMilliseconds();\n const seconds = timeObj.getSeconds();\n const minutes = timeObj.getMinutes();\n const hours = timeObj.getHours();\n const day = timeObj.getDate();\n const month = timeObj.getMonth() + 1;\n const year = timeObj.getFullYear();\n\n const time = {\n ms: milliseconds < 10 ? `00${milliseconds}` : milliseconds < 100 ? `0${milliseconds}` : milliseconds,\n s: seconds < 10 ? `0${seconds}` : seconds,\n m: minutes < 10 ? `0${minutes}` : minutes,\n h: hours < 10 ? `0${hours}` : hours,\n d: day < 10 ? `0${day}` : day,\n mo: month < 10 ? `0${month}` : month,\n y: year,\n };\n\n if (timeStringUser) {\n if (timeStringUser.includes('sss')) {\n timeStringUser = timeStringUser.replace('sss', time.ms.toString());\n }\n if (timeStringUser.includes('ss')) {\n timeStringUser = timeStringUser.replace('ss', time.s.toString());\n }\n if (timeStringUser.includes('mm')) {\n timeStringUser = timeStringUser.replace('mm', time.m.toString());\n }\n if (timeStringUser.includes('hh')) {\n timeStringUser = timeStringUser.replace('hh', time.h.toString());\n }\n if (timeStringUser.includes('DD')) {\n timeStringUser = timeStringUser.replace('DD', time.d.toString());\n }\n if (timeStringUser.includes('MM')) {\n timeStringUser = timeStringUser.replace('MM', time.mo.toString());\n }\n if (timeStringUser.includes('YYYY')) {\n timeStringUser = timeStringUser.replace('YYYY', time.y.toString());\n }\n if (timeStringUser.includes('YY')) {\n timeStringUser = timeStringUser.replace('YY', time.y.toString().slice(-2));\n }\n timeStringUser = timeStringUser.replace('(', '').replace(')', '');\n return textToSend.replace(substring, timeStringUser);\n }\n\n return textToSend;\n};\n\nconst checkStatus = async (\n text: string,\n processTimeValue?: ProzessTimeValue,\n): Promise<string | undefined | ioBroker.State | null> => {\n try {\n const _this = TelegramMenu.getInstance();\n debug([{ text: 'CheckStatusInfo:', val: text }]);\n\n const substring = decomposeText(text, '{status:', '}').substring;\n let id, valueChange;\n\n if (substring.includes(\"status:'id':\")) {\n id = substring.split(':')[2].replace(\"'}\", '').replace(/'/g, '').replace(/}/g, '');\n\n valueChange = substring.split(':')[3] ? substring.split(':')[3].replace('}', '') !== 'false' : true;\n } else {\n id = substring.split(':')[1].replace(\"'}\", '').replace(/'/g, '').replace(/}/g, '');\n valueChange = substring.split(':')[2] ? substring.split(':')[2].replace('}', '') !== 'false' : true;\n }\n\n const stateValue = await _this.getForeignStateAsync(id);\n\n if (!stateValue) {\n debug([{ text: 'Error getting Value from:', val: id }]);\n return;\n }\n\n if (text.includes('{time}') && processTimeValue) {\n text = text.replace(substring, '');\n if (stateValue.val && typeof stateValue.val === 'string') {\n return processTimeValue(text, stateValue).replace(stateValue.val, '');\n }\n }\n if (stateValue.val === undefined || stateValue.val === null) {\n debug([{ text: 'Id', val: id }, { text: 'Value is null or undefined!' }]);\n return text.replace(substring, '');\n }\n if (!valueChange) {\n return text.replace(substring, stateValue.val.toString());\n }\n const changedResult = changeValue(text, stateValue.val);\n let newValue;\n if (changedResult) {\n text = changedResult.textToSend;\n newValue = changedResult.val;\n } else {\n newValue = stateValue.val;\n }\n return text.replace(substring, newValue.toString());\n } catch (e: any) {\n error([\n { text: 'Error checkStatus:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n};\nconst checkStatusInfo = async (text: string): Promise<string | undefined> => {\n const _this = TelegramMenu.getInstance();\n\n try {\n if (!text) {\n return;\n }\n _this.log.debug(`Text: ${JSON.stringify(text)}`);\n if (text.includes('{status:')) {\n while (text.includes('{status:')) {\n const result = await checkStatus(text, processTimeValue);\n text = result ? JSON.stringify(result) : '';\n }\n }\n if (text.includes('{time.lc') || text.includes('{time.ts')) {\n text = (await processTimeIdLc(text, null)) || '';\n }\n if (text.includes('{set:')) {\n const result = decomposeText(text, '{set:', '}');\n const id = result.substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = result.substring.split(',')[1];\n\n text = result.textWithoutSubstring;\n const convertedValue = await checkTypeOfId(id, importedValue);\n\n const ack = result.substring.split(',')[2].replace('}', '') == 'true';\n\n if (text === '') {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await _this.setForeignStateAsync(id, convertedValue, ack);\n }\n }\n if (text) {\n return text;\n }\n } catch (e: any) {\n error([\n { text: 'Error checkStatusInfo:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n};\n\nasync function checkTypeOfId(\n id: string,\n value: ioBroker.State | ioBroker.StateValue | ioBroker.SettableState,\n): Promise<ioBroker.State | null | undefined | ioBroker.StateValue | ioBroker.SettableState> {\n const _this = TelegramMenu.getInstance();\n try {\n debug([{ text: `Check Type of Id: ${id}` }]);\n const obj = await _this.getForeignObjectAsync(id);\n const receivedType = typeof value;\n if (!obj || !value) {\n return value;\n }\n if (receivedType === obj.common.type || !obj.common.type) {\n return value;\n }\n\n debug([{ text: `Change Value type from \"${receivedType}\" to \"${obj.common.type}\"` }]);\n\n if (obj.common.type === 'boolean') {\n if (value == 'true') {\n value = true;\n }\n if (value == 'false') {\n value = false;\n }\n return value;\n }\n if (obj.common.type === 'string') {\n return JSON.stringify(value);\n }\n if (obj && obj.common && obj.common.type === 'number' && typeof value === 'string') {\n return parseFloat(value);\n }\n\n return value;\n } catch (e: any) {\n error([\n { text: 'Error checkTypeOfId:', val: e.message },\n { text: 'Stack:', val: e.stack },\n ]);\n }\n}\n\nconst newLine = (text: string): string => {\n if (isJSON(text)) {\n text = JSON.parse(text);\n }\n\n return text.replace(/\"\"/g, '\"').replace(/\\\\n/g, '\\n');\n};\n\nexport {\n checkStatusInfo,\n checkTypeOfId,\n changeValue,\n newLine,\n processTimeIdLc,\n processTimeValue,\n decomposeText,\n replaceAll,\n getChatID,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["TelegramMenu", "processTimeValue"]
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "telegram-menu",
4
- "version": "2.2.2",
4
+ "version": "2.2.3",
5
5
  "news": {
6
+ "2.2.3": {
7
+ "en": "FIX: #279 Backslash is in the message when using newline",
8
+ "de": "FIX: #279 Backslash ist in der Nachricht bei der Verwendung von newline",
9
+ "ru": "FIX: #279 Backslash находится в сообщении при использовании новой линии",
10
+ "pt": "FIX: #279 Backslash está na mensagem ao usar newline",
11
+ "nl": "FIX: #279 Backslash zit in het bericht bij het gebruik van nieuwe regel",
12
+ "fr": "FIX: #279 Backslash est dans le message lorsque vous utilisez newline",
13
+ "it": "FIX: #279 Backslash è nel messaggio quando si utilizza la nuova linea",
14
+ "es": "FIX: #279 Backslash está en el mensaje al usar newline",
15
+ "pl": "FIX: # 279 Backslash jest w wiadomości przy użyciu nowej linii",
16
+ "uk": "FIX: #279 Backslash знаходиться в повідомленні при використанні newline",
17
+ "zh-cn": "FIX: # 279 使用新线时反斜线在信件中"
18
+ },
6
19
  "2.2.2": {
7
20
  "en": "FIX: Style and update dependencies",
8
21
  "de": "FIX: Stil- und Updateabhängigkeiten",
@@ -80,19 +93,6 @@
80
93
  "pl": "FIX: # 220 Usuń przycisk nie działa\nFEAT: Styling",
81
94
  "uk": "FIX: #220 Видалити кнопка не працює\nFEAT: Стилування",
82
95
  "zh-cn": "FIX: # 220 删除按钮不起作用\n斯图林"
83
- },
84
- "2.1.6": {
85
- "en": "FEAT: Styling",
86
- "de": "FEAT: Styling",
87
- "ru": "FEAT: Styling",
88
- "pt": "FEAT: Styling",
89
- "nl": "FEAT: Styling",
90
- "fr": "VIANDE: Styling",
91
- "it": "CARAT: Styling",
92
- "es": "FEAT: Styling",
93
- "pl": "FEAT: Styling",
94
- "uk": "FEAT: Стилування",
95
- "zh-cn": "斯图林"
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.2.2",
3
+ "version": "2.2.3",
4
4
  "description": "Easily create Telegram Menus",
5
5
  "author": {
6
6
  "name": "MiRo1310",
@@ -22,39 +22,26 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@iobroker/adapter-core": "^3.2.3",
25
- "@sentry/integrations": "^7.114.0",
26
- "@types/module-alias": "^2.0.4",
27
- "axios": "^1.8.3",
28
- "module-alias": "^2.2.3"
25
+ "axios": "^1.8.4"
29
26
  },
30
27
  "devDependencies": {
31
28
  "@alcalzone/release-script": "^3.8.0",
32
29
  "@alcalzone/release-script-plugin-iobroker": "^3.7.2",
33
30
  "@alcalzone/release-script-plugin-license": "^3.7.0",
34
31
  "@alcalzone/release-script-plugin-manual-review": "^3.7.0",
35
- "@emotion/styled": "^11.14.0",
36
32
  "@iobroker/adapter-dev": "^1.3.0",
37
33
  "@iobroker/eslint-config": "^2.0.1",
38
- "@iobroker/testing": "^5.0.3",
39
- "@tsconfig/node20": "^20.1.4",
34
+ "@iobroker/testing": "^5.0.4",
35
+ "@tsconfig/node20": "^20.1.5",
40
36
  "@types/chai": "^4.3.14",
41
- "@types/chai-as-promised": "^7.1.8",
42
37
  "@types/mocha": "^10.0.10",
43
- "@types/node": "^22.13.7",
44
- "@types/proxyquire": "^1.3.31",
45
- "@types/sinon": "^17.0.3",
46
- "@types/sinon-chai": "^3.2.12",
38
+ "@types/node": "^22.13.17",
47
39
  "chai": "^4.5.0",
48
40
  "chai-as-promised": "^7.1.1",
49
- "inquirer": "^12.4.2",
50
- "json5": "^2.2.3",
51
41
  "mocha": "^11.0.1",
52
- "proxyquire": "^2.1.3",
53
- "sinon": "^19.0.2",
42
+ "sinon": "^19.0.4",
54
43
  "sinon-chai": "^3.7.0",
55
- "styled-components": "^6.1.13",
56
- "ts-node": "^10.9.2",
57
- "typescript": "~5.7.2",
44
+ "typescript": "~5.8.2",
58
45
  "rimraf": "^3.0.2"
59
46
  },
60
47
  "main": "build/main.js",