@iobroker/js-controller-adapter 6.0.10-alpha.0-20240804-d9be20474 → 6.0.10
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/LICENSE +1 -1
- package/README.md +1 -1
- package/build/cjs/lib/_Types.d.ts +1 -1
- package/build/cjs/lib/adapter/adapter.d.ts +12 -0
- package/build/cjs/lib/adapter/adapter.js +59 -81
- package/build/cjs/lib/adapter/adapter.js.map +2 -2
- package/build/esm/lib/_Types.d.ts +1 -1
- package/build/esm/lib/_Types.d.ts.map +1 -1
- package/build/esm/lib/adapter/adapter.d.ts +12 -0
- package/build/esm/lib/adapter/adapter.d.ts.map +1 -1
- package/build/esm/lib/adapter/adapter.js +82 -109
- package/build/esm/lib/adapter/adapter.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +10 -10
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -173,7 +173,7 @@ export interface InternalFormatDateOptions {
|
|
|
173
173
|
_format?: string;
|
|
174
174
|
}
|
|
175
175
|
export interface AliasDetails {
|
|
176
|
-
source
|
|
176
|
+
source?: AliasDetailsSource;
|
|
177
177
|
targets: AliasTargetEntry[];
|
|
178
178
|
}
|
|
179
179
|
export interface AliasDetailsSource {
|
|
@@ -727,7 +727,19 @@ export declare class AdapterClass extends EventEmitter {
|
|
|
727
727
|
getForeignStates(pattern: Pattern, callback: ioBroker.GetStatesCallback): void;
|
|
728
728
|
getForeignStates(pattern: Pattern, options: unknown, callback: ioBroker.GetStatesCallback): void;
|
|
729
729
|
private _getForeignStates;
|
|
730
|
+
/**
|
|
731
|
+
* Add subscription for given alias, if it is not a state it will be ignored
|
|
732
|
+
*
|
|
733
|
+
* @param aliasObj the alias object
|
|
734
|
+
* @param pattern pattern to subscribe for
|
|
735
|
+
*/
|
|
730
736
|
private _addAliasSubscribe;
|
|
737
|
+
/**
|
|
738
|
+
* Remove an alias subscribe
|
|
739
|
+
*
|
|
740
|
+
* @param sourceId id of the source object
|
|
741
|
+
* @param aliasObjOrIdx the alias target or the index of the targets array
|
|
742
|
+
*/
|
|
731
743
|
private _removeAliasSubscribe;
|
|
732
744
|
subscribeForeignStates(pattern: Pattern, callback?: ioBroker.ErrorCallback): void;
|
|
733
745
|
subscribeForeignStates(pattern: Pattern, options: unknown, callback?: ioBroker.ErrorCallback): void;
|
|
@@ -4923,85 +4923,63 @@ class AdapterClass extends import_node_events.EventEmitter {
|
|
|
4923
4923
|
}
|
|
4924
4924
|
}
|
|
4925
4925
|
}
|
|
4926
|
-
async _addAliasSubscribe(aliasObj, pattern
|
|
4927
|
-
if (aliasObj
|
|
4928
|
-
|
|
4929
|
-
|
|
4930
|
-
|
|
4931
|
-
);
|
|
4932
|
-
return import_js_controller_common.tools.maybeCallbackWithError(
|
|
4933
|
-
callback,
|
|
4934
|
-
new Error(`Expected alias ${aliasObj._id} to be of type "state", got "${aliasObj.type}"`)
|
|
4935
|
-
);
|
|
4936
|
-
}
|
|
4937
|
-
const sourceId = import_js_controller_common.tools.isObject(aliasObj.common.alias.id) ? aliasObj.common.alias.id.read : aliasObj.common.alias.id;
|
|
4938
|
-
try {
|
|
4939
|
-
this._utils.validateId(sourceId, true, null);
|
|
4940
|
-
} catch (e) {
|
|
4941
|
-
this._logger.warn(`${this.namespaceLog} Error validating alias id of ${aliasObj._id}: ${e.message}`);
|
|
4942
|
-
return import_js_controller_common.tools.maybeCallbackWithError(callback, new Error(`Error validating alias id of ${aliasObj._id}: ${e.message}`));
|
|
4943
|
-
}
|
|
4944
|
-
let aliasDetails;
|
|
4945
|
-
if (!this.aliases.has(sourceId)) {
|
|
4946
|
-
aliasDetails = { source: null, targets: [] };
|
|
4947
|
-
this.aliases.set(sourceId, aliasDetails);
|
|
4948
|
-
} else {
|
|
4949
|
-
aliasDetails = this.aliases.get(sourceId) || { source: null, targets: [] };
|
|
4950
|
-
}
|
|
4951
|
-
const targetEntry = {
|
|
4952
|
-
alias: (0, import_deep_clone.default)(aliasObj.common.alias),
|
|
4953
|
-
id: aliasObj._id,
|
|
4954
|
-
pattern,
|
|
4955
|
-
type: aliasObj.common.type,
|
|
4956
|
-
max: aliasObj.common.max,
|
|
4957
|
-
min: aliasObj.common.min,
|
|
4958
|
-
unit: aliasObj.common.unit
|
|
4959
|
-
};
|
|
4960
|
-
aliasDetails.targets.push(targetEntry);
|
|
4961
|
-
if (!aliasDetails.source) {
|
|
4962
|
-
let sourceObj;
|
|
4963
|
-
try {
|
|
4964
|
-
await this.#states.subscribe(sourceId);
|
|
4965
|
-
sourceObj = await this.#objects.getObject(sourceId, { user: import_constants.SYSTEM_ADMIN_USER });
|
|
4966
|
-
} catch (e) {
|
|
4967
|
-
return import_js_controller_common.tools.maybeCallbackWithError(callback, e);
|
|
4968
|
-
}
|
|
4969
|
-
if (sourceObj?.common) {
|
|
4970
|
-
if (!this.aliases.has(sourceObj._id)) {
|
|
4971
|
-
this._logger.error(`${this.namespaceLog} Alias subscription error. Please check your alias definitions: sourceId=${sourceId}, sourceObj=${JSON.stringify(sourceObj)}`);
|
|
4972
|
-
} else {
|
|
4973
|
-
aliasDetails.source = {
|
|
4974
|
-
min: sourceObj.common.min,
|
|
4975
|
-
max: sourceObj.common.max,
|
|
4976
|
-
type: sourceObj.common.type,
|
|
4977
|
-
unit: sourceObj.common.unit
|
|
4978
|
-
};
|
|
4979
|
-
}
|
|
4980
|
-
}
|
|
4981
|
-
return import_js_controller_common.tools.maybeCallback(callback);
|
|
4982
|
-
} else {
|
|
4983
|
-
return import_js_controller_common.tools.maybeCallback(callback);
|
|
4984
|
-
}
|
|
4985
|
-
} else if (aliasObj && aliasObj.type === "state") {
|
|
4926
|
+
async _addAliasSubscribe(aliasObj, pattern) {
|
|
4927
|
+
if (aliasObj.type !== "state") {
|
|
4928
|
+
return;
|
|
4929
|
+
}
|
|
4930
|
+
if (!aliasObj.common?.alias?.id) {
|
|
4986
4931
|
this._logger.warn(`${this.namespaceLog} Alias ${aliasObj._id} has no target 5`);
|
|
4987
|
-
|
|
4932
|
+
throw new Error(`Alias ${aliasObj._id} has no target`);
|
|
4933
|
+
}
|
|
4934
|
+
const sourceId = import_js_controller_common.tools.isObject(aliasObj.common.alias.id) ? aliasObj.common.alias.id.read : aliasObj.common.alias.id;
|
|
4935
|
+
try {
|
|
4936
|
+
this._utils.validateId(sourceId, true, null);
|
|
4937
|
+
} catch (e) {
|
|
4938
|
+
throw new Error(`Error validating alias id of ${aliasObj._id}: ${e.message}`);
|
|
4939
|
+
}
|
|
4940
|
+
const targetEntry = {
|
|
4941
|
+
alias: (0, import_deep_clone.default)(aliasObj.common.alias),
|
|
4942
|
+
id: aliasObj._id,
|
|
4943
|
+
pattern,
|
|
4944
|
+
type: aliasObj.common.type,
|
|
4945
|
+
max: aliasObj.common.max,
|
|
4946
|
+
min: aliasObj.common.min,
|
|
4947
|
+
unit: aliasObj.common.unit
|
|
4948
|
+
};
|
|
4949
|
+
let aliasDetails;
|
|
4950
|
+
if (!this.aliases.has(sourceId)) {
|
|
4951
|
+
aliasDetails = { targets: [] };
|
|
4952
|
+
this.aliases.set(sourceId, aliasDetails);
|
|
4988
4953
|
} else {
|
|
4989
|
-
|
|
4954
|
+
aliasDetails = this.aliases.get(sourceId);
|
|
4955
|
+
}
|
|
4956
|
+
if (!aliasDetails.source) {
|
|
4957
|
+
await this.#states.subscribe(sourceId);
|
|
4958
|
+
const sourceObj = await this.#objects.getObject(sourceId, { user: import_constants.SYSTEM_ADMIN_USER });
|
|
4959
|
+
if (sourceObj?.common && this.aliases.has(sourceObj._id)) {
|
|
4960
|
+
aliasDetails.source = {
|
|
4961
|
+
min: sourceObj.common.min,
|
|
4962
|
+
max: sourceObj.common.max,
|
|
4963
|
+
type: sourceObj.common.type,
|
|
4964
|
+
unit: sourceObj.common.unit
|
|
4965
|
+
};
|
|
4966
|
+
}
|
|
4990
4967
|
}
|
|
4968
|
+
aliasDetails.targets.push(targetEntry);
|
|
4991
4969
|
}
|
|
4992
|
-
async _removeAliasSubscribe(sourceId,
|
|
4970
|
+
async _removeAliasSubscribe(sourceId, aliasObjOrIdx) {
|
|
4993
4971
|
if (!this.aliases.has(sourceId)) {
|
|
4994
|
-
return
|
|
4972
|
+
return;
|
|
4995
4973
|
}
|
|
4996
|
-
const
|
|
4974
|
+
const alias = this.aliases.get(sourceId);
|
|
4975
|
+
const pos = typeof aliasObjOrIdx === "number" ? aliasObjOrIdx : alias.targets.indexOf(aliasObjOrIdx);
|
|
4997
4976
|
if (pos !== -1) {
|
|
4998
|
-
|
|
4999
|
-
if (!
|
|
4977
|
+
alias.targets.splice(pos, 1);
|
|
4978
|
+
if (!alias.targets.length) {
|
|
5000
4979
|
this.aliases.delete(sourceId);
|
|
5001
4980
|
await this.#states.unsubscribe(sourceId);
|
|
5002
4981
|
}
|
|
5003
4982
|
}
|
|
5004
|
-
return import_js_controller_common.tools.maybeCallback(callback);
|
|
5005
4983
|
}
|
|
5006
4984
|
subscribeForeignStates(pattern, options, callback) {
|
|
5007
4985
|
pattern = pattern || "*";
|
|
@@ -5076,7 +5054,7 @@ class AdapterClass extends import_node_events.EventEmitter {
|
|
|
5076
5054
|
const aliasObjs = await this._getObjectsByArray(aliasesIds, options);
|
|
5077
5055
|
for (const aliasObj of aliasObjs) {
|
|
5078
5056
|
if (aliasObj) {
|
|
5079
|
-
promises.push(
|
|
5057
|
+
promises.push(this._addAliasSubscribe(aliasObj, aliasObj._id));
|
|
5080
5058
|
}
|
|
5081
5059
|
}
|
|
5082
5060
|
}
|
|
@@ -5106,7 +5084,7 @@ class AdapterClass extends import_node_events.EventEmitter {
|
|
|
5106
5084
|
for (const id of Object.keys(objs)) {
|
|
5107
5085
|
if (id.startsWith(import_constants.ALIAS_STARTS_WITH)) {
|
|
5108
5086
|
const aliasObj = objs[id];
|
|
5109
|
-
promises.push(
|
|
5087
|
+
promises.push(this._addAliasSubscribe(aliasObj, pattern));
|
|
5110
5088
|
}
|
|
5111
5089
|
}
|
|
5112
5090
|
try {
|
|
@@ -5136,9 +5114,10 @@ class AdapterClass extends import_node_events.EventEmitter {
|
|
|
5136
5114
|
this.#objects.subscribe(`${import_constants.ALIAS_STARTS_WITH}*`);
|
|
5137
5115
|
}
|
|
5138
5116
|
try {
|
|
5139
|
-
const aliasObj = await this.#objects.
|
|
5117
|
+
const aliasObj = await this.#objects.getObject(pattern, options);
|
|
5140
5118
|
if (aliasObj) {
|
|
5141
|
-
await this._addAliasSubscribe(aliasObj, pattern
|
|
5119
|
+
await this._addAliasSubscribe(aliasObj, pattern);
|
|
5120
|
+
return import_js_controller_common.tools.maybeCallback(callback);
|
|
5142
5121
|
} else {
|
|
5143
5122
|
return import_js_controller_common.tools.maybeCallback(callback);
|
|
5144
5123
|
}
|
|
@@ -5993,13 +5972,12 @@ class AdapterClass extends import_node_events.EventEmitter {
|
|
|
5993
5972
|
if (obj?.common?.alias?.id) {
|
|
5994
5973
|
const newSourceId = typeof obj.common.alias.id.read === "string" ? obj.common.alias.id.read : obj.common.alias.id;
|
|
5995
5974
|
if (newSourceId !== sourceId) {
|
|
5996
|
-
this._removeAliasSubscribe(sourceId, targetAlias
|
|
5997
|
-
|
|
5998
|
-
|
|
5999
|
-
|
|
6000
|
-
|
|
6001
|
-
|
|
6002
|
-
});
|
|
5975
|
+
await this._removeAliasSubscribe(sourceId, targetAlias);
|
|
5976
|
+
try {
|
|
5977
|
+
await this._addAliasSubscribe(obj, targetAlias.pattern);
|
|
5978
|
+
} catch (e) {
|
|
5979
|
+
this._logger.error(`${this.namespaceLog} Could not add alias subscription: ${e.message}`);
|
|
5980
|
+
}
|
|
6003
5981
|
} else {
|
|
6004
5982
|
targetAlias.min = obj.common.min;
|
|
6005
5983
|
targetAlias.max = obj.common.max;
|
|
@@ -6007,11 +5985,11 @@ class AdapterClass extends import_node_events.EventEmitter {
|
|
|
6007
5985
|
targetAlias.alias = (0, import_deep_clone.default)(obj.common.alias);
|
|
6008
5986
|
}
|
|
6009
5987
|
} else {
|
|
6010
|
-
this._removeAliasSubscribe(sourceId, targetAlias);
|
|
5988
|
+
await this._removeAliasSubscribe(sourceId, targetAlias);
|
|
6011
5989
|
}
|
|
6012
5990
|
}
|
|
6013
5991
|
}
|
|
6014
|
-
if (isNewAlias) {
|
|
5992
|
+
if (isNewAlias && obj) {
|
|
6015
5993
|
for (const aliasPattern of this.aliasPatterns) {
|
|
6016
5994
|
const testPattern = aliasPattern.slice(-1) === "*" ? new RegExp(import_js_controller_common.tools.pattern2RegEx(aliasPattern)) : aliasPattern;
|
|
6017
5995
|
if (typeof testPattern === "string" && aliasPattern === id || testPattern instanceof RegExp && testPattern.test(id)) {
|