@iobroker/adapter-react-v5 3.2.6 → 3.3.0
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/Components/ComplexCron.js.map +1 -1
- package/Components/FileBrowser.js +1 -1
- package/Components/FileBrowser.js.map +1 -1
- package/Components/FileViewer.js.map +1 -1
- package/Components/IconSelector.js +1 -1
- package/Components/IconSelector.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTabs.js.map +1 -1
- package/Components/JsonConfigComponent/index.js.map +1 -1
- package/Components/ObjectBrowser.js +23 -17
- package/Components/ObjectBrowser.js.map +1 -1
- package/Components/SimpleCron/index.js.map +1 -1
- package/Components/TreeTable.js.map +1 -1
- package/Components/Utils.d.ts +20 -0
- package/Components/Utils.js +98 -9
- package/Components/Utils.js.map +1 -1
- package/Connection.d.ts +27 -0
- package/Connection.js +122 -7
- package/Connection.js.map +1 -1
- package/Dialogs/ComplexCron.js +1 -1
- package/Dialogs/ComplexCron.js.map +1 -1
- package/Dialogs/Confirm.d.ts +1 -0
- package/Dialogs/Confirm.js +3 -2
- package/Dialogs/Confirm.js.map +1 -1
- package/Dialogs/Cron.js +1 -1
- package/Dialogs/Cron.js.map +1 -1
- package/Dialogs/Error.d.ts +1 -0
- package/Dialogs/Error.js +3 -2
- package/Dialogs/Error.js.map +1 -1
- package/Dialogs/FileSelect.js +1 -1
- package/Dialogs/FileSelect.js.map +1 -1
- package/Dialogs/Message.d.ts +1 -0
- package/Dialogs/Message.js +2 -1
- package/Dialogs/Message.js.map +1 -1
- package/Dialogs/SimpleCron.js +1 -1
- package/Dialogs/SimpleCron.js.map +1 -1
- package/Dialogs/TextInput.d.ts +1 -0
- package/Dialogs/TextInput.js +5 -3
- package/Dialogs/TextInput.js.map +1 -1
- package/GenericApp.js +1 -1
- package/GenericApp.js.map +1 -1
- package/README.md +14 -8
- package/Theme.js.map +1 -1
- package/package.json +1 -1
package/Connection.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/** Converts ioB pattern into regex
|
|
2
|
+
* @param {string} pattern
|
|
3
|
+
* @returns {string}
|
|
4
|
+
*/
|
|
5
|
+
export function pattern2RegEx(pattern: string): string;
|
|
1
6
|
export namespace PROGRESS {
|
|
2
7
|
const CONNECTING: number;
|
|
3
8
|
const CONNECTED: number;
|
|
@@ -47,6 +52,7 @@ declare class Connection {
|
|
|
47
52
|
reg: RegExp;
|
|
48
53
|
cbs: import('./types').ObjectChangeHandler[];
|
|
49
54
|
}>;
|
|
55
|
+
filesSubscribes: {};
|
|
50
56
|
onProgress: (progress: number) => void;
|
|
51
57
|
onError: (err: any) => void;
|
|
52
58
|
loaded: boolean;
|
|
@@ -143,6 +149,27 @@ declare class Connection {
|
|
|
143
149
|
* @returns {Promise<void>}
|
|
144
150
|
*/
|
|
145
151
|
unsubscribeObject(id: string, cb: import('./types').ObjectChangeHandler): Promise<void>;
|
|
152
|
+
/**
|
|
153
|
+
* Called internally.
|
|
154
|
+
* @param id
|
|
155
|
+
* @param fileName
|
|
156
|
+
* @param size
|
|
157
|
+
*/
|
|
158
|
+
fileChange(id: any, fileName: any, size: any): void;
|
|
159
|
+
/**
|
|
160
|
+
* Subscribe to changes of the files.
|
|
161
|
+
* @param {string} id The ioBroker state ID for meat object. Could be a pattern
|
|
162
|
+
* @param {string} filePattern Pattern or file name, like 'main/*' or 'main/visViews.json`
|
|
163
|
+
* @param {function} cb The callback.
|
|
164
|
+
*/
|
|
165
|
+
subscribeFiles(id: string, filePattern: string, cb: Function): Promise<void>;
|
|
166
|
+
/**
|
|
167
|
+
* Unsubscribes the given callback from changes of files.
|
|
168
|
+
* @param {string} id The ioBroker state ID.
|
|
169
|
+
* @param {string} filePattern Pattern or file name, like 'main/*' or 'main/visViews.json`
|
|
170
|
+
* @param {function} cb The callback.
|
|
171
|
+
*/
|
|
172
|
+
unsubscribeFiles(id: string, filePattern: string, cb: Function): void;
|
|
146
173
|
/**
|
|
147
174
|
* Called internally.
|
|
148
175
|
* @private
|
package/Connection.js
CHANGED
|
@@ -5,17 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = exports.PROGRESS = exports.ERRORS = void 0;
|
|
8
|
+
exports.pattern2RegEx = pattern2RegEx;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* MIT License
|
|
16
|
-
*
|
|
17
|
-
**/
|
|
18
|
-
|
|
15
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
16
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
17
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
19
18
|
/** Possible progress states. */
|
|
20
19
|
var PROGRESS = {
|
|
21
20
|
/** The socket is connecting. */
|
|
@@ -69,6 +68,19 @@ function fixAdminUI(obj) {
|
|
|
69
68
|
}
|
|
70
69
|
return obj;
|
|
71
70
|
}
|
|
71
|
+
|
|
72
|
+
/** Converts ioB pattern into regex
|
|
73
|
+
* @param {string} pattern
|
|
74
|
+
* @returns {string}
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
function pattern2RegEx(pattern) {
|
|
78
|
+
pattern = (pattern || '').toString();
|
|
79
|
+
var startsWithWildcard = pattern[0] === '*';
|
|
80
|
+
var endsWithWildcard = pattern[pattern.length - 1] === '*';
|
|
81
|
+
pattern = pattern.replace(/[-/\\^$+?.()|[\]{}]/g, '\\$&').replace(/\*/g, '.*');
|
|
82
|
+
return (startsWithWildcard ? '' : '^') + pattern + (endsWithWildcard ? '' : '$');
|
|
83
|
+
}
|
|
72
84
|
var Connection = /*#__PURE__*/function () {
|
|
73
85
|
/**
|
|
74
86
|
* @param {import('./types').ConnectionProps} props
|
|
@@ -111,6 +123,7 @@ var Connection = /*#__PURE__*/function () {
|
|
|
111
123
|
|
|
112
124
|
/** @type {Record<string, { reg: RegExp; cbs: import('./types').ObjectChangeHandler[]}>} */
|
|
113
125
|
this.objectsSubscribes = {}; // subscribe for objects
|
|
126
|
+
this.filesSubscribes = {}; // subscribe for files
|
|
114
127
|
this.onProgress = this.props.onProgress || function () {};
|
|
115
128
|
this.onError = this.props.onError || function (err) {
|
|
116
129
|
console.error(err);
|
|
@@ -326,6 +339,11 @@ var Connection = /*#__PURE__*/function () {
|
|
|
326
339
|
return _this2.stateChange(id, state);
|
|
327
340
|
}, 0);
|
|
328
341
|
});
|
|
342
|
+
this._socket.on('fileChange', function (id, fileName, size) {
|
|
343
|
+
return setTimeout(function () {
|
|
344
|
+
return _this2.fileChange(id, fileName, size);
|
|
345
|
+
}, 0);
|
|
346
|
+
});
|
|
329
347
|
this._socket.on('cmdStdout', function (id, text) {
|
|
330
348
|
return _this2.onCmdStdoutHandler && _this2.onCmdStdoutHandler(id, text);
|
|
331
349
|
});
|
|
@@ -637,6 +655,103 @@ var Connection = /*#__PURE__*/function () {
|
|
|
637
655
|
return Promise.resolve();
|
|
638
656
|
}
|
|
639
657
|
|
|
658
|
+
/**
|
|
659
|
+
* Called internally.
|
|
660
|
+
* @param id
|
|
661
|
+
* @param fileName
|
|
662
|
+
* @param size
|
|
663
|
+
*/
|
|
664
|
+
}, {
|
|
665
|
+
key: "fileChange",
|
|
666
|
+
value: function fileChange(id, fileName, size) {
|
|
667
|
+
for (var _i = 0, _Object$values = Object.values(this.filesSubscribes); _i < _Object$values.length; _i++) {
|
|
668
|
+
var sub = _Object$values[_i];
|
|
669
|
+
if (sub.regId.test(id) && sub.regFilePattern.test(fileName)) {
|
|
670
|
+
var _iterator = _createForOfIteratorHelper(sub.cbs),
|
|
671
|
+
_step;
|
|
672
|
+
try {
|
|
673
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
674
|
+
var cb = _step.value;
|
|
675
|
+
cb(id, fileName, size);
|
|
676
|
+
}
|
|
677
|
+
} catch (err) {
|
|
678
|
+
_iterator.e(err);
|
|
679
|
+
} finally {
|
|
680
|
+
_iterator.f();
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* Subscribe to changes of the files.
|
|
688
|
+
* @param {string} id The ioBroker state ID for meat object. Could be a pattern
|
|
689
|
+
* @param {string} filePattern Pattern or file name, like 'main/*' or 'main/visViews.json`
|
|
690
|
+
* @param {function} cb The callback.
|
|
691
|
+
*/
|
|
692
|
+
}, {
|
|
693
|
+
key: "subscribeFiles",
|
|
694
|
+
value: function () {
|
|
695
|
+
var _subscribeFiles = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(id, filePattern, cb) {
|
|
696
|
+
var key;
|
|
697
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
698
|
+
while (1) {
|
|
699
|
+
switch (_context.prev = _context.next) {
|
|
700
|
+
case 0:
|
|
701
|
+
if (!(typeof cb !== 'function')) {
|
|
702
|
+
_context.next = 2;
|
|
703
|
+
break;
|
|
704
|
+
}
|
|
705
|
+
throw new Error('The state change handler must be a function!');
|
|
706
|
+
case 2:
|
|
707
|
+
key = "".concat(id, "$%$").concat(filePattern);
|
|
708
|
+
if (!this.filesSubscribes[key]) {
|
|
709
|
+
this.filesSubscribes[key] = {
|
|
710
|
+
regId: new RegExp(pattern2RegEx(id)),
|
|
711
|
+
regFilePattern: new RegExp(pattern2RegEx(filePattern)),
|
|
712
|
+
cbs: [cb]
|
|
713
|
+
};
|
|
714
|
+
this.connected && this._socket.emit('subscribeFiles', id, filePattern);
|
|
715
|
+
} else {
|
|
716
|
+
!this.filesSubscribes[key].cbs.includes(cb) && this.filesSubscribes[key].cbs.push(cb);
|
|
717
|
+
}
|
|
718
|
+
case 4:
|
|
719
|
+
case "end":
|
|
720
|
+
return _context.stop();
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
}, _callee, this);
|
|
724
|
+
}));
|
|
725
|
+
function subscribeFiles(_x, _x2, _x3) {
|
|
726
|
+
return _subscribeFiles.apply(this, arguments);
|
|
727
|
+
}
|
|
728
|
+
return subscribeFiles;
|
|
729
|
+
}()
|
|
730
|
+
/**
|
|
731
|
+
* Unsubscribes the given callback from changes of files.
|
|
732
|
+
* @param {string} id The ioBroker state ID.
|
|
733
|
+
* @param {string} filePattern Pattern or file name, like 'main/*' or 'main/visViews.json`
|
|
734
|
+
* @param {function} cb The callback.
|
|
735
|
+
*/
|
|
736
|
+
}, {
|
|
737
|
+
key: "unsubscribeFiles",
|
|
738
|
+
value: function unsubscribeFiles(id, filePattern, cb) {
|
|
739
|
+
var key = "".concat(id, "$%$").concat(filePattern);
|
|
740
|
+
if (this.filesSubscribes[key]) {
|
|
741
|
+
var sub = this.filesSubscribes[key];
|
|
742
|
+
if (cb) {
|
|
743
|
+
var pos = sub.cbs.indexOf(cb);
|
|
744
|
+
pos !== -1 && sub.cbs.splice(pos, 1);
|
|
745
|
+
} else {
|
|
746
|
+
sub.cbs = [];
|
|
747
|
+
}
|
|
748
|
+
if (!sub.cbs || !sub.cbs.length) {
|
|
749
|
+
delete this.filesSubscribes[key];
|
|
750
|
+
this.connected && this._socket.emit('unsubscribeFiles', id, filePattern);
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
|
|
640
755
|
/**
|
|
641
756
|
* Called internally.
|
|
642
757
|
* @private
|