node-opcua-modeler 2.68.0 → 2.69.1

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.
@@ -1,5 +1,6 @@
1
1
  import { BaseNode } from "node-opcua-address-space";
2
2
  export interface DisplayNodeOptions {
3
- format: "cli" | "markdown";
3
+ format?: "cli" | "markdown";
4
+ recursive?: boolean;
4
5
  }
5
6
  export declare function displayNodeElement(node: BaseNode, options?: DisplayNodeOptions): string;
@@ -31,7 +31,34 @@ const hasSubtypeNodeId = (0, node_opcua_nodeid_1.resolveNodeId)("HasSubtype");
31
31
  function encodeXML(s) {
32
32
  return s.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
33
33
  }
34
- function dumpReference(data, ref, filter) {
34
+ function _dumpReferenceVariable(v, value, dataType) {
35
+ const val = v.readValue().value.value;
36
+ if (v.dataType.isEmpty()) {
37
+ return { value, dataType };
38
+ }
39
+ if (v.isExtensionObject()) {
40
+ // don't do anything
41
+ }
42
+ else if (v.isEnumeration() && val !== null) {
43
+ const enumValue = v.readEnumValue();
44
+ value = enumValue.value + " (" + enumValue.name + ")";
45
+ }
46
+ else if (val instanceof Date) {
47
+ value = val ? val.toUTCString() : "";
48
+ }
49
+ else {
50
+ value = val ? val.toString() : "null";
51
+ }
52
+ const actualDataType = node_opcua_variant_1.DataType[v.readValue().value.dataType];
53
+ const basicDataType = node_opcua_variant_1.DataType[v.dataTypeObj.basicDataType];
54
+ dataType = v.dataTypeObj.browseName.toString();
55
+ if (basicDataType !== dataType) {
56
+ dataType = dataType + "(" + basicDataType + ")";
57
+ }
58
+ return { value, dataType };
59
+ }
60
+ // eslint-disable-next-line complexity
61
+ function dumpReference(data, ref, options) {
35
62
  (0, node_opcua_address_space_1.resolveReferenceNode)(data.node.addressSpace, ref);
36
63
  if (!ref.isForward) {
37
64
  return;
@@ -49,10 +76,8 @@ function dumpReference(data, ref, filter) {
49
76
  const dir = ref.isForward ? " " : " ";
50
77
  const refNode = ref.node;
51
78
  const refType = (0, node_opcua_address_space_1.resolveReferenceType)(data.node.addressSpace, ref);
52
- if (filter) {
53
- if (refType.browseName.name !== filter) {
54
- return;
55
- }
79
+ if (options && options.filter && refType.browseName.name !== options.filter) {
80
+ return;
56
81
  }
57
82
  const key = ref.nodeId.toString() + ref.referenceType.toString();
58
83
  if (data.alreadyDumped[key]) {
@@ -64,32 +89,16 @@ function dumpReference(data, ref, filter) {
64
89
  let dataType = "";
65
90
  if (refNode.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
66
91
  const v = refNode;
67
- const val = v.readValue().value.value;
68
- if (v.isExtensionObject()) {
69
- // don't do anything
70
- }
71
- else if (v.isEnumeration() && val !== null) {
72
- const enumValue = v.readEnumValue();
73
- value = enumValue.value + " (" + enumValue.name + ")";
74
- }
75
- else if (val instanceof Date) {
76
- value = val ? val.toUTCString() : "";
77
- }
78
- else {
79
- value = val ? val.toString() : "null";
80
- }
81
- const actualDataType = node_opcua_variant_1.DataType[v.readValue().value.dataType];
82
- const basicDataType = node_opcua_variant_1.DataType[v.dataTypeObj.basicDataType];
83
- dataType = v.dataTypeObj.browseName.toString();
84
- if (basicDataType !== dataType) {
85
- dataType = dataType + "(" + basicDataType + ")";
86
- }
92
+ const t = _dumpReferenceVariable(v, value, dataType);
93
+ value = t.value;
94
+ dataType = t.dataType;
87
95
  // findBasicDataType(v.dataTypeObj);
88
96
  }
97
+ const prefix = options.prefix ? options.prefix + "." : "";
89
98
  const row = [
90
- refType.browseName.toString() + dir + symbol(refNode.nodeClass),
99
+ "".padEnd(prefix.length) + refType.browseName.toString() + dir + symbol(refNode.nodeClass),
91
100
  refNode.nodeId.toString(),
92
- encodeXML(refNode.browseName.toString()),
101
+ encodeXML(prefix + refNode.browseName.toString()),
93
102
  modelingRule,
94
103
  refNode.typeDefinitionObj ? refNode.typeDefinitionObj.browseName.toString() : "",
95
104
  dataType,
@@ -101,38 +110,52 @@ function dumpReference(data, ref, filter) {
101
110
  name: refNode.browseName.name,
102
111
  type: dataType
103
112
  });
113
+ // now push all children if there are any
114
+ if (options.recursive) {
115
+ const subReferences = refNode.findReferencesEx("HasChild", node_opcua_data_model_1.BrowseDirection.Forward);
116
+ if (subReferences.length) {
117
+ // xx console.log("refNode ", refNode.nodeId.toString(), refNode.toString());
118
+ const rowMidHeader = [encodeXML(prefix + refNode.browseName.toString()), "", "", "", "", "", ""];
119
+ data.table.push(rowMidHeader);
120
+ for (const subReference of subReferences) {
121
+ dumpReference(data, subReference, Object.assign(Object.assign({}, options), { prefix: prefix + refNode.browseName.toString(), recursive: false, filter: undefined }));
122
+ }
123
+ }
124
+ }
104
125
  data.alreadyDumped[key] = 1;
105
126
  }
106
- function dumpReferences(data, _references) {
127
+ function dumpReferences(data, _references, options) {
107
128
  // xx for (const ref of references) {
108
129
  // xx dumpReference(ref, "HasSubtype");
109
130
  // xx }
110
131
  for (const ref of _references) {
111
- dumpReference(data, ref, "HasTypeDefinition");
132
+ dumpReference(data, ref, { filter: "HasTypeDefinition" });
112
133
  }
113
134
  for (const ref of _references) {
114
- dumpReference(data, ref, "HasEncoding");
135
+ dumpReference(data, ref, { filter: "HasEncoding" });
115
136
  }
116
137
  for (const ref of _references) {
117
- dumpReference(data, ref, "HasComponent");
138
+ dumpReference(data, ref, Object.assign(Object.assign({}, options), { filter: "HasComponent" }));
118
139
  }
119
140
  for (const ref of _references) {
120
- dumpReference(data, ref, "HasProperty");
141
+ dumpReference(data, ref, Object.assign(Object.assign({}, options), { filter: "HasProperty" }));
121
142
  }
122
143
  for (const ref of _references) {
123
- dumpReference(data, ref, "Organizes");
144
+ dumpReference(data, ref, Object.assign(Object.assign({}, options), { filter: "Organizes" }));
124
145
  }
125
146
  for (const ref of _references) {
126
- dumpReference(data, ref, "HasInterface");
147
+ dumpReference(data, ref, { filter: "HasInterface" });
127
148
  }
128
149
  for (const ref of _references) {
129
- dumpReference(data, ref, undefined);
150
+ dumpReference(data, ref, {});
130
151
  }
152
+ /// subElements = [];
131
153
  }
132
154
  function shortDescription(d) {
133
155
  return d.split(/\.|\n/)[0];
134
156
  }
135
157
  function displayNodeElement(node, options) {
158
+ const recursive = options && options.recursive !== undefined ? !!options.recursive : true;
136
159
  const head = ["ReferenceType", "NodeId", "BrowseName", "ModellingRule", "TypeDefinition", "DataType", "Value"];
137
160
  function createTable() {
138
161
  const table = new tableHelper_1.TableHelper(head);
@@ -151,7 +174,7 @@ function displayNodeElement(node, options) {
151
174
  const descriptions = [];
152
175
  const references = node.allReferences();
153
176
  const data = { table, node, alreadyDumped, descriptions };
154
- dumpReferences(data, references);
177
+ dumpReferences(data, references, { recursive });
155
178
  function toText(table) {
156
179
  if (options && options.format === "markdown") {
157
180
  return table.toMarkdownTable();
@@ -177,7 +200,7 @@ function displayNodeElement(node, options) {
177
200
  data.table = createTable();
178
201
  data.table.push([subtypeOf.browseName.toString() + ":", "--", "--", "--"]);
179
202
  const references2 = subtypeOf.allReferences();
180
- dumpReferences(data, references2);
203
+ dumpReferences(data, references2, { recursive: false });
181
204
  str.push("<details>");
182
205
  str.push("<summary>Base type: " + subtypeOf.browseName.toString() + "</summary>");
183
206
  str.push("");
@@ -1 +1 @@
1
- {"version":3,"file":"displayNodeElement.js","sourceRoot":"","sources":["../source/displayNodeElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"displayNodeElement.js","sourceRoot":"","sources":["../source/displayNodeElement.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,4 @@ export declare function getChildInTypeOrBaseType(node: UAObjectType | UAVariable
5
5
  reference: UAReference;
6
6
  };
7
7
  export declare function promoteToMandatory(node: UAObjectType | UAVariableType, propertyName: string, namespaceIndex: number): UAConcrete;
8
- export declare function promoteChild(node: UAObjectType | UAVariableType, propertyName: string, namespaceIndex: number, modellingRule: ModellingRuleType): UAConcrete;
8
+ export declare function promoteChild(node: UAObjectType | UAVariableType, propertyName: string, namespaceIndex: number, modellingRule?: ModellingRuleType): UAConcrete;
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.promoteChild = exports.promoteToMandatory = exports.getChildInTypeOrBaseType = void 0;
4
4
  const node_opcua_data_model_1 = require("node-opcua-data-model");
5
5
  const node_opcua_service_translate_browse_path_1 = require("node-opcua-service-translate-browse-path");
6
+ const node_opcua_debug_1 = require("node-opcua-debug");
6
7
  const displayNodeElement_1 = require("./displayNodeElement");
8
+ const warningLog = (0, node_opcua_debug_1.make_warningLog)("promoteToMandatory");
7
9
  // find the reference that links node1 to node2
8
10
  function findReferenceToNode(node1, node2) {
9
11
  const references = node1.allReferences();
@@ -60,21 +62,9 @@ function promoteToMandatory(node, propertyName, namespaceIndex) {
60
62
  // check mandatory
61
63
  /* istanbul ignore next */
62
64
  if (propInSuperType.modellingRule === "Mandatory") {
63
- // tslint:disable-next-line: no-console
64
- console.log("Warning property " + propertyName + " is already Mandatory in super type");
65
- return propInSuperType;
65
+ warningLog("property " + propertyName + " is already Mandatory in super type");
66
66
  }
67
- const newRef = {
68
- isForward: false,
69
- nodeId: node.nodeId,
70
- referenceType: reference.referenceType
71
- };
72
- const newProp = propInSuperType.clone({
73
- namespace: node.namespace,
74
- modellingRule: "Mandatory",
75
- references: [newRef]
76
- });
77
- return newProp;
67
+ return promoteChild(node, propertyName, namespaceIndex, "Mandatory");
78
68
  }
79
69
  exports.promoteToMandatory = promoteToMandatory;
80
70
  function promoteChild(node, propertyName, namespaceIndex, modellingRule) {
@@ -90,7 +80,9 @@ function promoteChild(node, propertyName, namespaceIndex, modellingRule) {
90
80
  const newProp = propInSuperType.clone({
91
81
  namespace: node.namespace,
92
82
  modellingRule,
93
- references: [Object.assign({}, newRef)]
83
+ references: [Object.assign({}, newRef)],
84
+ copyAlsoModellingRules: true,
85
+ ignoreChildren: false
94
86
  });
95
87
  return newProp;
96
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"promoteToMandatory.js","sourceRoot":"","sources":["../source/promoteToMandatory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promoteToMandatory.js","sourceRoot":"","sources":["../source/promoteToMandatory.ts"],"names":[],"mappings":";;;AAYA,iEAAkD;AAClD,uGAA0E;AAC1E,uDAAmD;AAEnD,6DAA0D;AAE1D,MAAM,UAAU,GAAG,IAAA,kCAAe,EAAC,oBAAoB,CAAC,CAAC;AAMzD,+CAA+C;AAC/C,SAAS,mBAAmB,CAAC,KAAe,EAAE,KAAe;IACzD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAsB,EAAE,EAAE;QACnD,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,CAAC,GAAG,EAAE;QACN,sBAAsB;QACtB,IACI,KAAK,CAAC,SAAS,KAAK,iCAAS,CAAC,UAAU;YACxC,KAAK,CAAC,SAAS,KAAK,iCAAS,CAAC,aAAa;YAC3C,KAAK,CAAC,SAAS,KAAK,iCAAS,CAAC,YAAY,EAC5C;YACE,MAAM,MAAM,GAAG,KAAe,CAAC;YAC/B,IAAI,MAAM,CAAC,YAAY,EAAE;gBACrB,OAAO,mBAAmB,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;aAC1D;SACJ;QAED,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC1H;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAgB,wBAAwB,CACpC,IAAmC,EACnC,YAAoB,EACpB,cAAsB;IAEtB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAa,CAAC;IACrC,0BAA0B;IAC1B,IAAI,CAAC,SAAS,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC7C;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC,IAAA,yDAAc,EAAC,SAAS,CAAC,MAAM,EAAE,IAAI,cAAc,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC;IACrH,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAS,CAAC;IAEhH,0BAA0B;IAC1B,IAAI,CAAC,UAAU,EAAE;QACb,IAAA,uCAAkB,EAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY,GAAG,oBAAoB,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,mBAAmB,CAAC,CAAC;KAC9H;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAsC,CAAC;IAE/F,0BAA0B;IAC1B,IAAI,CAAC,eAAe,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC3D;IACD,qBAAqB;IACrB,MAAM,SAAS,GAAG,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAElE,0BAA0B;IAC1B,IAAI,CAAC,SAAS,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC5C;IACD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AAC1C,CAAC;AApCD,4DAoCC;AAED,SAAgB,kBAAkB,CAAC,IAAmC,EAAE,YAAoB,EAAE,cAAsB;IAChH,gBAAgB;IAEhB,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAEpG,kBAAkB;IAClB,0BAA0B;IAC1B,IAAI,eAAe,CAAC,aAAa,KAAK,WAAW,EAAE;QAC/C,UAAU,CAAC,WAAW,GAAG,YAAY,GAAG,qCAAqC,CAAC,CAAC;KAClF;IAED,OAAO,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;AAEzE,CAAC;AAbD,gDAaC;AAED,SAAgB,YAAY,CACxB,IAAmC,EACnC,YAAoB,EACpB,cAAsB,EACtB,aAAiC;IAEjC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAEpG,IAAI,CAAC,aAAa,EAAE;QAChB,aAAa,GAAG,eAAe,CAAC,aAAa,IAAI,IAAI,CAAC;KACzD;IAED,MAAM,MAAM,GAAgB;QACxB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,SAAS,CAAC,aAAa;KACzC,CAAC;IAEF,MAAM,OAAO,GAAI,eAA8B,CAAC,KAAK,CAAC;QAClD,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa;QACb,UAAU,EAAE,mBAAM,MAAM,EAAG;QAC3B,sBAAsB,EAAE,IAAI;QAC5B,cAAc,EAAE,KAAK;KACxB,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACnB,CAAC;AA1BD,oCA0BC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-modeler",
3
- "version": "2.68.0",
3
+ "version": "2.69.1",
4
4
  "description": "pure nodejs OPCUA SDK - module - model",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,27 +13,28 @@
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
15
  "chalk": "4.1.2",
16
- "cli-table3": "^0.6.1",
17
- "csv-parse": "5.0.4",
18
- "node-opcua-address-space": "2.68.0",
16
+ "cli-table3": "^0.6.2",
17
+ "csv-parse": "5.1.0",
18
+ "node-opcua-address-space": "2.69.1",
19
19
  "node-opcua-assert": "2.66.0",
20
- "node-opcua-basic-types": "2.68.0",
21
- "node-opcua-client-dynamic-extension-object": "2.68.0",
20
+ "node-opcua-basic-types": "2.69.0",
21
+ "node-opcua-client-dynamic-extension-object": "2.69.1",
22
22
  "node-opcua-constants": "2.67.0",
23
- "node-opcua-data-model": "2.68.0",
24
- "node-opcua-factory": "2.68.0",
25
- "node-opcua-nodeid": "2.68.0",
23
+ "node-opcua-data-model": "2.69.0",
24
+ "node-opcua-debug": "2.69.0",
25
+ "node-opcua-factory": "2.69.0",
26
+ "node-opcua-nodeid": "2.69.0",
26
27
  "node-opcua-nodesets": "2.66.0",
27
- "node-opcua-numeric-range": "2.68.0",
28
- "node-opcua-schemas": "2.68.0",
29
- "node-opcua-service-translate-browse-path": "2.68.0",
30
- "node-opcua-status-code": "2.67.0",
31
- "node-opcua-types": "2.68.0",
32
- "node-opcua-variant": "2.68.0",
33
- "node-opcua-xml2json": "2.68.0"
28
+ "node-opcua-numeric-range": "2.69.0",
29
+ "node-opcua-schemas": "2.69.0",
30
+ "node-opcua-service-translate-browse-path": "2.69.0",
31
+ "node-opcua-status-code": "2.69.0",
32
+ "node-opcua-types": "2.69.0",
33
+ "node-opcua-variant": "2.69.0",
34
+ "node-opcua-xml2json": "2.69.0"
34
35
  },
35
36
  "devDependencies": {
36
- "node-opcua-leak-detector": "2.68.0",
37
+ "node-opcua-leak-detector": "2.69.0",
37
38
  "should": "^13.2.3"
38
39
  },
39
40
  "repository": {
@@ -49,5 +50,5 @@
49
50
  "internet of things"
50
51
  ],
51
52
  "homepage": "http://node-opcua.github.io/",
52
- "gitHead": "363b466440d0910acddd0cde2c37792ce4724d76"
53
+ "gitHead": "761e2af2abcbca10d1ec66fdf08a9bed43427fca"
53
54
  }
@@ -7,9 +7,11 @@ import {
7
7
  resolveReferenceType,
8
8
  UAVariableType
9
9
  } from "node-opcua-address-space";
10
- import { NodeClass } from "node-opcua-data-model";
10
+ import { BrowseDirection, NodeClass } from "node-opcua-data-model";
11
11
  import { NodeId, resolveNodeId } from "node-opcua-nodeid";
12
+ import { UserNameIdentityToken } from "node-opcua-types";
12
13
  import { DataType } from "node-opcua-variant";
14
+ import { option } from "yargs";
13
15
  import { TableHelper } from "./tableHelper";
14
16
 
15
17
  const a = "ⓂⓄⓋⓥⓇ❗⟵ ⟶⟷";
@@ -36,7 +38,8 @@ function symbol(nodeClass: NodeClass) {
36
38
  const hasSubtypeNodeId = resolveNodeId("HasSubtype");
37
39
 
38
40
  export interface DisplayNodeOptions {
39
- format: "cli" | "markdown";
41
+ format?: "cli" | "markdown";
42
+ recursive?: boolean; // default true
40
43
  }
41
44
  function encodeXML(s: string) {
42
45
  return s.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
@@ -46,13 +49,46 @@ interface Data {
46
49
  node: BaseNode;
47
50
  alreadyDumped: Record<string, any>;
48
51
  descriptions: Description[];
52
+ subElements?: any[];
49
53
  }
50
54
  interface Description {
51
55
  description: string;
52
56
  name: string;
53
57
  type: string;
54
58
  }
55
- function dumpReference(data: Data, ref: UAReference, filter?: string) {
59
+
60
+ interface DumpReferenceOptions {
61
+ recursive?: boolean;
62
+ filter?: string;
63
+ prefix?: string;
64
+ }
65
+
66
+ function _dumpReferenceVariable(v: UAVariable, value: any, dataType: string): { value: any; dataType: string } {
67
+ const val = v.readValue().value.value;
68
+ if (v.dataType.isEmpty()) {
69
+ return { value, dataType };
70
+ }
71
+
72
+ if (v.isExtensionObject()) {
73
+ // don't do anything
74
+ } else if (v.isEnumeration() && val !== null) {
75
+ const enumValue = v.readEnumValue();
76
+ value = enumValue.value + " (" + enumValue.name + ")";
77
+ } else if (val instanceof Date) {
78
+ value = val ? val.toUTCString() : "";
79
+ } else {
80
+ value = val ? val.toString() : "null";
81
+ }
82
+ const actualDataType = DataType[v.readValue().value.dataType];
83
+ const basicDataType = DataType[v.dataTypeObj.basicDataType];
84
+ dataType = v.dataTypeObj.browseName.toString();
85
+ if (basicDataType !== dataType) {
86
+ dataType = dataType + "(" + basicDataType + ")";
87
+ }
88
+ return { value, dataType };
89
+ }
90
+ // eslint-disable-next-line complexity
91
+ function dumpReference(data: Data, ref: UAReference, options: DumpReferenceOptions) {
56
92
  resolveReferenceNode(data.node.addressSpace, ref);
57
93
  if (!ref.isForward) {
58
94
  return;
@@ -71,10 +107,8 @@ function dumpReference(data: Data, ref: UAReference, filter?: string) {
71
107
  const refNode = ref.node!;
72
108
 
73
109
  const refType = resolveReferenceType(data.node.addressSpace, ref);
74
- if (filter) {
75
- if (refType.browseName.name !== filter) {
76
- return;
77
- }
110
+ if (options && options.filter && refType.browseName.name !== options.filter) {
111
+ return;
78
112
  }
79
113
  const key = ref.nodeId.toString() + ref.referenceType.toString();
80
114
  if (data.alreadyDumped[key]) {
@@ -87,31 +121,17 @@ function dumpReference(data: Data, ref: UAReference, filter?: string) {
87
121
  let dataType = "";
88
122
  if (refNode.nodeClass === NodeClass.Variable) {
89
123
  const v = refNode as UAVariable;
90
-
91
- const val = v.readValue().value.value;
92
- if (v.isExtensionObject()) {
93
- // don't do anything
94
- } else if (v.isEnumeration() && val !== null) {
95
- const enumValue = v.readEnumValue();
96
- value = enumValue.value + " (" + enumValue.name + ")";
97
- } else if (val instanceof Date) {
98
- value = val ? val.toUTCString() : "";
99
- } else {
100
- value = val ? val.toString() : "null";
101
- }
102
- const actualDataType = DataType[v.readValue().value.dataType];
103
- const basicDataType = DataType[v.dataTypeObj.basicDataType];
104
- dataType = v.dataTypeObj.browseName.toString();
105
- if (basicDataType !== dataType) {
106
- dataType = dataType + "(" + basicDataType + ")";
107
- }
124
+ const t = _dumpReferenceVariable(v, value, dataType);
125
+ value = t.value;
126
+ dataType = t.dataType;
108
127
  // findBasicDataType(v.dataTypeObj);
109
128
  }
110
129
 
130
+ const prefix = options.prefix ? options.prefix + "." : "";
111
131
  const row = [
112
- refType.browseName.toString() + dir + symbol(refNode.nodeClass),
132
+ "".padEnd(prefix.length) + refType.browseName.toString() + dir + symbol(refNode.nodeClass),
113
133
  refNode.nodeId.toString(),
114
- encodeXML(refNode.browseName.toString()),
134
+ encodeXML(prefix + refNode.browseName.toString()),
115
135
  modelingRule,
116
136
  (refNode as any).typeDefinitionObj ? (refNode as any).typeDefinitionObj.browseName.toString() : "",
117
137
  dataType,
@@ -125,39 +145,62 @@ function dumpReference(data: Data, ref: UAReference, filter?: string) {
125
145
  name: refNode.browseName.name!,
126
146
  type: dataType
127
147
  });
148
+
149
+ // now push all children if there are any
150
+ if (options.recursive) {
151
+ const subReferences = refNode.findReferencesEx("HasChild", BrowseDirection.Forward);
152
+ if (subReferences.length) {
153
+ // xx console.log("refNode ", refNode.nodeId.toString(), refNode.toString());
154
+
155
+ const rowMidHeader = [encodeXML(prefix + refNode.browseName.toString()), "", "", "", "", "", ""];
156
+ data.table.push(rowMidHeader);
157
+ for (const subReference of subReferences) {
158
+ dumpReference(data, subReference, {
159
+ ...options,
160
+ prefix: prefix + refNode.browseName.toString(),
161
+ recursive: false,
162
+ filter: undefined
163
+ });
164
+ }
165
+ }
166
+ }
128
167
  data.alreadyDumped[key] = 1;
129
168
  }
130
- function dumpReferences(data: Data, _references: UAReference[]) {
169
+
170
+ function dumpReferences(data: Data, _references: UAReference[], options: DumpReferenceOptions) {
131
171
  // xx for (const ref of references) {
132
172
  // xx dumpReference(ref, "HasSubtype");
133
173
  // xx }
134
174
  for (const ref of _references) {
135
- dumpReference(data, ref, "HasTypeDefinition");
175
+ dumpReference(data, ref, { filter: "HasTypeDefinition" });
136
176
  }
137
177
  for (const ref of _references) {
138
- dumpReference(data, ref, "HasEncoding");
178
+ dumpReference(data, ref, { filter: "HasEncoding" });
139
179
  }
140
180
  for (const ref of _references) {
141
- dumpReference(data, ref, "HasComponent");
181
+ dumpReference(data, ref, { ...options, filter: "HasComponent" });
142
182
  }
143
183
  for (const ref of _references) {
144
- dumpReference(data, ref, "HasProperty");
184
+ dumpReference(data, ref, { ...options, filter: "HasProperty" });
145
185
  }
146
186
  for (const ref of _references) {
147
- dumpReference(data, ref, "Organizes");
187
+ dumpReference(data, ref, { ...options, filter: "Organizes" });
148
188
  }
149
189
  for (const ref of _references) {
150
- dumpReference(data, ref, "HasInterface");
190
+ dumpReference(data, ref, { filter: "HasInterface" });
151
191
  }
152
192
  for (const ref of _references) {
153
- dumpReference(data, ref, undefined);
193
+ dumpReference(data, ref, {});
154
194
  }
195
+ /// subElements = [];
155
196
  }
156
197
 
157
198
  function shortDescription(d: string) {
158
199
  return d.split(/\.|\n/)[0];
159
200
  }
160
201
  export function displayNodeElement(node: BaseNode, options?: DisplayNodeOptions): string {
202
+ const recursive = options && options.recursive !== undefined ? !!options.recursive : true;
203
+
161
204
  const head: string[] = ["ReferenceType", "NodeId", "BrowseName", "ModellingRule", "TypeDefinition", "DataType", "Value"];
162
205
 
163
206
  function createTable() {
@@ -184,7 +227,8 @@ export function displayNodeElement(node: BaseNode, options?: DisplayNodeOptions)
184
227
  const references = node.allReferences();
185
228
 
186
229
  const data = { table, node, alreadyDumped, descriptions };
187
- dumpReferences(data, references);
230
+
231
+ dumpReferences(data, references, { recursive });
188
232
 
189
233
  function toText(table: TableHelper) {
190
234
  if (options && options.format === "markdown") {
@@ -215,7 +259,8 @@ export function displayNodeElement(node: BaseNode, options?: DisplayNodeOptions)
215
259
  data.table = createTable();
216
260
  data.table.push([subtypeOf.browseName.toString() + ":", "--", "--", "--"]);
217
261
  const references2 = subtypeOf.allReferences();
218
- dumpReferences(data, references2);
262
+
263
+ dumpReferences(data, references2, { recursive: false });
219
264
 
220
265
  str.push("<details>");
221
266
  str.push("<summary>Base type: " + subtypeOf.browseName.toString() + "</summary>");
@@ -8,13 +8,16 @@ import {
8
8
  UAReferenceType,
9
9
  UAVariable,
10
10
  UAVariableType,
11
- ModellingRuleType,
11
+ ModellingRuleType
12
12
  } from "node-opcua-address-space";
13
13
  import { NodeClass } from "node-opcua-data-model";
14
14
  import { makeBrowsePath } from "node-opcua-service-translate-browse-path";
15
+ import { make_warningLog } from "node-opcua-debug";
15
16
 
16
17
  import { displayNodeElement } from "./displayNodeElement";
17
18
 
19
+ const warningLog = make_warningLog("promoteToMandatory");
20
+
18
21
  type UAType = UAObjectType | UAVariableType | UAReferenceType | UADataType;
19
22
 
20
23
  export type UAConcrete = UAVariable | UAObject | UAMethod;
@@ -91,30 +94,18 @@ export function promoteToMandatory(node: UAObjectType | UAVariableType, property
91
94
  // check mandatory
92
95
  /* istanbul ignore next */
93
96
  if (propInSuperType.modellingRule === "Mandatory") {
94
- // tslint:disable-next-line: no-console
95
- console.log("Warning property " + propertyName + " is already Mandatory in super type");
96
- return propInSuperType;
97
+ warningLog("property " + propertyName + " is already Mandatory in super type");
97
98
  }
98
99
 
99
- const newRef = {
100
- isForward: false,
101
- nodeId: node.nodeId,
102
- referenceType: reference.referenceType
103
- };
100
+ return promoteChild(node, propertyName, namespaceIndex, "Mandatory");
104
101
 
105
- const newProp = (propInSuperType as UAConcrete).clone({
106
- namespace: node.namespace,
107
- modellingRule: "Mandatory",
108
- references: [newRef]
109
- });
110
- return newProp;
111
102
  }
112
103
 
113
104
  export function promoteChild(
114
105
  node: UAObjectType | UAVariableType,
115
106
  propertyName: string,
116
107
  namespaceIndex: number,
117
- modellingRule: ModellingRuleType
108
+ modellingRule?: ModellingRuleType
118
109
  ): UAConcrete {
119
110
  const { propInSuperType, reference } = getChildInTypeOrBaseType(node, propertyName, namespaceIndex);
120
111
 
@@ -131,7 +122,9 @@ export function promoteChild(
131
122
  const newProp = (propInSuperType as UAConcrete).clone({
132
123
  namespace: node.namespace,
133
124
  modellingRule,
134
- references: [{...newRef}]
125
+ references: [{ ...newRef }],
126
+ copyAlsoModellingRules: true,
127
+ ignoreChildren: false
135
128
  });
136
129
  return newProp;
137
130
  }