iobroker.javascript 9.2.4 → 9.3.1

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.
Files changed (37) hide show
  1. package/README.md +6 -15
  2. package/admin/assets/AiChatPanel-C3bIw_D5.js +317 -0
  3. package/admin/assets/{ScriptEditor-CmEeMfC2.js → ScriptEditor-8UU88tT5.js} +1 -1
  4. package/admin/assets/{ScriptEditorVanillaMonaco-C22Gpet7.js → ScriptEditorVanillaMonaco-Bn8xJ3LV.js} +2 -2
  5. package/admin/assets/index-C0ZnUCQf.js +990 -0
  6. package/admin/assets/{index-BTQOdA7v.js → index-CO9RA-Wq.js} +4 -4
  7. package/admin/assets/{index-7mrTpzQy.js → index-CRGWWpGb.js} +1 -1
  8. package/admin/assets/{index-Dggem6AX.js → index-CsyuIWlD.js} +1 -1
  9. package/admin/assets/localSharedImportMap-Db5DxDmY.js +1 -0
  10. package/admin/assets/{stateHoverProvider-DxTNxyYN.js → stateHoverProvider-C82xsI7Q.js} +1 -1
  11. package/admin/assets/{virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-CeYV4czE.js → virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Bw22wl4W.js} +2 -2
  12. package/admin/custom/assets/index-CMsuyEZj.js +964 -0
  13. package/admin/custom/assets/{index-B6NrrORQ.js → index-CuAhFQ4L.js} +147 -147
  14. package/admin/custom/assets/{index-DTbSiEk2.js → index-mkhHeJ3Q.js} +1 -1
  15. package/admin/custom/assets/localSharedImportMap-BsMINYMr.js +1 -0
  16. package/admin/custom/assets/{virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-ClQrb2n1.js → virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BzLNCazi.js} +2 -2
  17. package/admin/custom/customComponents.js +1 -1
  18. package/admin/i18n/de.json +8 -0
  19. package/admin/i18n/en.json +8 -0
  20. package/admin/jsonConfig.json +70 -9
  21. package/admin/mf-manifest.json +1 -1
  22. package/admin/remoteEntry.js +1 -1
  23. package/admin/tab.html +2 -2
  24. package/build/lib/aiProviderResolver.js +32 -5
  25. package/build/lib/aiProviderResolver.js.map +1 -1
  26. package/build/lib/sandbox.js +20 -12
  27. package/build/lib/sandbox.js.map +1 -1
  28. package/build/main.js +336 -41
  29. package/build/main.js.map +1 -1
  30. package/build/types.d.ts +10 -4
  31. package/io-package.json +34 -28
  32. package/package.json +9 -9
  33. package/admin/assets/AiChatPanel-B4vPXgLz.js +0 -315
  34. package/admin/assets/index-qoSy77Bg.js +0 -990
  35. package/admin/assets/localSharedImportMap-CVlAGiIu.js +0 -1
  36. package/admin/custom/assets/index-CT5PwRfY.js +0 -964
  37. package/admin/custom/assets/localSharedImportMap-ChjFDKsq.js +0 -1
package/build/types.d.ts CHANGED
@@ -40,6 +40,12 @@ export interface JavaScriptAdapterConfig {
40
40
  geminiKey: string;
41
41
  deepseekKey: string;
42
42
  password?: string;
43
+ credentialType?: 'manual' | 'manager';
44
+ credentialIdGptKey?: string;
45
+ credentialIdClaudeKey?: string;
46
+ credentialIdGeminiKey?: string;
47
+ credentialIdDeepseekKey?: string;
48
+ credentialIdGptBaseUrlKey?: string;
43
49
  }
44
50
 
45
51
  export type CommonAlias = {
@@ -144,8 +150,6 @@ export interface JsScript {
144
150
  setStatePerMinuteProblemCounter: number;
145
151
  }
146
152
 
147
- export type LogMessage = any;
148
-
149
153
  export type AstroRule = {
150
154
  astro: AstroEvent;
151
155
  shift: number;
@@ -177,7 +181,9 @@ export type SandboxType = {
177
181
  $: (selector: string) => any;
178
182
  log: (msg: string, severity?: ioBroker.LogLevel) => void;
179
183
  onLog: (severity: ioBroker.LogLevel, callback: (info: any) => void) => number;
180
- onLogUnregister: (idOrCallbackOrSeverity: number | ((msg: string) => void)) => void;
184
+ onLogUnregister: (
185
+ idOrCallbackOrSeverity: number | ioBroker.LogLevel | ((info: ioBroker.LogMessage) => void),
186
+ ) => void;
181
187
  exec: (
182
188
  cmd: string,
183
189
  options: ExecOptions | ((error: Error | null | string, stdout?: string, stderr?: string) => void),
@@ -738,7 +744,7 @@ export interface JavascriptContext {
738
744
  string,
739
745
  {
740
746
  sandbox: SandboxType;
741
- cb: (info: LogMessage) => void;
747
+ cb: (info: ioBroker.LogMessage) => void;
742
748
  id: number;
743
749
  severity: ioBroker.LogLevel | '*';
744
750
  }[]
package/io-package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "javascript",
4
- "version": "9.2.4",
4
+ "version": "9.3.1",
5
5
  "blockedVersions": [
6
6
  "8.0.0",
7
7
  "8.0.1"
@@ -40,6 +40,32 @@
40
40
  "Matthias Kleine <info@haus-automatisierung.com>"
41
41
  ],
42
42
  "news": {
43
+ "9.3.1": {
44
+ "en": "Added the possibility to execute one-way scripts without saving it",
45
+ "de": "Es wurde die Möglichkeit hinzugefügt, Einwegskripte auszuführen, ohne sie zu speichern.",
46
+ "ru": "Добавлена возможность выполнения односторонних скриптов без их сохранения.",
47
+ "pt": "Adicionada a possibilidade de executar scripts unidirecionais sem salvá-los.",
48
+ "nl": "De mogelijkheid toegevoegd om scripts die slechts in één richting hoeven te worden uitgevoerd, zonder ze op te slaan.",
49
+ "fr": "Ajout de la possibilité d'exécuter des scripts unidirectionnels sans les enregistrer.",
50
+ "it": "Aggiunta la possibilità di eseguire script unidirezionali senza salvarli",
51
+ "es": "Se agregó la posibilidad de ejecutar scripts unidireccionales sin guardarlos.",
52
+ "pl": "Dodano możliwość wykonywania skryptów jednokierunkowych bez zapisywania ich",
53
+ "uk": "Додана можливість виконання односторонніх скриптів без їх збереження.",
54
+ "zh-cn": "新增了执行单向脚本而不保存的功能。"
55
+ },
56
+ "9.3.0": {
57
+ "en": "Implemented the support for credentials manager in the configuration\nAdded the possiblilty to execute scripts from AI agent",
58
+ "de": "Die Unterstützung für den Anmeldeinformationsmanager wurde in der Konfiguration implementiert.\nEs wurde die Möglichkeit hinzugefügt, Skripte vom KI-Agenten auszuführen.",
59
+ "ru": "В конфигурацию добавлена поддержка менеджера учетных данных.\nДобавлена возможность выполнения скриптов из ИИ-агента.",
60
+ "pt": "Implementei o suporte para o gerenciador de credenciais na configuração.\nAdicionada a possibilidade de executar scripts a partir de um agente de IA.",
61
+ "nl": "De ondersteuning voor de referentiebeheerder is geïmplementeerd in de configuratie.\nDe mogelijkheid om scripts uit te voeren via een AI-agent is toegevoegd.",
62
+ "fr": "La prise en charge du gestionnaire d'identifiants a été implémentée dans la configuration.\nAjout de la possibilité d'exécuter des scripts depuis un agent d'IA",
63
+ "it": "Implementato il supporto per il gestore delle credenziali nella configurazione\nAggiunta la possibilità di eseguire script dall'agente IA",
64
+ "es": "Se implementó la compatibilidad con el administrador de credenciales en la configuración.\nSe agregó la posibilidad de ejecutar scripts desde el agente de IA.",
65
+ "pl": "Wprowadzono obsługę menedżera poświadczeń w konfiguracji\nDodano możliwość wykonywania skryptów z poziomu agenta AI",
66
+ "uk": "Реалізовано підтримку менеджера облікових даних у конфігурації\nДодано можливість виконання скриптів з агента штучного інтелекту",
67
+ "zh-cn": "在配置中实现了对凭据管理器的支持\n增加了从 AI 代理执行脚本的功能。"
68
+ },
43
69
  "9.2.4": {
44
70
  "en": "Performance optimizations part 2\nfix filter in tab scripts\nFixed a subscription leak on script stop for RegExp-notation string ids (dispatch index)\n`extendObject` no longer throws into the script when the object contains non-clonable values (e.g. functions)",
45
71
  "de": "Performance Optimierungen Teil 2\nfix-filter in tab-scripts\nBehebung eines Abonnementlecks bei Skriptstopp für RegExp-Notation String-IDs (Dispatch-Index)\n`extendObject` wirft nicht mehr in das Skript, wenn das Objekt nicht-klonbare Werte (z.B. Funktionen) enthält",
@@ -104,32 +130,6 @@
104
130
  "pl": "Panel AI Chat z obsługą wielu dostawców, wywołaniem narzędzi, zakończeniami inline i smart- aplikacji\nFix: zapobiec duplikatowi 'Stopling script' log, gdy skrypt nie jest uruchomiony\nFix: restart skryptów tylko na instancji, która jest ich właścicielem\nDodano tryb wyświetlania OID dla edytora Blockly: 4 tryby wyświetlania (nazwa, ścieżka nazw, identyfikator państwa, pełny ID) z rozwijanym paskiem narzędzi, menu kontekstowe, opcjonalne ikony obiektów i tłumaczenia w 11 językach\nKompatybilność węzła 25: zastąpiono przestarzały rmdirSync rmSync w zadaniach budowlanych\nDodano wsparcie dla zwykłego importu / eksportu\nKorekta błędu w konfiguracji\nwyłączenie zapisu do folderu node _ modules przez skrypty\nKorekta początku skryptu więcej niż jeden raz, jeśli zostanie uruchomiony restart\nWszystkie opóźnione pisma są zatrzymane przez skrypt stop\nDodano sprawdzenie, czy skrypt został zmodyfikowany przez innego użytkownika / okno\nUwydatnić numer instancji",
105
131
  "uk": "AI чат панелі з багатопрофільною підтримкою, викликом інструментів, вбудованими завершеннями та смарт-додатком\nВиправлення: запобігання дублікатів журналу \"Стопування\", коли скрипт не працює\nВиправлення: тільки перезавантажити скрипти на екземплярі, які володіють ними\nДодано OID відображення режиму для Blockly Editor: 4 режими відображення (Ім'я, шлях імен, державний ідентифікатор, повний ідентифікатор) з випаданням панелі інструментів, контекстне меню, додаткові іконки об'єкта та переклади на 11 мовах\nNode 25 сумісність: заміщена депресована rmdirSync з rmSync в задачах збирання\nДодано підтримку простого імпорту/експорту\nВиправлення помилки в конфігурації\ndisallow написання в папку node modules за скриптами\nВиправлення запуску скрипта більше одного разу, якщо запускається перезапуск\nВсі затримані письмові записи зупиняються на скрипті зупинки\nДодано перевірку, якщо скрипт був модифікований іншим користувачем/window\nЗробіть номер екземпляра більш видатним",
106
132
  "zh-cn": "AI Chat 面板,包含多提供者支持,工具调用,内置完成,以及智能应用\n修正: 当脚本未运行时, 防止复制“ 停止脚本” 日志\n修补: 只重新启动拥有脚本的实例\n为 Blockly 编辑器添加了 OID 显示模式切换: 4 个显示模式( Name, Name, Name path, State ID, Full ID) 工具栏下拉, 上下文菜单, 可选对象图标, 以及 11 种语言的翻译\n节点 25 兼容性: 在构建任务中用 rmSync 替换已贬值的 rmdirSync\n添加对纯导入/导出的支持\n正在更正配置错误\n不允许按脚本写入节点模块文件夹\n如果重新启动, 更正脚本的起始时间不止一次\n脚本停止了所有延迟的写作\n添加检查一个脚本是否已被另一个用户/窗口修改\n让实例数字更加突出"
107
- },
108
- "9.1.1": {
109
- "en": "Small GUI optimizations\nAdded support for custom OpenAI-compatible API endpoints (e.g. Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nAdded configurable base URL in adapter settings\nModels are now fetched dynamically from the configured API endpoint\nAdded the \"Test API connection\" button in adapter settings\nAdded error handling with user-friendly messages for unreachable providers\nAdded retry functionality for failed model loading\nAll API calls (models + chat) are proxied server-side to avoid CORS issues with local providers\nStrip LLM thinking artifacts from responses (for local models like Ollama)",
110
- "de": "Kleine GUI Optimierungen\nUnterstützung für benutzerdefinierte OpenAI-kompatible API-Endpunkte (z.B. Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nKonfigurierbare Basis-URL in Adaptereinstellungen hinzugefügt\nModelle werden nun dynamisch vom konfigurierten API-Endpunkt abgeholt\nHinzufügen der Schaltfläche \"Test API-Verbindung\" in Adaptereinstellungen\nHinzugefügt Fehlerbehandlung mit benutzerfreundlichen Nachrichten für unerreichbare Anbieter\nZusätzliche Retry-Funktionalität für gescheiterte Modellbeladung\nAlle API-Anrufe (Modelle + Chat) sind serverseitig proxied, um CORS Probleme mit lokalen Anbietern zu vermeiden\nStrip LLM denkende Artefakte aus Antworten (für lokale Modelle wie Ollama)",
111
- "ru": "Небольшая оптимизация GUI\nДобавлена поддержка пользовательских OpenAI-совместимых конечных точек API (например, Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nДобавлен настраиваемый базовый URL в настройках адаптера\nМодели теперь динамически извлекаются из конфигурированной конечной точки API\nДобавлена кнопка «Test API connection» в настройках адаптера\nДобавлена обработка ошибок с помощью удобных сообщений для недостижимых поставщиков\nДобавлена функция retry для неудавшейся загрузки модели\nВсе вызовы API (модели + чат) проходят на стороне сервера, чтобы избежать проблем с CORS с местными провайдерами\nСтриптиз LLM мыслящие артефакты из ответов (для местных моделей, таких как Ollama)",
112
- "pt": "Otimizações de GUI pequenas\nAdicionado suporte para endpoints personalizados compatíveis com OpenAI API (por exemplo, Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nAdicionado URL base configurável nas configurações do adaptador\nOs modelos agora são obtidos dinamicamente do endpoint da API configurado\nAdicionado o botão \"Teste conexão API\" nas configurações do adaptador\nTratamento de erros adicionado com mensagens amigáveis para provedores inalcançáveis\nAdicionada funcionalidade de repetição para carregamento do modelo falhou\nTodas as chamadas de API (modelos + chat) são proxied servidor-lado para evitar problemas CORS com fornecedores locais\nRetire artefatos de pensamento LLM de respostas (para modelos locais como Ollama)",
113
- "nl": "Kleine GUI optimalisaties\nExtra ondersteuning voor aangepaste OpenAI-compatibele API-eindpunten (bijv. Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nConfigureerbare basis-URL in adapterinstellingen toegevoegd\nModellen worden nu dynamisch opgehaald uit het geconfigureerde API-eindpunt\nToegevoegd de \"Test API connection\" knop in adapter instellingen\nToegevoegd foutafhandeling met gebruiksvriendelijke berichten voor onbereikbare providers\nName\nAlle API-gesprekken (modellen + chat) zijn aangeprezen server-kant om CORS problemen met lokale aanbieders te voorkomen\nStrip LLM denken artefacten uit reacties (voor lokale modellen zoals Ollama)",
114
- "fr": "Petites optimisations GUI\nAjout de la prise en charge des paramètres d'API compatibles OpenAI personnalisés (par exemple Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nAjout de l'URL de base configurable dans les paramètres de l'adaptateur\nLes modèles sont maintenant récupérés dynamiquement à partir du paramètre API configuré\nAjout du bouton \"Tester la connexion API\" dans les paramètres de l'adaptateur\nAjout du traitement des erreurs avec des messages conviviaux pour les fournisseurs inaccessibles\nAjout de la fonctionnalité de réessayer pour le chargement du modèle échoué\nTous les appels API (modèles + chat) sont proxiés côté serveur pour éviter les problèmes CORS avec les fournisseurs locaux\nStrip LLM artefacts de réflexion des réponses (pour les modèles locaux comme Ollama)",
115
- "it": "Piccole ottimizzazioni GUI\nAggiunto il supporto per i endpoint API personalizzati compatibili con OpenAI (ad esempio Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nAggiunto URL di base configurabile nelle impostazioni dell'adattatore\nI modelli sono ora recuperati dinamicamente dal endpoint API configurato\nAggiunto il pulsante \"Test API Connection\" nelle impostazioni dell'adattatore\nGestione degli errori aggiunti con messaggi intuitivi per fornitori irraggiungibili\nAggiunta funzionalità retry per il caricamento del modello fallito\nTutte le chiamate API (modelli + chat) sono proxied server-side per evitare problemi CORS con i fornitori locali\nStrip LLM pensa artefatti da risposte (per modelli locali come Ollama)",
116
- "es": "Optimizaciones pequeñas de GUI\nAñadido soporte para terminales API compatibles con OpenAI (por ejemplo Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nURL de base configurable en la configuración del adaptador\nLos modelos ahora se recogen dinámicamente desde el punto final de API configurado\nSe agregó el botón \"Test API connection\" en la configuración del adaptador\nManejo de error añadido con mensajes fáciles de usar para proveedores no accesibles\nFunción de retry adicional para la carga del modelo fallido\nTodas las llamadas de API (models + chat) son proxied servidor-side para evitar problemas de CORS con proveedores locales\nStrip LLM piensa artefactos de respuestas (para modelos locales como Ollama)",
117
- "pl": "Małe optymalizacje GUI\nDodano obsługę własnych punktów końcowych kompatybilnych z OpenAI (np. Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nDodano konfigurowalny podstawowy adres URL w ustawieniach adaptera\nModele są teraz odbierane dynamicznie z skonfigurowanego punktu końcowego API\nDodano przycisk \"Test API connection\" w ustawieniach adaptera\nDodano obsługę błędów z komunikatami przyjaznymi dla użytkownika dla nieosiągalnych dostawców\nDodano funkcję ponownego testowania dla nieudanego obciążenia modelu\nWszystkie połączenia API (modele + czat) są proxied server- side, aby uniknąć problemów CORS z lokalnymi dostawcami\nStrip LLM myśli artefakty z odpowiedzi (dla lokalnych modeli takich jak Ollama)",
118
- "uk": "Малі оптимізації інтерфейсу\nДодано підтримку користувацького OpenAI-сумісного API endpoints (наприклад, Ollama, LM Studio, Google Gemini, DeepSeek, OpenRouter)\nДодано налаштування URL-адреси бази в налаштуваннях адаптера\nМоделі тепер динамічно від налаштованої точки API\nДодано кнопку \"Test API підключення\" в налаштуваннях адаптера\nДодана обробка помилок з зручними повідомленнями для ненадійних постачальників\nДодано функцію трейдингу для завантаження моделі\nУсі виклики API (модельи + чат) проксіовані сервери, щоб уникнути проблем з локальними постачальниками\nСмуга LLM мислення артефакти відповідей (для місцевих моделей, таких як Ollama)",
119
- "zh-cn": "小图形界面优化\n添加自定义的 OpenAI 兼容 API 端点支持( 如 Ollama, LM Studio, Google 双子座, DeepSeek, OpenRouter)\n在适配器设置中添加可配置的基础 URL\n现在从配置的 API 端点动态获取模型\n在适配器设置中添加“ 测试 API 连接” 按钮\n为无法访问的提供者处理方便用户的信件时添加错误处理\n为失败的模型加载添加了重试功能\n所有 API 呼叫( 模式 + 聊天) 均为代理服务器侧面, 以避免 CORS 与本地供应商发生问题\n从回应中脱去LLM思考文物(为奥拉马等本地模型)"
120
- },
121
- "9.0.18": {
122
- "en": "Corrected error message with `lastSync`\nCorrected JavaScript filter",
123
- "de": "Korrigierte Fehlermeldung mit `last Synthetisch `\nJavaScript-Filter korrigiert",
124
- "ru": "Исправленное сообщение об ошибке с \"последним\" синхронизация пункт\nИсправленный фильтр JavaScript",
125
- "pt": "Mensagem de erro corrigida com ` last Sincronizar `\nFiltro JavaScript corrigido",
126
- "nl": "Gecorrigeerde foutmelding met de laatste Synchroniseren Wat\nGecorrigeerd JavaScript filter",
127
- "fr": "Message d'erreur corrigé avec `dernier Synchronisation \"\nFiltre JavaScript corrigé",
128
- "it": "Messaggio di errore corretto con `ultimo Traduzione: #\nFiltro JavaScript corretto",
129
- "es": "Mensaje de error corregido con `último Sync `\nFiltro de JavaScript corregido",
130
- "pl": "Poprawiony komunikat błędu z 'last Sync'\nPoprawiony filtr JavaScript",
131
- "uk": "Виправлено повідомлення про помилку з `last Синхронізація й\nВиправлений JavaScript-фільтр",
132
- "zh-cn": "更正错误消息为“ last 同步 `\n已更正的 JavaScript 过滤器"
133
133
  }
134
134
  },
135
135
  "platform": "Javascript/Node.js",
@@ -548,7 +548,13 @@
548
548
  "gptBaseUrlKey": "",
549
549
  "claudeKey": "",
550
550
  "geminiKey": "",
551
- "deepseekKey": ""
551
+ "deepseekKey": "",
552
+ "credentialType": "manual",
553
+ "credentialIdGptKey": "",
554
+ "credentialIdClaudeKey": "",
555
+ "credentialIdGeminiKey": "",
556
+ "credentialIdDeepseekKey": "",
557
+ "credentialIdGptBaseUrlKey": ""
552
558
  },
553
559
  "encryptedNative": [
554
560
  "gptKey",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.javascript",
3
- "version": "9.2.4",
3
+ "version": "9.3.1",
4
4
  "description": "Rules Engine for ioBroker",
5
5
  "author": "bluefox <dogafox@gmail.com>",
6
6
  "contributors": [
@@ -41,18 +41,18 @@
41
41
  "@types/node": "should match the lowest MAJOR version of Node.js we support."
42
42
  },
43
43
  "dependencies": {
44
- "@iobroker/adapter-core": "^3.3.2",
45
- "@iobroker/types": "^7.1.2",
46
- "@types/node": "^20.19.42",
47
- "axios": "^1.17.0",
44
+ "@iobroker/adapter-core": "^3.4.1",
45
+ "@iobroker/types": "^7.2.2",
46
+ "@types/node": "^18.19.130",
47
+ "axios": "^1.18.0",
48
48
  "jsonata": "^2.2.1",
49
49
  "jszip": "^3.10.1",
50
50
  "node-inspect": "^2.0.0",
51
51
  "node-schedule": "2.1.1",
52
- "nodemailer": "^8.0.10",
53
- "prettier": "^3.8.3",
52
+ "nodemailer": "^8.0.11",
53
+ "prettier": "^3.8.4",
54
54
  "promisify-child-process": "^5.0.1",
55
- "semver": "^7.8.2",
55
+ "semver": "^7.8.4",
56
56
  "suncalc2": "^1.8.1",
57
57
  "typescript": "5.9.3",
58
58
  "virtual-tsc": "^0.6.2",
@@ -69,7 +69,7 @@
69
69
  "@iobroker/testing": "^5.2.2",
70
70
  "@iobroker/vis-2-widgets-react-dev": "^4.0.4",
71
71
  "@types/node-schedule": "^2.1.8",
72
- "@types/nodemailer": "^7.0.11",
72
+ "@types/nodemailer": "^7.0.12",
73
73
  "@types/request": "^2.48.13",
74
74
  "@types/suncalc": "^1.9.2",
75
75
  "alcalzone-shared": "^5.0.0",