node-opcua-modeler 2.96.0 → 2.98.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.
Files changed (39) hide show
  1. package/dist/addExtensionObjectDataType.d.ts +21 -21
  2. package/dist/addExtensionObjectDataType.js +132 -132
  3. package/dist/build_model_inner.d.ts +17 -17
  4. package/dist/build_model_inner.js +42 -42
  5. package/dist/displayNodeElement.d.ts +6 -6
  6. package/dist/displayNodeElement.js +220 -220
  7. package/dist/generate_markdown_doc.d.ts +41 -41
  8. package/dist/generate_markdown_doc.js +314 -314
  9. package/dist/index.d.ts +24 -24
  10. package/dist/index.js +52 -52
  11. package/dist/promoteToMandatory.d.ts +8 -8
  12. package/dist/promoteToMandatory.js +89 -89
  13. package/dist/setNamespaceMetaData.d.ts +1 -1
  14. package/dist/setNamespaceMetaData.js +5 -5
  15. package/dist/symbol.d.ts +1 -1
  16. package/dist/symbol.js +2 -2
  17. package/dist/tableHelper.d.ts +9 -9
  18. package/dist/tableHelper.js +60 -60
  19. package/dist/to_cvs.d.ts +2 -2
  20. package/dist/to_cvs.js +11 -11
  21. package/dist/types.d.ts +1 -1
  22. package/dist/types.js +2 -2
  23. package/distNodeJS/build_documentation_to_file.d.ts +3 -3
  24. package/distNodeJS/build_documentation_to_file.js +26 -26
  25. package/distNodeJS/build_model.d.ts +7 -7
  26. package/distNodeJS/build_model.js +21 -21
  27. package/distNodeJS/index.d.ts +5 -5
  28. package/distNodeJS/index.js +23 -23
  29. package/distNodeJS/symbol_cvs.d.ts +3 -3
  30. package/distNodeJS/symbol_cvs.js +63 -63
  31. package/package.json +28 -21
  32. package/MyModelIds.csv +0 -151
  33. package/examples/make_model.ts +0 -153
  34. package/source_nodejs/build_documentation_to_file.ts +0 -13
  35. package/source_nodejs/build_model.ts +0 -12
  36. package/source_nodejs/index.ts +0 -5
  37. package/source_nodejs/symbol_cvs.ts +0 -50
  38. package/tsconfig_common.json +0 -66
  39. package/tsconfig_nodejs.json +0 -25
@@ -1,315 +1,315 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.buildDocumentation = exports.extractTypes = exports.buildDocumentationToString = exports.Writer = void 0;
13
- const node_opcua_basic_types_1 = require("node-opcua-basic-types");
14
- const node_opcua_data_model_1 = require("node-opcua-data-model");
15
- const node_opcua_variant_1 = require("node-opcua-variant");
16
- const displayNodeElement_1 = require("./displayNodeElement");
17
- const tableHelper_1 = require("./tableHelper");
18
- class Writer {
19
- constructor() {
20
- this.stream = [];
21
- /* empty */
22
- }
23
- writeLine(str) {
24
- this.stream.push(str);
25
- }
26
- toString() {
27
- return this.stream.join("\n");
28
- }
29
- }
30
- exports.Writer = Writer;
31
- function buildDocumentationToString(namespace, options) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- const writer = new Writer();
34
- yield buildDocumentation(namespace, writer, options);
35
- return writer.toString();
36
- });
37
- }
38
- exports.buildDocumentationToString = buildDocumentationToString;
39
- const toDataTypeStr = (p) => {
40
- if (p.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
41
- const v = p;
42
- const arr = v.valueRank == 1 ? "[]" : "";
43
- const brn = toDataTypeStr(p.dataTypeObj);
44
- return brn + arr;
45
- }
46
- if (p.nodeClass === node_opcua_data_model_1.NodeClass.DataType) {
47
- const dataType = p;
48
- const brn = dataType.browseName.toString();
49
- return brn;
50
- }
51
- return "";
52
- };
53
- function dataTypeEnumerationToMarkdown(dataType) {
54
- const writer = new Writer();
55
- writer.writeLine("");
56
- if (dataType.description) {
57
- writer.writeLine(dataType.description.text || "");
58
- }
59
- writer.writeLine(`\nThe fields of the ${dataType.browseName.name} DataType are defined in the following table:`);
60
- writer.writeLine("");
61
- const definition = dataType.getEnumDefinition();
62
- writer.writeLine("\nBasic Type: " + node_opcua_variant_1.DataType[node_opcua_variant_1.DataType.Int32]);
63
- writer.writeLine("");
64
- const table = new tableHelper_1.TableHelper(["Name", "Value", "Description"]);
65
- for (const f of definition.fields || []) {
66
- table.push([f.name, (0, node_opcua_basic_types_1.coerceUInt32)(f.value[1]), f.description.text || ""]);
67
- }
68
- writer.writeLine(table.toMarkdownTable());
69
- const str = dumpTypeRepresentation(dataType);
70
- writer.writeLine(str);
71
- return writer.toString();
72
- }
73
- function dumpTypeRepresentation(uaType) {
74
- var _a;
75
- const className = node_opcua_data_model_1.NodeClass[uaType.nodeClass];
76
- const writer = new Writer();
77
- writer.writeLine("\n");
78
- writer.writeLine(`\nThe representation of the ${uaType.browseName.name} ${className} in the address space is shown in the following table:`);
79
- const table = new tableHelper_1.TableHelper(["Name", "Attribute"]);
80
- table.push(["NodeId", uaType.nodeId.toString()]);
81
- table.push(["NamespaceUri", uaType.addressSpace.getNamespaceUri(uaType.nodeId.namespace)]);
82
- table.push(["BrowseName", uaType.browseName.name.toString()]);
83
- table.push(["NodeClass", node_opcua_data_model_1.NodeClass[uaType.nodeClass]]);
84
- if (uaType.nodeClass === node_opcua_data_model_1.NodeClass.ReferenceType) {
85
- table.push(["InverseName", uaType.inverseName.text]);
86
- // table.push(["IsSymmetric", (uaType as UAReferenceType).isSymetric ? "Yes" : "No"]);
87
- }
88
- table.push(["IsAbstract", uaType.isAbstract ? "Yes" : "No"]);
89
- table.push(["SubtypeOf", uaType.subtypeOfObj ? uaType.subtypeOfObj.browseName.toString() : ""]);
90
- writer.writeLine("");
91
- writer.writeLine(table.toMarkdownTable());
92
- writer.writeLine("");
93
- // forward refereces
94
- {
95
- const properties = uaType.findReferencesExAsObject("HasProperty");
96
- const table = new tableHelper_1.TableHelper(["Reference", "NodeClass", "BrowseName", "DataType", "TypeDefinition", "ModellingRule"]);
97
- if (uaType.subtypeOfObj) {
98
- const referenceName = "HasSubType";
99
- const p = uaType.subtypeOfObj;
100
- const nodeClass = node_opcua_data_model_1.NodeClass[p.nodeClass];
101
- const browseName = p.browseName.toString();
102
- const dataTypeStr = toDataTypeStr(p);
103
- const modellingRule = p.modellingRule || "";
104
- const typeDefinitionName = "";
105
- table.push([referenceName, nodeClass, browseName, dataTypeStr, typeDefinitionName, modellingRule]);
106
- }
107
- if (properties.length > 0) {
108
- writer.writeLine(`\nThe reference of the ${uaType.browseName.name} ${className} is shown in the following table:`);
109
- writer.writeLine("");
110
- for (const p of properties) {
111
- const referenceName = "HasProperty";
112
- const nodeClass = node_opcua_data_model_1.NodeClass[p.nodeClass];
113
- const browseName = p.browseName.toString();
114
- const dataTypeStr = toDataTypeStr(p);
115
- const typeDefinitionName = (_a = p.typeDefinitionObj) === null || _a === void 0 ? void 0 : _a.browseName.toString();
116
- const modellingRule = p.modellingRule || "";
117
- table.push([referenceName, nodeClass, browseName, dataTypeStr, typeDefinitionName, modellingRule]);
118
- }
119
- }
120
- writer.writeLine("");
121
- writer.writeLine(table.toMarkdownTable());
122
- writer.writeLine("");
123
- }
124
- return writer.toString();
125
- }
126
- function dataTypeStructureToMarkdown(dataType) {
127
- const addressSpace = dataType.addressSpace;
128
- const writer = new Writer();
129
- writer.writeLine("");
130
- if (dataType.description) {
131
- writer.writeLine(dataType.description.text || "");
132
- }
133
- const definition = dataType.getStructureDefinition();
134
- writer.writeLine("\nBasic Type: " + node_opcua_variant_1.DataType[dataType.basicDataType]);
135
- writer.writeLine("");
136
- writer.writeLine(`The fields of the ${dataType.browseName.name} DataType are defined in the following table:`);
137
- const c = (f) => {
138
- var _a;
139
- let dataTypeString = addressSpace.findDataType(f.dataType).browseName.toString();
140
- if (f.valueRank === 1) {
141
- dataTypeString += "[]";
142
- }
143
- else if (f.valueRank >= 2) {
144
- dataTypeString += "[" + ((_a = f.arrayDimensions) === null || _a === void 0 ? void 0 : _a.map((d) => "" + d).join(" ")) + "]";
145
- }
146
- // f.maxStringLength ? f.maxStringLength : "",
147
- // f.arrayDimensions ? f.arrayDimensions : "",
148
- return dataTypeString;
149
- };
150
- const table = new tableHelper_1.TableHelper(["Name", "Type", "Description"]);
151
- table.push([dataType.browseName.name, "Structure"]);
152
- for (const f of definition.fields || []) {
153
- table.push([" " + f.name, c(f), (f.description.text || "").replace(/\n/g, "<br>")]);
154
- }
155
- writer.writeLine(table.toMarkdownTable());
156
- const str = dumpTypeRepresentation(dataType);
157
- writer.writeLine(str);
158
- return writer.toString();
159
- }
160
- function dataTypeToMarkdown(dataType) {
161
- if (dataType.isEnumeration()) {
162
- return dataTypeEnumerationToMarkdown(dataType);
163
- }
164
- else if (dataType.isStructure()) {
165
- return dataTypeStructureToMarkdown(dataType);
166
- }
167
- else {
168
- const writer = new Writer();
169
- writer.writeLine("");
170
- if (dataType.description) {
171
- writer.writeLine(dataType.description.text || "");
172
- }
173
- writer.writeLine("\nBasic Type: " + node_opcua_variant_1.DataType[dataType.basicDataType]);
174
- writer.writeLine("");
175
- return writer.toString();
176
- }
177
- }
178
- function dumpReferenceType(referenceType) {
179
- const writer = new Writer();
180
- const str = dumpTypeRepresentation(referenceType);
181
- writer.writeLine(str);
182
- return writer.toString();
183
- }
184
- function extractTypes(namespace, options) {
185
- const namespacePriv = namespace;
186
- if (!options || !options.node) {
187
- const dataTypes = [...namespacePriv._dataTypeIterator()];
188
- const objectTypes = [...namespacePriv._objectTypeIterator()];
189
- const variableTypes = [...namespacePriv._variableTypeIterator()];
190
- const referenceTypes = [...namespacePriv._referenceTypeIterator()];
191
- return { dataTypes, variableTypes, objectTypes, referenceTypes };
192
- }
193
- const node = options.node;
194
- if (node.nodeClass === node_opcua_data_model_1.NodeClass.DataType) {
195
- const dataTypes = [];
196
- let dataType = node;
197
- dataTypes.push(dataType);
198
- while (dataType.subtypeOfObj && dataType.subtypeOfObj.nodeId.namespace === namespace.index) {
199
- dataType = dataType.subtypeOfObj;
200
- dataTypes.push(dataType);
201
- }
202
- return { dataTypes, variableTypes: [], objectTypes: [], dataTypeNode: [], referenceTypes: [] };
203
- }
204
- else if (node.nodeClass === node_opcua_data_model_1.NodeClass.ObjectType) {
205
- const objectTypes = [];
206
- let objectType = node;
207
- objectTypes.push(objectType);
208
- while (objectType.subtypeOfObj && objectType.subtypeOfObj.nodeId.namespace === namespace.index) {
209
- objectType = objectType.subtypeOfObj;
210
- objectTypes.push(objectType);
211
- }
212
- return { dataTypes: [], variableTypes: [], objectTypes, dataTypeNode: [], referenceTypes: [] };
213
- }
214
- else if (node.nodeClass === node_opcua_data_model_1.NodeClass.VariableType) {
215
- const variableTypes = [];
216
- let variableType = node;
217
- variableTypes.push(variableType);
218
- while (variableType.subtypeOfObj && variableType.subtypeOfObj.nodeId.namespace === namespace.index) {
219
- variableType = variableType.subtypeOfObj;
220
- variableTypes.push(variableType);
221
- }
222
- return { dataTypes: [], variableTypes, objectTypes: [], dataTypeNode: [], referenceTypes: [] };
223
- }
224
- const dataTypes = [...namespacePriv._dataTypeIterator()];
225
- const objectTypes = [...namespacePriv._objectTypeIterator()];
226
- const variableTypes = [...namespacePriv._variableTypeIterator()];
227
- const referenceTypes = [...namespacePriv._referenceTypeIterator()];
228
- return { dataTypes, variableTypes, objectTypes, referenceTypes };
229
- }
230
- exports.extractTypes = extractTypes;
231
- function buildDocumentation(namespace, writer, options) {
232
- return __awaiter(this, void 0, void 0, function* () {
233
- options = options || {};
234
- const namespacePriv = namespace;
235
- const namespaceUri = namespace.namespaceUri;
236
- // -------- Documentation
237
- const { dataTypes, objectTypes, variableTypes } = extractTypes(namespace, options);
238
- writer.writeLine("");
239
- writer.writeLine("# Namespace " + namespaceUri);
240
- writer.writeLine("");
241
- // -------------- writeReferences
242
- if (namespacePriv._referenceTypeCount() > 0) {
243
- writer.writeLine("");
244
- writer.writeLine("## References ");
245
- writer.writeLine("");
246
- for (const referenceType of namespacePriv._referenceTypeIterator()) {
247
- writer.writeLine("\n\n### reference " + referenceType.browseName.name);
248
- dumpReferenceType(referenceType);
249
- }
250
- }
251
- function d(node) {
252
- return node.description && node.description.text ? node.description.text.toString() : "";
253
- }
254
- // -------------- writeDataType
255
- if (dataTypes.length > 0) {
256
- writer.writeLine("");
257
- writer.writeLine("## DataTypes");
258
- writer.writeLine("");
259
- for (const dataType of dataTypes) {
260
- writer.writeLine("\n\n### " + dataType.browseName.name.toString());
261
- writer.writeLine("");
262
- writer.writeLine(dataTypeToMarkdown(dataType));
263
- }
264
- }
265
- // -------------- writeObjectType
266
- if (objectTypes.length > 0) {
267
- writer.writeLine("");
268
- writer.writeLine("## ObjectTypes");
269
- writer.writeLine("");
270
- for (const objectType of objectTypes) {
271
- writer.writeLine("\n\n### " + objectType.browseName.name.toString());
272
- writer.writeLine(d(objectType));
273
- if (options.dumpGraphics) {
274
- yield options.dumpGraphics(writer, objectType);
275
- }
276
- // enumerate components
277
- writer.writeLine((0, displayNodeElement_1.displayNodeElement)(objectType, { format: "markdown" }));
278
- for (const comp of objectType.getComponents()) {
279
- writer.writeLine("\n\n#### " + comp.browseName.name.toString());
280
- writer.writeLine("");
281
- writer.writeLine(d(comp));
282
- }
283
- for (const comp of objectType.getProperties()) {
284
- writer.writeLine("\n\n#### " + comp.browseName.name.toString());
285
- writer.writeLine("");
286
- writer.writeLine(d(comp));
287
- }
288
- }
289
- }
290
- // -------------- writeVariableType
291
- if (variableTypes.length > 0) {
292
- writer.writeLine("");
293
- writer.writeLine("## VariableTypes");
294
- writer.writeLine("");
295
- for (const variableType of variableTypes) {
296
- writer.writeLine("\n\n### " + variableType.browseName.name.toString());
297
- writer.writeLine(d(variableType));
298
- writer.writeLine("");
299
- if (options.dumpGraphics) {
300
- yield options.dumpGraphics(writer, variableType);
301
- }
302
- // enumerate components
303
- writer.writeLine((0, displayNodeElement_1.displayNodeElement)(variableType, { format: "markdown" }));
304
- for (const reference of variableType.allReferences()) {
305
- const n = reference.node;
306
- writer.writeLine("\n\n#### " + n.browseName.name.toString());
307
- writer.writeLine("");
308
- writer.writeLine(d(n));
309
- }
310
- }
311
- }
312
- });
313
- }
314
- exports.buildDocumentation = buildDocumentation;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.buildDocumentation = exports.extractTypes = exports.buildDocumentationToString = exports.Writer = void 0;
13
+ const node_opcua_basic_types_1 = require("node-opcua-basic-types");
14
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
15
+ const node_opcua_variant_1 = require("node-opcua-variant");
16
+ const displayNodeElement_1 = require("./displayNodeElement");
17
+ const tableHelper_1 = require("./tableHelper");
18
+ class Writer {
19
+ constructor() {
20
+ this.stream = [];
21
+ /* empty */
22
+ }
23
+ writeLine(str) {
24
+ this.stream.push(str);
25
+ }
26
+ toString() {
27
+ return this.stream.join("\n");
28
+ }
29
+ }
30
+ exports.Writer = Writer;
31
+ function buildDocumentationToString(namespace, options) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ const writer = new Writer();
34
+ yield buildDocumentation(namespace, writer, options);
35
+ return writer.toString();
36
+ });
37
+ }
38
+ exports.buildDocumentationToString = buildDocumentationToString;
39
+ const toDataTypeStr = (p) => {
40
+ if (p.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
41
+ const v = p;
42
+ const arr = v.valueRank == 1 ? "[]" : "";
43
+ const brn = toDataTypeStr(p.dataTypeObj);
44
+ return brn + arr;
45
+ }
46
+ if (p.nodeClass === node_opcua_data_model_1.NodeClass.DataType) {
47
+ const dataType = p;
48
+ const brn = dataType.browseName.toString();
49
+ return brn;
50
+ }
51
+ return "";
52
+ };
53
+ function dataTypeEnumerationToMarkdown(dataType) {
54
+ const writer = new Writer();
55
+ writer.writeLine("");
56
+ if (dataType.description) {
57
+ writer.writeLine(dataType.description.text || "");
58
+ }
59
+ writer.writeLine(`\nThe fields of the ${dataType.browseName.name} DataType are defined in the following table:`);
60
+ writer.writeLine("");
61
+ const definition = dataType.getEnumDefinition();
62
+ writer.writeLine("\nBasic Type: " + node_opcua_variant_1.DataType[node_opcua_variant_1.DataType.Int32]);
63
+ writer.writeLine("");
64
+ const table = new tableHelper_1.TableHelper(["Name", "Value", "Description"]);
65
+ for (const f of definition.fields || []) {
66
+ table.push([f.name, (0, node_opcua_basic_types_1.coerceUInt32)(f.value[1]), f.description.text || ""]);
67
+ }
68
+ writer.writeLine(table.toMarkdownTable());
69
+ const str = dumpTypeRepresentation(dataType);
70
+ writer.writeLine(str);
71
+ return writer.toString();
72
+ }
73
+ function dumpTypeRepresentation(uaType) {
74
+ var _a;
75
+ const className = node_opcua_data_model_1.NodeClass[uaType.nodeClass];
76
+ const writer = new Writer();
77
+ writer.writeLine("\n");
78
+ writer.writeLine(`\nThe representation of the ${uaType.browseName.name} ${className} in the address space is shown in the following table:`);
79
+ const table = new tableHelper_1.TableHelper(["Name", "Attribute"]);
80
+ table.push(["NodeId", uaType.nodeId.toString()]);
81
+ table.push(["NamespaceUri", uaType.addressSpace.getNamespaceUri(uaType.nodeId.namespace)]);
82
+ table.push(["BrowseName", uaType.browseName.name.toString()]);
83
+ table.push(["NodeClass", node_opcua_data_model_1.NodeClass[uaType.nodeClass]]);
84
+ if (uaType.nodeClass === node_opcua_data_model_1.NodeClass.ReferenceType) {
85
+ table.push(["InverseName", uaType.inverseName.text]);
86
+ // table.push(["IsSymmetric", (uaType as UAReferenceType).isSymetric ? "Yes" : "No"]);
87
+ }
88
+ table.push(["IsAbstract", uaType.isAbstract ? "Yes" : "No"]);
89
+ table.push(["SubtypeOf", uaType.subtypeOfObj ? uaType.subtypeOfObj.browseName.toString() : ""]);
90
+ writer.writeLine("");
91
+ writer.writeLine(table.toMarkdownTable());
92
+ writer.writeLine("");
93
+ // forward refereces
94
+ {
95
+ const properties = uaType.findReferencesExAsObject("HasProperty");
96
+ const table = new tableHelper_1.TableHelper(["Reference", "NodeClass", "BrowseName", "DataType", "TypeDefinition", "ModellingRule"]);
97
+ if (uaType.subtypeOfObj) {
98
+ const referenceName = "HasSubType";
99
+ const p = uaType.subtypeOfObj;
100
+ const nodeClass = node_opcua_data_model_1.NodeClass[p.nodeClass];
101
+ const browseName = p.browseName.toString();
102
+ const dataTypeStr = toDataTypeStr(p);
103
+ const modellingRule = p.modellingRule || "";
104
+ const typeDefinitionName = "";
105
+ table.push([referenceName, nodeClass, browseName, dataTypeStr, typeDefinitionName, modellingRule]);
106
+ }
107
+ if (properties.length > 0) {
108
+ writer.writeLine(`\nThe reference of the ${uaType.browseName.name} ${className} is shown in the following table:`);
109
+ writer.writeLine("");
110
+ for (const p of properties) {
111
+ const referenceName = "HasProperty";
112
+ const nodeClass = node_opcua_data_model_1.NodeClass[p.nodeClass];
113
+ const browseName = p.browseName.toString();
114
+ const dataTypeStr = toDataTypeStr(p);
115
+ const typeDefinitionName = (_a = p.typeDefinitionObj) === null || _a === void 0 ? void 0 : _a.browseName.toString();
116
+ const modellingRule = p.modellingRule || "";
117
+ table.push([referenceName, nodeClass, browseName, dataTypeStr, typeDefinitionName, modellingRule]);
118
+ }
119
+ }
120
+ writer.writeLine("");
121
+ writer.writeLine(table.toMarkdownTable());
122
+ writer.writeLine("");
123
+ }
124
+ return writer.toString();
125
+ }
126
+ function dataTypeStructureToMarkdown(dataType) {
127
+ const addressSpace = dataType.addressSpace;
128
+ const writer = new Writer();
129
+ writer.writeLine("");
130
+ if (dataType.description) {
131
+ writer.writeLine(dataType.description.text || "");
132
+ }
133
+ const definition = dataType.getStructureDefinition();
134
+ writer.writeLine("\nBasic Type: " + node_opcua_variant_1.DataType[dataType.basicDataType]);
135
+ writer.writeLine("");
136
+ writer.writeLine(`The fields of the ${dataType.browseName.name} DataType are defined in the following table:`);
137
+ const c = (f) => {
138
+ var _a;
139
+ let dataTypeString = addressSpace.findDataType(f.dataType).browseName.toString();
140
+ if (f.valueRank === 1) {
141
+ dataTypeString += "[]";
142
+ }
143
+ else if (f.valueRank >= 2) {
144
+ dataTypeString += "[" + ((_a = f.arrayDimensions) === null || _a === void 0 ? void 0 : _a.map((d) => "" + d).join(" ")) + "]";
145
+ }
146
+ // f.maxStringLength ? f.maxStringLength : "",
147
+ // f.arrayDimensions ? f.arrayDimensions : "",
148
+ return dataTypeString;
149
+ };
150
+ const table = new tableHelper_1.TableHelper(["Name", "Type", "Description"]);
151
+ table.push([dataType.browseName.name, "Structure"]);
152
+ for (const f of definition.fields || []) {
153
+ table.push([" " + f.name, c(f), (f.description.text || "").replace(/\n/g, "<br>")]);
154
+ }
155
+ writer.writeLine(table.toMarkdownTable());
156
+ const str = dumpTypeRepresentation(dataType);
157
+ writer.writeLine(str);
158
+ return writer.toString();
159
+ }
160
+ function dataTypeToMarkdown(dataType) {
161
+ if (dataType.isEnumeration()) {
162
+ return dataTypeEnumerationToMarkdown(dataType);
163
+ }
164
+ else if (dataType.isStructure()) {
165
+ return dataTypeStructureToMarkdown(dataType);
166
+ }
167
+ else {
168
+ const writer = new Writer();
169
+ writer.writeLine("");
170
+ if (dataType.description) {
171
+ writer.writeLine(dataType.description.text || "");
172
+ }
173
+ writer.writeLine("\nBasic Type: " + node_opcua_variant_1.DataType[dataType.basicDataType]);
174
+ writer.writeLine("");
175
+ return writer.toString();
176
+ }
177
+ }
178
+ function dumpReferenceType(referenceType) {
179
+ const writer = new Writer();
180
+ const str = dumpTypeRepresentation(referenceType);
181
+ writer.writeLine(str);
182
+ return writer.toString();
183
+ }
184
+ function extractTypes(namespace, options) {
185
+ const namespacePriv = namespace;
186
+ if (!options || !options.node) {
187
+ const dataTypes = [...namespacePriv._dataTypeIterator()];
188
+ const objectTypes = [...namespacePriv._objectTypeIterator()];
189
+ const variableTypes = [...namespacePriv._variableTypeIterator()];
190
+ const referenceTypes = [...namespacePriv._referenceTypeIterator()];
191
+ return { dataTypes, variableTypes, objectTypes, referenceTypes };
192
+ }
193
+ const node = options.node;
194
+ if (node.nodeClass === node_opcua_data_model_1.NodeClass.DataType) {
195
+ const dataTypes = [];
196
+ let dataType = node;
197
+ dataTypes.push(dataType);
198
+ while (dataType.subtypeOfObj && dataType.subtypeOfObj.nodeId.namespace === namespace.index) {
199
+ dataType = dataType.subtypeOfObj;
200
+ dataTypes.push(dataType);
201
+ }
202
+ return { dataTypes, variableTypes: [], objectTypes: [], dataTypeNode: [], referenceTypes: [] };
203
+ }
204
+ else if (node.nodeClass === node_opcua_data_model_1.NodeClass.ObjectType) {
205
+ const objectTypes = [];
206
+ let objectType = node;
207
+ objectTypes.push(objectType);
208
+ while (objectType.subtypeOfObj && objectType.subtypeOfObj.nodeId.namespace === namespace.index) {
209
+ objectType = objectType.subtypeOfObj;
210
+ objectTypes.push(objectType);
211
+ }
212
+ return { dataTypes: [], variableTypes: [], objectTypes, dataTypeNode: [], referenceTypes: [] };
213
+ }
214
+ else if (node.nodeClass === node_opcua_data_model_1.NodeClass.VariableType) {
215
+ const variableTypes = [];
216
+ let variableType = node;
217
+ variableTypes.push(variableType);
218
+ while (variableType.subtypeOfObj && variableType.subtypeOfObj.nodeId.namespace === namespace.index) {
219
+ variableType = variableType.subtypeOfObj;
220
+ variableTypes.push(variableType);
221
+ }
222
+ return { dataTypes: [], variableTypes, objectTypes: [], dataTypeNode: [], referenceTypes: [] };
223
+ }
224
+ const dataTypes = [...namespacePriv._dataTypeIterator()];
225
+ const objectTypes = [...namespacePriv._objectTypeIterator()];
226
+ const variableTypes = [...namespacePriv._variableTypeIterator()];
227
+ const referenceTypes = [...namespacePriv._referenceTypeIterator()];
228
+ return { dataTypes, variableTypes, objectTypes, referenceTypes };
229
+ }
230
+ exports.extractTypes = extractTypes;
231
+ function buildDocumentation(namespace, writer, options) {
232
+ return __awaiter(this, void 0, void 0, function* () {
233
+ options = options || {};
234
+ const namespacePriv = namespace;
235
+ const namespaceUri = namespace.namespaceUri;
236
+ // -------- Documentation
237
+ const { dataTypes, objectTypes, variableTypes } = extractTypes(namespace, options);
238
+ writer.writeLine("");
239
+ writer.writeLine("# Namespace " + namespaceUri);
240
+ writer.writeLine("");
241
+ // -------------- writeReferences
242
+ if (namespacePriv._referenceTypeCount() > 0) {
243
+ writer.writeLine("");
244
+ writer.writeLine("## References ");
245
+ writer.writeLine("");
246
+ for (const referenceType of namespacePriv._referenceTypeIterator()) {
247
+ writer.writeLine("\n\n### reference " + referenceType.browseName.name);
248
+ dumpReferenceType(referenceType);
249
+ }
250
+ }
251
+ function d(node) {
252
+ return node.description && node.description.text ? node.description.text.toString() : "";
253
+ }
254
+ // -------------- writeDataType
255
+ if (dataTypes.length > 0) {
256
+ writer.writeLine("");
257
+ writer.writeLine("## DataTypes");
258
+ writer.writeLine("");
259
+ for (const dataType of dataTypes) {
260
+ writer.writeLine("\n\n### " + dataType.browseName.name.toString());
261
+ writer.writeLine("");
262
+ writer.writeLine(dataTypeToMarkdown(dataType));
263
+ }
264
+ }
265
+ // -------------- writeObjectType
266
+ if (objectTypes.length > 0) {
267
+ writer.writeLine("");
268
+ writer.writeLine("## ObjectTypes");
269
+ writer.writeLine("");
270
+ for (const objectType of objectTypes) {
271
+ writer.writeLine("\n\n### " + objectType.browseName.name.toString());
272
+ writer.writeLine(d(objectType));
273
+ if (options.dumpGraphics) {
274
+ yield options.dumpGraphics(writer, objectType);
275
+ }
276
+ // enumerate components
277
+ writer.writeLine((0, displayNodeElement_1.displayNodeElement)(objectType, { format: "markdown" }));
278
+ for (const comp of objectType.getComponents()) {
279
+ writer.writeLine("\n\n#### " + comp.browseName.name.toString());
280
+ writer.writeLine("");
281
+ writer.writeLine(d(comp));
282
+ }
283
+ for (const comp of objectType.getProperties()) {
284
+ writer.writeLine("\n\n#### " + comp.browseName.name.toString());
285
+ writer.writeLine("");
286
+ writer.writeLine(d(comp));
287
+ }
288
+ }
289
+ }
290
+ // -------------- writeVariableType
291
+ if (variableTypes.length > 0) {
292
+ writer.writeLine("");
293
+ writer.writeLine("## VariableTypes");
294
+ writer.writeLine("");
295
+ for (const variableType of variableTypes) {
296
+ writer.writeLine("\n\n### " + variableType.browseName.name.toString());
297
+ writer.writeLine(d(variableType));
298
+ writer.writeLine("");
299
+ if (options.dumpGraphics) {
300
+ yield options.dumpGraphics(writer, variableType);
301
+ }
302
+ // enumerate components
303
+ writer.writeLine((0, displayNodeElement_1.displayNodeElement)(variableType, { format: "markdown" }));
304
+ for (const reference of variableType.allReferences()) {
305
+ const n = reference.node;
306
+ writer.writeLine("\n\n#### " + n.browseName.name.toString());
307
+ writer.writeLine("");
308
+ writer.writeLine(d(n));
309
+ }
310
+ }
311
+ }
312
+ });
313
+ }
314
+ exports.buildDocumentation = buildDocumentation;
315
315
  //# sourceMappingURL=generate_markdown_doc.js.map