node-opcua-alias-name-server 2.183.1 → 2.184.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/dist/add_alias.d.ts +1 -0
- package/dist/add_alias.d.ts.map +1 -0
- package/dist/add_alias.js +33 -40
- package/dist/add_alias.js.map +1 -1
- package/dist/address_space_alias_store.d.ts +1 -0
- package/dist/address_space_alias_store.d.ts.map +1 -0
- package/dist/address_space_alias_store.js +47 -51
- package/dist/address_space_alias_store.js.map +1 -1
- package/dist/alias_hierarchy.d.ts +1 -0
- package/dist/alias_hierarchy.d.ts.map +1 -0
- package/dist/alias_hierarchy.js +17 -27
- package/dist/alias_hierarchy.js.map +1 -1
- package/dist/alias_index.d.ts +1 -0
- package/dist/alias_index.d.ts.map +1 -0
- package/dist/alias_index.js +10 -16
- package/dist/alias_index.js.map +1 -1
- package/dist/alias_name_archive.d.ts +1 -0
- package/dist/alias_name_archive.d.ts.map +1 -0
- package/dist/alias_name_archive.js +11 -16
- package/dist/alias_name_archive.js.map +1 -1
- package/dist/bind_alias_category.d.ts +1 -0
- package/dist/bind_alias_category.d.ts.map +1 -0
- package/dist/bind_alias_category.js +44 -55
- package/dist/bind_alias_category.js.map +1 -1
- package/dist/bind_configuration_methods.d.ts +1 -0
- package/dist/bind_configuration_methods.d.ts.map +1 -0
- package/dist/bind_configuration_methods.js +23 -27
- package/dist/bind_configuration_methods.js.map +1 -1
- package/dist/bind_find_alias.d.ts +1 -0
- package/dist/bind_find_alias.d.ts.map +1 -0
- package/dist/bind_find_alias.js +26 -31
- package/dist/bind_find_alias.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -54
- package/dist/index.js.map +1 -1
- package/dist/install_alias_names.d.ts +1 -0
- package/dist/install_alias_names.d.ts.map +1 -0
- package/dist/install_alias_names.js +21 -28
- package/dist/install_alias_names.js.map +1 -1
- package/dist/last_change.d.ts +1 -0
- package/dist/last_change.d.ts.map +1 -0
- package/dist/last_change.js +20 -24
- package/dist/last_change.js.map +1 -1
- package/dist/well_known.d.ts +1 -0
- package/dist/well_known.d.ts.map +1 -0
- package/dist/well_known.js +32 -35
- package/dist/well_known.js.map +1 -1
- package/package.json +15 -14
- package/source/bind_find_alias.ts +1 -1
package/dist/add_alias.d.ts
CHANGED
|
@@ -71,3 +71,4 @@ export declare function removeAlias(addressSpace: IAddressSpace, category: UAObj
|
|
|
71
71
|
* was not good enough.
|
|
72
72
|
*/
|
|
73
73
|
export declare function findAlias(addressSpace: IAddressSpace, category: UAObject, aliasName: string): UAObject | null;
|
|
74
|
+
//# sourceMappingURL=add_alias.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add_alias.d.ts","sourceRoot":"","sources":["../source/add_alias.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAgB,MAAM,+BAA+B,CAAC;AAErG,OAAO,EAAE,KAAK,MAAM,EAAyB,MAAM,mBAAmB,CAAC;AAMvE,+DAA+D;AAC/D,qBAAa,cAAe,SAAQ,KAAK;IACrC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACJ;AAED,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CACpB,YAAY,EAAE,aAAa,EAC3B,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,QAAQ,GAAG,MAAM,EACzB,OAAO,CAAC,EAAE,eAAe,GAC1B,QAAQ,CAyDV;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACvB,YAAY,EAAE,aAAa,EAC3B,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAC3B,OAAO,CA+BT;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAE7G"}
|
package/dist/add_alias.js
CHANGED
|
@@ -1,29 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @module node-opcua-alias-name-server
|
|
4
3
|
*
|
|
5
4
|
* Creating and removing `AliasNameType` instances from code, for Servers whose
|
|
6
5
|
* address space is built programmatically rather than loaded from a NodeSet2.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const node_opcua_nodeid_1 = require("node-opcua-nodeid");
|
|
15
|
-
const alias_hierarchy_js_1 = require("./alias_hierarchy.js");
|
|
16
|
-
const alias_index_js_1 = require("./alias_index.js");
|
|
17
|
-
const bind_alias_category_js_1 = require("./bind_alias_category.js");
|
|
18
|
-
const well_known_js_1 = require("./well_known.js");
|
|
7
|
+
import { BrowseDirection, NodeClass } from "node-opcua-data-model";
|
|
8
|
+
import { NodeId as NodeIdClass } from "node-opcua-nodeid";
|
|
9
|
+
import { findAliasNameType } from "./alias_hierarchy.js";
|
|
10
|
+
import { lookupAlias, noteAliasAdded, noteAliasRemoved } from "./alias_index.js";
|
|
11
|
+
import { getInstalledAliasNames } from "./bind_alias_category.js";
|
|
12
|
+
import { ALIAS_FOR, ALIAS_NAME_CATEGORY_TYPE, PUBLISHED_DATA_SET_TYPE, WellKnownCategories } from "./well_known.js";
|
|
19
13
|
/** Raised when an alias would break a rule of OPC 10000-17. */
|
|
20
|
-
class AliasNameError extends Error {
|
|
14
|
+
export class AliasNameError extends Error {
|
|
21
15
|
constructor(message) {
|
|
22
16
|
super(message);
|
|
23
17
|
this.name = "AliasNameError";
|
|
24
18
|
}
|
|
25
19
|
}
|
|
26
|
-
exports.AliasNameError = AliasNameError;
|
|
27
20
|
/**
|
|
28
21
|
* Add an `AliasNameType` instance under `category`, naming `target`.
|
|
29
22
|
*
|
|
@@ -43,7 +36,7 @@ exports.AliasNameError = AliasNameError;
|
|
|
43
36
|
* Adding the same (name, target) twice returns the existing node rather than
|
|
44
37
|
* creating a duplicate.
|
|
45
38
|
*/
|
|
46
|
-
function addAlias(addressSpace, category, aliasName, target, options) {
|
|
39
|
+
export function addAlias(addressSpace, category, aliasName, target, options) {
|
|
47
40
|
const categoryNode = coerceCategory(addressSpace, category);
|
|
48
41
|
const referenceTypeId = coerceReferenceType(addressSpace, options?.referenceType);
|
|
49
42
|
if (!aliasName) {
|
|
@@ -53,7 +46,7 @@ function addAlias(addressSpace, category, aliasName, target, options) {
|
|
|
53
46
|
// neither resolved nor checked against the category restrictions.
|
|
54
47
|
let targetNodeId;
|
|
55
48
|
if (options?.allowUnresolvedTarget) {
|
|
56
|
-
targetNodeId = target instanceof
|
|
49
|
+
targetNodeId = target instanceof NodeIdClass ? target : target.nodeId;
|
|
57
50
|
}
|
|
58
51
|
else {
|
|
59
52
|
const targetNode = coerceTarget(addressSpace, target);
|
|
@@ -66,7 +59,7 @@ function addAlias(addressSpace, category, aliasName, target, options) {
|
|
|
66
59
|
// and the same name may name several Nodes; adding a target that is
|
|
67
60
|
// already there is a no-op rather than an error
|
|
68
61
|
const alreadyLinked = existing
|
|
69
|
-
.findReferencesEx(
|
|
62
|
+
.findReferencesEx(ALIAS_FOR, BrowseDirection.Forward)
|
|
70
63
|
.some((reference) => reference.nodeId.toString() === targetNodeId.toString());
|
|
71
64
|
if (!alreadyLinked) {
|
|
72
65
|
existing.addReference({ referenceType: referenceTypeId, nodeId: targetNodeId });
|
|
@@ -76,7 +69,7 @@ function addAlias(addressSpace, category, aliasName, target, options) {
|
|
|
76
69
|
}
|
|
77
70
|
return existing;
|
|
78
71
|
}
|
|
79
|
-
const aliasNameType =
|
|
72
|
+
const aliasNameType = findAliasNameType(addressSpace);
|
|
80
73
|
if (!aliasNameType) {
|
|
81
74
|
throw new AliasNameError("addAlias: AliasNameType (i=23455) is not in the address space");
|
|
82
75
|
}
|
|
@@ -91,7 +84,7 @@ function addAlias(addressSpace, category, aliasName, target, options) {
|
|
|
91
84
|
namespace
|
|
92
85
|
});
|
|
93
86
|
alias.addReference({ referenceType: referenceTypeId, nodeId: targetNodeId });
|
|
94
|
-
|
|
87
|
+
noteAliasAdded(addressSpace, categoryNode, aliasName, alias.nodeId);
|
|
95
88
|
// clause 6.3.1: "an AliasName was added to [...] the AliasNameCategory"
|
|
96
89
|
notifyAliasChanged(addressSpace, categoryNode.nodeId);
|
|
97
90
|
return alias;
|
|
@@ -105,7 +98,7 @@ function addAlias(addressSpace, category, aliasName, target, options) {
|
|
|
105
98
|
*
|
|
106
99
|
* @returns true when something was removed.
|
|
107
100
|
*/
|
|
108
|
-
function removeAlias(addressSpace, category, aliasName, target) {
|
|
101
|
+
export function removeAlias(addressSpace, category, aliasName, target) {
|
|
109
102
|
const categoryNode = coerceCategory(addressSpace, category);
|
|
110
103
|
const alias = findAlias(addressSpace, categoryNode, aliasName);
|
|
111
104
|
if (!alias) {
|
|
@@ -113,12 +106,12 @@ function removeAlias(addressSpace, category, aliasName, target) {
|
|
|
113
106
|
}
|
|
114
107
|
if (!target) {
|
|
115
108
|
addressSpace.deleteNode(alias.nodeId);
|
|
116
|
-
|
|
109
|
+
noteAliasRemoved(addressSpace, categoryNode, aliasName);
|
|
117
110
|
notifyAliasChanged(addressSpace, categoryNode.nodeId);
|
|
118
111
|
return true;
|
|
119
112
|
}
|
|
120
|
-
const targetNodeId = target instanceof
|
|
121
|
-
const references = alias.findReferencesEx(
|
|
113
|
+
const targetNodeId = target instanceof NodeIdClass ? target : target.nodeId;
|
|
114
|
+
const references = alias.findReferencesEx(ALIAS_FOR, BrowseDirection.Forward);
|
|
122
115
|
const match = references.find((reference) => reference.nodeId.toString() === targetNodeId.toString());
|
|
123
116
|
if (!match) {
|
|
124
117
|
return false;
|
|
@@ -126,7 +119,7 @@ function removeAlias(addressSpace, category, aliasName, target) {
|
|
|
126
119
|
if (references.length === 1) {
|
|
127
120
|
// the last target: the alias itself goes (clause 7.2)
|
|
128
121
|
addressSpace.deleteNode(alias.nodeId);
|
|
129
|
-
|
|
122
|
+
noteAliasRemoved(addressSpace, categoryNode, aliasName);
|
|
130
123
|
notifyAliasChanged(addressSpace, categoryNode.nodeId);
|
|
131
124
|
return true;
|
|
132
125
|
}
|
|
@@ -141,8 +134,8 @@ function removeAlias(addressSpace, category, aliasName, target) {
|
|
|
141
134
|
* Backed by a per-category index — see {@link lookupAlias} for why a plain scan
|
|
142
135
|
* was not good enough.
|
|
143
136
|
*/
|
|
144
|
-
function findAlias(addressSpace, category, aliasName) {
|
|
145
|
-
return
|
|
137
|
+
export function findAlias(addressSpace, category, aliasName) {
|
|
138
|
+
return lookupAlias(addressSpace, category, aliasName);
|
|
146
139
|
}
|
|
147
140
|
/**
|
|
148
141
|
* Enforce the target restrictions of clauses 9.3 and 9.4.
|
|
@@ -156,15 +149,15 @@ function findAlias(addressSpace, category, aliasName) {
|
|
|
156
149
|
* below `TagVariables` is still "in the TagVariables hierarchy" (clause 9.3).
|
|
157
150
|
*/
|
|
158
151
|
function assertTargetAllowedInCategory(addressSpace, category, target) {
|
|
159
|
-
if (isWithin(addressSpace, category,
|
|
160
|
-
if (target.nodeClass !==
|
|
152
|
+
if (isWithin(addressSpace, category, WellKnownCategories.TagVariables)) {
|
|
153
|
+
if (target.nodeClass !== NodeClass.Variable) {
|
|
161
154
|
throw new AliasNameError(`addAlias: TagVariables restricts targets to Variables (OPC 10000-17 clause 9.3); ` +
|
|
162
|
-
`${target.browseName.toString()} is a ${
|
|
155
|
+
`${target.browseName.toString()} is a ${NodeClass[target.nodeClass]}`);
|
|
163
156
|
}
|
|
164
157
|
}
|
|
165
|
-
if (isWithin(addressSpace, category,
|
|
166
|
-
const publishedDataSetType = addressSpace.findObjectType(
|
|
167
|
-
const typeDefinition = target.nodeClass ===
|
|
158
|
+
if (isWithin(addressSpace, category, WellKnownCategories.Topics)) {
|
|
159
|
+
const publishedDataSetType = addressSpace.findObjectType(PUBLISHED_DATA_SET_TYPE);
|
|
160
|
+
const typeDefinition = target.nodeClass === NodeClass.Object ? target.typeDefinitionObj : null;
|
|
168
161
|
const ok = publishedDataSetType &&
|
|
169
162
|
typeDefinition &&
|
|
170
163
|
(typeDefinition.nodeId.value === publishedDataSetType.nodeId.value || typeDefinition.isSubtypeOf(publishedDataSetType));
|
|
@@ -190,7 +183,7 @@ function isWithin(addressSpace, category, ancestorNodeId) {
|
|
|
190
183
|
if (key === ancestor.nodeId.toString()) {
|
|
191
184
|
return true;
|
|
192
185
|
}
|
|
193
|
-
for (const parent of node.findReferencesExAsObject("HierarchicalReferences",
|
|
186
|
+
for (const parent of node.findReferencesExAsObject("HierarchicalReferences", BrowseDirection.Inverse)) {
|
|
194
187
|
if (walkUp(parent)) {
|
|
195
188
|
return true;
|
|
196
189
|
}
|
|
@@ -201,15 +194,15 @@ function isWithin(addressSpace, category, ancestorNodeId) {
|
|
|
201
194
|
}
|
|
202
195
|
/** Accept either a category node or its NodeId. */
|
|
203
196
|
function coerceCategory(addressSpace, category) {
|
|
204
|
-
if (!(category instanceof
|
|
197
|
+
if (!(category instanceof NodeIdClass)) {
|
|
205
198
|
return category;
|
|
206
199
|
}
|
|
207
200
|
const node = addressSpace.findNode(category);
|
|
208
|
-
if (!node || node.nodeClass !==
|
|
201
|
+
if (!node || node.nodeClass !== NodeClass.Object) {
|
|
209
202
|
throw new AliasNameError(`addAlias: ${category.toString()} is not an Object in this address space`);
|
|
210
203
|
}
|
|
211
204
|
const typeDefinition = node.typeDefinitionObj;
|
|
212
|
-
const categoryType = addressSpace.findObjectType(
|
|
205
|
+
const categoryType = addressSpace.findObjectType(ALIAS_NAME_CATEGORY_TYPE);
|
|
213
206
|
if (categoryType &&
|
|
214
207
|
typeDefinition &&
|
|
215
208
|
typeDefinition.nodeId.value !== categoryType.nodeId.value &&
|
|
@@ -220,7 +213,7 @@ function coerceCategory(addressSpace, category) {
|
|
|
220
213
|
}
|
|
221
214
|
/** Accept either a target node or its NodeId. */
|
|
222
215
|
function coerceTarget(addressSpace, target) {
|
|
223
|
-
if (!(target instanceof
|
|
216
|
+
if (!(target instanceof NodeIdClass)) {
|
|
224
217
|
return target;
|
|
225
218
|
}
|
|
226
219
|
const node = addressSpace.findNode(target);
|
|
@@ -232,13 +225,13 @@ function coerceTarget(addressSpace, target) {
|
|
|
232
225
|
/** Resolve the ReferenceType, defaulting to `AliasFor` (clause 8.2). */
|
|
233
226
|
function coerceReferenceType(addressSpace, referenceType) {
|
|
234
227
|
if (!referenceType) {
|
|
235
|
-
return
|
|
228
|
+
return ALIAS_FOR;
|
|
236
229
|
}
|
|
237
230
|
const resolved = typeof referenceType === "string" ? addressSpace.findReferenceType(referenceType)?.nodeId : referenceType;
|
|
238
231
|
if (!resolved) {
|
|
239
232
|
throw new AliasNameError(`addAlias: unknown ReferenceType ${String(referenceType)}`);
|
|
240
233
|
}
|
|
241
|
-
const aliasFor = addressSpace.findReferenceType(
|
|
234
|
+
const aliasFor = addressSpace.findReferenceType(ALIAS_FOR);
|
|
242
235
|
const candidate = addressSpace.findReferenceType(resolved);
|
|
243
236
|
if (aliasFor && candidate && candidate.nodeId.value !== aliasFor.nodeId.value && !candidate.isSubtypeOf(aliasFor)) {
|
|
244
237
|
throw new AliasNameError(`addAlias: ${candidate.browseName.toString()} is not AliasFor or a subtype of it (OPC 10000-17 clause 8.2)`);
|
|
@@ -256,7 +249,7 @@ function coerceReferenceType(addressSpace, referenceType) {
|
|
|
256
249
|
* failing to persist must not fail the caller's add.
|
|
257
250
|
*/
|
|
258
251
|
function notifyAliasChanged(addressSpace, categoryNodeId) {
|
|
259
|
-
const installed =
|
|
252
|
+
const installed = getInstalledAliasNames(addressSpace);
|
|
260
253
|
void installed?.lastChange?.touch(categoryNodeId);
|
|
261
254
|
}
|
|
262
255
|
//# sourceMappingURL=add_alias.js.map
|
package/dist/add_alias.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add_alias.js","sourceRoot":"","sources":["../source/add_alias.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add_alias.js","sourceRoot":"","sources":["../source/add_alias.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address_space_alias_store.d.ts","sourceRoot":"","sources":["../source/address_space_alias_store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EACH,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAInB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAkB,KAAK,MAAM,EAA0C,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,wBAAwB,CAAC;AA8BtE,MAAM,WAAW,6BAA6B;IAC1C,wDAAwD;IACxD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAgBD,qBAAa,sBAAuB,YAAW,WAAW;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;IAC3C,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAElE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,YAAY,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,6BAA6B,EAI/E;IAED;;;;;;;;;;OAUG;IACU,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA2D1D;IAED,kFAAkF;IAC3E,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAUhD;IAED;;;;;;OAMG;IACI,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAKjE;IAED,kFAAkF;IAC3E,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAI1E;IAED,qEAAqE;IAC9D,kBAAkB,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEnD;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAuCtE;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,iBAAiB,CAAC,EAAE,GAAG,UAAU,EAAE,CAyChH;IAED,mDAAmD;IACnD,OAAO,CAAC,QAAQ;IAqBhB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAYjB,gEAAgE;IAChE,OAAO,CAAC,SAAS;IAQjB,kEAAkE;IAClE,OAAO,CAAC,cAAc;IAMtB;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAOlC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,SAAS;CAWpB"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @module node-opcua-alias-name-server
|
|
4
3
|
*
|
|
@@ -9,15 +8,13 @@
|
|
|
9
8
|
* instances answers `FindAlias` correctly with nothing else configured. The
|
|
10
9
|
* address space *is* the database.
|
|
11
10
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const alias_hierarchy_js_1 = require("./alias_hierarchy.js");
|
|
20
|
-
const well_known_js_1 = require("./well_known.js");
|
|
11
|
+
import { LikePattern, maxVersionTime, nowVersionTime } from "node-opcua-alias-name-common";
|
|
12
|
+
import { BrowseDirection, NodeClass } from "node-opcua-data-model";
|
|
13
|
+
import { ExpandedNodeId, NodeId as NodeIdClass } from "node-opcua-nodeid";
|
|
14
|
+
import { StatusCodes } from "node-opcua-status-code";
|
|
15
|
+
import { addAlias, findAlias, removeAlias } from "./add_alias.js";
|
|
16
|
+
import { aliasesOf, collectCategories } from "./alias_hierarchy.js";
|
|
17
|
+
import { ALIAS_FOR } from "./well_known.js";
|
|
21
18
|
/**
|
|
22
19
|
* An ExpandedNodeId as a NodeId on this Server, dropping the ServerIndex.
|
|
23
20
|
*
|
|
@@ -40,17 +37,17 @@ function toLocalNodeId(addressSpace, nodeId) {
|
|
|
40
37
|
}
|
|
41
38
|
namespaceIndex = resolved;
|
|
42
39
|
}
|
|
43
|
-
return new
|
|
40
|
+
return new NodeIdClass(nodeId.identifierType, nodeId.value, namespaceIndex);
|
|
44
41
|
}
|
|
45
42
|
/** Turn a local NodeId into an ExpandedNodeId with the namespace URI filled in. */
|
|
46
43
|
function toExpandedNodeId(addressSpace, nodeId) {
|
|
47
44
|
const namespaceUri = nodeId.namespace === 0 ? null : addressSpace.getNamespaceUri(nodeId.namespace);
|
|
48
|
-
return new
|
|
45
|
+
return new ExpandedNodeId(nodeId.identifierType, nodeId.value, nodeId.namespace, namespaceUri,
|
|
49
46
|
// clause 7.3: the ServerIndex is carried separately in ServerUris, and
|
|
50
47
|
// clause 6.3.4 Table 9 says an incoming ServerIndex is ignored anyway
|
|
51
48
|
0);
|
|
52
49
|
}
|
|
53
|
-
class AddressSpaceAliasStore {
|
|
50
|
+
export class AddressSpaceAliasStore {
|
|
54
51
|
addressSpace;
|
|
55
52
|
likeOptions;
|
|
56
53
|
/** Per-category `LastChange`, as a VersionTime (clause 6.3.1). */
|
|
@@ -74,12 +71,12 @@ class AddressSpaceAliasStore {
|
|
|
74
71
|
*/
|
|
75
72
|
async find(query) {
|
|
76
73
|
const root = this.addressSpace.findNode(query.categoryNodeId);
|
|
77
|
-
if (!root || root.nodeClass !==
|
|
74
|
+
if (!root || root.nodeClass !== NodeClass.Object) {
|
|
78
75
|
return [];
|
|
79
76
|
}
|
|
80
77
|
// an invalid pattern throws InvalidLikePatternError, which the Method
|
|
81
78
|
// binding turns into Bad_InvalidArgument (clause 6.3.2 Table 4)
|
|
82
|
-
const pattern = new
|
|
79
|
+
const pattern = new LikePattern(query.pattern, this.likeOptions);
|
|
83
80
|
const referenceTypeFilter = this.resolveReferenceTypeFilter(query.referenceTypeFilter);
|
|
84
81
|
const entries = [];
|
|
85
82
|
// Stop one past the cap. The caller only needs to know that the cap was
|
|
@@ -87,7 +84,7 @@ class AddressSpaceAliasStore {
|
|
|
87
84
|
// -- and on a Server with a large tag set, a `%` pattern would build the
|
|
88
85
|
// entire result set purely to throw it away with Bad_ResponseTooLarge.
|
|
89
86
|
const collectLimit = query.maxResults === undefined ? Number.POSITIVE_INFINITY : query.maxResults + 1;
|
|
90
|
-
for (const category of
|
|
87
|
+
for (const category of collectCategories(this.addressSpace, root)) {
|
|
91
88
|
if (entries.length >= collectLimit) {
|
|
92
89
|
break;
|
|
93
90
|
}
|
|
@@ -98,7 +95,7 @@ class AddressSpaceAliasStore {
|
|
|
98
95
|
if (query.isVisible && !(await query.isVisible(category.nodeId))) {
|
|
99
96
|
continue;
|
|
100
97
|
}
|
|
101
|
-
for (const alias of
|
|
98
|
+
for (const alias of aliasesOf(this.addressSpace, category)) {
|
|
102
99
|
if (entries.length >= collectLimit) {
|
|
103
100
|
break;
|
|
104
101
|
}
|
|
@@ -132,12 +129,12 @@ class AddressSpaceAliasStore {
|
|
|
132
129
|
/** `LastChange` for a category, rolled up from its descendants (clause 6.3.1). */
|
|
133
130
|
lastChange(categoryNodeId) {
|
|
134
131
|
const root = this.addressSpace.findNode(categoryNodeId);
|
|
135
|
-
if (!root || root.nodeClass !==
|
|
132
|
+
if (!root || root.nodeClass !== NodeClass.Object) {
|
|
136
133
|
return this.lastChangeByCategory.get(categoryNodeId.toString()) ?? 0;
|
|
137
134
|
}
|
|
138
135
|
let latest = 0;
|
|
139
|
-
for (const category of
|
|
140
|
-
latest =
|
|
136
|
+
for (const category of collectCategories(this.addressSpace, root)) {
|
|
137
|
+
latest = maxVersionTime(latest, this.lastChangeByCategory.get(category.nodeId.toString()) ?? 0);
|
|
141
138
|
}
|
|
142
139
|
return latest;
|
|
143
140
|
}
|
|
@@ -149,9 +146,9 @@ class AddressSpaceAliasStore {
|
|
|
149
146
|
* anything having to be recomputed.
|
|
150
147
|
*/
|
|
151
148
|
touch(categoryNodeId, versionTime) {
|
|
152
|
-
const value = versionTime ??
|
|
149
|
+
const value = versionTime ?? nowVersionTime();
|
|
153
150
|
const key = categoryNodeId.toString();
|
|
154
|
-
this.lastChangeByCategory.set(key,
|
|
151
|
+
this.lastChangeByCategory.set(key, maxVersionTime(this.lastChangeByCategory.get(key) ?? 0, value));
|
|
155
152
|
return value;
|
|
156
153
|
}
|
|
157
154
|
/** Restore persisted `LastChange` values (clause 6.3.1: "shall be persisted"). */
|
|
@@ -185,8 +182,8 @@ class AddressSpaceAliasStore {
|
|
|
185
182
|
*/
|
|
186
183
|
add(categoryNodeId, entries) {
|
|
187
184
|
const category = this.addressSpace.findNode(categoryNodeId);
|
|
188
|
-
if (!category || category.nodeClass !==
|
|
189
|
-
return entries.map(() =>
|
|
185
|
+
if (!category || category.nodeClass !== NodeClass.Object) {
|
|
186
|
+
return entries.map(() => StatusCodes.BadNodeIdUnknown);
|
|
190
187
|
}
|
|
191
188
|
const categoryNode = category;
|
|
192
189
|
// duplicates repeated *within* this call are ignored too, so the set
|
|
@@ -196,21 +193,21 @@ class AddressSpaceAliasStore {
|
|
|
196
193
|
const target = entry.referencedNodes[0];
|
|
197
194
|
const serverUri = entry.serverUris[0] ?? null;
|
|
198
195
|
if (!target) {
|
|
199
|
-
return
|
|
196
|
+
return StatusCodes.BadNodeIdInvalid;
|
|
200
197
|
}
|
|
201
198
|
if (!entry.aliasName) {
|
|
202
|
-
return
|
|
199
|
+
return StatusCodes.BadNodeIdInvalid;
|
|
203
200
|
}
|
|
204
201
|
const key = `${entry.aliasName}${target.toString()}${serverUri ?? ""}`;
|
|
205
202
|
if (seenInThisCall.has(key)) {
|
|
206
|
-
return
|
|
203
|
+
return StatusCodes.Good;
|
|
207
204
|
}
|
|
208
205
|
seenInThisCall.add(key);
|
|
209
206
|
// Table 9: the ServerIndex inside the ExpandedNodeId is ignored;
|
|
210
207
|
// TargetServers is authoritative
|
|
211
208
|
if (serverUri !== null) {
|
|
212
209
|
if (!this.allowRemoteTargets) {
|
|
213
|
-
return
|
|
210
|
+
return StatusCodes.BadNotSupported;
|
|
214
211
|
}
|
|
215
212
|
return this.addRemote(categoryNode, entry, target, serverUri);
|
|
216
213
|
}
|
|
@@ -230,64 +227,64 @@ class AddressSpaceAliasStore {
|
|
|
230
227
|
*/
|
|
231
228
|
delete(categoryNodeId, entries) {
|
|
232
229
|
const category = this.addressSpace.findNode(categoryNodeId);
|
|
233
|
-
if (!category || category.nodeClass !==
|
|
234
|
-
return entries.map(() =>
|
|
230
|
+
if (!category || category.nodeClass !== NodeClass.Object) {
|
|
231
|
+
return entries.map(() => StatusCodes.BadNotFound);
|
|
235
232
|
}
|
|
236
233
|
const categoryNode = category;
|
|
237
234
|
return entries.map((entry) => {
|
|
238
|
-
const alias =
|
|
235
|
+
const alias = findAlias(this.addressSpace, categoryNode, entry.aliasName);
|
|
239
236
|
if (!alias) {
|
|
240
|
-
return
|
|
237
|
+
return StatusCodes.BadNotFound;
|
|
241
238
|
}
|
|
242
239
|
// an alias whose targets all live on other Servers was learned from
|
|
243
240
|
// elsewhere and is not ours to delete
|
|
244
241
|
if (this.isForeign(alias)) {
|
|
245
|
-
return
|
|
242
|
+
return StatusCodes.BadInvalidState;
|
|
246
243
|
}
|
|
247
244
|
const requested = entry.referencedNodes ?? [];
|
|
248
245
|
if (requested.length === 0) {
|
|
249
246
|
// "all AliasNames with the provided name are deleted"
|
|
250
|
-
|
|
251
|
-
return
|
|
247
|
+
removeAlias(this.addressSpace, categoryNode, entry.aliasName);
|
|
248
|
+
return StatusCodes.Good;
|
|
252
249
|
}
|
|
253
250
|
// all or nothing: check every requested target is present first
|
|
254
|
-
const references = alias.findReferencesEx(
|
|
251
|
+
const references = alias.findReferencesEx(ALIAS_FOR, BrowseDirection.Forward);
|
|
255
252
|
const present = new Set(references.map((r) => r.nodeId.toString()));
|
|
256
253
|
const wanted = [];
|
|
257
254
|
for (const target of requested) {
|
|
258
255
|
const local = toLocalNodeId(this.addressSpace, target);
|
|
259
256
|
if (!local || !present.has(local.toString())) {
|
|
260
|
-
return
|
|
257
|
+
return StatusCodes.BadNotFound;
|
|
261
258
|
}
|
|
262
259
|
wanted.push(local);
|
|
263
260
|
}
|
|
264
261
|
for (const target of wanted) {
|
|
265
|
-
|
|
262
|
+
removeAlias(this.addressSpace, categoryNode, entry.aliasName, target);
|
|
266
263
|
}
|
|
267
|
-
return
|
|
264
|
+
return StatusCodes.Good;
|
|
268
265
|
});
|
|
269
266
|
}
|
|
270
267
|
/** Add an alias whose target is on this Server. */
|
|
271
268
|
addLocal(category, entry, target) {
|
|
272
269
|
const localNodeId = toLocalNodeId(this.addressSpace, target);
|
|
273
270
|
if (!localNodeId) {
|
|
274
|
-
return
|
|
271
|
+
return StatusCodes.BadNodeIdInvalid;
|
|
275
272
|
}
|
|
276
273
|
if (!this.addressSpace.findNode(localNodeId)) {
|
|
277
274
|
// Table 10: "The TargetNode does not exist in the AliasName Server
|
|
278
275
|
// and the TargetServer is the local server"
|
|
279
|
-
return
|
|
276
|
+
return StatusCodes.BadNodeIdUnknown;
|
|
280
277
|
}
|
|
281
278
|
try {
|
|
282
|
-
|
|
279
|
+
addAlias(this.addressSpace, category, entry.aliasName, localNodeId, {
|
|
283
280
|
referenceType: entry.referenceTypeIds[0]
|
|
284
281
|
});
|
|
285
282
|
}
|
|
286
283
|
catch {
|
|
287
284
|
// a category restriction (clause 9.3 / 9.4) refused the target
|
|
288
|
-
return
|
|
285
|
+
return StatusCodes.BadNodeIdInvalid;
|
|
289
286
|
}
|
|
290
|
-
return
|
|
287
|
+
return StatusCodes.Good;
|
|
291
288
|
}
|
|
292
289
|
/**
|
|
293
290
|
* Add an alias whose target is on another Server.
|
|
@@ -298,19 +295,19 @@ class AddressSpaceAliasStore {
|
|
|
298
295
|
*/
|
|
299
296
|
addRemote(category, entry, target, _serverUri) {
|
|
300
297
|
try {
|
|
301
|
-
|
|
298
|
+
addAlias(this.addressSpace, category, entry.aliasName, target, {
|
|
302
299
|
referenceType: entry.referenceTypeIds[0],
|
|
303
300
|
allowUnresolvedTarget: true
|
|
304
301
|
});
|
|
305
302
|
}
|
|
306
303
|
catch {
|
|
307
|
-
return
|
|
304
|
+
return StatusCodes.BadNodeIdInvalid;
|
|
308
305
|
}
|
|
309
|
-
return
|
|
306
|
+
return StatusCodes.UncertainReferenceOutOfServer;
|
|
310
307
|
}
|
|
311
308
|
/** True when none of the alias's targets are on this Server. */
|
|
312
309
|
isForeign(alias) {
|
|
313
|
-
const references = alias.findReferencesEx(
|
|
310
|
+
const references = alias.findReferencesEx(ALIAS_FOR, BrowseDirection.Forward);
|
|
314
311
|
if (references.length === 0) {
|
|
315
312
|
return false;
|
|
316
313
|
}
|
|
@@ -348,13 +345,12 @@ class AddressSpaceAliasStore {
|
|
|
348
345
|
* are not things the alias names.
|
|
349
346
|
*/
|
|
350
347
|
targetsOf(alias, referenceTypeFilter) {
|
|
351
|
-
const referenceType = referenceTypeFilter ??
|
|
352
|
-
const references = alias.findReferencesEx(referenceType,
|
|
348
|
+
const referenceType = referenceTypeFilter ?? ALIAS_FOR;
|
|
349
|
+
const references = alias.findReferencesEx(referenceType, BrowseDirection.Forward);
|
|
353
350
|
return references.map((reference) => ({
|
|
354
351
|
expandedNodeId: toExpandedNodeId(this.addressSpace, reference.nodeId),
|
|
355
352
|
referenceTypeId: reference.referenceType
|
|
356
353
|
}));
|
|
357
354
|
}
|
|
358
355
|
}
|
|
359
|
-
exports.AddressSpaceAliasStore = AddressSpaceAliasStore;
|
|
360
356
|
//# sourceMappingURL=address_space_alias_store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address_space_alias_store.js","sourceRoot":"","sources":["../source/address_space_alias_store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"address_space_alias_store.js","sourceRoot":"","sources":["../source/address_space_alias_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,3 +43,4 @@ export declare function aliasesOf(addressSpace: IAddressSpace, category: UAObjec
|
|
|
43
43
|
export declare function collectAllCategories(addressSpace: IAddressSpace, additionalRoots?: Array<NodeId | UAObject>): UAObject[];
|
|
44
44
|
/** The NodeIds of the well-known categories present in this address space. */
|
|
45
45
|
export declare function presentWellKnownCategories(addressSpace: IAddressSpace): NodeId[];
|
|
46
|
+
//# sourceMappingURL=alias_hierarchy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alias_hierarchy.d.ts","sourceRoot":"","sources":["../source/alias_hierarchy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAErG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAehD,oFAAoF;AACpF,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI,CAE1F;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI,CAElF;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAExF;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEhF;AAaD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAoBzF;AAED,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAQrF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAwBxH;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,EAAE,CAEhF"}
|