iobroker.loxone 4.0.0 → 4.0.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.
- package/LICENSE +1 -1
- package/README.md +5 -1
- package/io-package.json +14 -14
- package/package.json +1 -1
- package/src/controls/LightControllerV2.ts +2 -2
- package/src/main.ts +4 -73
package/LICENSE
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright
|
|
189
|
+
Copyright 2026 UncleSamSwiss
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
package/README.md
CHANGED
|
@@ -726,6 +726,10 @@ Native value from ioBroker > Objects
|
|
|
726
726
|
Placeholder for the next version (at the beginning of the line):
|
|
727
727
|
### **WORK IN PROGRESS**
|
|
728
728
|
-->
|
|
729
|
+
### 4.0.1 (2026-01-07)
|
|
730
|
+
|
|
731
|
+
- (UncleSamSwiss) Remove all special Sentry handling
|
|
732
|
+
|
|
729
733
|
### 4.0.0 (2025-12-11)
|
|
730
734
|
|
|
731
735
|
- (raintonr) Set correct min/max target on IRCv2 when in override (#528)
|
|
@@ -862,7 +866,7 @@ Native value from ioBroker > Objects
|
|
|
862
866
|
|
|
863
867
|
## License
|
|
864
868
|
|
|
865
|
-
Copyright
|
|
869
|
+
Copyright 2026 UncleSamSwiss
|
|
866
870
|
|
|
867
871
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
868
872
|
you may not use this file except in compliance with the License.
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "loxone",
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.1",
|
|
5
5
|
"news": {
|
|
6
|
+
"4.0.1": {
|
|
7
|
+
"en": "Remove all special Sentry handling",
|
|
8
|
+
"de": "Alle speziellen Sentry Handling entfernen",
|
|
9
|
+
"ru": "Удалить все специальные Sentry",
|
|
10
|
+
"pt": "Remova todo o manuseio especial do sentinela",
|
|
11
|
+
"nl": "Verwijder alle speciale Sentry handling",
|
|
12
|
+
"fr": "Supprimer toute manipulation spéciale Sentry",
|
|
13
|
+
"it": "Rimuovere tutti i trattamenti speciali Sentry",
|
|
14
|
+
"es": "Quitar todo el manejo especial de Sentry",
|
|
15
|
+
"pl": "Usuń wszystkie specjalne obsługi Wstęp",
|
|
16
|
+
"uk": "Видаліть всі спеціальні послуги",
|
|
17
|
+
"zh-cn": "删除所有特殊的哨兵处理"
|
|
18
|
+
},
|
|
6
19
|
"4.0.0": {
|
|
7
20
|
"en": "Set correct min/max target on IRCv2 when in override (#528)\nFix compatibility with js-controller 7.1 (fixes #730)\nRecreate project structure using latest create-adapter\nBasic AudioZoneV2 implementation (#430)",
|
|
8
21
|
"de": "Setzen Sie korrektes Min/Max-Ziel auf IRCv2 bei Überschreiben (#528)\nKompatibilität mit js-controller 7.1 (fixes #730)\nProjektstruktur mit neuestem create-Adapter speichern\nGrundlegende AudioZoneV2 Implementierung (#430)",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "Naprawiono literówkę powodującą „Nie można odczytać właściwości„ wyłączone ”wartości niezdefiniowanej” (IOBROKER-LOXONE-2R, # 72)\nUlepszone raportowanie Sentry dla pliku struktury",
|
|
81
94
|
"zh-cn": "修复了导致“无法读取未定义的属性'off'的拼写错误”的问题(IOBROKER-LOXONE-2R,#72)\n改进的Sentry报告结构文件",
|
|
82
95
|
"uk": "Виправлена друкарська помилка, яка спричиняла «Неможливо прочитати властивість 'off' значення undefined» (IOBROKER-LOXONE-2R, #72)\nПокращено звітність Sentry для файлу структури"
|
|
83
|
-
},
|
|
84
|
-
"2.2.0": {
|
|
85
|
-
"en": "Unknown/unsupported controls are now shown with their states as read-only strings\nFixes for auto-position based on percentage (#76)\nAdded support for IRoomControllerV2 (#22)\nAdded experimental support for EIBDimmer (#15)\nAdded support for ValueSelector (#36)\nAdded support for TextState (#73)\nAdded support for UpDownAnalog (#57)\nFixed some \"State has wrong type\" warnings (#99, #128)\nAdded support for Lumitech color picker (#44)\nWeather server data can now be filtered (#131)\nAdded support for PresenceDetector (IOBROKER-LOXONE-1R)\nAdded support for AAL Smart Alarm (IOBROKER-LOXONE-1X)\nAdded support for AAL Emergency Button (IOBROKER-LOXONE-1W)\nAdded support for Paketsafe (IOBROKER-LOXONE-1P)",
|
|
86
|
-
"de": "Unbekannte / nicht unterstützte Steuerelemente werden jetzt mit ihren Status als schreibgeschützte Zeichenfolgen angezeigt\nKorrekturen für die automatische Positionierung basierend auf dem Prozentsatz (# 76)\nUnterstützung für IRoomControllerV2 hinzugefügt (# 22)\nExperimentelle Unterstützung für EIBDimmer hinzugefügt (# 15)\nUnterstützung für ValueSelector hinzugefügt (# 36)\nUnterstützung für TextState hinzugefügt (# 73)\nUnterstützung für UpDownAnalog hinzugefügt (# 57)\nEinige \"Status hat falschen Typ\" -Warnungen behoben (# 99, # 128)\nUnterstützung für Lumitech-Farbwähler hinzugefügt (# 44)\nWetterserverdaten können jetzt gefiltert werden (# 131)\nUnterstützung für PresenceDetector (IOBROKER-LOXONE-1R) hinzugefügt\nUnterstützung für AAL Smart Alarm (IOBROKER-LOXONE-1X) hinzugefügt\nUnterstützung für AAL-Notfalltaste (IOBROKER-LOXONE-1W) hinzugefügt\nUnterstützung für Paketsafe (IOBROKER-LOXONE-1P) hinzugefügt",
|
|
87
|
-
"ru": "Неизвестные / неподдерживаемые элементы управления теперь отображаются с их состояниями в виде строк, доступных только для чтения.\nИсправления для автоматического позиционирования на основе процента (# 76)\nДобавлена поддержка IRoomControllerV2 (# 22).\nДобавлена экспериментальная поддержка EIBDimmer (# 15).\nДобавлена поддержка ValueSelector (# 36).\nДобавлена поддержка TextState (# 73).\nДобавлена поддержка UpDownAnalog (# 57).\nИсправлены некоторые предупреждения \"Состояние неправильного типа\" (# 99, # 128)\nДобавлена поддержка палитры цветов Lumitech (# 44).\nДанные погодного сервера теперь можно фильтровать (# 131)\nДобавлена поддержка PresenceDetector (IOBROKER-LOXONE-1R).\nДобавлена поддержка AAL Smart Alarm (IOBROKER-LOXONE-1X).\nДобавлена поддержка аварийной кнопки AAL (IOBROKER-LOXONE-1W).\nДобавлена поддержка Paketsafe (IOBROKER-LOXONE-1P).",
|
|
88
|
-
"pt": "Controles desconhecidos / não suportados agora são mostrados com seus estados como strings somente leitura\nCorreções para a posição automática com base na porcentagem (# 76)\nAdicionado suporte para IRoomControllerV2 (# 22)\nAdicionado suporte experimental para EIBDimmer (# 15)\nAdicionado suporte para ValueSelector (# 36)\nAdicionado suporte para TextState (# 73)\nAdicionado suporte para UpDownAnalog (# 57)\nCorrigidos alguns avisos de \"Estado com tipo errado\" (# 99, # 128)\nAdicionado suporte para o seletor de cores Lumitech (# 44)\nOs dados do servidor meteorológico agora podem ser filtrados (# 131)\nAdicionado suporte para PresenceDetector (IOBROKER-LOXONE-1R)\nAdicionado suporte para AAL Smart Alarm (IOBROKER-LOXONE-1X)\nAdicionado suporte para botão de emergência AAL (IOBROKER-LOXONE-1W)\nAdicionado suporte para Paketsafe (IOBROKER-LOXONE-1P)",
|
|
89
|
-
"nl": "Onbekende / niet-ondersteunde besturingselementen worden nu weergegeven met hun status als alleen-lezen strings\nOplossingen voor automatische positie op basis van percentage (# 76)\nOndersteuning toegevoegd voor IRoomControllerV2 (# 22)\nExperimentele ondersteuning toegevoegd voor EIBDimmer (# 15)\nOndersteuning toegevoegd voor ValueSelector (# 36)\nOndersteuning toegevoegd voor TextState (# 73)\nOndersteuning toegevoegd voor UpDownAnalog (# 57)\nEnkele \"Staat heeft een verkeerd type\" -waarschuwingen opgelost (# 99, # 128)\nOndersteuning toegevoegd voor Lumitech-kleurkiezer (# 44)\nDe weerservergegevens kunnen nu worden gefilterd (# 131)\nOndersteuning toegevoegd voor PresenceDetector (IOBROKER-LOXONE-1R)\nOndersteuning toegevoegd voor AAL Smart Alarm (IOBROKER-LOXONE-1X)\nOndersteuning toegevoegd voor AAL-noodknop (IOBROKER-LOXONE-1W)\nOndersteuning toegevoegd voor Paketsafe (IOBROKER-LOXONE-1P)",
|
|
90
|
-
"fr": "Les contrôles inconnus / non pris en charge sont désormais affichés avec leurs états sous forme de chaînes en lecture seule\nCorrections pour la position automatique en fonction du pourcentage (# 76)\nAjout du support pour IRoomControllerV2 (# 22)\nAjout du support expérimental pour EIBDimmer (# 15)\nAjout de la prise en charge de ValueSelector (# 36)\nAjout du support pour TextState (# 73)\nAjout du support pour UpDownAnalog (# 57)\nCorrection de quelques avertissements \"L'état a un type incorrect\" (# 99, # 128)\nAjout de la prise en charge du sélecteur de couleurs Lumitech (# 44)\nLes données du serveur météo peuvent maintenant être filtrées (# 131)\nAjout de la prise en charge de PresenceDetector (IOBROKER-LOXONE-1R)\nAjout de la prise en charge de l'alarme intelligente AAL (IOBROKER-LOXONE-1X)\nAjout de la prise en charge du bouton d'urgence AAL (IOBROKER-LOXONE-1W)\nAjout de la prise en charge de Paketsafe (IOBROKER-LOXONE-1P)",
|
|
91
|
-
"it": "I controlli sconosciuti / non supportati ora vengono visualizzati con i loro stati come stringhe di sola lettura\nCorrezioni per il posizionamento automatico in base alla percentuale (# 76)\nAggiunto supporto per IRoomControllerV2 (# 22)\nAggiunto supporto sperimentale per EIBDimmer (# 15)\nAggiunto supporto per ValueSelector (# 36)\nAggiunto supporto per TextState (# 73)\nAggiunto supporto per UpDownAnalog (# 57)\nRisolti alcuni avvisi \"Lo stato ha un tipo sbagliato\" (# 99, # 128)\nAggiunto supporto per selettore colore Lumitech (# 44)\nI dati del server meteo ora possono essere filtrati (# 131)\nAggiunto supporto per PresenceDetector (IOBROKER-LOXONE-1R)\nAggiunto supporto per AAL Smart Alarm (IOBROKER-LOXONE-1X)\nAggiunto supporto per pulsante di emergenza AAL (IOBROKER-LOXONE-1W)\nAggiunto supporto per Paketsafe (IOBROKER-LOXONE-1P)",
|
|
92
|
-
"es": "Los controles desconocidos / no admitidos ahora se muestran con sus estados como cadenas de solo lectura\nCorrecciones para la posición automática basada en porcentaje (# 76)\nSoporte agregado para IRoomControllerV2 (# 22)\nSe agregó soporte experimental para EIBDimmer (# 15)\nSoporte agregado para ValueSelector (# 36)\nSoporte agregado para TextState (# 73)\nSoporte agregado para UpDownAnalog (# 57)\nSe corrigieron algunas advertencias de \"El estado tiene un tipo incorrecto\" (# 99, # 128)\nSe agregó soporte para el selector de color Lumitech (# 44)\nLos datos del servidor meteorológico ahora se pueden filtrar (# 131)\nSoporte agregado para PresenceDetector (IOBROKER-LOXONE-1R)\nSoporte agregado para AAL Smart Alarm (IOBROKER-LOXONE-1X)\nSoporte agregado para el botón de emergencia AAL (IOBROKER-LOXONE-1W)\nSoporte agregado para Paketsafe (IOBROKER-LOXONE-1P)",
|
|
93
|
-
"pl": "Nieznane / nieobsługiwane kontrolki są teraz wyświetlane ze swoimi stanami jako ciągi tylko do odczytu\nPoprawki automatycznego pozycjonowania w oparciu o procent (# 76)\nDodano obsługę IRoomControllerV2 (# 22)\nDodano obsługę eksperymentalną dla EIBDimmer (nr 15)\nDodano obsługę ValueSelector (# 36)\nDodano obsługę TextState (# 73)\nDodano obsługę UpDownAnalog (nr 57)\nNaprawiono niektóre ostrzeżenia „Stan ma zły typ” (# 99, # 128)\nDodano obsługę próbnika kolorów Lumitech (# 44)\nDane serwera pogodowego można teraz filtrować (# 131)\nDodano obsługę PresenceDetector (IOBROKER-LOXONE-1R)\nDodano obsługę AAL Smart Alarm (IOBROKER-LOXONE-1X)\nDodano obsługę przycisku awaryjnego AAL (IOBROKER-LOXONE-1W)\nDodano obsługę Paketsafe (IOBROKER-LOXONE-1P)",
|
|
94
|
-
"zh-cn": "现在,未知/不受支持的控件以只读字符串的形式显示其状态\n修复基于百分比的自动定位(#76)\n添加了对IRoomControllerV2的支持(#22)\n增加了对EIBDimmer的实验支持(#15)\n增加了对ValueSelector的支持(#36)\n添加了对TextState的支持(#73)\n添加了对UpDownAnalog的支持(#57)\n修复了一些“状态类型错误”警告(#99,#128)\n增加了对Lumitech颜色选择器的支持(#44)\n天气服务器数据现在可以被过滤(#131)\n添加了对PresenceDetector(IOBROKER-LOXONE-1R)的支持\n添加了对AAL智能警报(IOBROKER-LOXONE-1X)的支持\n增加了对AAL紧急按钮(IOBROKER-LOXONE-1W)的支持\n添加了对Paketsafe(IOBROKER-LOXONE-1P)的支持",
|
|
95
|
-
"uk": "Невідомі/непідтримувані елементи керування тепер відображаються зі своїми станами як рядки лише для читання\nВиправлення автоматичної позиції на основі відсотка (#76)\nДодано підтримку IRoomControllerV2 (#22)\nДодано експериментальну підтримку EIBDimmer (#15)\nДодано підтримку для ValueSelector (#36)\nДодано підтримку TextState (#73)\nДодано підтримку UpDownAnalog (#57)\nВиправлено деякі попередження «Держава має неправильний тип» (#99, #128)\nДодано підтримку засобу вибору кольорів Lumitech (#44)\nДані сервера погоди тепер можна фільтрувати (#131)\nДодана підтримка PresenceDetector (IOBROKER-LOXONE-1R)\nДодана підтримка AAL Smart Alarm (IOBROKER-LOXONE-1X)\nДодано підтримку кнопки екстреної допомоги AAL (IOBROKER-LOXONE-1W)\nДодано підтримку Paketsafe (IOBROKER-LOXONE-1P)"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
package/package.json
CHANGED
|
@@ -117,13 +117,13 @@ export class LightControllerV2 extends ControlBase {
|
|
|
117
117
|
for (let i = 0; i < arrayValue.length; i++) {
|
|
118
118
|
const moodName = arrayValue[i];
|
|
119
119
|
if (!(moodName in this.moodNameToId)) {
|
|
120
|
-
this.adapter.
|
|
120
|
+
this.adapter.log.warn(`Can't find mood name '${moodName}', discarding new value`);
|
|
121
121
|
return;
|
|
122
122
|
}
|
|
123
123
|
ids.push(this.moodNameToId[moodName]);
|
|
124
124
|
}
|
|
125
125
|
if (ids.length === 0) {
|
|
126
|
-
this.adapter.
|
|
126
|
+
this.adapter.log.warn(`${uuid}.activeMoods can't have zero IDs, discarding new value`);
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
129
|
|
package/src/main.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-redundant-type-constituents */
|
|
2
2
|
import * as utils from '@iobroker/adapter-core';
|
|
3
|
-
import type * as SentryNode from '@sentry/node';
|
|
4
|
-
import type { EventProcessor } from '@sentry/types';
|
|
5
|
-
import axios from 'axios';
|
|
6
|
-
import FormData from 'form-data';
|
|
7
3
|
import * as LxCommunicator from 'lxcommunicator';
|
|
8
4
|
import Queue from 'queue-fifo';
|
|
9
5
|
import { v4 } from 'uuid';
|
|
10
6
|
import { Unknown } from './controls/Unknown';
|
|
7
|
+
import { AllControls } from './controls/all-controls';
|
|
11
8
|
import type { ControlBase, ControlType } from './controls/control-base';
|
|
12
9
|
import type {
|
|
13
10
|
Control,
|
|
@@ -18,7 +15,6 @@ import type {
|
|
|
18
15
|
WeatherServer,
|
|
19
16
|
} from './structure-file.ts';
|
|
20
17
|
import { WeatherServerHandler } from './weather-server-handler';
|
|
21
|
-
import { AllControls } from './controls/all-controls';
|
|
22
18
|
|
|
23
19
|
const WebSocketConfig = LxCommunicator.WebSocketConfig;
|
|
24
20
|
|
|
@@ -73,7 +69,6 @@ export type LoxoneEvent = {
|
|
|
73
69
|
/** The event data */
|
|
74
70
|
evt: any;
|
|
75
71
|
};
|
|
76
|
-
export type Sentry = typeof SentryNode;
|
|
77
72
|
|
|
78
73
|
export type FormatInfoDetailsCallback = ((src: InfoDetailsEntryMap) => ioBroker.StateValue) | null;
|
|
79
74
|
export type InfoDetailsEntry = {
|
|
@@ -242,11 +237,6 @@ export class Loxone extends utils.Adapter {
|
|
|
242
237
|
}
|
|
243
238
|
this.log.silly(`get_structure_file ${JSON.stringify(file)}`);
|
|
244
239
|
this.log.info(`got structure file; last modified on ${file.lastModified}`);
|
|
245
|
-
const sentry = this.getSentry();
|
|
246
|
-
if (sentry) {
|
|
247
|
-
// add a global event processor to upload the structure file (only once)
|
|
248
|
-
sentry.addEventProcessor(this.createSentryEventProcessor(file));
|
|
249
|
-
}
|
|
250
240
|
|
|
251
241
|
try {
|
|
252
242
|
await this.loadStructureFileAsync(file);
|
|
@@ -254,7 +244,7 @@ export class Loxone extends utils.Adapter {
|
|
|
254
244
|
} catch (error) {
|
|
255
245
|
// do not stringify error, it can contain circular references
|
|
256
246
|
this.log.error(`Couldn't load structure file`);
|
|
257
|
-
|
|
247
|
+
this.getSentry()?.captureException(error, { extra: { file } });
|
|
258
248
|
return false;
|
|
259
249
|
}
|
|
260
250
|
|
|
@@ -369,11 +359,6 @@ export class Loxone extends utils.Adapter {
|
|
|
369
359
|
this.log.error(msg);
|
|
370
360
|
if (!this.reportedUnsupportedStateChanges.has(id)) {
|
|
371
361
|
this.reportedUnsupportedStateChanges.add(id);
|
|
372
|
-
const sentry = this.getSentry();
|
|
373
|
-
sentry?.withScope(scope => {
|
|
374
|
-
scope.setExtra('state', state);
|
|
375
|
-
sentry.captureMessage(msg, 'warning');
|
|
376
|
-
});
|
|
377
362
|
}
|
|
378
363
|
} else if (!this.lxConnected) {
|
|
379
364
|
this.log.warn(`stateChange ${id} while disconnected, discarding`);
|
|
@@ -470,50 +455,6 @@ export class Loxone extends utils.Adapter {
|
|
|
470
455
|
}
|
|
471
456
|
}
|
|
472
457
|
|
|
473
|
-
private createSentryEventProcessor(data: StructureFile): EventProcessor {
|
|
474
|
-
const sentry = this.getSentry()!;
|
|
475
|
-
let attachmentEventId: string | undefined;
|
|
476
|
-
return async (event: SentryNode.Event) => {
|
|
477
|
-
try {
|
|
478
|
-
if (attachmentEventId) {
|
|
479
|
-
// structure file was already added
|
|
480
|
-
if (event.breadcrumbs) {
|
|
481
|
-
event.breadcrumbs.push({
|
|
482
|
-
type: 'debug',
|
|
483
|
-
category: 'started',
|
|
484
|
-
message: `Structure file added to event ${attachmentEventId}`,
|
|
485
|
-
level: 'info',
|
|
486
|
-
});
|
|
487
|
-
}
|
|
488
|
-
return event;
|
|
489
|
-
}
|
|
490
|
-
const dsn = sentry.getCurrentHub().getClient()?.getDsn();
|
|
491
|
-
if (!dsn || !event.event_id) {
|
|
492
|
-
return event;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
attachmentEventId = event.event_id;
|
|
496
|
-
|
|
497
|
-
const { host, path, projectId, port, protocol, publicKey } = dsn;
|
|
498
|
-
const endpoint = `${protocol}://${host}${port !== '' ? `:${port}` : ''}${
|
|
499
|
-
path !== '' ? `/${path}` : ''
|
|
500
|
-
}/api/${projectId}/events/${attachmentEventId}/attachments/?sentry_key=${publicKey}&sentry_version=7&sentry_client=custom-javascript`;
|
|
501
|
-
|
|
502
|
-
const form = new FormData();
|
|
503
|
-
form.append('att', JSON.stringify(data, null, 2), {
|
|
504
|
-
contentType: 'application/json',
|
|
505
|
-
filename: 'LoxAPP3.json',
|
|
506
|
-
});
|
|
507
|
-
await axios.post(endpoint, form, { headers: form.getHeaders() });
|
|
508
|
-
return event;
|
|
509
|
-
} catch (ex: any) {
|
|
510
|
-
this.log.error(`Couldn't upload structure file attachment to sentry: ${ex}`);
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
return event;
|
|
514
|
-
};
|
|
515
|
-
}
|
|
516
|
-
|
|
517
458
|
private async loadStructureFileAsync(data: StructureFile): Promise<void> {
|
|
518
459
|
this.stateEventHandlers = {};
|
|
519
460
|
this.foundRooms = {};
|
|
@@ -1150,24 +1091,14 @@ export class Loxone extends utils.Adapter {
|
|
|
1150
1091
|
*
|
|
1151
1092
|
* @returns The Sentry instance or undefined if not available.
|
|
1152
1093
|
*/
|
|
1153
|
-
public getSentry():
|
|
1154
|
-
if (this.supportsFeature
|
|
1094
|
+
public getSentry(): any {
|
|
1095
|
+
if (this.supportsFeature('PLUGINS')) {
|
|
1155
1096
|
const sentryInstance = this.getPluginInstance('sentry');
|
|
1156
1097
|
if (sentryInstance) {
|
|
1157
1098
|
return sentryInstance.getSentryObject();
|
|
1158
1099
|
}
|
|
1159
1100
|
}
|
|
1160
1101
|
}
|
|
1161
|
-
|
|
1162
|
-
/**
|
|
1163
|
-
* Report an error message to Sentry.
|
|
1164
|
-
*
|
|
1165
|
-
* @param message The error message to report.
|
|
1166
|
-
*/
|
|
1167
|
-
public reportError(message: string): void {
|
|
1168
|
-
this.log.error(message);
|
|
1169
|
-
this.getSentry()?.captureMessage(message, 'error');
|
|
1170
|
-
}
|
|
1171
1102
|
}
|
|
1172
1103
|
if (require.main !== module) {
|
|
1173
1104
|
// Export the constructor in compact mode
|