@mirta/globals 0.3.2 → 0.3.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.
- package/eslint/index.d.ts +1 -0
- package/eslint/index.js +1 -0
- package/package.json +1 -1
- package/types/wb-rules/alarms.d.ts +276 -0
- package/types/wb-rules.d.ts +88 -34
package/eslint/index.d.ts
CHANGED
package/eslint/index.js
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
declare namespace WbRules {
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Определения типов для сервиса оповещений.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.3.3
|
|
7
|
+
*
|
|
8
|
+
**/
|
|
9
|
+
namespace Alarms {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Позволяет задать способ оповещения через SMS.
|
|
13
|
+
*
|
|
14
|
+
* @since 0.3.3
|
|
15
|
+
*
|
|
16
|
+
**/
|
|
17
|
+
interface SmsRecipient {
|
|
18
|
+
|
|
19
|
+
/** Конфигурация отправки SMS. */
|
|
20
|
+
type: 'sms'
|
|
21
|
+
|
|
22
|
+
/** Номер телефона получателя SMS. */
|
|
23
|
+
to: string
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Команда для отправки SMS. Поле можно оставить пустым, чтобы использовать gammu.
|
|
27
|
+
*
|
|
28
|
+
* В команде нужно указать как минимум один плейсхолдер `{}` - для номера. Тогда
|
|
29
|
+
* текст будет отправлен в stdin.
|
|
30
|
+
*
|
|
31
|
+
* Если указать 2 плейсхолдера - то в первый запишется номер, во второй - текст.
|
|
32
|
+
*
|
|
33
|
+
* @examples
|
|
34
|
+
* ```sh
|
|
35
|
+
* /path/to/sender.py --number {}
|
|
36
|
+
* ```
|
|
37
|
+
* ```sh
|
|
38
|
+
* /path/to/sender.py --number {} --text "{}"
|
|
39
|
+
* ```
|
|
40
|
+
**/
|
|
41
|
+
command?: string
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Позволяет задать способ оповещения через E-mail.
|
|
46
|
+
*
|
|
47
|
+
* @since 0.3.3
|
|
48
|
+
*
|
|
49
|
+
**/
|
|
50
|
+
interface EmailRecipient {
|
|
51
|
+
|
|
52
|
+
/** Конфигурация отправки на адрес электронной почты. */
|
|
53
|
+
type: 'email'
|
|
54
|
+
|
|
55
|
+
/** Адрес электронной почты получателя. */
|
|
56
|
+
to: string
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Тема письма (необязательное поле).
|
|
60
|
+
*
|
|
61
|
+
* Если в теме письма использовать плейсхолдер `{}`, он заменится на текст сообщения.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```txt
|
|
65
|
+
* Alarm: {}
|
|
66
|
+
* ```
|
|
67
|
+
**/
|
|
68
|
+
subject?: string
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Позволяет задать способ оповещения через Telegram.
|
|
73
|
+
*
|
|
74
|
+
* @since 0.3.3
|
|
75
|
+
*
|
|
76
|
+
**/
|
|
77
|
+
interface TelegramRecipient {
|
|
78
|
+
|
|
79
|
+
/** Конфигурация отправки в Telegram. */
|
|
80
|
+
type: 'telegram'
|
|
81
|
+
|
|
82
|
+
/** Токен вашего бота Telegram. */
|
|
83
|
+
token: string
|
|
84
|
+
|
|
85
|
+
/** Уникальный идентификатор целевого чата или username целевого канала (в формате `@channelusername`). */
|
|
86
|
+
chatId: string
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Позволяет настроить один из вариантов
|
|
91
|
+
* оповещения - через SMS, E-Mail или Telegram.
|
|
92
|
+
*
|
|
93
|
+
* Конкретный состав полей меняется в зависимости от значения поля `type`.
|
|
94
|
+
*
|
|
95
|
+
* @since 0.3.3
|
|
96
|
+
*
|
|
97
|
+
**/
|
|
98
|
+
type Recipient = SmsRecipient | EmailRecipient | TelegramRecipient
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Базовый компонент аларма - содержит общие свойства.
|
|
102
|
+
*
|
|
103
|
+
* Используется в составе типа {@link Alarm}.
|
|
104
|
+
*
|
|
105
|
+
* @since 0.3.3
|
|
106
|
+
*
|
|
107
|
+
**/
|
|
108
|
+
interface AlarmBase {
|
|
109
|
+
|
|
110
|
+
/** Название аларма. */
|
|
111
|
+
name: string
|
|
112
|
+
|
|
113
|
+
/** Наблюдаемые устройство и контрол в формате `deviceId/controlId`. */
|
|
114
|
+
cell: string
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Сообщение, отправляемое при срабатывании аларма.
|
|
118
|
+
*
|
|
119
|
+
* Для подстановки текущего значения контрола используется плейсхолдер `{}`.
|
|
120
|
+
*
|
|
121
|
+
* Если сообщение не указано, оно генерируется автоматически на основе
|
|
122
|
+
* текущего значения контрола.
|
|
123
|
+
*
|
|
124
|
+
**/
|
|
125
|
+
alarmMessage?: string
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Сообщение, отправляемое при деактивации аларма.
|
|
129
|
+
*
|
|
130
|
+
* Для подстановки текущего значения контрола используется плейсхолдер `{}`.
|
|
131
|
+
*
|
|
132
|
+
* Если сообщение не указано, оно генерируется автоматически на основе
|
|
133
|
+
* текущего значения контрола.
|
|
134
|
+
*
|
|
135
|
+
**/
|
|
136
|
+
noAlarmMessage?: string
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Интервал (в секундах) повторной отправки сообщения во время активности аларма.
|
|
140
|
+
*
|
|
141
|
+
* Если временной интервал не установлен, сообщения направляются
|
|
142
|
+
* только при срабатывании, а также при деактивации аларма.
|
|
143
|
+
*
|
|
144
|
+
**/
|
|
145
|
+
interval?: number
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Задержка срабатывания аларма (в миллисекундах).
|
|
149
|
+
*
|
|
150
|
+
* Если значение указано, то аларм сработает только когда условие срабатывания
|
|
151
|
+
* будет непрерывно выполняться в течение заданного интервала.
|
|
152
|
+
*
|
|
153
|
+
**/
|
|
154
|
+
alarmDelayMs?: number
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Задержка деактивации аларма (в миллисекундах).
|
|
158
|
+
*
|
|
159
|
+
* Если значение указано, то аларм будет деактивирован только когда условие срабатывания
|
|
160
|
+
* прекратит непрерывно выполняться в течение заданного интервала.
|
|
161
|
+
*
|
|
162
|
+
**/
|
|
163
|
+
noAlarmDelayMs?: number
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Максимальное количество отправленных сообщений.
|
|
167
|
+
*
|
|
168
|
+
* Если указано, то за каждый период срабатывания аларма
|
|
169
|
+
* отправляется не больше заданного количества сообщений.
|
|
170
|
+
*
|
|
171
|
+
**/
|
|
172
|
+
maxCount?: number
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Компонент аларма, реализующий возможность контроля за соответствием указанному значению.
|
|
177
|
+
*
|
|
178
|
+
* Используется в составе типа {@link Alarm}.
|
|
179
|
+
*
|
|
180
|
+
* @since 0.3.3
|
|
181
|
+
*
|
|
182
|
+
**/
|
|
183
|
+
interface ValueAlarm {
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Ожидаемое значение.
|
|
187
|
+
*
|
|
188
|
+
* Аларм сработает, если значение контрола отличается от `expectedValue`.
|
|
189
|
+
*
|
|
190
|
+
* Когда значение контрола снова становится равным `expectedValue`,
|
|
191
|
+
* аларм деактивируется.
|
|
192
|
+
*
|
|
193
|
+
**/
|
|
194
|
+
expectedValue: MqttValue
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Компонент аларма, реализующий возможность контроля за соответствием
|
|
199
|
+
* значения контрола допустимому диапазону.
|
|
200
|
+
*
|
|
201
|
+
* Используется в составе типа {@link Alarm}.
|
|
202
|
+
*
|
|
203
|
+
* @since 0.3.3
|
|
204
|
+
*
|
|
205
|
+
**/
|
|
206
|
+
interface RangeAlarm {
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Сервисное поле.
|
|
210
|
+
*
|
|
211
|
+
* Предотвращает смешивание с {@link ValueAlarm} внутри обобщённого типа {@link Alarm}.
|
|
212
|
+
*
|
|
213
|
+
**/
|
|
214
|
+
expectedValue: never
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Минимально допустимое значение.
|
|
218
|
+
*
|
|
219
|
+
* Если отслеживаемое значение контрола опускается ниже minValue, происходит срабатывание аларма.
|
|
220
|
+
*
|
|
221
|
+
**/
|
|
222
|
+
minValue: number
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Максимально допустимое значение.
|
|
226
|
+
*
|
|
227
|
+
* Если отслеживаемое значение контрола поднимается выше maxValue, происходит срабатывание аларма.
|
|
228
|
+
*
|
|
229
|
+
**/
|
|
230
|
+
maxValue: number
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Позволяет задать устройство и контрол для отслеживания, а также настроить параметры реагирования.
|
|
235
|
+
*
|
|
236
|
+
* @since 0.3.3
|
|
237
|
+
*
|
|
238
|
+
**/
|
|
239
|
+
type Alarm = AlarmBase & (ValueAlarm | AtLeastOne<RangeAlarm>)
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Конфигурация блока алармов.
|
|
243
|
+
*
|
|
244
|
+
* @since 0.3.3
|
|
245
|
+
*
|
|
246
|
+
**/
|
|
247
|
+
interface Config {
|
|
248
|
+
|
|
249
|
+
/** Название MQTT-устройства блока алармов. */
|
|
250
|
+
deviceName: string
|
|
251
|
+
|
|
252
|
+
/** Отображаемое название устройства блока алармов. */
|
|
253
|
+
deviceTitle: string
|
|
254
|
+
|
|
255
|
+
/** Список получателей. */
|
|
256
|
+
recipients: Recipient[]
|
|
257
|
+
|
|
258
|
+
/** Список алармов. */
|
|
259
|
+
alarms: Alarm[]
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Интерфейс для типизации сервиса оповещений.
|
|
265
|
+
*
|
|
266
|
+
**/
|
|
267
|
+
interface Alarms {
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Загружает конфигурацию для блока алармов.
|
|
271
|
+
*
|
|
272
|
+
* @param config Объект конфигурации или путь к файлу конфигурации в формате JSON.
|
|
273
|
+
*/
|
|
274
|
+
load(config: string | Alarms.Config): void
|
|
275
|
+
}
|
|
276
|
+
}
|
package/types/wb-rules.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference path="./wb-rules/alarms.d.ts" />
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Используется для нормализации составных типов.
|
|
3
5
|
*
|
|
@@ -20,6 +22,29 @@
|
|
|
20
22
|
**/
|
|
21
23
|
declare type Expand<T> = { [K in keyof T]: T[K] } & {}
|
|
22
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Разрешает частичное заполнение полей объекта, но требует наличия хотя бы одного поля.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* interface SafeRange {
|
|
31
|
+
* minValue: number
|
|
32
|
+
* maxValue: number
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* // Корректное объявление
|
|
36
|
+
* const a: AtLeastOne<SafeRange> = {
|
|
37
|
+
* minValue: 0
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* // Ошибка - требуется хотя бы одно из обязательных полей
|
|
41
|
+
* const b: AtLeastOne<SafeRange> = { }
|
|
42
|
+
* ```
|
|
43
|
+
* @since 0.3.3
|
|
44
|
+
*
|
|
45
|
+
**/
|
|
46
|
+
declare type AtLeastOne<T, U = { [K in keyof T]: Pick<T, K> }> = Partial<T> & U[keyof U]
|
|
47
|
+
|
|
23
48
|
/** Типы и интерфейсы правил wb-rules */
|
|
24
49
|
declare namespace WbRules {
|
|
25
50
|
|
|
@@ -600,6 +625,41 @@ declare namespace WbRules {
|
|
|
600
625
|
interface StorageOptions {
|
|
601
626
|
global: boolean
|
|
602
627
|
}
|
|
628
|
+
|
|
629
|
+
interface Notify {
|
|
630
|
+
/**
|
|
631
|
+
* Отправляет электронное письмо указанному адресату.
|
|
632
|
+
*
|
|
633
|
+
* @param to Адресат.
|
|
634
|
+
* @param subject Тема письма.
|
|
635
|
+
* @param text Текст письма.
|
|
636
|
+
*
|
|
637
|
+
**/
|
|
638
|
+
sendEmail(to: string, subject: string, text: string): void
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* Отправляет SMS на указанный номер
|
|
642
|
+
* Для отправки SMS используется ModemManager, а если он не установлен, то gammu.
|
|
643
|
+
*
|
|
644
|
+
* @param to Номер адресата.
|
|
645
|
+
* @param text Текст сообщения.
|
|
646
|
+
* @param command Используя команду.
|
|
647
|
+
*
|
|
648
|
+
**/
|
|
649
|
+
sendSMS(to: string, text: string, command?: string): void
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* Отправляет сообщение в указанный чат или канал Telegram.
|
|
653
|
+
*
|
|
654
|
+
* @param token Токен вашего бота Telegram.
|
|
655
|
+
* @param chatId Уникальный идентификатор целевого чата или username целевого канала (в формате `@channelusername`).
|
|
656
|
+
* @param text Текст сообщения.
|
|
657
|
+
*
|
|
658
|
+
* @since 0.3.2
|
|
659
|
+
*
|
|
660
|
+
**/
|
|
661
|
+
sendTelegramMessage(token: string, chatId: string, text: string): void
|
|
662
|
+
}
|
|
603
663
|
}
|
|
604
664
|
|
|
605
665
|
declare namespace NodeJS {
|
|
@@ -862,40 +922,34 @@ declare class PersistentStorage {
|
|
|
862
922
|
}
|
|
863
923
|
|
|
864
924
|
/**
|
|
865
|
-
*
|
|
925
|
+
* Сервис уведомлений Notify — инструмент для отправки произвольных
|
|
926
|
+
* сообщений по разным каналам коммуникации (почта, SMS, Telegram).
|
|
866
927
|
*
|
|
867
928
|
**/
|
|
868
|
-
declare
|
|
869
|
-
/**
|
|
870
|
-
* Отправляет электронное письмо указанному адресату.
|
|
871
|
-
*
|
|
872
|
-
* @param to Адресат.
|
|
873
|
-
* @param subject Тема письма.
|
|
874
|
-
* @param text Текст письма.
|
|
875
|
-
*
|
|
876
|
-
**/
|
|
877
|
-
static sendEmail(to: string, subject: string, text: string): void
|
|
929
|
+
declare var Notify: WbRules.Notify
|
|
878
930
|
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
931
|
+
/**
|
|
932
|
+
* Сервис оповещений Alarms — инструмент для автоматической отправки
|
|
933
|
+
* шаблонных сообщений по разным каналам коммуникации (почта, SMS, Telegram)
|
|
934
|
+
* при обнаружении отклонения от нормы в значениях отслеживаемых контролов.
|
|
935
|
+
*
|
|
936
|
+
* @example
|
|
937
|
+
* Загрузка конфигурации из JSON-файла:
|
|
938
|
+
* ```ts
|
|
939
|
+
* Alarms.load('/etc/wb-rules/alarms.conf')
|
|
940
|
+
* ```
|
|
941
|
+
* @example
|
|
942
|
+
* Непосредственная настройка блока алармов через объект конфигурации:
|
|
943
|
+
* ```ts
|
|
944
|
+
* Alarms.load({
|
|
945
|
+
* deviceName: 'example_alarms',
|
|
946
|
+
* deviceTitle: 'Example Alarms',
|
|
947
|
+
* recipients: [],
|
|
948
|
+
* alarms: []
|
|
949
|
+
* })
|
|
950
|
+
* ```
|
|
951
|
+
*
|
|
952
|
+
* @since 0.3.3
|
|
953
|
+
*
|
|
954
|
+
**/
|
|
955
|
+
declare var Alarms: WbRules.Alarms
|