UNPKG

node-opcua-pseudo-session

Version:

pure nodejs OPCUA SDK - module pseudo-session

41 lines 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findSuperType = findSuperType; exports.findBasicDataType = findBasicDataType; const node_opcua_nodeid_1 = require("node-opcua-nodeid"); const node_opcua_service_browse_1 = require("node-opcua-service-browse"); const node_opcua_variant_1 = require("node-opcua-variant"); const node_opcua_constants_1 = require("node-opcua-constants"); const node_opcua_data_model_1 = require("node-opcua-data-model"); const resultMask = (0, node_opcua_data_model_1.makeResultMask)("ReferenceType"); const hasSubtypeNodeId = (0, node_opcua_nodeid_1.makeNodeId)(node_opcua_constants_1.ReferenceTypeIds.HasSubtype); async function findSuperType(session, dataTypeId) { // let's browse for the SuperType of this object const nodeToBrowse = new node_opcua_service_browse_1.BrowseDescription({ browseDirection: node_opcua_service_browse_1.BrowseDirection.Inverse, includeSubtypes: false, nodeId: dataTypeId, referenceTypeId: hasSubtypeNodeId, resultMask }); const browseResult = await session.browse(nodeToBrowse); browseResult.references = browseResult.references || /* istanbul ignore next */ []; const baseDataType = browseResult.references[0].nodeId; return baseDataType; } async function findBasicDataType(session, dataTypeId) { if (dataTypeId.identifierType === node_opcua_nodeid_1.NodeIdType.NUMERIC && dataTypeId.value === node_opcua_constants_1.DataTypeIds.Enumeration) { // see https://reference.opcfoundation.org/v104/Core/docs/Part3/8.40/ return node_opcua_variant_1.DataType.Int32; } if (dataTypeId.identifierType === node_opcua_nodeid_1.NodeIdType.NUMERIC && dataTypeId.value <= node_opcua_variant_1.DataType.DiagnosticInfo) { // we have a well-known DataType const dataTypeName = node_opcua_variant_1.DataType[dataTypeId.value]; return dataTypeId.value; } else { const baseDataTypeId = await findSuperType(session, dataTypeId); return await findBasicDataType(session, baseDataTypeId); } } //# sourceMappingURL=find_basic_datatype.js.map