@mirta/globals 0.0.3 → 0.0.4
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/package.json +1 -1
- package/types/wb-rules.d.ts +146 -37
package/package.json
CHANGED
package/types/wb-rules.d.ts
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Используется для нормализации составных типов.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* interface A { value: number }
|
|
7
|
+
* interface B { readonly: boolean }
|
|
8
|
+
*
|
|
9
|
+
* type C = A & B
|
|
10
|
+
* // A & B
|
|
11
|
+
*
|
|
12
|
+
* type D = Expand<A & B>
|
|
13
|
+
* // {
|
|
14
|
+
* // value: number;
|
|
15
|
+
* // readonly: boolean;
|
|
16
|
+
* // }
|
|
17
|
+
* ```
|
|
18
|
+
**/
|
|
19
|
+
declare type Expand<T> = { [K in keyof T]: T[K] } & {}
|
|
20
|
+
|
|
1
21
|
/** Типы и интерфейсы правил wb-rules */
|
|
2
22
|
declare namespace WbRules {
|
|
3
23
|
|
|
@@ -45,9 +65,6 @@ declare namespace WbRules {
|
|
|
45
65
|
error(message: string | undefined, ...args: (string | number | boolean)[]): void
|
|
46
66
|
}
|
|
47
67
|
|
|
48
|
-
type DevControl = Record<string, unknown>
|
|
49
|
-
type Dev = Record<string, DevControl | undefined>
|
|
50
|
-
|
|
51
68
|
interface Timer {
|
|
52
69
|
firing: boolean
|
|
53
70
|
|
|
@@ -59,6 +76,13 @@ declare namespace WbRules {
|
|
|
59
76
|
/** Тип значения топика MQTT. */
|
|
60
77
|
type MqttValue = string | number | boolean
|
|
61
78
|
|
|
79
|
+
type DevControl = Record<string, MqttValue>
|
|
80
|
+
|
|
81
|
+
type Dev = Expand<
|
|
82
|
+
Record<`${string}/${string}`, MqttValue>
|
|
83
|
+
& Record<string, DevControl>
|
|
84
|
+
>
|
|
85
|
+
|
|
62
86
|
interface MqttMessage {
|
|
63
87
|
topic: string
|
|
64
88
|
value: MqttValue
|
|
@@ -90,22 +114,42 @@ declare namespace WbRules {
|
|
|
90
114
|
* @param controlId Поле, по которому произошло событие
|
|
91
115
|
*/
|
|
92
116
|
then(
|
|
93
|
-
newValue
|
|
117
|
+
newValue: MqttValue,
|
|
94
118
|
deviceId?: string,
|
|
95
119
|
controlId?: string
|
|
96
120
|
): void
|
|
97
121
|
}
|
|
98
122
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
123
|
+
// Соответствие типа контрола и его данных
|
|
124
|
+
interface TypeMappings {
|
|
125
|
+
/** A control that displays a value as text. */
|
|
126
|
+
'text': string
|
|
127
|
+
/** A control for a arbitrary value. */
|
|
128
|
+
'value': number
|
|
129
|
+
/** A control that toggles it's value when pressed by the user. */
|
|
130
|
+
'switch': boolean
|
|
131
|
+
/** A stateless push button. */
|
|
132
|
+
'pushbutton': boolean
|
|
133
|
+
/** A control for color in `'R;G;B'` format */
|
|
134
|
+
'rgb': string
|
|
135
|
+
/** A range slider that takes integer values between 0 and any other integer that is greater 1. */
|
|
136
|
+
'range': number
|
|
137
|
+
/** A control that indicates whether an alarm is active. */
|
|
138
|
+
'alarm': boolean
|
|
107
139
|
}
|
|
108
140
|
|
|
141
|
+
type ControlType = Expand<keyof TypeMappings>
|
|
142
|
+
|
|
143
|
+
// enum ControlType {
|
|
144
|
+
// SWITCH = 'switch',
|
|
145
|
+
// ALARM = 'alarm',
|
|
146
|
+
// PUSHBUTTON = 'pushbutton',
|
|
147
|
+
// RANGE = 'range',
|
|
148
|
+
// RGB = 'rgb',
|
|
149
|
+
// TEXT = 'text',
|
|
150
|
+
// VALUE = 'value'
|
|
151
|
+
// }
|
|
152
|
+
|
|
109
153
|
/**
|
|
110
154
|
* Объект настроек передаваемого в контрол значения.
|
|
111
155
|
*/
|
|
@@ -122,6 +166,9 @@ declare namespace WbRules {
|
|
|
122
166
|
notify?: boolean
|
|
123
167
|
}
|
|
124
168
|
|
|
169
|
+
type Title = string | TitleLocalized
|
|
170
|
+
type TitleLocalized = Record<string, string>
|
|
171
|
+
|
|
125
172
|
/**
|
|
126
173
|
* Контрол устройства
|
|
127
174
|
*/
|
|
@@ -130,7 +177,7 @@ declare namespace WbRules {
|
|
|
130
177
|
* Устанавливает заголовок.
|
|
131
178
|
* @param title
|
|
132
179
|
*/
|
|
133
|
-
setTitle(title:
|
|
180
|
+
setTitle(title: Title): void
|
|
134
181
|
|
|
135
182
|
/**
|
|
136
183
|
* Устанавливает описание.
|
|
@@ -143,7 +190,7 @@ declare namespace WbRules {
|
|
|
143
190
|
* @param type Тип значения.
|
|
144
191
|
* @see ControlType
|
|
145
192
|
*/
|
|
146
|
-
setType(
|
|
193
|
+
setType(type: ControlType): void
|
|
147
194
|
|
|
148
195
|
setUnits(units: string): void
|
|
149
196
|
|
|
@@ -159,7 +206,11 @@ declare namespace WbRules {
|
|
|
159
206
|
|
|
160
207
|
getId(): string
|
|
161
208
|
|
|
162
|
-
|
|
209
|
+
/**
|
|
210
|
+
* Возвращает заголовок контрола.
|
|
211
|
+
* @param lang Язык заголовка, "en" по умолчанию.
|
|
212
|
+
*/
|
|
213
|
+
getTitle(lang?: string): string
|
|
163
214
|
|
|
164
215
|
getDescription(): string
|
|
165
216
|
|
|
@@ -180,23 +231,35 @@ declare namespace WbRules {
|
|
|
180
231
|
getValue(): string | number | boolean
|
|
181
232
|
}
|
|
182
233
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
234
|
+
type MaybeValueEnum<TControl>
|
|
235
|
+
= TControl extends 'value'
|
|
236
|
+
? { enum?: Record<number, TitleLocalized> }
|
|
237
|
+
: never
|
|
238
|
+
|
|
239
|
+
type MaybeTextEnum<TControl>
|
|
240
|
+
= TControl extends 'text'
|
|
241
|
+
? { enum?: Record<string, TitleLocalized> }
|
|
242
|
+
: never
|
|
243
|
+
|
|
244
|
+
type TypeDef<TControl, TValue> = {
|
|
245
|
+
/** Тип контрола, публикуемый в MQTT-топике. */
|
|
246
|
+
type: TControl
|
|
247
|
+
/** Значение по умолчанию. */
|
|
248
|
+
value?: TValue
|
|
249
|
+
} & (MaybeValueEnum<TControl> | MaybeTextEnum<TControl> | {})
|
|
250
|
+
|
|
251
|
+
type TypeMapper<K extends keyof TypeMappings>
|
|
252
|
+
= K extends infer TControl
|
|
253
|
+
? TypeDef<TControl, TypeMappings[K]>
|
|
254
|
+
: never
|
|
255
|
+
|
|
256
|
+
type MappedTypes = TypeMapper<keyof TypeMappings>
|
|
257
|
+
|
|
258
|
+
type ControlOptions = Expand<MappedTypes & {
|
|
187
259
|
/**
|
|
188
260
|
* имя, публикуемое в MQTT-топике
|
|
189
261
|
*/
|
|
190
|
-
title?:
|
|
191
|
-
/**
|
|
192
|
-
* тип, публикуемый в MQTT-топике
|
|
193
|
-
* @see ControlType
|
|
194
|
-
*/
|
|
195
|
-
type: string
|
|
196
|
-
/**
|
|
197
|
-
* значение параметра по умолчанию
|
|
198
|
-
*/
|
|
199
|
-
value: string | number | boolean
|
|
262
|
+
title?: Title
|
|
200
263
|
/**
|
|
201
264
|
* когда задано истинное значение, при запуске контроллера параметр всегда устанавливается в значение по умолчанию.
|
|
202
265
|
* Иначе он будет установлен в последнее сохранённое значение.
|
|
@@ -225,7 +288,54 @@ declare namespace WbRules {
|
|
|
225
288
|
* для параметра типа range может задавать его минимально допустимое значение
|
|
226
289
|
*/
|
|
227
290
|
min?: number
|
|
228
|
-
}
|
|
291
|
+
}>
|
|
292
|
+
|
|
293
|
+
// /**
|
|
294
|
+
// * Конфигурация контрола.
|
|
295
|
+
// */
|
|
296
|
+
// interface ControlOptions<TControlType, TValueType> {
|
|
297
|
+
// /**
|
|
298
|
+
// * имя, публикуемое в MQTT-топике
|
|
299
|
+
// */
|
|
300
|
+
// title?: Title
|
|
301
|
+
// /**
|
|
302
|
+
// * тип, публикуемый в MQTT-топике
|
|
303
|
+
// * @see ControlType
|
|
304
|
+
// */
|
|
305
|
+
// type: TControlType
|
|
306
|
+
// /**
|
|
307
|
+
// * значение параметра по умолчанию
|
|
308
|
+
// */
|
|
309
|
+
// value?: TValueType
|
|
310
|
+
// /**
|
|
311
|
+
// * когда задано истинное значение, при запуске контроллера параметр всегда устанавливается в значение по умолчанию.
|
|
312
|
+
// * Иначе он будет установлен в последнее сохранённое значение.
|
|
313
|
+
// */
|
|
314
|
+
// forceDefault?: boolean
|
|
315
|
+
// /**
|
|
316
|
+
// * когда задано истинное значение, параметр объявляется read-only
|
|
317
|
+
// */
|
|
318
|
+
// readonly?: boolean
|
|
319
|
+
// precision?: number
|
|
320
|
+
// /**
|
|
321
|
+
// * когда задано истинное значение, при описании контрола в коде фактическое создание его в mqtt происходить
|
|
322
|
+
// * не будет до тех пор, пока этому контролу не будет присвоено какое-то значение
|
|
323
|
+
// * (например dev[deviceID][controlID] = "string")
|
|
324
|
+
// */
|
|
325
|
+
// lazyInit?: boolean
|
|
326
|
+
// /**
|
|
327
|
+
// * Порядок следования полей
|
|
328
|
+
// */
|
|
329
|
+
// order?: number
|
|
330
|
+
// /**
|
|
331
|
+
// * для параметра типа range может задавать его максимально допустимое значение
|
|
332
|
+
// */
|
|
333
|
+
// max?: number
|
|
334
|
+
// /**
|
|
335
|
+
// * для параметра типа range может задавать его минимально допустимое значение
|
|
336
|
+
// */
|
|
337
|
+
// min?: number
|
|
338
|
+
// }
|
|
229
339
|
|
|
230
340
|
/**
|
|
231
341
|
* Интерфейс устройства
|
|
@@ -251,7 +361,7 @@ declare namespace WbRules {
|
|
|
251
361
|
type ControlOptionsTree = Record<string, ControlOptions>
|
|
252
362
|
|
|
253
363
|
interface DeviceOptions {
|
|
254
|
-
title:
|
|
364
|
+
title: Title
|
|
255
365
|
cells: ControlOptionsTree
|
|
256
366
|
}
|
|
257
367
|
|
|
@@ -295,11 +405,6 @@ declare namespace WbRules {
|
|
|
295
405
|
interface StorageOptions {
|
|
296
406
|
global: boolean
|
|
297
407
|
}
|
|
298
|
-
|
|
299
|
-
type PersistentStorage = new (
|
|
300
|
-
name: string,
|
|
301
|
-
options: StorageOptions
|
|
302
|
-
) => PersistentStorage
|
|
303
408
|
}
|
|
304
409
|
|
|
305
410
|
declare namespace NodeJS {
|
|
@@ -415,7 +520,7 @@ declare function spawn(
|
|
|
415
520
|
|
|
416
521
|
declare function runShellCommand(
|
|
417
522
|
command: string,
|
|
418
|
-
options
|
|
523
|
+
options?: WbRules.SpawnOptions | WbRules.ExitCallback
|
|
419
524
|
): void
|
|
420
525
|
|
|
421
526
|
declare function readConfig(
|
|
@@ -469,6 +574,10 @@ declare function publish(
|
|
|
469
574
|
retain?: boolean
|
|
470
575
|
): void
|
|
471
576
|
|
|
577
|
+
declare class PersistentStorage {
|
|
578
|
+
constructor(name: string, options: WbRules.StorageOptions)
|
|
579
|
+
}
|
|
580
|
+
|
|
472
581
|
/**
|
|
473
582
|
* Класс оповещения
|
|
474
583
|
* @abstract
|