node-opcua-address-space 2.86.1 → 2.87.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/source/index.d.ts +1 -0
- package/dist/source/index.js +1 -0
- package/dist/source/index.js.map +1 -1
- package/dist/src/base_node_private.js +7 -6
- package/dist/src/base_node_private.js.map +1 -1
- package/dist/src/index_current.d.ts +1 -0
- package/dist/src/index_current.js +1 -0
- package/dist/src/index_current.js.map +1 -1
- package/dist/src/namespace_impl.js +7 -4
- package/dist/src/namespace_impl.js.map +1 -1
- package/dist/src/nodeid_manager.d.ts +6 -6
- package/dist/src/nodeid_manager.js +71 -97
- package/dist/src/nodeid_manager.js.map +1 -1
- package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +14 -0
- package/dist/src/nodeset_tools/construct_namespace_dependency.js +21 -1
- package/dist/src/nodeset_tools/construct_namespace_dependency.js.map +1 -1
- package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +1 -3
- package/dist/src/nodeset_tools/nodeset_to_xml.js +24 -10
- package/dist/src/nodeset_tools/nodeset_to_xml.js.map +1 -1
- package/dist/src/private_namespace.d.ts +5 -0
- package/dist/src/private_namespace.js +20 -0
- package/dist/src/private_namespace.js.map +1 -0
- package/dist/src/ua_reference_type_impl.d.ts +1 -1
- package/package.json +17 -17
- package/source/index.ts +1 -0
- package/src/base_node_private.ts +52 -48
- package/src/index_current.ts +1 -0
- package/src/namespace_impl.ts +23 -20
- package/src/nodeid_manager.ts +84 -100
- package/src/nodeset_tools/construct_namespace_dependency.ts +30 -9
- package/src/nodeset_tools/nodeset_to_xml.ts +30 -14
- package/src/private_namespace.ts +18 -0
|
@@ -9,6 +9,7 @@ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
|
|
|
9
9
|
const node_opcua_debug_1 = require("node-opcua-debug");
|
|
10
10
|
const base_node_impl_1 = require("./base_node_impl");
|
|
11
11
|
const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
|
|
12
|
+
const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
|
|
12
13
|
exports.NamespaceOptions = {
|
|
13
14
|
nodeIdNameSeparator: "-"
|
|
14
15
|
};
|
|
@@ -19,11 +20,13 @@ const regExp1 = /^(s|i|b|g)=/;
|
|
|
19
20
|
const regExp2 = /^ns=[0-9]+;(s|i|b|g)=/;
|
|
20
21
|
const hasPropertyRefId = (0, node_opcua_nodeid_1.resolveNodeId)("HasProperty");
|
|
21
22
|
const hasComponentRefId = (0, node_opcua_nodeid_1.resolveNodeId)("HasComponent");
|
|
23
|
+
const hasOrderedComponentRefId = (0, node_opcua_nodeid_1.resolveNodeId)("HasOrderedComponent");
|
|
22
24
|
const hasEncoding = (0, node_opcua_nodeid_1.resolveNodeId)("HasEncoding");
|
|
23
25
|
function _identifyParentInReference(references) {
|
|
24
26
|
const candidates = references.filter((r) => {
|
|
25
27
|
return (!r.isForward &&
|
|
26
28
|
((0, node_opcua_nodeid_1.sameNodeId)(r.referenceType, hasComponentRefId) ||
|
|
29
|
+
(0, node_opcua_nodeid_1.sameNodeId)(r.referenceType, hasOrderedComponentRefId) ||
|
|
27
30
|
(0, node_opcua_nodeid_1.sameNodeId)(r.referenceType, hasPropertyRefId) ||
|
|
28
31
|
(0, node_opcua_nodeid_1.sameNodeId)(r.referenceType, hasEncoding)));
|
|
29
32
|
});
|
|
@@ -37,32 +40,48 @@ function _identifyParentInReference(references) {
|
|
|
37
40
|
}
|
|
38
41
|
return [ref.nodeId, ""];
|
|
39
42
|
}
|
|
43
|
+
function _findParentNodeId(addressSpace, options) {
|
|
44
|
+
if (!options.references) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
for (const ref of options.references) {
|
|
48
|
+
ref._referenceType = addressSpace.findReferenceType(ref.referenceType);
|
|
49
|
+
/* istanbul ignore next */
|
|
50
|
+
if (!(0, base_node_impl_1.getReferenceType)(ref)) {
|
|
51
|
+
throw new Error("Cannot find referenceType " + JSON.stringify(ref));
|
|
52
|
+
}
|
|
53
|
+
ref.referenceType = ref._referenceType.nodeId;
|
|
54
|
+
}
|
|
55
|
+
// find HasComponent, or has Property reverse
|
|
56
|
+
return _identifyParentInReference(options.references);
|
|
57
|
+
}
|
|
58
|
+
function prepareName(browseName) {
|
|
59
|
+
const m = browseName.name.toString().replace(/[ ]/g, "").replace(/(<|>)/g, "");
|
|
60
|
+
return m;
|
|
61
|
+
}
|
|
40
62
|
class NodeIdManager {
|
|
41
63
|
constructor(namespaceIndex, addressSpace) {
|
|
42
|
-
this.
|
|
43
|
-
this.
|
|
64
|
+
this._cacheSymbolicName = {};
|
|
65
|
+
this._cacheSymbolicNameRev = new Set();
|
|
44
66
|
this._internal_id_counter = 1000;
|
|
45
67
|
this.namespaceIndex = namespaceIndex;
|
|
46
68
|
this.addressSpace = addressSpace;
|
|
47
69
|
}
|
|
48
|
-
setCache(cache) {
|
|
49
|
-
this._cache = {};
|
|
50
|
-
this._reverseCache = {};
|
|
51
|
-
for (const [key, value, nodeClass] of cache) {
|
|
52
|
-
this._addInCache(key, value, nodeClass);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
70
|
setSymbols(symbols) {
|
|
56
71
|
function convertNodeClass(nodeClass) {
|
|
57
72
|
return node_opcua_data_model_1.NodeClass[nodeClass];
|
|
58
73
|
}
|
|
59
74
|
const symbols2 = symbols.map((e) => [e[0], e[1], convertNodeClass(e[2])]);
|
|
60
|
-
|
|
75
|
+
for (const [name, value, nodeClass] of symbols2) {
|
|
76
|
+
this._cacheSymbolicName[name] = [value, nodeClass];
|
|
77
|
+
this._cacheSymbolicNameRev.add(value);
|
|
78
|
+
}
|
|
61
79
|
}
|
|
62
80
|
getSymbols() {
|
|
63
81
|
const line = [];
|
|
64
|
-
for (const [key, value] of Object.entries(this.
|
|
65
|
-
const
|
|
82
|
+
for (const [key, [value, nodeClass1]] of Object.entries(this._cacheSymbolicName)) {
|
|
83
|
+
const node = this.addressSpace.findNode((0, node_opcua_nodeid_1.makeNodeId)(value, this.namespaceIndex));
|
|
84
|
+
const nodeClass = node_opcua_data_model_1.NodeClass[nodeClass1 || node_opcua_data_model_1.NodeClass.Unspecified];
|
|
66
85
|
line.push([key, value, nodeClass]);
|
|
67
86
|
}
|
|
68
87
|
return line;
|
|
@@ -79,16 +98,44 @@ class NodeIdManager {
|
|
|
79
98
|
do {
|
|
80
99
|
nodeId = (0, node_opcua_nodeid_1.makeNodeId)(this._internal_id_counter, this.namespaceIndex);
|
|
81
100
|
this._internal_id_counter += 1;
|
|
82
|
-
} while (this.addressSpace.findNode(nodeId) || this._isInCache(nodeId
|
|
101
|
+
} while (this.addressSpace.findNode(nodeId) || this._isInCache(nodeId));
|
|
83
102
|
return nodeId;
|
|
84
103
|
}
|
|
85
104
|
constructNodeId(options) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
105
|
+
const compose = (left, right) => { return right ? (left ? left + '_' + right : right) : left; };
|
|
106
|
+
const buildUpName2 = (nodeId, suffix) => {
|
|
107
|
+
const namespaceIndex = nodeId.namespace;
|
|
108
|
+
let name = "";
|
|
109
|
+
let n = this.addressSpace.findNode(nodeId);
|
|
110
|
+
while (n && n.nodeId.namespace === namespaceIndex) {
|
|
111
|
+
const e = prepareName(n.browseName) + suffix;
|
|
112
|
+
name = compose(e, name);
|
|
113
|
+
n = n.parentNodeId ? this.addressSpace.findNode(n.parentNodeId) : null;
|
|
114
|
+
}
|
|
115
|
+
return name;
|
|
116
|
+
};
|
|
117
|
+
if (!options.nodeId && options.registerSymbolicNames) {
|
|
118
|
+
const parentInfo = this.findParentNodeId(options);
|
|
119
|
+
let fullParentName = "";
|
|
120
|
+
if (parentInfo) {
|
|
121
|
+
const [parentNodeId, suffix] = parentInfo;
|
|
122
|
+
fullParentName = buildUpName2(parentNodeId, suffix);
|
|
123
|
+
}
|
|
124
|
+
const fullName = compose(fullParentName, prepareName(options.browseName));
|
|
125
|
+
if (this._cacheSymbolicName[fullName]) {
|
|
126
|
+
return (0, node_opcua_nodeid_1.makeNodeId)(this._cacheSymbolicName[fullName][0], this.namespaceIndex);
|
|
127
|
+
}
|
|
128
|
+
const nodeId = this._constructNodeId(options);
|
|
129
|
+
if (nodeId.identifierType === node_opcua_nodeid_1.NodeIdType.NUMERIC) {
|
|
130
|
+
this._cacheSymbolicName[fullName] = [nodeId.value, options.nodeClass];
|
|
131
|
+
this._cacheSymbolicNameRev.add(nodeId.value);
|
|
132
|
+
}
|
|
133
|
+
return nodeId;
|
|
89
134
|
}
|
|
135
|
+
return this._constructNodeId(options);
|
|
136
|
+
}
|
|
137
|
+
_constructNodeId(options) {
|
|
90
138
|
let nodeId = options.nodeId;
|
|
91
|
-
const nodeClass = options.nodeClass;
|
|
92
139
|
if (!nodeId) {
|
|
93
140
|
const parentInfo = this.findParentNodeId(options);
|
|
94
141
|
if (parentInfo) {
|
|
@@ -101,44 +148,6 @@ class NodeIdManager {
|
|
|
101
148
|
nodeId = new node_opcua_nodeid_1.NodeId(node_opcua_nodeid_1.NodeId.NodeIdType.STRING, childName, parentNodeId.namespace);
|
|
102
149
|
return nodeId;
|
|
103
150
|
}
|
|
104
|
-
else if (parentNodeId.identifierType === node_opcua_nodeid_1.NodeId.NodeIdType.NUMERIC) {
|
|
105
|
-
//
|
|
106
|
-
const baseNameInCache = this._reverseCache[parentNodeId.value];
|
|
107
|
-
if (baseNameInCache) {
|
|
108
|
-
const newName = baseNameInCache.name + linkName + "_" + name;
|
|
109
|
-
const nodeIdValueInCache = this._cache[newName];
|
|
110
|
-
if (nodeIdValueInCache) {
|
|
111
|
-
return new node_opcua_nodeid_1.NodeId(node_opcua_nodeid_1.NodeIdType.NUMERIC, nodeIdValueInCache, this.namespaceIndex);
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
return this._getOrCreateFromName(newName, nodeClass);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
if (options.registerSymbolicNames) {
|
|
119
|
-
const newName = name;
|
|
120
|
-
const nodeIdValueInCache = this._cache[newName];
|
|
121
|
-
if (nodeIdValueInCache) {
|
|
122
|
-
return new node_opcua_nodeid_1.NodeId(node_opcua_nodeid_1.NodeIdType.NUMERIC, nodeIdValueInCache, this.namespaceIndex);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
return this._getOrCreateFromName(newName, nodeClass);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
// }} has parent ...
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
const isRootType = options.nodeClass === node_opcua_data_model_1.NodeClass.DataType ||
|
|
134
|
-
options.nodeClass === node_opcua_data_model_1.NodeClass.ObjectType ||
|
|
135
|
-
options.nodeClass === node_opcua_data_model_1.NodeClass.ReferenceType ||
|
|
136
|
-
options.nodeClass === node_opcua_data_model_1.NodeClass.VariableType;
|
|
137
|
-
// try to find
|
|
138
|
-
if (isRootType) {
|
|
139
|
-
const baseName = options.browseName.name.toString();
|
|
140
|
-
return this._getOrCreateFromName(baseName, nodeClass);
|
|
141
|
-
}
|
|
142
151
|
}
|
|
143
152
|
}
|
|
144
153
|
else if (typeof nodeId === "string") {
|
|
@@ -148,9 +157,8 @@ class NodeIdManager {
|
|
|
148
157
|
}
|
|
149
158
|
else if (nodeId.match(regExp1)) {
|
|
150
159
|
nodeId = "ns=" + this.namespaceIndex + ";" + nodeId;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
nodeId = this._getOrCreateFromName(nodeId, nodeClass);
|
|
160
|
+
// } else {
|
|
161
|
+
// nodeId = this._getOrCreateFromName(nodeId, nodeClass);
|
|
154
162
|
}
|
|
155
163
|
}
|
|
156
164
|
}
|
|
@@ -164,46 +172,12 @@ class NodeIdManager {
|
|
|
164
172
|
return nodeId;
|
|
165
173
|
}
|
|
166
174
|
findParentNodeId(options) {
|
|
167
|
-
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
170
|
-
for (const ref of options.references) {
|
|
171
|
-
ref._referenceType = this.addressSpace.findReferenceType(ref.referenceType);
|
|
172
|
-
/* istanbul ignore next */
|
|
173
|
-
if (!(0, base_node_impl_1.getReferenceType)(ref)) {
|
|
174
|
-
throw new Error("Cannot find referenceType " + JSON.stringify(ref));
|
|
175
|
-
}
|
|
176
|
-
ref.referenceType = ref._referenceType.nodeId;
|
|
177
|
-
}
|
|
178
|
-
// find HasComponent, or has Property reverse
|
|
179
|
-
return _identifyParentInReference(options.references);
|
|
180
|
-
}
|
|
181
|
-
_addInCache(name, nodeIdValue, nodeClass) {
|
|
182
|
-
(0, node_opcua_assert_1.assert)(!name.includes(":"), "Alias name should not contain special characters");
|
|
183
|
-
(0, node_opcua_assert_1.assert)(typeof name === "string" && name[0] !== "[");
|
|
184
|
-
if (this._isInCache(nodeIdValue) || this._cache[name]) {
|
|
185
|
-
throw new Error("Already in Cache !" + name + " " + nodeIdValue + " = " + this._cache[name]);
|
|
186
|
-
}
|
|
187
|
-
this._cache[name] = nodeIdValue;
|
|
188
|
-
this._reverseCache[nodeIdValue] = { name, nodeClass };
|
|
189
|
-
}
|
|
190
|
-
_isInCache(nodeIdValue) {
|
|
191
|
-
return this._reverseCache[nodeIdValue] ? true : false;
|
|
175
|
+
return _findParentNodeId(this.addressSpace, options);
|
|
192
176
|
}
|
|
193
|
-
|
|
194
|
-
(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
(0, node_opcua_assert_1.assert)(!aliasName.includes(":"), "Alias name should not contain special characters");
|
|
199
|
-
if (this._cache[aliasName]) {
|
|
200
|
-
return new node_opcua_nodeid_1.NodeId(node_opcua_nodeid_1.NodeIdType.NUMERIC, this._cache[aliasName], this.namespaceIndex);
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
const nodeIdResult = this.buildNewNodeId();
|
|
204
|
-
this._addInCache(aliasName, nodeIdResult.value, nodeClass);
|
|
205
|
-
return nodeIdResult;
|
|
206
|
-
}
|
|
177
|
+
_isInCache(nodeId) {
|
|
178
|
+
if (nodeId.namespace !== this.namespaceIndex || nodeId.identifierType !== node_opcua_nodeid_1.NodeIdType.NUMERIC)
|
|
179
|
+
return false;
|
|
180
|
+
return this._cacheSymbolicNameRev.has(nodeId.value) ? true : false;
|
|
207
181
|
}
|
|
208
182
|
}
|
|
209
183
|
exports.NodeIdManager = NodeIdManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeid_manager.js","sourceRoot":"","sources":["../../src/nodeid_manager.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,mCAAmC;AACnC,yDAA2C;AAC3C,iEAAiE;AACjE,yDAA0G;AAC1G,
|
|
1
|
+
{"version":3,"file":"nodeid_manager.js","sourceRoot":"","sources":["../../src/nodeid_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import { INamespace } from "node-opcua-address-space-base";
|
|
2
2
|
export declare function hasHigherPriorityThan(namespaceIndex1: number, namespaceIndex2: number, priorityTable: number[]): boolean;
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param namespace
|
|
6
|
+
* @returns the order
|
|
7
|
+
*
|
|
8
|
+
* ---
|
|
9
|
+
* ua, own , di => 0 , 2, 1
|
|
10
|
+
*
|
|
11
|
+
* ---
|
|
12
|
+
* ua, own , di , kitchen , own2, adi => 0 , 2, 3, 1
|
|
13
|
+
*
|
|
14
|
+
* ---
|
|
15
|
+
* ua, own , di , kitchen , own2, adi => 0 , 2, 3, 5, 1
|
|
16
|
+
*/
|
|
3
17
|
export declare function constructNamespacePriorityTable(namespace: INamespace): number[];
|
|
4
18
|
export declare function constructNamespaceDependency(namespace: INamespace, priorityTable?: number[]): INamespace[];
|
|
@@ -82,6 +82,20 @@ function hasHigherPriorityThan(namespaceIndex1, namespaceIndex2, priorityTable)
|
|
|
82
82
|
return order1 > order2;
|
|
83
83
|
}
|
|
84
84
|
exports.hasHigherPriorityThan = hasHigherPriorityThan;
|
|
85
|
+
/**
|
|
86
|
+
*
|
|
87
|
+
* @param namespace
|
|
88
|
+
* @returns the order
|
|
89
|
+
*
|
|
90
|
+
* ---
|
|
91
|
+
* ua, own , di => 0 , 2, 1
|
|
92
|
+
*
|
|
93
|
+
* ---
|
|
94
|
+
* ua, own , di , kitchen , own2, adi => 0 , 2, 3, 1
|
|
95
|
+
*
|
|
96
|
+
* ---
|
|
97
|
+
* ua, own , di , kitchen , own2, adi => 0 , 2, 3, 5, 1
|
|
98
|
+
*/
|
|
85
99
|
function constructNamespacePriorityTable(namespace) {
|
|
86
100
|
// Namespace 0 will always be 0
|
|
87
101
|
// Namespaces with no requiredModel will be considered as instance namespaces and will added at the end
|
|
@@ -102,6 +116,7 @@ function constructNamespacePriorityTable(namespace) {
|
|
|
102
116
|
return priorityList;
|
|
103
117
|
}
|
|
104
118
|
exports.constructNamespacePriorityTable = constructNamespacePriorityTable;
|
|
119
|
+
const doDebug = false;
|
|
105
120
|
function constructNamespaceDependency(namespace, priorityTable) {
|
|
106
121
|
const addressSpace = namespace.addressSpace;
|
|
107
122
|
priorityTable = priorityTable || constructNamespacePriorityTable(namespace);
|
|
@@ -115,7 +130,12 @@ function constructNamespaceDependency(namespace, priorityTable) {
|
|
|
115
130
|
}
|
|
116
131
|
const _visitedDataType = new Set();
|
|
117
132
|
_constructNamespaceDependency(namespace, dependency, depMap, _visitedDataType, priorityTable);
|
|
118
|
-
|
|
133
|
+
doDebug && console.log("namespace : ", namespace.index, namespace.namespaceUri);
|
|
134
|
+
doDebug && console.log(" ", dependency.map((d) => d.index + " " + d.namespaceUri).join("\n "));
|
|
135
|
+
const sorted = dependency.sort((a, b) => priorityTable[a.index] < priorityTable[b.index] ? -1 : 1);
|
|
136
|
+
doDebug && console.log("sorted:");
|
|
137
|
+
doDebug && console.log(" ", sorted.map((d) => d.index + " " + d.namespaceUri).join("\n "));
|
|
138
|
+
return sorted;
|
|
119
139
|
}
|
|
120
140
|
exports.constructNamespaceDependency = constructNamespaceDependency;
|
|
121
141
|
//# sourceMappingURL=construct_namespace_dependency.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construct_namespace_dependency.js","sourceRoot":"","sources":["../../../src/nodeset_tools/construct_namespace_dependency.ts"],"names":[],"mappings":";;;AACA,iEAAkD;AAElD,uDAAmD;AAEnD,sDAAmE;AAEnE,MAAM,UAAU,GAAG,IAAA,kCAAe,EAAC,UAAU,CAAC,CAAC;AAE/C,SAAS,6BAA6B,CAClC,SAAqB,EACrB,UAAwB,EACxB,MAAmB,EACnB,gBAA6B,EAC7B,aAAuB;IAEvB,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;IAC5C,MAAM,UAAU,GAAG,SAA6B,CAAC;IACjD,wCAAwC;IAExC,SAAS,QAAQ,CAAC,cAAsB;QACpC,IAAI,qBAAqB,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"construct_namespace_dependency.js","sourceRoot":"","sources":["../../../src/nodeset_tools/construct_namespace_dependency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { BaseNode
|
|
2
|
-
import { ITranslationTable } from "../../source/xml_writer";
|
|
3
|
-
export declare function constructNamespaceTranslationTable(dependency: INamespace[]): ITranslationTable;
|
|
1
|
+
import { BaseNode } from "node-opcua-address-space-base";
|
|
4
2
|
export declare function sortByBrowseName(x: BaseNode, y: BaseNode): number;
|
|
5
3
|
declare type NodeIdString = string;
|
|
6
4
|
export interface BuildAliasesData {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sortByBrowseName =
|
|
3
|
+
exports.sortByBrowseName = void 0;
|
|
4
4
|
/* eslint-disable complexity */
|
|
5
5
|
/**
|
|
6
6
|
* @module node-opcua-address-space
|
|
@@ -33,6 +33,7 @@ const XMLWriter = require("xml-writer");
|
|
|
33
33
|
const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
|
|
34
34
|
const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
|
|
35
35
|
const errorLog = (0, node_opcua_debug_1.make_errorLog)(__filename);
|
|
36
|
+
const doDebug = false;
|
|
36
37
|
function _hash(node) {
|
|
37
38
|
return node.nodeId.toString();
|
|
38
39
|
}
|
|
@@ -1045,14 +1046,24 @@ function writeAliases(xw, aliases) {
|
|
|
1045
1046
|
}
|
|
1046
1047
|
xw.endElement();
|
|
1047
1048
|
}
|
|
1048
|
-
function constructNamespaceTranslationTable(dependency) {
|
|
1049
|
+
function constructNamespaceTranslationTable(dependency, exportedNamespace) {
|
|
1049
1050
|
const translationTable = {};
|
|
1050
|
-
|
|
1051
|
-
|
|
1051
|
+
(0, node_opcua_assert_1.assert)(dependency[0].namespaceUri === "http://opcfoundation.org/UA/");
|
|
1052
|
+
let counter = 0;
|
|
1053
|
+
translationTable[dependency[0].index] = counter++;
|
|
1054
|
+
//
|
|
1055
|
+
if (exportedNamespace) {
|
|
1056
|
+
translationTable[exportedNamespace.index] = counter++;
|
|
1057
|
+
}
|
|
1058
|
+
for (let i = 1; i < dependency.length; i++) {
|
|
1059
|
+
const dep = dependency[i];
|
|
1060
|
+
if (exportedNamespace && exportedNamespace === dep) {
|
|
1061
|
+
continue;
|
|
1062
|
+
}
|
|
1063
|
+
translationTable[dep.index] = counter++;
|
|
1052
1064
|
}
|
|
1053
1065
|
return translationTable;
|
|
1054
1066
|
}
|
|
1055
|
-
exports.constructNamespaceTranslationTable = constructNamespaceTranslationTable;
|
|
1056
1067
|
function dumpReferenceType(xw, referenceType) {
|
|
1057
1068
|
_markAsVisited(xw, referenceType);
|
|
1058
1069
|
xw.startElement("UAReferenceType");
|
|
@@ -1113,7 +1124,7 @@ namespace_impl_1.NamespaceImpl.prototype.toNodeset2XML = function () {
|
|
|
1113
1124
|
const xw = new XMLWriter(true);
|
|
1114
1125
|
xw.priorityTable = (0, construct_namespace_dependency_1.constructNamespacePriorityTable)(this);
|
|
1115
1126
|
const dependency = (0, construct_namespace_dependency_1.constructNamespaceDependency)(this, xw.priorityTable);
|
|
1116
|
-
const translationTable = constructNamespaceTranslationTable(dependency);
|
|
1127
|
+
const translationTable = constructNamespaceTranslationTable(dependency, this);
|
|
1117
1128
|
xw.translationTable = translationTable;
|
|
1118
1129
|
xw.startDocument({ encoding: "utf-8", version: "1.0" });
|
|
1119
1130
|
xw.startElement("UANodeSet");
|
|
@@ -1137,10 +1148,13 @@ namespace_impl_1.NamespaceImpl.prototype.toNodeset2XML = function () {
|
|
|
1137
1148
|
// xx xw.writeAttribute("Version", "1.02");
|
|
1138
1149
|
// xx xw.writeAttribute("LastModified", (new Date()).toISOString());
|
|
1139
1150
|
// ------------- INamespace Uris
|
|
1140
|
-
xw.startElement("NamespaceUris");
|
|
1141
1151
|
initXmlWriterEx(xw, namespacesMap, namespaceArray);
|
|
1142
|
-
|
|
1143
|
-
|
|
1152
|
+
xw.startElement("NamespaceUris");
|
|
1153
|
+
// let's sort the dependencies in the same order as the translation table
|
|
1154
|
+
const sortedDependencies = dependency.sort((a, b) => translationTable[a.index] > translationTable[b.index] ? 1 : -1);
|
|
1155
|
+
doDebug && console.log(sortedDependencies.map((a) => a.index + " + " + a.namespaceUri).join("\n"));
|
|
1156
|
+
doDebug && console.log("translation table ", translationTable);
|
|
1157
|
+
for (const depend of sortedDependencies) {
|
|
1144
1158
|
if (depend.index === 0) {
|
|
1145
1159
|
continue; // ignore namespace 0
|
|
1146
1160
|
}
|
|
@@ -1156,7 +1170,7 @@ namespace_impl_1.NamespaceImpl.prototype.toNodeset2XML = function () {
|
|
|
1156
1170
|
xw.writeAttribute("ModelUri", this.namespaceUri);
|
|
1157
1171
|
xw.writeAttribute("Version", this.version);
|
|
1158
1172
|
xw.writeAttribute("PublicationDate", this.publicationDate.toISOString());
|
|
1159
|
-
for (const depend of
|
|
1173
|
+
for (const depend of sortedDependencies) {
|
|
1160
1174
|
if (depend.index === this.index) {
|
|
1161
1175
|
continue; // ignore our namespace 0
|
|
1162
1176
|
}
|