node-opcua-address-space
Advanced tools
Comparing version 2.22.0 to 2.23.0
@@ -173,7 +173,7 @@ "use strict"; | ||
} | ||
function makeDefaultVariant(addressSpace, dataTypeNode, valueRank) { | ||
function makeDefaultVariant2(addressSpace, dataTypeNode, valueRank) { | ||
const variant = { dataType: node_opcua_variant_1.DataType.Null }; | ||
return variant; | ||
} | ||
function makeDefaultVariant2(addressSpace, dataTypeNode, valueRank) { | ||
function makeDefaultVariant(addressSpace, dataTypeNode, valueRank) { | ||
let variant = { dataType: node_opcua_variant_1.DataType.Null }; | ||
@@ -185,3 +185,3 @@ const nodeDataType = addressSpace.findNode(dataTypeNode); | ||
// console.log("xxxxxxxxxx ", dataTypeNode.toString(addressSpace as any)); | ||
return variant; | ||
return { dataType: node_opcua_variant_1.DataType.ExtensionObject, value: null }; | ||
} | ||
@@ -539,2 +539,16 @@ const dv = node_opcua_factory_1.findSimpleType(node_opcua_variant_1.DataType[dataType]).defaultValue; | ||
}; | ||
const nodeId_parser = { | ||
NodeId: { | ||
init() { | ||
this.nodeId = ""; | ||
}, | ||
parser: { | ||
Identifier: { | ||
finish() { | ||
this.parent.nodeId = _translateNodeId(node_opcua_nodeid_1.resolveNodeId(this.text.trim()).toString()); | ||
} | ||
} | ||
} | ||
} | ||
}; | ||
const enumValueType_parser = { | ||
@@ -846,2 +860,3 @@ EnumValueType: { | ||
dataType: node_opcua_variant_1.DataType.Guid, | ||
arrayType: node_opcua_variant_1.VariantArrayType.Scalar, | ||
value: this.text | ||
@@ -853,2 +868,16 @@ }; | ||
}, | ||
NodeId: { | ||
parser: { | ||
Identifier: { | ||
finish() { | ||
const nodeId = this.text; | ||
this.parent.parent.parent.obj.value = { | ||
dataType: node_opcua_variant_1.DataType.NodeId, | ||
arrayType: node_opcua_variant_1.VariantArrayType.Scalar, | ||
value: _translateNodeId(node_opcua_nodeid_1.resolveNodeId(nodeId).toString()) | ||
}; | ||
} | ||
} | ||
} | ||
}, | ||
Boolean: parser2("Boolean", ec.coerceBoolean), | ||
@@ -935,2 +964,18 @@ Byte: parser2("Byte", parseInt), | ||
}, | ||
ListOfNodeId: { | ||
init() { | ||
this.listData = []; | ||
}, | ||
parser: nodeId_parser, | ||
finish() { | ||
this.parent.parent.obj.value = { | ||
arrayType: node_opcua_variant_1.VariantArrayType.Array, | ||
dataType: node_opcua_variant_1.DataType.NodeId, | ||
value: this.listData | ||
}; | ||
}, | ||
endElement(elementName) { | ||
this.listData.push(this.parser.NodeId.nodeId); | ||
} | ||
}, | ||
ListOfBoolean: ListOf("Boolean", ec.coerceBoolean), | ||
@@ -937,0 +982,0 @@ ListOfByte: ListOf("Byte", parseInt), |
@@ -16,2 +16,3 @@ "use strict"; | ||
const node_opcua_variant_3 = require("node-opcua-variant"); | ||
const node_opcua_basic_types_1 = require("node-opcua-basic-types"); | ||
const node_opcua_types_1 = require("node-opcua-types"); | ||
@@ -359,4 +360,71 @@ const base_node_1 = require("../base_node"); | ||
} | ||
function _isDefaultValue(value) { | ||
// detect default value | ||
if (value.arrayType === node_opcua_variant_2.VariantArrayType.Scalar) { | ||
switch (value.dataType) { | ||
case node_opcua_variant_3.DataType.ExtensionObject: | ||
if (!value.value) { | ||
return true; | ||
} | ||
break; | ||
case node_opcua_variant_3.DataType.DateTime: | ||
if (!value.value || value.value.getTime() === node_opcua_basic_types_1.minOPCUADate) { | ||
return true; | ||
} | ||
break; | ||
case node_opcua_variant_3.DataType.ByteString: | ||
if (!value.value || value.value.length === 0) { | ||
return true; | ||
} | ||
break; | ||
case node_opcua_variant_3.DataType.Boolean: | ||
if (!value.value) { | ||
return true; | ||
} | ||
break; | ||
case node_opcua_variant_3.DataType.SByte: | ||
case node_opcua_variant_3.DataType.Byte: | ||
case node_opcua_variant_3.DataType.UInt16: | ||
case node_opcua_variant_3.DataType.UInt32: | ||
case node_opcua_variant_3.DataType.Int16: | ||
case node_opcua_variant_3.DataType.Int32: | ||
case node_opcua_variant_3.DataType.Double: | ||
case node_opcua_variant_3.DataType.Float: | ||
if (value.value === 0 || value.value === null) { | ||
return true; | ||
} | ||
break; | ||
case node_opcua_variant_3.DataType.String: | ||
if (value.value === null || value.value === "") { | ||
return true; | ||
} | ||
break; | ||
case node_opcua_variant_3.DataType.UInt64: | ||
case node_opcua_variant_3.DataType.UInt64: | ||
if (0 === coerceInt64ToInt32(value.value)) { | ||
return true; | ||
} | ||
break; | ||
case node_opcua_variant_3.DataType.LocalizedText: | ||
if (!value.value) { | ||
return true; | ||
} | ||
const l = value.value; | ||
if (!l.locale && !l.text) { | ||
return true; | ||
} | ||
break; | ||
} | ||
return false; | ||
} | ||
else { | ||
if (!value.value || value.value.length === 0) { | ||
return true; | ||
} | ||
return false; | ||
} | ||
} | ||
function _dumpValue(xw, node, value) { | ||
const addressSpace = node.addressSpace; | ||
// istanbul ignore next | ||
if (value === null || value === undefined) { | ||
@@ -377,5 +445,8 @@ return; | ||
node_opcua_assert_1.assert(typeof baseDataTypeName === "string"); | ||
xw.startElement("Value"); | ||
// determine if dataTypeName is a ExtensionObject | ||
const isExtensionObject = value.dataType === node_opcua_variant_3.DataType.ExtensionObject; | ||
if (_isDefaultValue(value)) { | ||
return; | ||
} | ||
xw.startElement("Value"); | ||
if (isExtensionObject) { | ||
@@ -382,0 +453,0 @@ if (node_opcua_factory_1.hasStructuredType(dataTypeName)) { |
{ | ||
"name": "node-opcua-address-space", | ||
"version": "2.22.0", | ||
"version": "2.23.0", | ||
"description": "pure nodejs OPCUA SDK - module -address-space", | ||
@@ -84,3 +84,3 @@ "main": "./dist/src/index_current.js", | ||
"homepage": "http://node-opcua.github.io/", | ||
"gitHead": "8eb6d67ecc89e34aa5bb99e9d6025aec2fa79743" | ||
"gitHead": "767b671cfca9f3a45de3df0add62d4e44faadc74" | ||
} |
@@ -218,6 +218,2 @@ /** | ||
function makeDefaultVariant(addressSpace: AddressSpacePublic, dataTypeNode: NodeId, valueRank: number): VariantOptions | undefined { | ||
const variant: VariantOptions = { dataType: DataType.Null }; | ||
return variant; | ||
} | ||
function makeDefaultVariant2( | ||
@@ -228,2 +224,6 @@ addressSpace: AddressSpacePublic, | ||
): VariantOptions | undefined { | ||
const variant: VariantOptions = { dataType: DataType.Null }; | ||
return variant; | ||
} | ||
function makeDefaultVariant(addressSpace: AddressSpacePublic, dataTypeNode: NodeId, valueRank: number): VariantOptions | undefined { | ||
let variant: VariantOptions = { dataType: DataType.Null }; | ||
@@ -236,3 +236,3 @@ | ||
// console.log("xxxxxxxxxx ", dataTypeNode.toString(addressSpace as any)); | ||
return variant; | ||
return { dataType: DataType.ExtensionObject, value: null }; | ||
} | ||
@@ -643,2 +643,16 @@ const dv = findSimpleType(DataType[dataType]).defaultValue; | ||
const nodeId_parser = { | ||
NodeId: { | ||
init(this: any) { | ||
this.nodeId = ""; | ||
}, | ||
parser: { | ||
Identifier: { | ||
finish(this: any) { | ||
this.parent.nodeId = _translateNodeId(resolveNodeId(this.text.trim()).toString()); | ||
} | ||
} | ||
} | ||
} | ||
}; | ||
const enumValueType_parser = { | ||
@@ -997,2 +1011,3 @@ EnumValueType: { | ||
dataType: DataType.Guid, | ||
arrayType: VariantArrayType.Scalar, | ||
value: this.text | ||
@@ -1005,2 +1020,17 @@ }; | ||
NodeId: { | ||
parser: { | ||
Identifier: { | ||
finish(this: any) { | ||
const nodeId = this.text; | ||
this.parent.parent.parent.obj.value = { | ||
dataType: DataType.NodeId, | ||
arrayType: VariantArrayType.Scalar, | ||
value: _translateNodeId(resolveNodeId(nodeId).toString()) | ||
}; | ||
} | ||
} | ||
} | ||
}, | ||
Boolean: parser2("Boolean", ec.coerceBoolean), | ||
@@ -1093,3 +1123,18 @@ Byte: parser2("Byte", parseInt), | ||
}, | ||
ListOfNodeId: { | ||
init(this: any) { | ||
this.listData = []; | ||
}, | ||
parser: nodeId_parser, | ||
finish(this: any) { | ||
this.parent.parent.obj.value = { | ||
arrayType: VariantArrayType.Array, | ||
dataType: DataType.NodeId, | ||
value: this.listData | ||
}; | ||
}, | ||
endElement(this: any, elementName: string) { | ||
this.listData.push(this.parser.NodeId.nodeId); | ||
} | ||
}, | ||
ListOfBoolean: ListOf("Boolean", ec.coerceBoolean), | ||
@@ -1096,0 +1141,0 @@ ListOfByte: ListOf("Byte", parseInt), |
@@ -29,3 +29,3 @@ /** | ||
import { Int64 } from "node-opcua-basic-types"; | ||
import { Int64, minOPCUADate } from "node-opcua-basic-types"; | ||
import { BrowseDescription, EnumDefinition, StructureDefinition, StructureField, StructureType } from "node-opcua-types"; | ||
@@ -397,5 +397,72 @@ import { BaseNode } from "../base_node"; | ||
function _isDefaultValue(value: Variant): boolean { | ||
// detect default value | ||
if (value.arrayType === VariantArrayType.Scalar) { | ||
switch (value.dataType) { | ||
case DataType.ExtensionObject: | ||
if (!value.value) { | ||
return true; | ||
} | ||
break; | ||
case DataType.DateTime: | ||
if (!value.value || value.value.getTime() === minOPCUADate) { | ||
return true; | ||
} | ||
break; | ||
case DataType.ByteString: | ||
if (!value.value || value.value.length === 0) { | ||
return true; | ||
} | ||
break; | ||
case DataType.Boolean: | ||
if (!value.value) { | ||
return true; | ||
} | ||
break; | ||
case DataType.SByte: | ||
case DataType.Byte: | ||
case DataType.UInt16: | ||
case DataType.UInt32: | ||
case DataType.Int16: | ||
case DataType.Int32: | ||
case DataType.Double: | ||
case DataType.Float: | ||
if (value.value === 0 || value.value === null) { | ||
return true; | ||
} | ||
break; | ||
case DataType.String: | ||
if (value.value === null || value.value === "") { | ||
return true; | ||
} | ||
break; | ||
case DataType.UInt64: | ||
case DataType.UInt64: | ||
if (0 === coerceInt64ToInt32(value.value)) { | ||
return true; | ||
} | ||
break; | ||
case DataType.LocalizedText: | ||
if (!value.value) { | ||
return true; | ||
} | ||
const l = value.value as LocalizedText; | ||
if (!l.locale && !l.text) { | ||
return true; | ||
} | ||
break; | ||
} | ||
return false; | ||
} else { | ||
if (!value.value || value.value.length === 0) { | ||
return true; | ||
} | ||
return false; | ||
} | ||
} | ||
function _dumpValue(xw: XmlWriter, node: UAVariable | UAVariableType, value: Variant) { | ||
const addressSpace = node.addressSpace; | ||
// istanbul ignore next | ||
if (value === null || value === undefined) { | ||
@@ -420,7 +487,10 @@ return; | ||
xw.startElement("Value"); | ||
// determine if dataTypeName is a ExtensionObject | ||
const isExtensionObject = value.dataType === DataType.ExtensionObject; | ||
if (_isDefaultValue(value)) { | ||
return; | ||
} | ||
xw.startElement("Value"); | ||
if (isExtensionObject) { | ||
@@ -427,0 +497,0 @@ if (hasStructuredType(dataTypeName)) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
3487905
416
51440