@mirta/globals 0.0.7 → 0.1.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/package.json +1 -1
- package/types/wb-rules.d.ts +194 -142
package/package.json
CHANGED
package/types/wb-rules.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
6
|
* interface A { value: number }
|
|
7
|
-
* interface B {
|
|
7
|
+
* interface B { isReadonly: boolean }
|
|
8
8
|
*
|
|
9
9
|
* type C = A & B
|
|
10
10
|
* // A & B
|
|
@@ -12,9 +12,10 @@
|
|
|
12
12
|
* type D = Expand<A & B>
|
|
13
13
|
* // {
|
|
14
14
|
* // value: number;
|
|
15
|
-
* //
|
|
15
|
+
* // isReadonly: boolean;
|
|
16
16
|
* // }
|
|
17
17
|
* ```
|
|
18
|
+
* @since 0.0.4
|
|
18
19
|
**/
|
|
19
20
|
declare type Expand<T> = { [K in keyof T]: T[K] } & {}
|
|
20
21
|
|
|
@@ -115,7 +116,11 @@ declare namespace WbRules {
|
|
|
115
116
|
): void
|
|
116
117
|
}
|
|
117
118
|
|
|
118
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Соответствие типа контрола его типу значения.
|
|
121
|
+
* @since 0.0.4
|
|
122
|
+
*
|
|
123
|
+
**/
|
|
119
124
|
interface TypeMappings {
|
|
120
125
|
/** A control that displays a value as text. */
|
|
121
126
|
'text': string
|
|
@@ -135,16 +140,6 @@ declare namespace WbRules {
|
|
|
135
140
|
|
|
136
141
|
type ControlType = Expand<keyof TypeMappings>
|
|
137
142
|
|
|
138
|
-
// enum ControlType {
|
|
139
|
-
// SWITCH = 'switch',
|
|
140
|
-
// ALARM = 'alarm',
|
|
141
|
-
// PUSHBUTTON = 'pushbutton',
|
|
142
|
-
// RANGE = 'range',
|
|
143
|
-
// RGB = 'rgb',
|
|
144
|
-
// TEXT = 'text',
|
|
145
|
-
// VALUE = 'value'
|
|
146
|
-
// }
|
|
147
|
-
|
|
148
143
|
/**
|
|
149
144
|
* Объект настроек передаваемого в контрол значения.
|
|
150
145
|
*/
|
|
@@ -226,112 +221,144 @@ declare namespace WbRules {
|
|
|
226
221
|
getValue(): string | number | boolean
|
|
227
222
|
}
|
|
228
223
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
= TControl extends 'text'
|
|
236
|
-
? { enum?: Record<string, TitleLocalized> }
|
|
237
|
-
: never
|
|
238
|
-
|
|
239
|
-
type TypeDef<TControl, TValue> = {
|
|
224
|
+
/**
|
|
225
|
+
* Базовые определения контрола.
|
|
226
|
+
* @since 0.1.0
|
|
227
|
+
*
|
|
228
|
+
**/
|
|
229
|
+
interface BaseControlType<TControl, TValue> {
|
|
240
230
|
/** Тип контрола, публикуемый в MQTT-топике. */
|
|
241
231
|
type: TControl
|
|
242
232
|
/** Значение по умолчанию. */
|
|
243
233
|
value?: TValue
|
|
244
|
-
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Расширяет тип Text дополнительными свойствами.
|
|
238
|
+
* @since 0.1.0
|
|
239
|
+
*
|
|
240
|
+
**/
|
|
241
|
+
interface __TextControlTypeExtension {
|
|
245
242
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
243
|
+
/**
|
|
244
|
+
* Задаёт подписи к значениям.
|
|
245
|
+
*
|
|
246
|
+
* Используется, когда количество значений
|
|
247
|
+
* ограничено - например, при перечислении дней недели.
|
|
248
|
+
*
|
|
249
|
+
**/
|
|
250
|
+
enum?: Record<string, Title>
|
|
251
|
+
}
|
|
250
252
|
|
|
251
|
-
|
|
253
|
+
/**
|
|
254
|
+
* Расширяет тип Value дополнительными свойствами.
|
|
255
|
+
* @since 0.1.0
|
|
256
|
+
*
|
|
257
|
+
**/
|
|
258
|
+
interface __ValueControlTypeExtension {
|
|
252
259
|
|
|
253
|
-
type ControlOptions = Expand<MappedTypes & {
|
|
254
260
|
/**
|
|
255
|
-
*
|
|
256
|
-
|
|
261
|
+
* Задаёт подписи к значениям.
|
|
262
|
+
*
|
|
263
|
+
* Используется, когда количество значений
|
|
264
|
+
* ограничено - например, при перечислении дней недели.
|
|
265
|
+
*
|
|
266
|
+
**/
|
|
267
|
+
enum?: Record<number, WbRules.Title>
|
|
268
|
+
|
|
269
|
+
/** Задаёт минимально допустимое значение. */
|
|
270
|
+
min?: number
|
|
271
|
+
|
|
272
|
+
/** Задаёт максимально допустимое значение. */
|
|
273
|
+
max?: number
|
|
274
|
+
|
|
275
|
+
/** Определяет количество знаков после запятой. */
|
|
276
|
+
precision?: number
|
|
277
|
+
|
|
278
|
+
units?: string
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Расширяет тип Range дополнительными свойствами.
|
|
283
|
+
* @since 0.1.0
|
|
284
|
+
*
|
|
285
|
+
**/
|
|
286
|
+
interface __RangeControlTypeExtension {
|
|
287
|
+
|
|
288
|
+
/** Задаёт минимально допустимое значение. */
|
|
289
|
+
min?: number
|
|
290
|
+
|
|
291
|
+
/** Задаёт максимально допустимое значение. */
|
|
292
|
+
max?: number
|
|
293
|
+
|
|
294
|
+
/** Определяет количество знаков после запятой. */
|
|
295
|
+
precision?: number
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Добавляет расширенные свойства, соответственно типу контрола.
|
|
300
|
+
* @since 0.1.0
|
|
301
|
+
*
|
|
302
|
+
**/
|
|
303
|
+
type ControlTypeExtension<TControl>
|
|
304
|
+
= TControl extends 'text'
|
|
305
|
+
? __TextControlTypeExtension
|
|
306
|
+
: TControl extends 'value'
|
|
307
|
+
? __ValueControlTypeExtension
|
|
308
|
+
: TControl extends 'range'
|
|
309
|
+
? __RangeControlTypeExtension
|
|
310
|
+
: {}
|
|
311
|
+
|
|
312
|
+
type __MappedControlTypes<
|
|
313
|
+
K extends keyof TypeMappings = keyof TypeMappings
|
|
314
|
+
>
|
|
315
|
+
= K extends infer TControl
|
|
316
|
+
? BaseControlType<TControl, TypeMappings[K]> & ControlTypeExtension<TControl>
|
|
317
|
+
: never
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Параметры контрола.
|
|
321
|
+
*
|
|
322
|
+
**/
|
|
323
|
+
type ControlOptions = Expand<__MappedControlTypes & {
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Заголовок, публикуемый в MQTT-топике (meta/title)
|
|
327
|
+
*
|
|
328
|
+
**/
|
|
257
329
|
title?: Title
|
|
330
|
+
|
|
258
331
|
/**
|
|
259
|
-
*
|
|
332
|
+
* Когда задано истинное значение, при запуске контроллера параметр всегда устанавливается в значение по умолчанию.
|
|
260
333
|
* Иначе он будет установлен в последнее сохранённое значение.
|
|
261
|
-
|
|
334
|
+
*
|
|
335
|
+
**/
|
|
262
336
|
forceDefault?: boolean
|
|
337
|
+
|
|
263
338
|
/**
|
|
264
|
-
*
|
|
265
|
-
|
|
339
|
+
* Когда задано истинное значение, параметр становится доступным только для чтения.
|
|
340
|
+
*
|
|
341
|
+
**/
|
|
266
342
|
readonly?: boolean
|
|
267
|
-
|
|
343
|
+
|
|
268
344
|
/**
|
|
269
|
-
*
|
|
270
|
-
* не будет до тех пор, пока этому контролу не будет присвоено
|
|
271
|
-
*
|
|
272
|
-
|
|
345
|
+
* Когда задано истинное значение, при описании контрола в коде фактическое создание его в MQTT происходить
|
|
346
|
+
* не будет до тех пор, пока этому контролу не будет присвоено какое-либо значение.
|
|
347
|
+
*
|
|
348
|
+
* @example
|
|
349
|
+
* ```ts
|
|
350
|
+
* dev[deviceID][controlID] = "string"
|
|
351
|
+
* ```
|
|
352
|
+
**/
|
|
273
353
|
lazyInit?: boolean
|
|
354
|
+
|
|
274
355
|
/**
|
|
275
|
-
* Порядок следования
|
|
276
|
-
|
|
356
|
+
* Порядок следования полей.
|
|
357
|
+
*
|
|
358
|
+
**/
|
|
277
359
|
order?: number
|
|
278
|
-
/**
|
|
279
|
-
* для параметра типа range может задавать его максимально допустимое значение
|
|
280
|
-
*/
|
|
281
|
-
max?: number
|
|
282
|
-
/**
|
|
283
|
-
* для параметра типа range может задавать его минимально допустимое значение
|
|
284
|
-
*/
|
|
285
|
-
min?: number
|
|
286
360
|
}>
|
|
287
361
|
|
|
288
|
-
// /**
|
|
289
|
-
// * Конфигурация контрола.
|
|
290
|
-
// */
|
|
291
|
-
// interface ControlOptions<TControlType, TValueType> {
|
|
292
|
-
// /**
|
|
293
|
-
// * имя, публикуемое в MQTT-топике
|
|
294
|
-
// */
|
|
295
|
-
// title?: Title
|
|
296
|
-
// /**
|
|
297
|
-
// * тип, публикуемый в MQTT-топике
|
|
298
|
-
// * @see ControlType
|
|
299
|
-
// */
|
|
300
|
-
// type: TControlType
|
|
301
|
-
// /**
|
|
302
|
-
// * значение параметра по умолчанию
|
|
303
|
-
// */
|
|
304
|
-
// value?: TValueType
|
|
305
|
-
// /**
|
|
306
|
-
// * когда задано истинное значение, при запуске контроллера параметр всегда устанавливается в значение по умолчанию.
|
|
307
|
-
// * Иначе он будет установлен в последнее сохранённое значение.
|
|
308
|
-
// */
|
|
309
|
-
// forceDefault?: boolean
|
|
310
|
-
// /**
|
|
311
|
-
// * когда задано истинное значение, параметр объявляется read-only
|
|
312
|
-
// */
|
|
313
|
-
// readonly?: boolean
|
|
314
|
-
// precision?: number
|
|
315
|
-
// /**
|
|
316
|
-
// * когда задано истинное значение, при описании контрола в коде фактическое создание его в mqtt происходить
|
|
317
|
-
// * не будет до тех пор, пока этому контролу не будет присвоено какое-то значение
|
|
318
|
-
// * (например dev[deviceID][controlID] = "string")
|
|
319
|
-
// */
|
|
320
|
-
// lazyInit?: boolean
|
|
321
|
-
// /**
|
|
322
|
-
// * Порядок следования полей
|
|
323
|
-
// */
|
|
324
|
-
// order?: number
|
|
325
|
-
// /**
|
|
326
|
-
// * для параметра типа range может задавать его максимально допустимое значение
|
|
327
|
-
// */
|
|
328
|
-
// max?: number
|
|
329
|
-
// /**
|
|
330
|
-
// * для параметра типа range может задавать его минимально допустимое значение
|
|
331
|
-
// */
|
|
332
|
-
// min?: number
|
|
333
|
-
// }
|
|
334
|
-
|
|
335
362
|
/**
|
|
336
363
|
* Интерфейс устройства
|
|
337
364
|
*/
|
|
@@ -361,11 +388,12 @@ declare namespace WbRules {
|
|
|
361
388
|
}
|
|
362
389
|
|
|
363
390
|
/**
|
|
364
|
-
* Функция, вызываемая при завершении
|
|
391
|
+
* Функция, вызываемая при завершении процесса.
|
|
365
392
|
* @param exitCode код возврата процесса
|
|
366
|
-
* @param capturedOutput захваченный stdout процесса в виде строки в случае, когда задана опция captureOutput
|
|
367
|
-
* @param capturedErrorOutput захваченный stderr процесса в виде строки в случае, когда задана опция captureErrorOutput
|
|
368
|
-
|
|
393
|
+
* @param capturedOutput захваченный stdout процесса в виде строки в случае, когда задана опция {@link SpawnOptions.captureOutput}
|
|
394
|
+
* @param capturedErrorOutput захваченный stderr процесса в виде строки в случае, когда задана опция {@link SpawnOptions.captureErrorOutput}
|
|
395
|
+
*
|
|
396
|
+
**/
|
|
369
397
|
type ExitCallback = (
|
|
370
398
|
exitCode: number,
|
|
371
399
|
capturedOutput?: string,
|
|
@@ -373,23 +401,30 @@ declare namespace WbRules {
|
|
|
373
401
|
) => void
|
|
374
402
|
|
|
375
403
|
interface SpawnOptions {
|
|
404
|
+
|
|
376
405
|
/**
|
|
377
|
-
* Если true, захватить stdout процесса и передать его в виде строки в exitCallback
|
|
378
|
-
|
|
406
|
+
* Если true, захватить stdout процесса и передать его в виде строки в {@link exitCallback}
|
|
407
|
+
*
|
|
408
|
+
**/
|
|
379
409
|
captureOutput?: boolean
|
|
410
|
+
|
|
380
411
|
/**
|
|
381
|
-
* Если true, захватить stderr процесса и передать его в виде строки в exitCallback.
|
|
412
|
+
* Если true, захватить stderr процесса и передать его в виде строки в {@link exitCallback}.
|
|
382
413
|
* Если данный параметр не задан, то stderr дочернего процесса направляется в stderr процесса wb-rules
|
|
383
|
-
|
|
414
|
+
*
|
|
415
|
+
**/
|
|
384
416
|
captureErrorOutput?: boolean
|
|
417
|
+
|
|
385
418
|
/**
|
|
386
|
-
* Строка, которую следует использовать в качестве содержимого stdin
|
|
387
|
-
|
|
419
|
+
* Строка, которую следует использовать в качестве содержимого stdin процесса.
|
|
420
|
+
*
|
|
421
|
+
**/
|
|
388
422
|
input?: string
|
|
389
423
|
|
|
390
424
|
/**
|
|
391
|
-
* Функция, вызываемая при завершении
|
|
392
|
-
|
|
425
|
+
* Функция, вызываемая при завершении процесса.
|
|
426
|
+
*
|
|
427
|
+
**/
|
|
393
428
|
exitCallback?: ExitCallback
|
|
394
429
|
}
|
|
395
430
|
|
|
@@ -404,42 +439,48 @@ declare namespace WbRules {
|
|
|
404
439
|
|
|
405
440
|
declare namespace NodeJS {
|
|
406
441
|
interface Module {
|
|
407
|
-
/**
|
|
408
|
-
* Хранит данные, общие для всех экземпляров данного модуля.
|
|
409
|
-
*/
|
|
442
|
+
/** Хранит данные, общие для всех экземпляров данного модуля. */
|
|
410
443
|
static: WbRules.ModuleStatic
|
|
411
444
|
}
|
|
412
445
|
}
|
|
413
446
|
|
|
447
|
+
/**
|
|
448
|
+
* Путь к текущему сценарию wb-rules (точке входа), даже в модулях.
|
|
449
|
+
* Пример строки: `/etc/wb-rules/my-script.js`
|
|
450
|
+
*
|
|
451
|
+
**/
|
|
452
|
+
declare var __filename: string
|
|
453
|
+
|
|
454
|
+
/** Используется для вывода сообщений в журнал контроллера и отладочную консоль. */
|
|
414
455
|
declare var log: WbRules.Log
|
|
415
456
|
|
|
416
|
-
/**
|
|
417
|
-
* Объект доступа к MQTT-топикам устройства
|
|
418
|
-
*/
|
|
457
|
+
/** Объект доступа к MQTT-топикам устройства. */
|
|
419
458
|
declare var dev: WbRules.Dev
|
|
420
459
|
|
|
421
|
-
/**
|
|
422
|
-
* Объект доступа к именованным таймерам
|
|
423
|
-
*/
|
|
460
|
+
/** Объект доступа к именованным таймера. */
|
|
424
461
|
declare var timers: WbRules.TimerCollection
|
|
425
462
|
|
|
426
463
|
/**
|
|
427
464
|
* Создаёт правило обработки.
|
|
428
465
|
* @param ruleName Название правила.
|
|
429
466
|
* @param options Конфигурация правила.
|
|
430
|
-
|
|
467
|
+
*
|
|
468
|
+
**/
|
|
431
469
|
declare function defineRule(name: string, options: WbRules.RuleOptions): void
|
|
470
|
+
|
|
432
471
|
/**
|
|
433
472
|
* Создаёт анонимное правило обработки.
|
|
434
473
|
* @param options Конфигурация правила.
|
|
435
|
-
|
|
474
|
+
*
|
|
475
|
+
**/
|
|
436
476
|
declare function defineRule(options: WbRules.RuleOptions): void
|
|
437
477
|
|
|
438
478
|
/**
|
|
439
479
|
* Создаёт виртуальное устройство.
|
|
440
480
|
* @param deviceId Идентификатор устройства.
|
|
441
481
|
* @param options Конфигурация устройства.
|
|
442
|
-
|
|
482
|
+
*
|
|
483
|
+
**/
|
|
443
484
|
declare function defineVirtualDevice(
|
|
444
485
|
deviceId: string,
|
|
445
486
|
options: WbRules.DeviceOptions
|
|
@@ -448,23 +489,25 @@ declare function defineVirtualDevice(
|
|
|
448
489
|
/**
|
|
449
490
|
* Позволяет получить объект для работы с указанным устройством.
|
|
450
491
|
* @param deviceId Идентификатор устройства.
|
|
451
|
-
|
|
492
|
+
*
|
|
493
|
+
**/
|
|
452
494
|
declare function getDevice(deviceId: string): WbRules.Device | undefined
|
|
453
495
|
|
|
454
496
|
/**
|
|
455
497
|
* Позволяет получить объект для работы с указанным контролом устройства.
|
|
456
498
|
* @param controlPath Строка в формате "deviceId/controlId"
|
|
457
|
-
|
|
499
|
+
*
|
|
500
|
+
**/
|
|
458
501
|
declare function getControl(controlPath: string): WbRules.Control | undefined
|
|
459
502
|
|
|
460
503
|
/**
|
|
461
504
|
* Запускает периодический таймер с указанным интервалом.
|
|
505
|
+
* К таймеру можно обратиться через `timers.<name>` внутри when при работе с {@link defineRule}.
|
|
462
506
|
*
|
|
463
|
-
*
|
|
464
|
-
*
|
|
465
|
-
* @param name Идентификатор таймера в глобальном наборе `timers`.
|
|
507
|
+
* @param name Идентификатор таймера в глобальном наборе {@link timers}.
|
|
466
508
|
* @param delay Интервал срабатывания, в миллисекундах
|
|
467
|
-
|
|
509
|
+
*
|
|
510
|
+
**/
|
|
468
511
|
declare function startTicker(name: string, interval: number): void
|
|
469
512
|
|
|
470
513
|
/**
|
|
@@ -473,7 +516,7 @@ declare function startTicker(name: string, interval: number): void
|
|
|
473
516
|
*
|
|
474
517
|
* см. [руководство по однократным таймерам](https://github.com/wirenboard/wb-rules?tab=readme-ov-file#однократные)
|
|
475
518
|
*
|
|
476
|
-
* @param name Идентификатор таймера в глобальном наборе
|
|
519
|
+
* @param name Идентификатор таймера в глобальном наборе {@link timers}.
|
|
477
520
|
* @param delay
|
|
478
521
|
*
|
|
479
522
|
* Используется при работе с определениями правил:
|
|
@@ -497,16 +540,16 @@ declare function startTicker(name: string, interval: number): void
|
|
|
497
540
|
* })
|
|
498
541
|
*
|
|
499
542
|
* ```
|
|
500
|
-
*
|
|
501
543
|
*/
|
|
502
544
|
declare function startTimer(name: string, delay: number): void
|
|
503
545
|
|
|
504
546
|
/**
|
|
505
|
-
* Запуск внешних
|
|
547
|
+
* Запуск внешних процессов.
|
|
506
548
|
* @param cmd
|
|
507
549
|
* @param args
|
|
508
550
|
* @param options
|
|
509
|
-
|
|
551
|
+
*
|
|
552
|
+
**/
|
|
510
553
|
declare function spawn(
|
|
511
554
|
cmd: string,
|
|
512
555
|
args: string[],
|
|
@@ -535,17 +578,25 @@ declare function readConfig(
|
|
|
535
578
|
*/
|
|
536
579
|
declare function defineAlias(alias: string, controlPath: string): void
|
|
537
580
|
|
|
538
|
-
/**
|
|
539
|
-
* Следует учесть, что функция format и xformat съедают одинарные квадратные скобки!
|
|
540
|
-
* Поэтому, если необходимо их вывести, то нужно дублировать.
|
|
541
|
-
*/
|
|
542
581
|
interface String {
|
|
582
|
+
/**
|
|
583
|
+
* Осуществляет последовательную замену подстрок `{}` в указанной строке
|
|
584
|
+
* на строковые представления своих аргументов и возвращает результирующую строку.
|
|
585
|
+
* @param args
|
|
586
|
+
*/
|
|
543
587
|
format(...args: (string | number | boolean)[]): string
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* Осуществляет последовательную замену подстрок `{}` в указанной строке
|
|
591
|
+
* на строковые представления своих аргументов и возвращает результирующую строку.
|
|
592
|
+
*
|
|
593
|
+
* @warning В отличие от {@link format}, выполняет код внутри строки! Не использовать для обработки значений, вводимых пользователем.
|
|
594
|
+
*/
|
|
544
595
|
xformat(...args: (string | number | boolean)[]): string
|
|
545
596
|
}
|
|
546
597
|
|
|
547
598
|
/**
|
|
548
|
-
*
|
|
599
|
+
* Подписывает на прослушивание топика MQTT (допустимы символы # и +).
|
|
549
600
|
* @param topic
|
|
550
601
|
* @param callback
|
|
551
602
|
*/
|
|
@@ -555,17 +606,18 @@ declare function trackMqtt(
|
|
|
555
606
|
): void
|
|
556
607
|
|
|
557
608
|
/**
|
|
558
|
-
* Публикация сообщений в MQTT
|
|
559
|
-
*
|
|
609
|
+
* Публикация сообщений в MQTT.
|
|
610
|
+
*
|
|
611
|
+
* Внимание! Не используйте `publish()` для изменения значения параметров устройств.
|
|
560
612
|
* @param topic
|
|
561
613
|
* @param payload
|
|
562
|
-
* @param
|
|
614
|
+
* @param qos
|
|
563
615
|
* @param retain
|
|
564
616
|
*/
|
|
565
617
|
declare function publish(
|
|
566
618
|
topic: string,
|
|
567
619
|
value: WbRules.MqttValue,
|
|
568
|
-
|
|
620
|
+
qos?: number,
|
|
569
621
|
retain?: boolean
|
|
570
622
|
): void
|
|
571
623
|
|