@iobroker/dm-utils 1.0.9 → 1.0.13
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/README.md +8 -0
- package/build/types/base.d.ts +2 -0
- package/build/types/common.d.ts +81 -23
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -301,6 +301,14 @@ This method returns a promise that resolves to a `ProgressDialog` object.
|
|
|
301
301
|
### **WORK IN PROGRESS**
|
|
302
302
|
-->
|
|
303
303
|
## Changelog
|
|
304
|
+
### 1.0.13 (2025-10-21)
|
|
305
|
+
* (@GermanBluefox) Updated packages
|
|
306
|
+
|
|
307
|
+
### 1.0.10 (2025-05-05)
|
|
308
|
+
|
|
309
|
+
* (@GermanBluefox) Added timeout property to actions
|
|
310
|
+
* (@GermanBluefox) Updated packages
|
|
311
|
+
|
|
304
312
|
### 1.0.9 (2025-01-25)
|
|
305
313
|
|
|
306
314
|
* (@GermanBluefox) Added copyToClipboard dialog button
|
package/build/types/base.d.ts
CHANGED
|
@@ -45,6 +45,8 @@ export interface ActionBase<T extends ActionType> {
|
|
|
45
45
|
/** Step value for the input (number or slider) */
|
|
46
46
|
step?: number;
|
|
47
47
|
};
|
|
48
|
+
/** Timeout in ms for waiting an answer from backend */
|
|
49
|
+
timeout?: number;
|
|
48
50
|
}
|
|
49
51
|
export interface ChannelInfo {
|
|
50
52
|
name: ioBroker.StringOrTranslated;
|
package/build/types/common.d.ts
CHANGED
|
@@ -1,25 +1,11 @@
|
|
|
1
1
|
export type ApiVersion = 'v1';
|
|
2
2
|
export type ConfigConnectionType = 'lan' | 'wifi' | 'bluetooth' | 'thread' | 'z-wave' | 'zigbee' | 'other';
|
|
3
|
-
export type ConfigIconType = 'add' | 'backlight' | 'delete' | 'dimmer' | 'edit' | 'group' | 'identify' | 'info' | 'light' | 'lines' | 'next' | 'pair' | 'pause' | 'play' | 'previous' | 'qrcode' | 'refresh' | 'search' | 'settings' | 'socket' | 'stop' | 'unpair' | 'user' | string;
|
|
4
3
|
export type DeviceStatus = 'connected' | 'disconnected' | {
|
|
5
4
|
battery?: number | boolean | 'charging' | string;
|
|
6
5
|
connection?: 'connected' | 'disconnected';
|
|
7
6
|
rssi?: number;
|
|
8
7
|
warning?: ioBroker.StringOrTranslated | boolean;
|
|
9
8
|
};
|
|
10
|
-
export type ActionButton = {
|
|
11
|
-
label: ioBroker.StringOrTranslated;
|
|
12
|
-
type: 'apply' | 'cancel' | 'copyToClipboard';
|
|
13
|
-
noTranslation?: boolean;
|
|
14
|
-
/** base64 or icon name */
|
|
15
|
-
icon?: ConfigIconType;
|
|
16
|
-
variant?: 'contained' | 'outlined' | 'text';
|
|
17
|
-
style?: Record<string, number | string>;
|
|
18
|
-
/** Name of the attribute in data that should be copied to clipboard */
|
|
19
|
-
color?: 'primary' | 'secondary';
|
|
20
|
-
/** Name of the attribute in data that should be copied to clipboard */
|
|
21
|
-
copyToClipboardAttr?: string;
|
|
22
|
-
};
|
|
23
9
|
export type DeviceRefresh = 'device' | 'instance' | false | true;
|
|
24
10
|
export type RefreshResponse = {
|
|
25
11
|
refresh: DeviceRefresh;
|
|
@@ -41,7 +27,8 @@ interface ObjectBrowserCustomFilter {
|
|
|
41
27
|
};
|
|
42
28
|
}
|
|
43
29
|
export type ObjectBrowserType = 'state' | 'instance' | 'channel' | 'device' | 'chart';
|
|
44
|
-
export type ConfigItemType = '
|
|
30
|
+
export type ConfigItemType = 'accordion' | 'alive' | 'autocomplete' | 'autocompleteSendTo' | 'certCollection' | 'certificate' | 'certificates' | 'checkDocker' | 'checkLicense' | 'checkbox' | 'chips' | 'color' | 'coordinates' | 'cron' | 'custom' | 'datePicker' | 'deviceManager' | 'divider' | 'file' | 'fileSelector' | 'func' | 'header' | 'image' | 'imageSendTo' | 'infoBox' | 'instance' | 'interface' | 'ip' | 'jsonEditor' | 'language' | 'license' | 'number' | 'oauth2' | 'objectId' | 'panel' | 'password' | 'pattern' | 'port' | 'qrCode' | 'room' | 'select' | 'selectSendTo' | 'sendto' | 'setState' | 'slider' | 'state' | 'staticImage' | 'staticInfo' | 'staticLink' | 'staticText' | 'table' | 'tabs' | 'text' | 'textSendTo' | 'timePicker' | 'topic' | 'user' | 'uuid';
|
|
31
|
+
export type ConfigIconType = 'add' | 'backlight' | 'book' | 'delete' | 'dimmer' | 'edit' | 'error' | 'group' | 'help' | 'identify' | 'info' | 'light' | 'lines' | 'next' | 'pair' | 'pause' | 'play' | 'previous' | 'qrcode' | 'refresh' | 'search' | 'send' | 'settings' | 'socket' | 'stop' | 'unpair' | 'upload' | 'user' | 'warning' | 'web' | string;
|
|
45
32
|
export interface ConfigItemConfirmData {
|
|
46
33
|
condition: string;
|
|
47
34
|
text?: ioBroker.StringOrTranslated;
|
|
@@ -142,6 +129,8 @@ export interface ConfigItemSelectOption {
|
|
|
142
129
|
label: ioBroker.StringOrTranslated;
|
|
143
130
|
/** Value of option */
|
|
144
131
|
value: number | string;
|
|
132
|
+
/** Color of value */
|
|
133
|
+
color?: string;
|
|
145
134
|
/** Formula or boolean value to show or hide the option */
|
|
146
135
|
hidden?: string | boolean;
|
|
147
136
|
}
|
|
@@ -158,6 +147,7 @@ export interface ConfigItemPanel extends ConfigItem {
|
|
|
158
147
|
innerStyle?: CustomCSSProperties;
|
|
159
148
|
/** i18n definitions: true - load from a file, string - name of subdirectory, object - translations */
|
|
160
149
|
i18n?: boolean | string | Record<string, Record<ioBroker.Languages, string>>;
|
|
150
|
+
command?: string;
|
|
161
151
|
}
|
|
162
152
|
export interface ConfigItemPattern extends ConfigItem {
|
|
163
153
|
type: 'pattern';
|
|
@@ -181,6 +171,7 @@ export interface ConfigItemTabs extends ConfigItem {
|
|
|
181
171
|
tabsStyle?: CustomCSSProperties;
|
|
182
172
|
/** i18n definitions: true - load from a file, string - name of subdirectory, object - translations */
|
|
183
173
|
i18n?: boolean | string | Record<string, Record<ioBroker.Languages, string>>;
|
|
174
|
+
command?: string;
|
|
184
175
|
}
|
|
185
176
|
export interface ConfigItemText extends ConfigItem {
|
|
186
177
|
type: 'text';
|
|
@@ -223,6 +214,15 @@ export interface ConfigItemNumber extends ConfigItem {
|
|
|
223
214
|
max?: number;
|
|
224
215
|
step?: number;
|
|
225
216
|
readOnly?: boolean;
|
|
217
|
+
/** Unit */
|
|
218
|
+
unit?: string;
|
|
219
|
+
}
|
|
220
|
+
export interface ConfigItemOAuth2 extends ConfigItem {
|
|
221
|
+
type: 'oauth2';
|
|
222
|
+
saveTokenIn?: string;
|
|
223
|
+
identifier: 'spotify' | 'google' | 'dropbox' | 'microsoft' | string;
|
|
224
|
+
scope?: string;
|
|
225
|
+
refreshLabel?: ioBroker.StringOrTranslated;
|
|
226
226
|
}
|
|
227
227
|
export interface ConfigItemQrCode extends ConfigItem {
|
|
228
228
|
type: 'qrCode';
|
|
@@ -274,11 +274,11 @@ export interface ConfigItemObjectId extends ConfigItem {
|
|
|
274
274
|
filters?: {
|
|
275
275
|
id?: string;
|
|
276
276
|
name?: string;
|
|
277
|
-
room?: string;
|
|
278
|
-
func?: string;
|
|
279
|
-
role?: string;
|
|
280
|
-
type?: string;
|
|
281
|
-
custom?: string;
|
|
277
|
+
room?: string[];
|
|
278
|
+
func?: string[];
|
|
279
|
+
role?: string[];
|
|
280
|
+
type?: string[];
|
|
281
|
+
custom?: string[];
|
|
282
282
|
};
|
|
283
283
|
/** Cannot be used together with `type` settings. It is a function that will be called for every object and must return true or false. Example: `obj.common.type === 'number'` */
|
|
284
284
|
filterFunc?: (obj: ioBroker.Object) => boolean;
|
|
@@ -384,6 +384,21 @@ export interface ConfigItemStaticInfo extends Omit<ConfigItem, 'data'> {
|
|
|
384
384
|
/** Show string values as HTML */
|
|
385
385
|
html?: boolean;
|
|
386
386
|
}
|
|
387
|
+
export interface ConfigItemInfoBox extends ConfigItem {
|
|
388
|
+
type: 'infoBox';
|
|
389
|
+
/** multi-language text */
|
|
390
|
+
text: ioBroker.StringOrTranslated;
|
|
391
|
+
/** multi-language title */
|
|
392
|
+
title?: ioBroker.StringOrTranslated;
|
|
393
|
+
/** The type determines the color and symbol */
|
|
394
|
+
boxType?: 'warning' | 'info' | 'error' | 'ok';
|
|
395
|
+
/** If the box is closeable */
|
|
396
|
+
closeable?: boolean;
|
|
397
|
+
/** Use together with `closeable: true`. If the box is closed or not. In this case, it will be controlled from outside */
|
|
398
|
+
closed?: boolean;
|
|
399
|
+
/** Icon position */
|
|
400
|
+
iconPosition?: 'top' | 'middle';
|
|
401
|
+
}
|
|
387
402
|
export interface ConfigItemRoom extends ConfigItem {
|
|
388
403
|
type: 'room';
|
|
389
404
|
short?: boolean;
|
|
@@ -404,9 +419,14 @@ export interface ConfigItemSelect extends ConfigItem {
|
|
|
404
419
|
items: ConfigItemSelectOption[];
|
|
405
420
|
label: ioBroker.StringOrTranslated;
|
|
406
421
|
value?: number | string;
|
|
422
|
+
color?: string;
|
|
407
423
|
hidden?: string | boolean;
|
|
408
424
|
})[];
|
|
409
425
|
attr?: string;
|
|
426
|
+
/** If multiple selection is possible. In this case, the value will be an array */
|
|
427
|
+
multiple?: boolean;
|
|
428
|
+
/** show item even if no label was found for it (by multiple), default=`true` */
|
|
429
|
+
showAllValues?: boolean;
|
|
410
430
|
}
|
|
411
431
|
export interface ConfigItemAutocomplete extends ConfigItem {
|
|
412
432
|
type: 'autocomplete';
|
|
@@ -485,12 +505,16 @@ export interface ConfigItemCustom extends ConfigItem {
|
|
|
485
505
|
type: 'custom';
|
|
486
506
|
/** location of Widget, like "custom/customComponents.js" */
|
|
487
507
|
url: string;
|
|
508
|
+
/** New format for components written in TypeScript */
|
|
509
|
+
bundlerType?: 'module';
|
|
488
510
|
/** Component name, like "ConfigCustomBackItUpSet/Components/AdapterExist" */
|
|
489
511
|
name: string;
|
|
490
512
|
/** i18n */
|
|
491
513
|
i18n: boolean | Record<string, string>;
|
|
492
514
|
/** custom properties */
|
|
493
|
-
|
|
515
|
+
custom?: {
|
|
516
|
+
[prop: string]: any;
|
|
517
|
+
};
|
|
494
518
|
}
|
|
495
519
|
export interface ConfigItemDatePicker extends ConfigItem {
|
|
496
520
|
type: 'datePicker';
|
|
@@ -585,7 +609,7 @@ export interface ConfigItemState extends ConfigItem {
|
|
|
585
609
|
readOnly?: boolean;
|
|
586
610
|
/** Base64 icon */
|
|
587
611
|
labelIcon?: string;
|
|
588
|
-
/** Normally the title and value are shown on the left and right of the line. With this flag, the value will appear just after the label*/
|
|
612
|
+
/** Normally, the title and value are shown on the left and right of the line. With this flag, the value will appear just after the label*/
|
|
589
613
|
narrow?: boolean;
|
|
590
614
|
/** Add to label the colon at the end if not exist in label */
|
|
591
615
|
addColon?: boolean;
|
|
@@ -593,6 +617,14 @@ export interface ConfigItemState extends ConfigItem {
|
|
|
593
617
|
blinkOnUpdate?: boolean | string;
|
|
594
618
|
/** Font size */
|
|
595
619
|
size?: number | 'small' | 'normal' | 'large';
|
|
620
|
+
/** Optional value, that will be sent for button */
|
|
621
|
+
buttonValue?: ioBroker.StateValue;
|
|
622
|
+
/** Show SET button. The value in this case will be sent only when the button is pressed. You can define the text of the button. Default text is "Set" */
|
|
623
|
+
showEnterButton?: boolean | ioBroker.StringOrTranslated;
|
|
624
|
+
/** The value in this case will be sent only when the "Enter" button is pressed. It can be combined with `showEnterButton` */
|
|
625
|
+
setOnEnterKey?: boolean;
|
|
626
|
+
/** Options for `select`. If not defiled, the `common.states` in the object must exist. */
|
|
627
|
+
options?: (string | ConfigItemSelectOption)[];
|
|
596
628
|
}
|
|
597
629
|
export interface ConfigItemTextSendTo extends Omit<ConfigItem, 'data'> {
|
|
598
630
|
type: 'textSendTo';
|
|
@@ -654,6 +686,8 @@ export interface ConfigItemTable extends ConfigItem {
|
|
|
654
686
|
uniqueColumns?: string[];
|
|
655
687
|
/** These items will be encrypted before saving with simple (not SHA) encryption method */
|
|
656
688
|
encryptedAttributes?: string[];
|
|
689
|
+
/** Breakpoint that will be rendered as cards */
|
|
690
|
+
useCardFor?: ('xs' | 'sm' | 'md' | 'lg' | 'xl')[];
|
|
657
691
|
}
|
|
658
692
|
export interface ConfigItemTimePicker extends ConfigItem {
|
|
659
693
|
type: 'timePicker';
|
|
@@ -718,6 +752,11 @@ export interface ConfigItemCheckLicense extends ConfigItem {
|
|
|
718
752
|
variant?: 'text' | 'outlined' | 'contained';
|
|
719
753
|
color?: 'primary' | 'secondary';
|
|
720
754
|
}
|
|
755
|
+
export interface ConfigItemCheckDocker extends ConfigItem {
|
|
756
|
+
type: 'checkDocker';
|
|
757
|
+
/** Hide the version of docker */
|
|
758
|
+
hideVersion?: boolean;
|
|
759
|
+
}
|
|
721
760
|
export interface ConfigItemUUID extends ConfigItem {
|
|
722
761
|
type: 'uuid';
|
|
723
762
|
}
|
|
@@ -727,6 +766,12 @@ export interface ConfigItemJsonEditor extends ConfigItem {
|
|
|
727
766
|
validateJson?: boolean;
|
|
728
767
|
/** if true, the JSON will be validated only if the value is not empty */
|
|
729
768
|
allowEmpty?: boolean;
|
|
769
|
+
/** Allow JSON5 format. Default is disabled */
|
|
770
|
+
json5?: boolean;
|
|
771
|
+
/** Do not allow to save the value if error in JSON or JSON5 */
|
|
772
|
+
doNotApplyWithError?: boolean;
|
|
773
|
+
/** Open the editor in read-only mode - editor can be opened but content cannot be modified */
|
|
774
|
+
readOnly?: boolean;
|
|
730
775
|
}
|
|
731
776
|
export interface ConfigItemInterface extends ConfigItem {
|
|
732
777
|
type: 'interface';
|
|
@@ -815,7 +860,7 @@ export interface ConfigItemFileSelector extends ConfigItem {
|
|
|
815
860
|
/** Do not show the size of files */
|
|
816
861
|
noSize?: boolean;
|
|
817
862
|
}
|
|
818
|
-
export type ConfigItemAny = ConfigItemAlive | ConfigItemAutocomplete | ConfigItemAutocompleteSendTo | ConfigItemPanel | ConfigItemTabs | ConfigItemText | ConfigItemNumber | ConfigItemColor | ConfigItemCheckbox | ConfigItemSlider | ConfigItemIP | ConfigItemUser | ConfigItemRoom | ConfigItemFunc | ConfigItemSelect | ConfigItemAccordion | ConfigItemCoordinates | ConfigItemDivider | ConfigItemHeader | ConfigItemCustom | ConfigItemDatePicker | ConfigItemDeviceManager | ConfigItemLanguage | ConfigItemPort | ConfigItemSendTo | ConfigItemState | ConfigItemTable | ConfigItemTimePicker | ConfigItemTextSendTo | ConfigItemSelectSendTo | ConfigItemCertCollection | ConfigItemCertificateSelect | ConfigItemCertificates | ConfigItemUUID | ConfigItemCheckLicense | ConfigItemPattern | ConfigItemChip | ConfigItemCRON | ConfigItemFile | ConfigItemFileSelector | ConfigItemImageSendTo | ConfigItemInstanceSelect | ConfigItemImageUpload | ConfigItemInterface | ConfigItemJsonEditor | ConfigItemLicense | ConfigItemPassword | ConfigItemSetState | ConfigItemStaticDivider | ConfigItemStaticHeader | ConfigItemStaticInfo | ConfigItemStaticImage | ConfigItemStaticText | ConfigItemTopic | ConfigItemObjectId | ConfigItemQrCode;
|
|
863
|
+
export type ConfigItemAny = ConfigItemAlive | ConfigItemAutocomplete | ConfigItemAutocompleteSendTo | ConfigItemPanel | ConfigItemTabs | ConfigItemText | ConfigItemNumber | ConfigItemOAuth2 | ConfigItemColor | ConfigItemCheckbox | ConfigItemSlider | ConfigItemIP | ConfigItemInfoBox | ConfigItemUser | ConfigItemRoom | ConfigItemFunc | ConfigItemSelect | ConfigItemAccordion | ConfigItemCoordinates | ConfigItemDivider | ConfigItemHeader | ConfigItemCustom | ConfigItemDatePicker | ConfigItemDeviceManager | ConfigItemLanguage | ConfigItemPort | ConfigItemSendTo | ConfigItemState | ConfigItemTable | ConfigItemTimePicker | ConfigItemTextSendTo | ConfigItemSelectSendTo | ConfigItemCertCollection | ConfigItemCertificateSelect | ConfigItemCertificates | ConfigItemUUID | ConfigItemCheckDocker | ConfigItemCheckLicense | ConfigItemPattern | ConfigItemChip | ConfigItemCRON | ConfigItemFile | ConfigItemFileSelector | ConfigItemImageSendTo | ConfigItemInstanceSelect | ConfigItemImageUpload | ConfigItemInterface | ConfigItemJsonEditor | ConfigItemLicense | ConfigItemPassword | ConfigItemSetState | ConfigItemStaticDivider | ConfigItemStaticHeader | ConfigItemStaticInfo | ConfigItemStaticImage | ConfigItemStaticText | ConfigItemTopic | ConfigItemObjectId | ConfigItemQrCode;
|
|
819
864
|
export type BackEndCommandType = 'nop' | 'refresh' | 'link' | 'message';
|
|
820
865
|
export interface BackEndCommandGeneric {
|
|
821
866
|
command: BackEndCommandType;
|
|
@@ -852,6 +897,19 @@ export interface BackEndCommandMessage extends BackEndCommandGeneric {
|
|
|
852
897
|
variant: 'popup' | 'dialog';
|
|
853
898
|
}
|
|
854
899
|
export type BackEndCommand = BackEndCommandMessage | BackEndCommandOpenLink | BackEndCommandRefresh;
|
|
900
|
+
export type ActionButton = {
|
|
901
|
+
label: ioBroker.StringOrTranslated;
|
|
902
|
+
type: 'apply' | 'cancel' | 'copyToClipboard';
|
|
903
|
+
noTranslation?: boolean;
|
|
904
|
+
/** base64 or icon name */
|
|
905
|
+
icon?: ConfigIconType;
|
|
906
|
+
variant?: 'contained' | 'outlined' | 'text';
|
|
907
|
+
style?: Record<string, number | string>;
|
|
908
|
+
/** Name of the attribute in data that should be copied to clipboard */
|
|
909
|
+
color?: 'primary' | 'secondary';
|
|
910
|
+
/** Name of the attribute in data that should be copied to clipboard */
|
|
911
|
+
copyToClipboardAttr?: string;
|
|
912
|
+
};
|
|
855
913
|
export type BackEndCommandJsonFormOptions = {
|
|
856
914
|
data?: JsonFormData;
|
|
857
915
|
title?: ioBroker.StringOrTranslated;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iobroker/dm-utils",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"description": "ioBroker Device Manager utilities for backend",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"publishConfig": {
|
|
@@ -22,15 +22,15 @@
|
|
|
22
22
|
"author": "UncleSamSwiss",
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@iobroker/adapter-core": "^3.2
|
|
25
|
+
"@iobroker/adapter-core": "^3.3.2"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@alcalzone/release-script": "^
|
|
29
|
-
"@alcalzone/release-script-plugin-license": "^
|
|
30
|
-
"@iobroker/eslint-config": "^
|
|
31
|
-
"@types/node": "^
|
|
32
|
-
"axios": "^1.
|
|
33
|
-
"typescript": "
|
|
28
|
+
"@alcalzone/release-script": "^5.0.0",
|
|
29
|
+
"@alcalzone/release-script-plugin-license": "^4.0.0",
|
|
30
|
+
"@iobroker/eslint-config": "^2.2.0",
|
|
31
|
+
"@types/node": "^24.9.1",
|
|
32
|
+
"axios": "^1.12.2",
|
|
33
|
+
"typescript": "~5.9.3"
|
|
34
34
|
},
|
|
35
35
|
"files": [
|
|
36
36
|
"LICENSE",
|