node-opcua-address-space 2.71.0 → 2.72.2

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 (408) hide show
  1. package/dist/source/address_space_ts.d.ts +118 -118
  2. package/dist/source/address_space_ts.js +17 -17
  3. package/dist/source/continuation_points/continuation_point_manager.d.ts +32 -32
  4. package/dist/source/continuation_points/continuation_point_manager.js +195 -195
  5. package/dist/source/helpers/adjust_browse_direction.d.ts +5 -5
  6. package/dist/source/helpers/adjust_browse_direction.js +11 -11
  7. package/dist/source/helpers/argument_list.d.ts +34 -34
  8. package/dist/source/helpers/argument_list.js +285 -285
  9. package/dist/source/helpers/call_helpers.d.ts +6 -6
  10. package/dist/source/helpers/call_helpers.js +70 -70
  11. package/dist/source/helpers/check_event_clause.d.ts +17 -17
  12. package/dist/source/helpers/check_event_clause.js +52 -52
  13. package/dist/source/helpers/coerce_enum_value.d.ts +6 -6
  14. package/dist/source/helpers/coerce_enum_value.js +33 -33
  15. package/dist/source/helpers/dump_tools.d.ts +14 -14
  16. package/dist/source/helpers/dump_tools.js +78 -78
  17. package/dist/source/helpers/ensure_secure_access.d.ts +9 -9
  18. package/dist/source/helpers/ensure_secure_access.js +76 -76
  19. package/dist/source/helpers/make_optionals_map.d.ts +21 -21
  20. package/dist/source/helpers/make_optionals_map.js +29 -29
  21. package/dist/source/helpers/multiform_func.d.ts +11 -11
  22. package/dist/source/helpers/multiform_func.js +73 -73
  23. package/dist/source/helpers/resolve_opaque_on_address_space.d.ts +3 -3
  24. package/dist/source/helpers/resolve_opaque_on_address_space.js +36 -36
  25. package/dist/source/index.d.ts +40 -40
  26. package/dist/source/index.js +66 -66
  27. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.d.ts +12 -12
  28. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.js +2 -2
  29. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.d.ts +21 -21
  30. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js +2 -2
  31. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +24 -24
  32. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js +2 -2
  33. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.d.ts +12 -12
  34. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js +2 -2
  35. package/dist/source/interfaces/data_access/ua_y_array_item_ex.d.ts +8 -8
  36. package/dist/source/interfaces/data_access/ua_y_array_item_ex.js +2 -2
  37. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +12 -12
  38. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +2 -2
  39. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.d.ts +49 -49
  40. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js +2 -2
  41. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.d.ts +11 -11
  42. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js +2 -2
  43. package/dist/source/interfaces/state_machine/ua_state_machine_type.d.ts +222 -222
  44. package/dist/source/interfaces/state_machine/ua_state_machine_type.js +2 -2
  45. package/dist/source/interfaces/state_machine/ua_transition_ex.d.ts +6 -6
  46. package/dist/source/interfaces/state_machine/ua_transition_ex.js +2 -2
  47. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +8 -8
  48. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js +2 -2
  49. package/dist/source/loader/decode_xml_extension_object.d.ts +6 -6
  50. package/dist/source/loader/decode_xml_extension_object.js +71 -71
  51. package/dist/source/loader/ensure_datatype_extracted.d.ts +5 -5
  52. package/dist/source/loader/ensure_datatype_extracted.js +45 -45
  53. package/dist/source/loader/generateAddressSpaceRaw.d.ts +10 -10
  54. package/dist/source/loader/generateAddressSpaceRaw.js +45 -45
  55. package/dist/source/loader/load_nodeset2.d.ts +16 -16
  56. package/dist/source/loader/load_nodeset2.js +1468 -1464
  57. package/dist/source/loader/load_nodeset2.js.map +1 -1
  58. package/dist/source/loader/make_semver_compatible.d.ts +6 -0
  59. package/dist/source/loader/make_semver_compatible.js +26 -0
  60. package/dist/source/loader/make_semver_compatible.js.map +1 -0
  61. package/dist/source/loader/make_xml_extension_object_parser.d.ts +28 -28
  62. package/dist/source/loader/make_xml_extension_object_parser.js +325 -315
  63. package/dist/source/loader/make_xml_extension_object_parser.js.map +1 -1
  64. package/dist/source/loader/namespace_post_step.d.ts +6 -6
  65. package/dist/source/loader/namespace_post_step.js +47 -47
  66. package/dist/source/loader/register_node_promoter.d.ts +3 -3
  67. package/dist/source/loader/register_node_promoter.js +9 -9
  68. package/dist/source/namespace.d.ts +6 -6
  69. package/dist/source/namespace.js +2 -2
  70. package/dist/source/namespace_alarm_and_condition.d.ts +24 -24
  71. package/dist/source/namespace_alarm_and_condition.js +2 -2
  72. package/dist/source/namespace_data_access.d.ts +42 -42
  73. package/dist/source/namespace_data_access.js +2 -2
  74. package/dist/source/namespace_machine_state.d.ts +7 -7
  75. package/dist/source/namespace_machine_state.js +2 -2
  76. package/dist/source/pseudo_session.d.ts +55 -55
  77. package/dist/source/pseudo_session.js +203 -203
  78. package/dist/source/session_context.d.ts +111 -111
  79. package/dist/source/session_context.js +265 -265
  80. package/dist/source/set_namespace_meta_data.d.ts +2 -2
  81. package/dist/source/set_namespace_meta_data.js +59 -59
  82. package/dist/source/ua_root_folder.d.ts +9 -9
  83. package/dist/source/ua_root_folder.js +2 -2
  84. package/dist/source/ua_two_state_variable_ex.d.ts +23 -23
  85. package/dist/source/ua_two_state_variable_ex.js +2 -2
  86. package/dist/source/xml_writer.d.ts +9 -9
  87. package/dist/source/xml_writer.js +2 -2
  88. package/dist/src/address_space.d.ts +392 -392
  89. package/dist/src/address_space.js +1387 -1387
  90. package/dist/src/address_space_change_event_tools.d.ts +6 -6
  91. package/dist/src/address_space_change_event_tools.js +149 -149
  92. package/dist/src/address_space_private.d.ts +43 -43
  93. package/dist/src/address_space_private.js +2 -2
  94. package/dist/src/alarms_and_conditions/check_where_clause.d.ts +4 -4
  95. package/dist/src/alarms_and_conditions/check_where_clause.js +109 -109
  96. package/dist/src/alarms_and_conditions/condition.d.ts +5 -5
  97. package/dist/src/alarms_and_conditions/condition.js +80 -80
  98. package/dist/src/alarms_and_conditions/condition_info.d.ts +27 -27
  99. package/dist/src/alarms_and_conditions/condition_info.js +54 -54
  100. package/dist/src/alarms_and_conditions/condition_snapshot.d.ts +233 -233
  101. package/dist/src/alarms_and_conditions/condition_snapshot.js +666 -666
  102. package/dist/src/alarms_and_conditions/deviation_alarm_helper.d.ts +21 -21
  103. package/dist/src/alarms_and_conditions/deviation_alarm_helper.js +46 -46
  104. package/dist/src/alarms_and_conditions/extract_event_fields.d.ts +10 -10
  105. package/dist/src/alarms_and_conditions/extract_event_fields.js +89 -89
  106. package/dist/src/alarms_and_conditions/index.d.ts +18 -18
  107. package/dist/src/alarms_and_conditions/index.js +34 -34
  108. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +64 -62
  109. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +244 -244
  110. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js.map +1 -1
  111. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.d.ts +124 -118
  112. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js +416 -416
  113. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js.map +1 -1
  114. package/dist/src/alarms_and_conditions/ua_base_event_impl.d.ts +29 -29
  115. package/dist/src/alarms_and_conditions/ua_base_event_impl.js +38 -38
  116. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +36 -21
  117. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +115 -25
  118. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js.map +1 -1
  119. package/dist/src/alarms_and_conditions/ua_condition_impl.d.ts +187 -182
  120. package/dist/src/alarms_and_conditions/ua_condition_impl.js +1024 -1022
  121. package/dist/src/alarms_and_conditions/ua_condition_impl.js.map +1 -1
  122. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +18 -17
  123. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js +57 -57
  124. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js.map +1 -1
  125. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +30 -27
  126. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +56 -56
  127. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js.map +1 -1
  128. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +11 -9
  129. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +11 -11
  130. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js.map +1 -1
  131. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +40 -38
  132. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +86 -86
  133. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js.map +1 -1
  134. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +10 -10
  135. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +7 -7
  136. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.d.ts +105 -97
  137. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js +250 -250
  138. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js.map +1 -1
  139. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +29 -28
  140. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +50 -50
  141. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js.map +1 -1
  142. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +26 -25
  143. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +162 -162
  144. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js.map +1 -1
  145. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +48 -39
  146. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js +161 -135
  147. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js.map +1 -1
  148. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +17 -16
  149. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +17 -17
  150. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js.map +1 -1
  151. package/dist/src/apply_condition_refresh.d.ts +6 -6
  152. package/dist/src/apply_condition_refresh.js +27 -27
  153. package/dist/src/base_node_impl.d.ts +281 -281
  154. package/dist/src/base_node_impl.js +1395 -1395
  155. package/dist/src/base_node_private.d.ts +61 -61
  156. package/dist/src/base_node_private.js +705 -705
  157. package/dist/src/data_access/add_dataItem_stuff.d.ts +11 -11
  158. package/dist/src/data_access/add_dataItem_stuff.js +61 -61
  159. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.d.ts +1 -1
  160. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js +34 -34
  161. package/dist/src/data_access/ua_multistate_discrete_impl.d.ts +32 -32
  162. package/dist/src/data_access/ua_multistate_discrete_impl.js +130 -130
  163. package/dist/src/data_access/ua_multistate_value_discrete.d.ts +51 -51
  164. package/dist/src/data_access/ua_multistate_value_discrete.js +249 -249
  165. package/dist/src/data_access/ua_two_state_discrete.d.ts +25 -25
  166. package/dist/src/data_access/ua_two_state_discrete.js +153 -153
  167. package/dist/src/event_data.d.ts +29 -29
  168. package/dist/src/event_data.js +95 -95
  169. package/dist/src/extension_object_array_node.d.ts +61 -61
  170. package/dist/src/extension_object_array_node.js +276 -276
  171. package/dist/src/historical_access/address_space_historical_data_node.d.ts +26 -26
  172. package/dist/src/historical_access/address_space_historical_data_node.js +630 -630
  173. package/dist/src/index_current.d.ts +45 -45
  174. package/dist/src/index_current.js +77 -77
  175. package/dist/src/namespace_impl.d.ts +457 -457
  176. package/dist/src/namespace_impl.js +1733 -1733
  177. package/dist/src/namespace_private.d.ts +21 -21
  178. package/dist/src/namespace_private.js +32 -32
  179. package/dist/src/nodeid_manager.d.ts +36 -36
  180. package/dist/src/nodeid_manager.js +197 -197
  181. package/dist/src/nodeset_tools/adjust_namespace_array.d.ts +2 -2
  182. package/dist/src/nodeset_tools/adjust_namespace_array.js +13 -13
  183. package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +2 -2
  184. package/dist/src/nodeset_tools/construct_namespace_dependency.js +83 -83
  185. package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +2 -2
  186. package/dist/src/nodeset_tools/nodeset_to_xml.js +1143 -1143
  187. package/dist/src/nodeset_tools/typedictionary_to_xml.d.ts +2 -2
  188. package/dist/src/nodeset_tools/typedictionary_to_xml.js +154 -154
  189. package/dist/src/reference_impl.d.ts +43 -43
  190. package/dist/src/reference_impl.js +139 -139
  191. package/dist/src/role_permissions.d.ts +2 -2
  192. package/dist/src/role_permissions.js +10 -10
  193. package/dist/src/state_machine/finite_state_machine.d.ts +67 -67
  194. package/dist/src/state_machine/finite_state_machine.js +353 -353
  195. package/dist/src/state_machine/ua_shelving_state_machine_ex.d.ts +34 -34
  196. package/dist/src/state_machine/ua_shelving_state_machine_ex.js +250 -250
  197. package/dist/src/state_machine/ua_two_state_variable.d.ts +61 -61
  198. package/dist/src/state_machine/ua_two_state_variable.js +331 -331
  199. package/dist/src/tool_isSupertypeOf.d.ts +17 -17
  200. package/dist/src/tool_isSupertypeOf.js +108 -108
  201. package/dist/src/ua_condition_type.d.ts +8 -8
  202. package/dist/src/ua_condition_type.js +2 -2
  203. package/dist/src/ua_data_type_impl.d.ts +93 -93
  204. package/dist/src/ua_data_type_impl.js +368 -368
  205. package/dist/src/ua_method_impl.d.ts +41 -41
  206. package/dist/src/ua_method_impl.js +208 -208
  207. package/dist/src/ua_object_impl.d.ts +35 -33
  208. package/dist/src/ua_object_impl.js +162 -156
  209. package/dist/src/ua_object_impl.js.map +1 -1
  210. package/dist/src/ua_object_type_impl.d.ts +48 -48
  211. package/dist/src/ua_object_type_impl.js +124 -124
  212. package/dist/src/ua_reference_type_impl.d.ts +43 -43
  213. package/dist/src/ua_reference_type_impl.js +139 -139
  214. package/dist/src/ua_variable_impl.d.ts +351 -351
  215. package/dist/src/ua_variable_impl.js +1604 -1604
  216. package/dist/src/ua_variable_impl_ext_obj.d.ts +17 -17
  217. package/dist/src/ua_variable_impl_ext_obj.js +437 -437
  218. package/dist/src/ua_variable_type_impl.d.ts +62 -62
  219. package/dist/src/ua_variable_type_impl.js +570 -570
  220. package/dist/src/ua_view_impl.d.ts +19 -15
  221. package/dist/src/ua_view_impl.js +43 -36
  222. package/dist/src/ua_view_impl.js.map +1 -1
  223. package/distHelpers/add_event_generator_object.d.ts +3 -3
  224. package/distHelpers/add_event_generator_object.js +65 -65
  225. package/distHelpers/alarms_and_conditions_demo.d.ts +10 -10
  226. package/distHelpers/alarms_and_conditions_demo.js +114 -114
  227. package/distHelpers/assertHasMatchingReference.d.ts +19 -19
  228. package/distHelpers/assertHasMatchingReference.js +40 -40
  229. package/distHelpers/boiler_system.d.ts +113 -113
  230. package/distHelpers/boiler_system.js +395 -395
  231. package/distHelpers/create_minimalist_address_space_nodeset.d.ts +5 -5
  232. package/distHelpers/create_minimalist_address_space_nodeset.js +171 -171
  233. package/distHelpers/date_utils.d.ts +3 -3
  234. package/distHelpers/date_utils.js +9 -9
  235. package/distHelpers/dump_statemachine.js +127 -127
  236. package/distHelpers/get_address_space_fixture.d.ts +1 -1
  237. package/distHelpers/get_address_space_fixture.js +30 -30
  238. package/distHelpers/get_mini_address_space.d.ts +7 -7
  239. package/distHelpers/get_mini_address_space.js +36 -36
  240. package/distHelpers/index.d.ts +12 -12
  241. package/distHelpers/index.js +28 -28
  242. package/distHelpers/mock_session.d.ts +14 -14
  243. package/distHelpers/mock_session.js +25 -25
  244. package/distNodeJS/generate_address_space.d.ts +4 -4
  245. package/distNodeJS/generate_address_space.js +41 -41
  246. package/distNodeJS/index.d.ts +1 -1
  247. package/distNodeJS/index.js +17 -17
  248. package/package.json +23 -23
  249. package/source/loader/load_nodeset2.ts +21 -17
  250. package/source/loader/make_semver_compatible.ts +23 -0
  251. package/source/loader/make_xml_extension_object_parser.ts +16 -6
  252. package/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.ts +13 -6
  253. package/src/alarms_and_conditions/ua_alarm_condition_impl.ts +15 -10
  254. package/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.ts +126 -10
  255. package/src/alarms_and_conditions/ua_condition_impl.ts +26 -13
  256. package/src/alarms_and_conditions/ua_discrete_alarm_impl.ts +10 -4
  257. package/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.ts +7 -6
  258. package/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.ts +5 -3
  259. package/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.ts +7 -6
  260. package/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.ts +1 -1
  261. package/src/alarms_and_conditions/ua_limit_alarm_impl.ts +23 -13
  262. package/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.ts +6 -7
  263. package/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.ts +6 -7
  264. package/src/alarms_and_conditions/ua_off_normal_alarm_impl.ts +62 -30
  265. package/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.ts +5 -5
  266. package/src/ua_object_impl.ts +11 -3
  267. package/src/ua_view_impl.ts +6 -4
  268. package/test_helpers/test_fixtures/dataType_issue.xml +9 -9
  269. package/test_helpers/test_fixtures/nodeset_with_guid.xml +1442 -0
  270. package/test_helpers/test_fixtures/nodeset_with_int64_values.xml +31 -0
  271. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.d.ts +0 -23
  272. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.js +0 -3
  273. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.js.map +0 -1
  274. package/dist/source/interfaces/data_access/ua_discrete_item.d.ts +0 -6
  275. package/dist/source/interfaces/data_access/ua_discrete_item.js +0 -3
  276. package/dist/source/interfaces/data_access/ua_discrete_item.js.map +0 -1
  277. package/dist/source/interfaces/data_access/ua_multistate_discrete.d.ts +0 -25
  278. package/dist/source/interfaces/data_access/ua_multistate_discrete.js +0 -3
  279. package/dist/source/interfaces/data_access/ua_multistate_discrete.js.map +0 -1
  280. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.d.ts +0 -27
  281. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.js +0 -3
  282. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.js.map +0 -1
  283. package/dist/source/interfaces/data_access/ua_two_state_discrete.d.ts +0 -17
  284. package/dist/source/interfaces/data_access/ua_two_state_discrete.js +0 -3
  285. package/dist/source/interfaces/data_access/ua_two_state_discrete.js.map +0 -1
  286. package/dist/source/interfaces/data_access/ua_y_array_item.d.ts +0 -19
  287. package/dist/source/interfaces/data_access/ua_y_array_item.js +0 -3
  288. package/dist/source/interfaces/data_access/ua_y_array_item.js.map +0 -1
  289. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.d.ts +0 -11
  290. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.js +0 -3
  291. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.js.map +0 -1
  292. package/dist/source/interfaces/state_machine/finite_state_machine.d.ts +0 -70
  293. package/dist/source/interfaces/state_machine/finite_state_machine.js +0 -3
  294. package/dist/source/interfaces/state_machine/finite_state_machine.js.map +0 -1
  295. package/dist/source/interfaces/state_machine/program_finite_state_machine.d.ts +0 -74
  296. package/dist/source/interfaces/state_machine/program_finite_state_machine.js +0 -3
  297. package/dist/source/interfaces/state_machine/program_finite_state_machine.js.map +0 -1
  298. package/dist/source/interfaces/state_machine/state_machine.d.ts +0 -342
  299. package/dist/source/interfaces/state_machine/state_machine.js +0 -3
  300. package/dist/source/interfaces/state_machine/state_machine.js.map +0 -1
  301. package/dist/source/interfaces/state_machine/ua_finite_state_variable.d.ts +0 -18
  302. package/dist/source/interfaces/state_machine/ua_finite_state_variable.js +0 -3
  303. package/dist/source/interfaces/state_machine/ua_finite_state_variable.js.map +0 -1
  304. package/dist/source/interfaces/state_machine/ua_state_variable.d.ts +0 -29
  305. package/dist/source/interfaces/state_machine/ua_state_variable.js +0 -3
  306. package/dist/source/interfaces/state_machine/ua_state_variable.js.map +0 -1
  307. package/dist/source/interfaces/state_machine/ua_two_state_variable.d.ts +0 -26
  308. package/dist/source/interfaces/state_machine/ua_two_state_variable.js +0 -3
  309. package/dist/source/interfaces/state_machine/ua_two_state_variable.js.map +0 -1
  310. package/dist/source/interfaces/subscription_diagnostics_variable.d.ts +0 -41
  311. package/dist/source/interfaces/subscription_diagnostics_variable.js +0 -3
  312. package/dist/source/interfaces/subscription_diagnostics_variable.js.map +0 -1
  313. package/dist/src/alarms_and_conditions/base_event_type.d.ts +0 -26
  314. package/dist/src/alarms_and_conditions/base_event_type.js +0 -41
  315. package/dist/src/alarms_and_conditions/base_event_type.js.map +0 -1
  316. package/dist/src/alarms_and_conditions/shelving_state_machine.d.ts +0 -22
  317. package/dist/src/alarms_and_conditions/shelving_state_machine.js +0 -241
  318. package/dist/src/alarms_and_conditions/shelving_state_machine.js.map +0 -1
  319. package/dist/src/alarms_and_conditions/trip_alarm.d.ts +0 -16
  320. package/dist/src/alarms_and_conditions/trip_alarm.js +0 -21
  321. package/dist/src/alarms_and_conditions/trip_alarm.js.map +0 -1
  322. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.d.ts +0 -54
  323. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.js +0 -255
  324. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.js.map +0 -1
  325. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.d.ts +0 -138
  326. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.js +0 -460
  327. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.js.map +0 -1
  328. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.d.ts +0 -35
  329. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.js +0 -32
  330. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.js.map +0 -1
  331. package/dist/src/alarms_and_conditions/ua_condition_base.d.ts +0 -191
  332. package/dist/src/alarms_and_conditions/ua_condition_base.js +0 -1029
  333. package/dist/src/alarms_and_conditions/ua_condition_base.js.map +0 -1
  334. package/dist/src/alarms_and_conditions/ua_discrete_alarm.d.ts +0 -11
  335. package/dist/src/alarms_and_conditions/ua_discrete_alarm.js +0 -58
  336. package/dist/src/alarms_and_conditions/ua_discrete_alarm.js.map +0 -1
  337. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.d.ts +0 -24
  338. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.js +0 -59
  339. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.js.map +0 -1
  340. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.d.ts +0 -14
  341. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.js +0 -17
  342. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.js.map +0 -1
  343. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.d.ts +0 -22
  344. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.js +0 -87
  345. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.js.map +0 -1
  346. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.d.ts +0 -6
  347. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.js +0 -11
  348. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.js.map +0 -1
  349. package/dist/src/alarms_and_conditions/ua_limit_alarm.d.ts +0 -76
  350. package/dist/src/alarms_and_conditions/ua_limit_alarm.js +0 -237
  351. package/dist/src/alarms_and_conditions/ua_limit_alarm.js.map +0 -1
  352. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.d.ts +0 -27
  353. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.js +0 -62
  354. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.js.map +0 -1
  355. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.d.ts +0 -49
  356. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.js +0 -176
  357. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.js.map +0 -1
  358. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.d.ts +0 -47
  359. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.js +0 -151
  360. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.js.map +0 -1
  361. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.d.ts +0 -16
  362. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.js +0 -18
  363. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.js.map +0 -1
  364. package/dist/src/base_node.d.ts +0 -270
  365. package/dist/src/base_node.js +0 -1299
  366. package/dist/src/base_node.js.map +0 -1
  367. package/dist/src/data_access/ua_analog_item.d.ts +0 -13
  368. package/dist/src/data_access/ua_analog_item.js +0 -37
  369. package/dist/src/data_access/ua_analog_item.js.map +0 -1
  370. package/dist/src/data_access/ua_data_item.d.ts +0 -16
  371. package/dist/src/data_access/ua_data_item.js +0 -66
  372. package/dist/src/data_access/ua_data_item.js.map +0 -1
  373. package/dist/src/data_access/ua_multistate_discrete.d.ts +0 -24
  374. package/dist/src/data_access/ua_multistate_discrete.js +0 -132
  375. package/dist/src/data_access/ua_multistate_discrete.js.map +0 -1
  376. package/dist/src/namespace.d.ts +0 -472
  377. package/dist/src/namespace.js +0 -1759
  378. package/dist/src/namespace.js.map +0 -1
  379. package/dist/src/reference.d.ts +0 -43
  380. package/dist/src/reference.js +0 -138
  381. package/dist/src/reference.js.map +0 -1
  382. package/dist/src/session_context.d.ts +0 -4
  383. package/dist/src/session_context.js +0 -9
  384. package/dist/src/session_context.js.map +0 -1
  385. package/dist/src/ua_data_type.d.ts +0 -81
  386. package/dist/src/ua_data_type.js +0 -259
  387. package/dist/src/ua_data_type.js.map +0 -1
  388. package/dist/src/ua_method.d.ts +0 -33
  389. package/dist/src/ua_method.js +0 -194
  390. package/dist/src/ua_method.js.map +0 -1
  391. package/dist/src/ua_object.d.ts +0 -27
  392. package/dist/src/ua_object.js +0 -153
  393. package/dist/src/ua_object.js.map +0 -1
  394. package/dist/src/ua_object_type.d.ts +0 -49
  395. package/dist/src/ua_object_type.js +0 -123
  396. package/dist/src/ua_object_type.js.map +0 -1
  397. package/dist/src/ua_reference_type.d.ts +0 -31
  398. package/dist/src/ua_reference_type.js +0 -108
  399. package/dist/src/ua_reference_type.js.map +0 -1
  400. package/dist/src/ua_variable.d.ts +0 -346
  401. package/dist/src/ua_variable.js +0 -1651
  402. package/dist/src/ua_variable.js.map +0 -1
  403. package/dist/src/ua_variable_type.d.ts +0 -57
  404. package/dist/src/ua_variable_type.js +0 -530
  405. package/dist/src/ua_variable_type.js.map +0 -1
  406. package/dist/src/ua_view.d.ts +0 -16
  407. package/dist/src/ua_view.js +0 -41
  408. package/dist/src/ua_view.js.map +0 -1
@@ -1,667 +1,667 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConditionSnapshot = void 0;
4
- /**
5
- * @module node-opcua-address-space.AlarmsAndConditions
6
- */
7
- const events_1 = require("events");
8
- const node_opcua_assert_1 = require("node-opcua-assert");
9
- const node_opcua_data_model_1 = require("node-opcua-data-model");
10
- const node_opcua_debug_1 = require("node-opcua-debug");
11
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
12
- const node_opcua_status_code_1 = require("node-opcua-status-code");
13
- const node_opcua_types_1 = require("node-opcua-types");
14
- const utils = require("node-opcua-utils");
15
- const node_opcua_variant_1 = require("node-opcua-variant");
16
- const event_data_1 = require("../event_data");
17
- const ua_two_state_variable_1 = require("../state_machine/ua_two_state_variable");
18
- const condition_1 = require("./condition");
19
- const ua_condition_impl_1 = require("./ua_condition_impl");
20
- const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
21
- const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
22
- function normalizeName(str) {
23
- return str.split(".").map(utils.lowerFirstLetter).join(".");
24
- }
25
- function _visit(self, node, prefix) {
26
- const aggregates = node.getAggregates();
27
- for (const aggregate of aggregates) {
28
- if (aggregate.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
29
- let name = aggregate.browseName.toString();
30
- name = utils.lowerFirstLetter(name);
31
- const key = prefix + name;
32
- // istanbul ignore next
33
- if (doDebug) {
34
- debugLog("adding key =", key);
35
- }
36
- const aggregateVariable = aggregate;
37
- self._map[key] = aggregateVariable.readValue().value;
38
- self._node_index[key] = aggregateVariable;
39
- _visit(self, aggregate, prefix + name + ".");
40
- }
41
- }
42
- }
43
- function _record_condition_state(self, condition) {
44
- self._map = {};
45
- self._node_index = {};
46
- (0, node_opcua_assert_1.assert)(condition instanceof ua_condition_impl_1.UAConditionImpl);
47
- _visit(self, condition, "");
48
- }
49
- function _installOnChangeEventHandlers(self, node, prefix) {
50
- const aggregates = node.getAggregates();
51
- for (const aggregate of aggregates) {
52
- if (aggregate.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
53
- let name = aggregate.browseName.toString();
54
- name = utils.lowerFirstLetter(name);
55
- const key = prefix + name;
56
- // istanbul ignore next
57
- if (doDebug) {
58
- debugLog("adding key =", key);
59
- }
60
- aggregate.on("value_changed", (newDataValue) => {
61
- self._map[key] = newDataValue.value;
62
- self._node_index[key] = aggregate;
63
- });
64
- _installOnChangeEventHandlers(self, aggregate, prefix + name + ".");
65
- }
66
- }
67
- }
68
- function _ensure_condition_values_correctness(self, node, prefix, error) {
69
- const displayError = !!error;
70
- error = error || [];
71
- const aggregates = node.getAggregates();
72
- for (const aggregate of aggregates) {
73
- if (aggregate.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
74
- let name = aggregate.browseName.toString();
75
- name = utils.lowerFirstLetter(name);
76
- const key = prefix + name;
77
- const snapshot_value = self._map[key].toString();
78
- const aggregateVariable = aggregate;
79
- const condition_value = aggregateVariable.readValue().value.toString();
80
- if (snapshot_value !== condition_value) {
81
- error.push(" Condition Branch0 is not in sync with node values for " +
82
- key +
83
- "\n v1= " +
84
- snapshot_value +
85
- "\n v2= " +
86
- condition_value);
87
- }
88
- self._node_index[key] = aggregate;
89
- _ensure_condition_values_correctness(self, aggregate, prefix + name + ".", error);
90
- }
91
- }
92
- if (displayError && error.length) {
93
- throw new Error(error.join("\n"));
94
- }
95
- }
96
- const disabledVar = new node_opcua_variant_1.Variant({
97
- dataType: "StatusCode",
98
- value: node_opcua_status_code_1.StatusCodes.BadConditionDisabled
99
- });
100
- // list of Condition variables that should not be published as BadConditionDisabled when the condition
101
- // is in a disabled state.
102
- const _varTable = {
103
- branchId: 1,
104
- conditionClassId: 1,
105
- conditionClassName: 1,
106
- conditionName: 1,
107
- enabledState: 1,
108
- "enabledState.effectiveDisplayName": 1,
109
- "enabledState.id": 1,
110
- "enabledState.transitionTime": 1,
111
- eventId: 1,
112
- eventType: 1,
113
- localTime: 1,
114
- sourceName: 1,
115
- sourceNode: 1,
116
- time: 1
117
- };
118
- class ConditionSnapshot extends events_1.EventEmitter {
119
- /**
120
- * @class ConditionSnapshot
121
- * @extends EventEmitter
122
- * @param condition
123
- * @param branchId
124
- * @constructor
125
- */
126
- constructor(condition, branchId) {
127
- super();
128
- this.eventData = null;
129
- this.branchId = null;
130
- this._map = {};
131
- this._node_index = {};
132
- (0, node_opcua_assert_1.assert)(branchId instanceof node_opcua_nodeid_1.NodeId);
133
- // xx self.branchId = branchId;
134
- this.condition = condition;
135
- this.eventData = new event_data_1.EventData(condition);
136
- // a nodeId/Variant map
137
- _record_condition_state(this, condition);
138
- if ((0, node_opcua_nodeid_1.sameNodeId)(branchId, node_opcua_nodeid_1.NodeId.nullNodeId)) {
139
- _installOnChangeEventHandlers(this, condition, "");
140
- }
141
- this._set_var("branchId", node_opcua_variant_1.DataType.NodeId, branchId);
142
- }
143
- _constructEventData() {
144
- if (this.branchId && (0, node_opcua_nodeid_1.sameNodeId)(this.branchId, node_opcua_nodeid_1.NodeId.nullNodeId)) {
145
- _ensure_condition_values_correctness(this, this.condition, "", []);
146
- }
147
- const c = this.condition;
148
- const isDisabled = !c.getEnabledState();
149
- const eventData = new event_data_1.EventData(this.condition);
150
- for (const key of Object.keys(this._map)) {
151
- const node = this._node_index[key];
152
- if (!node) {
153
- debugLog("cannot node for find key", key);
154
- continue;
155
- }
156
- if (isDisabled && !Object.prototype.hasOwnProperty.call(_varTable, key)) {
157
- eventData.setValue(key, node, disabledVar);
158
- }
159
- else {
160
- eventData.setValue(key, node, this._map[key]);
161
- }
162
- }
163
- return eventData;
164
- }
165
- /**
166
- * @method resolveSelectClause
167
- * @param selectClause {SelectClause}
168
- */
169
- resolveSelectClause(selectClause) {
170
- var _a;
171
- return ((_a = this.eventData) === null || _a === void 0 ? void 0 : _a.resolveSelectClause(selectClause)) || null;
172
- }
173
- /**
174
- *
175
- */
176
- readValue(sessionContext, nodeId, selectClause) {
177
- var _a;
178
- const c = this.condition;
179
- const isDisabled = !c.getEnabledState();
180
- if (isDisabled) {
181
- return disabledVar;
182
- }
183
- const key = nodeId.toString();
184
- const variant = this._map[key];
185
- if (!variant) {
186
- // the value is not handled by us .. let's delegate
187
- // to the eventData helper object
188
- return ((_a = this.eventData) === null || _a === void 0 ? void 0 : _a.readValue(sessionContext, nodeId, selectClause)) || disabledVar;
189
- }
190
- return variant;
191
- }
192
- _get_var(varName) {
193
- const c = this.condition;
194
- if (!c.getEnabledState() && !Object.prototype.hasOwnProperty.call(_varTable, varName)) {
195
- // xx console.log("ConditionSnapshot#_get_var condition enabled =", self.condition.getEnabledState());
196
- return disabledVar;
197
- }
198
- const key = normalizeName(varName);
199
- const variant = this._map[key];
200
- return variant.value;
201
- }
202
- _set_var(varName, dataType, value) {
203
- const key = normalizeName(varName);
204
- // istanbul ignore next
205
- if (!Object.prototype.hasOwnProperty.call(this._map, key)) {
206
- if (doDebug) {
207
- debugLog(" cannot find node " + varName);
208
- debugLog(" map=", Object.keys(this._map).join(" "));
209
- }
210
- }
211
- this._map[key] = new node_opcua_variant_1.Variant({
212
- dataType,
213
- value
214
- });
215
- if (this._map[key + ".sourceTimestamp"]) {
216
- this._map[key + ".sourceTimestamp"] = new node_opcua_variant_1.Variant({
217
- dataType: node_opcua_variant_1.DataType.DateTime,
218
- value: new Date()
219
- });
220
- }
221
- const variant = this._map[key];
222
- const node = this._node_index[key];
223
- if (!node) {
224
- // for instance localTime is optional
225
- debugLog("Cannot serVar " + varName + " dataType " + node_opcua_variant_1.DataType[dataType]);
226
- return;
227
- }
228
- (0, node_opcua_assert_1.assert)(node.nodeClass === node_opcua_data_model_1.NodeClass.Variable);
229
- this.emit("value_changed", node, variant);
230
- }
231
- /**
232
- * @method getBrandId
233
- * @return {NodeId}
234
- */
235
- getBranchId() {
236
- return this._get_var("branchId");
237
- }
238
- /**
239
- * @method getEventId
240
- * @return {ByteString}
241
- */
242
- getEventId() {
243
- return this._get_var("eventId");
244
- }
245
- /**
246
- * @method getRetain
247
- * @return {Boolean}
248
- */
249
- getRetain() {
250
- return this._get_var("retain");
251
- }
252
- /**
253
- *
254
- * @method setRetain
255
- * @param retainFlag {Boolean}
256
- */
257
- setRetain(retainFlag) {
258
- retainFlag = !!retainFlag;
259
- return this._set_var("retain", node_opcua_variant_1.DataType.Boolean, retainFlag);
260
- }
261
- /**
262
- * @method renewEventId
263
- *
264
- */
265
- renewEventId() {
266
- const addressSpace = this.condition.addressSpace;
267
- // create a new event Id for this new condition
268
- const eventId = addressSpace.generateEventId();
269
- const ret = this._set_var("eventId", node_opcua_variant_1.DataType.ByteString, eventId.value);
270
- // xx var branch = self; console.log("MMMMMMMMrenewEventId branch " +
271
- // branch.getBranchId().toString() + " eventId = " + branch.getEventId().toString("hex"));
272
- return ret;
273
- }
274
- /**
275
- * @method getEnabledState
276
- * @return {Boolean}
277
- */
278
- getEnabledState() {
279
- return this._get_twoStateVariable("enabledState");
280
- }
281
- /**
282
- * @method setEnabledState
283
- * @param value {Boolean}
284
- * @return void
285
- */
286
- setEnabledState(value) {
287
- return this._set_twoStateVariable("enabledState", value);
288
- }
289
- /**
290
- * @method getEnabledStateAsString
291
- * @return {String}
292
- */
293
- getEnabledStateAsString() {
294
- return this._get_var("enabledState").text;
295
- }
296
- /**
297
- * @method getComment
298
- * @return {LocalizedText}
299
- */
300
- getComment() {
301
- return this._get_var("comment");
302
- }
303
- /**
304
- * Set condition comment
305
- *
306
- * Comment contains the last comment provided for a certain state (ConditionBranch). It may
307
- * have been provided by an AddComment Method, some other Method or in some other
308
- * manner. The initial value of this Variable is null, unless it is provided in some other manner. If
309
- * a Method provides as an option the ability to set a Comment, then the value of this Variable is
310
- * reset to null if an optional comment is not provided.
311
- *
312
- * @method setComment
313
- * @param txtMessage {LocalizedText}
314
- */
315
- setComment(txtMessage) {
316
- const txtMessage1 = (0, node_opcua_data_model_1.coerceLocalizedText)(txtMessage);
317
- this._set_var("comment", node_opcua_variant_1.DataType.LocalizedText, txtMessage1);
318
- }
319
- /**
320
- *
321
- * @method setMessage
322
- * @param txtMessage {LocalizedText}
323
- */
324
- setMessage(txtMessage) {
325
- const txtMessage1 = (0, node_opcua_data_model_1.coerceLocalizedText)(txtMessage);
326
- return this._set_var("message", node_opcua_variant_1.DataType.LocalizedText, txtMessage1);
327
- }
328
- /**
329
- * @method setClientUserId
330
- * @param userIdentity {String}
331
- */
332
- setClientUserId(userIdentity) {
333
- return this._set_var("clientUserId", node_opcua_variant_1.DataType.String, userIdentity.toString());
334
- }
335
- /*
336
- *
337
- *
338
- * as per spec 1.0.3 - Part 9
339
- *
340
- * Quality reveals the status of process values or other resources that this Condition instance is
341
- * based upon. If, for example, a process value is “Uncertain”, the associated “LevelAlarm”
342
- * Condition is also questionable. Values for the Quality can be any of the OPC StatusCodes
343
- * defined in Part 8 as well as Good, Uncertain and Bad as defined in Part 4. These
344
- * StatusCodes are similar to but slightly more generic than the description of data quality in the
345
- * various field bus specifications. It is the responsibility of the Server to map internal status
346
- * information to these codes. A Server which supports no quality information shall return Good.
347
- * This quality can also reflect the communication status associated with the system that this
348
- * value or resource is based on and from which this Alarm was received. For communication
349
- * errors to the underlying system, especially those that result in some unavailable Event fields,
350
- * the quality shall be BadNoCommunication error.
351
- *
352
- * Quality refers to the quality of the data value(s) upon which this Condition is based. Since a
353
- * Condition is usually based on one or more Variables, the Condition inherits the quality of
354
- * these Variables. E.g., if the process value is “Uncertain”, the “LevelAlarm” Condition is also
355
- * questionable. If more than one variable is represented by a given condition or if the condition
356
- * is from an underlining system and no direct mapping to a variable is available, it is up to the
357
- * application to determine what quality is displayed as part of the condition.
358
- */
359
- /**
360
- * set the condition quality
361
- * @method setQuality
362
- * @param quality {StatusCode}
363
- */
364
- setQuality(quality) {
365
- this._set_var("quality", node_opcua_variant_1.DataType.StatusCode, quality);
366
- }
367
- /**
368
- * @method getQuality
369
- * @return {StatusCode}
370
- */
371
- getQuality() {
372
- return this._get_var("quality");
373
- }
374
- /*
375
- * as per spec 1.0.3 - Part 9
376
- * The Severity of a Condition is inherited from the base Event model defined in Part 5. It
377
- * indicates the urgency of the Condition and is also commonly called ‘priority’, especially in
378
- * relation to Alarms in the ProcessConditionClass.
379
- *
380
- * as per spec 1.0.3 - PArt 5
381
- * Severity is an indication of the urgency of the Event. This is also commonly called “priority”.
382
- * Values will range from 1 to 1 000, with 1 being the lowest severity and 1 000 being the highest.
383
- * Typically, a severity of 1 would indicate an Event which is informational in nature, while a value
384
- * of 1 000 would indicate an Event of catastrophic nature, which could potentially result in severe
385
- * financial loss or loss of life.
386
- * It is expected that very few Server implementations will support 1 000 distinct severity levels.
387
- * Therefore, Server developers are responsible for distributing their severity levels across the
388
- * 1 to 1 000 range in such a manner that clients can assume a linear distribution. For example, a
389
- * client wishing to present five severity levels to a user should be able to do the following
390
- * mapping:
391
- * Client Severity OPC Severity
392
- * HIGH 801 – 1 000
393
- * MEDIUM HIGH 601 – 800
394
- * MEDIUM 401 – 600
395
- * MEDIUM LOW 201 – 400
396
- * LOW 1 – 200
397
- * In many cases a strict linear mapping of underlying source severities to the OPC Severity range
398
- * is not appropriate. The Server developer will instead intelligently map the underlying source
399
- * severities to the 1 to 1 000 OPC Severity range in some other fashion. In particular, it is
400
- * recommended that Server developers map Events of high urgency into the OPC severity range
401
- * of 667 to 1 000, Events of medium urgency into the OPC severity range of 334 to 666 and
402
- * Events of low urgency into OPC severities of 1 to 333.
403
- */
404
- /**
405
- * @method setSeverity
406
- * @param severity {UInt16}
407
- */
408
- setSeverity(severity) {
409
- (0, node_opcua_assert_1.assert)(isFinite(severity), "expecting a UInt16");
410
- // record automatically last severity
411
- const lastSeverity = this.getSeverity();
412
- this.setLastSeverity(lastSeverity);
413
- this._set_var("severity", node_opcua_variant_1.DataType.UInt16, severity);
414
- }
415
- /**
416
- * @method getSeverity
417
- * @return {UInt16}
418
- */
419
- getSeverity() {
420
- const c = this.condition;
421
- (0, node_opcua_assert_1.assert)(c.getEnabledState(), "condition must be enabled");
422
- const value = this._get_var("severity");
423
- return +value;
424
- }
425
- /*
426
- * as per spec 1.0.3 - part 9:
427
- * LastSeverity provides the previous severity of the ConditionBranch. Initially this Variable
428
- * contains a zero value; it will return a value only after a severity change. The new severity is
429
- * supplied via the Severity Property which is inherited from the BaseEventType.
430
- *
431
- */
432
- /**
433
- * @method setLastSeverity
434
- * @param severity {UInt16}
435
- */
436
- setLastSeverity(severity) {
437
- severity = +severity;
438
- return this._set_var("lastSeverity", node_opcua_variant_1.DataType.UInt16, severity);
439
- }
440
- /**
441
- * @method getLastSeverity
442
- * @return {UInt16}
443
- */
444
- getLastSeverity() {
445
- const value = this._get_var("lastSeverity");
446
- return +value;
447
- }
448
- /**
449
- * setReceiveTime
450
- *
451
- * (as per OPCUA 1.0.3 part 5)
452
- *
453
- * ReceiveTime provides the time the OPC UA Server received the Event from the underlying
454
- * device of another Server.
455
- *
456
- * ReceiveTime is analogous to ServerTimestamp defined in Part 4, i.e.
457
- * in the case where the OPC UA Server gets an Event from another OPC UA Server, each Server
458
- * applies its own ReceiveTime. That implies that a Client may get the same Event, having the
459
- * same EventId, from different Servers having different values of the ReceiveTime.
460
- *
461
- * The ReceiveTime shall always be returned as value and the Server is not allowed to return a
462
- * StatusCode for the ReceiveTime indicating an error.
463
- *
464
- * @method setReceiveTime
465
- * @param time {Date} : UTCTime
466
- */
467
- setReceiveTime(time) {
468
- (0, node_opcua_assert_1.assert)(time instanceof Date);
469
- return this._set_var("receiveTime", node_opcua_variant_1.DataType.DateTime, time);
470
- }
471
- /**
472
- * (as per OPCUA 1.0.3 part 5)
473
- * Time provides the time the Event occurred. This value is set as close to the event generator as
474
- * possible. It often comes from the underlying system or device. Once set, intermediate OPC UA
475
- * Servers shall not alter the value.
476
- *
477
- * @method setTime
478
- * @param time {Date}
479
- */
480
- setTime(time) {
481
- (0, node_opcua_assert_1.assert)(time instanceof Date);
482
- return this._set_var("time", node_opcua_variant_1.DataType.DateTime, time);
483
- }
484
- /**
485
- * LocalTime is a structure containing the Offset and the DaylightSavingInOffset flag. The Offset
486
- * specifies the time difference (in minutes) between the Time Property and the time at the location
487
- * in which the event was issued. If DaylightSavingInOffset is TRUE, then Standard/Daylight
488
- * savings time (DST) at the originating location is in effect and Offset includes the DST c orrection.
489
- * If FALSE then the Offset does not include DST correction and DST may or may not have been
490
- * in effect.
491
- * @method setLocalTime
492
- * @param localTime {TimeZone}
493
- */
494
- setLocalTime(localTime) {
495
- (0, node_opcua_assert_1.assert)(localTime instanceof node_opcua_types_1.TimeZoneDataType);
496
- return this._set_var("localTime", node_opcua_variant_1.DataType.ExtensionObject, new node_opcua_types_1.TimeZoneDataType(localTime));
497
- }
498
- // read only !
499
- getSourceName() {
500
- return this._get_var("sourceName");
501
- }
502
- /**
503
- * @method getSourceNode
504
- * return {NodeId}
505
- */
506
- getSourceNode() {
507
- return this._get_var("sourceNode");
508
- }
509
- /**
510
- * @method getEventType
511
- * return {NodeId}
512
- */
513
- getEventType() {
514
- return this._get_var("eventType");
515
- }
516
- getMessage() {
517
- return this._get_var("message");
518
- }
519
- isCurrentBranch() {
520
- return (0, node_opcua_nodeid_1.sameNodeId)(this._get_var("branchId"), node_opcua_nodeid_1.NodeId.nullNodeId);
521
- }
522
- // -- ACKNOWLEDGEABLE -------------------------------------------------------------------
523
- getAckedState() {
524
- const acknowledgeableCondition = this.condition;
525
- if (!acknowledgeableCondition.ackedState) {
526
- throw new Error("Node " +
527
- acknowledgeableCondition.browseName.toString() +
528
- " of type " +
529
- acknowledgeableCondition.typeDefinitionObj.browseName.toString() +
530
- " has no AckedState");
531
- }
532
- return this._get_twoStateVariable("ackedState");
533
- }
534
- setAckedState(ackedState) {
535
- ackedState = !!ackedState;
536
- return (0, condition_1._setAckedState)(this, ackedState);
537
- }
538
- getConfirmedState() {
539
- const acknowledgeableCondition = this.condition;
540
- (0, node_opcua_assert_1.assert)(acknowledgeableCondition.confirmedState, "Must have a confirmed state");
541
- return this._get_twoStateVariable("confirmedState");
542
- }
543
- setConfirmedStateIfExists(confirmedState) {
544
- confirmedState = !!confirmedState;
545
- const acknowledgeableCondition = this.condition;
546
- if (!acknowledgeableCondition.confirmedState) {
547
- // no condition node has been defined (this is valid)
548
- // confirm state cannot be set
549
- return;
550
- }
551
- // todo deal with Error code BadConditionBranchAlreadyConfirmed
552
- return this._set_twoStateVariable("confirmedState", confirmedState);
553
- }
554
- setConfirmedState(confirmedState) {
555
- const acknowledgeableCondition = this.condition;
556
- (0, node_opcua_assert_1.assert)(acknowledgeableCondition.confirmedState, "Must have a confirmed state. Add ConfirmedState to the optionals");
557
- return this.setConfirmedStateIfExists(confirmedState);
558
- }
559
- // ---- Shelving
560
- /**
561
- * @class ConditionSnapshot
562
- */
563
- /**
564
- * @method getSuppressedState
565
- * @return {Boolean}
566
- */
567
- getSuppressedState() {
568
- return this._get_twoStateVariable("suppressedState");
569
- }
570
- /**
571
- * @method setSuppressedState
572
- * @param suppressed {Boolean}
573
- */
574
- setSuppressedState(suppressed) {
575
- suppressed = !!suppressed;
576
- this._set_twoStateVariable("suppressedState", suppressed);
577
- }
578
- getActiveState() {
579
- return this._get_twoStateVariable("activeState");
580
- }
581
- setActiveState(newActiveState) {
582
- // xx var activeState = self.getActiveState();
583
- // xx if (activeState === newActiveState) {
584
- // xx return StatusCodes.Bad;
585
- // xx }
586
- this._set_twoStateVariable("activeState", newActiveState);
587
- return node_opcua_status_code_1.StatusCodes.Good;
588
- }
589
- // tslint:disable:no-empty
590
- setShelvingState() {
591
- // todo
592
- }
593
- toString() {
594
- // public condition: any = null;
595
- // public eventData: any = null;
596
- // public branchId: NodeId | null = null;
597
- const t = this.condition.addressSpace.findNode(this.condition.typeDefinition);
598
- return ("" +
599
- "condition: " +
600
- (this.condition.browseName.toString() + " " + this.condition.nodeId.toString()) +
601
- ", type: " +
602
- (t.browseName.toString() + " " + t.nodeId.toString()) +
603
- ", branchId: " +
604
- (this.branchId ? this.branchId.toString() : "<null>") +
605
- ", acked: " +
606
- this.getAckedState() +
607
- ", confirmed: " +
608
- this.getConfirmedState() +
609
- ", activeState: " +
610
- this.getActiveState() +
611
- // + ", suppressed: " + this.getSuppressedState()
612
- ", retain: " +
613
- this.getRetain() +
614
- ", message: " +
615
- this.getMessage() +
616
- ", comment: " +
617
- this.getComment());
618
- }
619
- /**
620
- * @class ConditionSnapshot
621
- * @param varName
622
- * @param value
623
- * @private
624
- */
625
- _set_twoStateVariable(varName, value) {
626
- value = !!value;
627
- const hrKey = ConditionSnapshot.normalizeName(varName);
628
- const idKey = ConditionSnapshot.normalizeName(varName) + ".id";
629
- const variant = new node_opcua_variant_1.Variant({ dataType: node_opcua_variant_1.DataType.Boolean, value });
630
- this._map[idKey] = variant;
631
- // also change varName with human readable text
632
- const twoStateNode = this._node_index[hrKey];
633
- if (!twoStateNode) {
634
- throw new Error("Cannot find twoState Variable with name " + varName);
635
- }
636
- if (!(twoStateNode instanceof ua_two_state_variable_1.UATwoStateVariableImpl)) {
637
- throw new Error("Cannot find twoState Variable with name " + varName + " " + twoStateNode);
638
- }
639
- const hrValue = new node_opcua_variant_1.Variant({
640
- dataType: node_opcua_variant_1.DataType.LocalizedText,
641
- value: value ? twoStateNode.getTrueState() : twoStateNode.getFalseState()
642
- });
643
- this._map[hrKey] = hrValue;
644
- const node = this._node_index[idKey];
645
- // also change ConditionNode if we are on currentBranch
646
- if (this.isCurrentBranch()) {
647
- (0, node_opcua_assert_1.assert)(twoStateNode instanceof ua_two_state_variable_1.UATwoStateVariableImpl);
648
- twoStateNode.setValue(value);
649
- // xx console.log("Is current branch", twoStateNode.toString(),variant.toString());
650
- // xx console.log(" = ",twoStateNode.getValue());
651
- }
652
- this.emit("value_changed", node, variant);
653
- }
654
- _get_twoStateVariable(varName) {
655
- const key = ConditionSnapshot.normalizeName(varName) + ".id";
656
- const variant = this._map[key];
657
- // istanbul ignore next
658
- if (!variant) {
659
- return "???";
660
- // throw new Error("Cannot find TwoStateVariable with name " + varName);
661
- }
662
- return variant.value;
663
- }
664
- }
665
- exports.ConditionSnapshot = ConditionSnapshot;
666
- ConditionSnapshot.normalizeName = normalizeName;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConditionSnapshot = void 0;
4
+ /**
5
+ * @module node-opcua-address-space.AlarmsAndConditions
6
+ */
7
+ const events_1 = require("events");
8
+ const node_opcua_assert_1 = require("node-opcua-assert");
9
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
10
+ const node_opcua_debug_1 = require("node-opcua-debug");
11
+ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
12
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
13
+ const node_opcua_types_1 = require("node-opcua-types");
14
+ const utils = require("node-opcua-utils");
15
+ const node_opcua_variant_1 = require("node-opcua-variant");
16
+ const event_data_1 = require("../event_data");
17
+ const ua_two_state_variable_1 = require("../state_machine/ua_two_state_variable");
18
+ const condition_1 = require("./condition");
19
+ const ua_condition_impl_1 = require("./ua_condition_impl");
20
+ const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
21
+ const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
22
+ function normalizeName(str) {
23
+ return str.split(".").map(utils.lowerFirstLetter).join(".");
24
+ }
25
+ function _visit(self, node, prefix) {
26
+ const aggregates = node.getAggregates();
27
+ for (const aggregate of aggregates) {
28
+ if (aggregate.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
29
+ let name = aggregate.browseName.toString();
30
+ name = utils.lowerFirstLetter(name);
31
+ const key = prefix + name;
32
+ // istanbul ignore next
33
+ if (doDebug) {
34
+ debugLog("adding key =", key);
35
+ }
36
+ const aggregateVariable = aggregate;
37
+ self._map[key] = aggregateVariable.readValue().value;
38
+ self._node_index[key] = aggregateVariable;
39
+ _visit(self, aggregate, prefix + name + ".");
40
+ }
41
+ }
42
+ }
43
+ function _record_condition_state(self, condition) {
44
+ self._map = {};
45
+ self._node_index = {};
46
+ (0, node_opcua_assert_1.assert)(condition instanceof ua_condition_impl_1.UAConditionImpl);
47
+ _visit(self, condition, "");
48
+ }
49
+ function _installOnChangeEventHandlers(self, node, prefix) {
50
+ const aggregates = node.getAggregates();
51
+ for (const aggregate of aggregates) {
52
+ if (aggregate.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
53
+ let name = aggregate.browseName.toString();
54
+ name = utils.lowerFirstLetter(name);
55
+ const key = prefix + name;
56
+ // istanbul ignore next
57
+ if (doDebug) {
58
+ debugLog("adding key =", key);
59
+ }
60
+ aggregate.on("value_changed", (newDataValue) => {
61
+ self._map[key] = newDataValue.value;
62
+ self._node_index[key] = aggregate;
63
+ });
64
+ _installOnChangeEventHandlers(self, aggregate, prefix + name + ".");
65
+ }
66
+ }
67
+ }
68
+ function _ensure_condition_values_correctness(self, node, prefix, error) {
69
+ const displayError = !!error;
70
+ error = error || [];
71
+ const aggregates = node.getAggregates();
72
+ for (const aggregate of aggregates) {
73
+ if (aggregate.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
74
+ let name = aggregate.browseName.toString();
75
+ name = utils.lowerFirstLetter(name);
76
+ const key = prefix + name;
77
+ const snapshot_value = self._map[key].toString();
78
+ const aggregateVariable = aggregate;
79
+ const condition_value = aggregateVariable.readValue().value.toString();
80
+ if (snapshot_value !== condition_value) {
81
+ error.push(" Condition Branch0 is not in sync with node values for " +
82
+ key +
83
+ "\n v1= " +
84
+ snapshot_value +
85
+ "\n v2= " +
86
+ condition_value);
87
+ }
88
+ self._node_index[key] = aggregate;
89
+ _ensure_condition_values_correctness(self, aggregate, prefix + name + ".", error);
90
+ }
91
+ }
92
+ if (displayError && error.length) {
93
+ throw new Error(error.join("\n"));
94
+ }
95
+ }
96
+ const disabledVar = new node_opcua_variant_1.Variant({
97
+ dataType: "StatusCode",
98
+ value: node_opcua_status_code_1.StatusCodes.BadConditionDisabled
99
+ });
100
+ // list of Condition variables that should not be published as BadConditionDisabled when the condition
101
+ // is in a disabled state.
102
+ const _varTable = {
103
+ branchId: 1,
104
+ conditionClassId: 1,
105
+ conditionClassName: 1,
106
+ conditionName: 1,
107
+ enabledState: 1,
108
+ "enabledState.effectiveDisplayName": 1,
109
+ "enabledState.id": 1,
110
+ "enabledState.transitionTime": 1,
111
+ eventId: 1,
112
+ eventType: 1,
113
+ localTime: 1,
114
+ sourceName: 1,
115
+ sourceNode: 1,
116
+ time: 1
117
+ };
118
+ class ConditionSnapshot extends events_1.EventEmitter {
119
+ /**
120
+ * @class ConditionSnapshot
121
+ * @extends EventEmitter
122
+ * @param condition
123
+ * @param branchId
124
+ * @constructor
125
+ */
126
+ constructor(condition, branchId) {
127
+ super();
128
+ this.eventData = null;
129
+ this.branchId = null;
130
+ this._map = {};
131
+ this._node_index = {};
132
+ (0, node_opcua_assert_1.assert)(branchId instanceof node_opcua_nodeid_1.NodeId);
133
+ // xx self.branchId = branchId;
134
+ this.condition = condition;
135
+ this.eventData = new event_data_1.EventData(condition);
136
+ // a nodeId/Variant map
137
+ _record_condition_state(this, condition);
138
+ if ((0, node_opcua_nodeid_1.sameNodeId)(branchId, node_opcua_nodeid_1.NodeId.nullNodeId)) {
139
+ _installOnChangeEventHandlers(this, condition, "");
140
+ }
141
+ this._set_var("branchId", node_opcua_variant_1.DataType.NodeId, branchId);
142
+ }
143
+ _constructEventData() {
144
+ if (this.branchId && (0, node_opcua_nodeid_1.sameNodeId)(this.branchId, node_opcua_nodeid_1.NodeId.nullNodeId)) {
145
+ _ensure_condition_values_correctness(this, this.condition, "", []);
146
+ }
147
+ const c = this.condition;
148
+ const isDisabled = !c.getEnabledState();
149
+ const eventData = new event_data_1.EventData(this.condition);
150
+ for (const key of Object.keys(this._map)) {
151
+ const node = this._node_index[key];
152
+ if (!node) {
153
+ debugLog("cannot node for find key", key);
154
+ continue;
155
+ }
156
+ if (isDisabled && !Object.prototype.hasOwnProperty.call(_varTable, key)) {
157
+ eventData.setValue(key, node, disabledVar);
158
+ }
159
+ else {
160
+ eventData.setValue(key, node, this._map[key]);
161
+ }
162
+ }
163
+ return eventData;
164
+ }
165
+ /**
166
+ * @method resolveSelectClause
167
+ * @param selectClause {SelectClause}
168
+ */
169
+ resolveSelectClause(selectClause) {
170
+ var _a;
171
+ return ((_a = this.eventData) === null || _a === void 0 ? void 0 : _a.resolveSelectClause(selectClause)) || null;
172
+ }
173
+ /**
174
+ *
175
+ */
176
+ readValue(sessionContext, nodeId, selectClause) {
177
+ var _a;
178
+ const c = this.condition;
179
+ const isDisabled = !c.getEnabledState();
180
+ if (isDisabled) {
181
+ return disabledVar;
182
+ }
183
+ const key = nodeId.toString();
184
+ const variant = this._map[key];
185
+ if (!variant) {
186
+ // the value is not handled by us .. let's delegate
187
+ // to the eventData helper object
188
+ return ((_a = this.eventData) === null || _a === void 0 ? void 0 : _a.readValue(sessionContext, nodeId, selectClause)) || disabledVar;
189
+ }
190
+ return variant;
191
+ }
192
+ _get_var(varName) {
193
+ const c = this.condition;
194
+ if (!c.getEnabledState() && !Object.prototype.hasOwnProperty.call(_varTable, varName)) {
195
+ // xx console.log("ConditionSnapshot#_get_var condition enabled =", self.condition.getEnabledState());
196
+ return disabledVar;
197
+ }
198
+ const key = normalizeName(varName);
199
+ const variant = this._map[key];
200
+ return variant.value;
201
+ }
202
+ _set_var(varName, dataType, value) {
203
+ const key = normalizeName(varName);
204
+ // istanbul ignore next
205
+ if (!Object.prototype.hasOwnProperty.call(this._map, key)) {
206
+ if (doDebug) {
207
+ debugLog(" cannot find node " + varName);
208
+ debugLog(" map=", Object.keys(this._map).join(" "));
209
+ }
210
+ }
211
+ this._map[key] = new node_opcua_variant_1.Variant({
212
+ dataType,
213
+ value
214
+ });
215
+ if (this._map[key + ".sourceTimestamp"]) {
216
+ this._map[key + ".sourceTimestamp"] = new node_opcua_variant_1.Variant({
217
+ dataType: node_opcua_variant_1.DataType.DateTime,
218
+ value: new Date()
219
+ });
220
+ }
221
+ const variant = this._map[key];
222
+ const node = this._node_index[key];
223
+ if (!node) {
224
+ // for instance localTime is optional
225
+ debugLog("Cannot serVar " + varName + " dataType " + node_opcua_variant_1.DataType[dataType]);
226
+ return;
227
+ }
228
+ (0, node_opcua_assert_1.assert)(node.nodeClass === node_opcua_data_model_1.NodeClass.Variable);
229
+ this.emit("value_changed", node, variant);
230
+ }
231
+ /**
232
+ * @method getBrandId
233
+ * @return {NodeId}
234
+ */
235
+ getBranchId() {
236
+ return this._get_var("branchId");
237
+ }
238
+ /**
239
+ * @method getEventId
240
+ * @return {ByteString}
241
+ */
242
+ getEventId() {
243
+ return this._get_var("eventId");
244
+ }
245
+ /**
246
+ * @method getRetain
247
+ * @return {Boolean}
248
+ */
249
+ getRetain() {
250
+ return this._get_var("retain");
251
+ }
252
+ /**
253
+ *
254
+ * @method setRetain
255
+ * @param retainFlag {Boolean}
256
+ */
257
+ setRetain(retainFlag) {
258
+ retainFlag = !!retainFlag;
259
+ return this._set_var("retain", node_opcua_variant_1.DataType.Boolean, retainFlag);
260
+ }
261
+ /**
262
+ * @method renewEventId
263
+ *
264
+ */
265
+ renewEventId() {
266
+ const addressSpace = this.condition.addressSpace;
267
+ // create a new event Id for this new condition
268
+ const eventId = addressSpace.generateEventId();
269
+ const ret = this._set_var("eventId", node_opcua_variant_1.DataType.ByteString, eventId.value);
270
+ // xx var branch = self; console.log("MMMMMMMMrenewEventId branch " +
271
+ // branch.getBranchId().toString() + " eventId = " + branch.getEventId().toString("hex"));
272
+ return ret;
273
+ }
274
+ /**
275
+ * @method getEnabledState
276
+ * @return {Boolean}
277
+ */
278
+ getEnabledState() {
279
+ return this._get_twoStateVariable("enabledState");
280
+ }
281
+ /**
282
+ * @method setEnabledState
283
+ * @param value {Boolean}
284
+ * @return void
285
+ */
286
+ setEnabledState(value) {
287
+ return this._set_twoStateVariable("enabledState", value);
288
+ }
289
+ /**
290
+ * @method getEnabledStateAsString
291
+ * @return {String}
292
+ */
293
+ getEnabledStateAsString() {
294
+ return this._get_var("enabledState").text;
295
+ }
296
+ /**
297
+ * @method getComment
298
+ * @return {LocalizedText}
299
+ */
300
+ getComment() {
301
+ return this._get_var("comment");
302
+ }
303
+ /**
304
+ * Set condition comment
305
+ *
306
+ * Comment contains the last comment provided for a certain state (ConditionBranch). It may
307
+ * have been provided by an AddComment Method, some other Method or in some other
308
+ * manner. The initial value of this Variable is null, unless it is provided in some other manner. If
309
+ * a Method provides as an option the ability to set a Comment, then the value of this Variable is
310
+ * reset to null if an optional comment is not provided.
311
+ *
312
+ * @method setComment
313
+ * @param txtMessage {LocalizedText}
314
+ */
315
+ setComment(txtMessage) {
316
+ const txtMessage1 = (0, node_opcua_data_model_1.coerceLocalizedText)(txtMessage);
317
+ this._set_var("comment", node_opcua_variant_1.DataType.LocalizedText, txtMessage1);
318
+ }
319
+ /**
320
+ *
321
+ * @method setMessage
322
+ * @param txtMessage {LocalizedText}
323
+ */
324
+ setMessage(txtMessage) {
325
+ const txtMessage1 = (0, node_opcua_data_model_1.coerceLocalizedText)(txtMessage);
326
+ return this._set_var("message", node_opcua_variant_1.DataType.LocalizedText, txtMessage1);
327
+ }
328
+ /**
329
+ * @method setClientUserId
330
+ * @param userIdentity {String}
331
+ */
332
+ setClientUserId(userIdentity) {
333
+ return this._set_var("clientUserId", node_opcua_variant_1.DataType.String, userIdentity.toString());
334
+ }
335
+ /*
336
+ *
337
+ *
338
+ * as per spec 1.0.3 - Part 9
339
+ *
340
+ * Quality reveals the status of process values or other resources that this Condition instance is
341
+ * based upon. If, for example, a process value is “Uncertain”, the associated “LevelAlarm”
342
+ * Condition is also questionable. Values for the Quality can be any of the OPC StatusCodes
343
+ * defined in Part 8 as well as Good, Uncertain and Bad as defined in Part 4. These
344
+ * StatusCodes are similar to but slightly more generic than the description of data quality in the
345
+ * various field bus specifications. It is the responsibility of the Server to map internal status
346
+ * information to these codes. A Server which supports no quality information shall return Good.
347
+ * This quality can also reflect the communication status associated with the system that this
348
+ * value or resource is based on and from which this Alarm was received. For communication
349
+ * errors to the underlying system, especially those that result in some unavailable Event fields,
350
+ * the quality shall be BadNoCommunication error.
351
+ *
352
+ * Quality refers to the quality of the data value(s) upon which this Condition is based. Since a
353
+ * Condition is usually based on one or more Variables, the Condition inherits the quality of
354
+ * these Variables. E.g., if the process value is “Uncertain”, the “LevelAlarm” Condition is also
355
+ * questionable. If more than one variable is represented by a given condition or if the condition
356
+ * is from an underlining system and no direct mapping to a variable is available, it is up to the
357
+ * application to determine what quality is displayed as part of the condition.
358
+ */
359
+ /**
360
+ * set the condition quality
361
+ * @method setQuality
362
+ * @param quality {StatusCode}
363
+ */
364
+ setQuality(quality) {
365
+ this._set_var("quality", node_opcua_variant_1.DataType.StatusCode, quality);
366
+ }
367
+ /**
368
+ * @method getQuality
369
+ * @return {StatusCode}
370
+ */
371
+ getQuality() {
372
+ return this._get_var("quality");
373
+ }
374
+ /*
375
+ * as per spec 1.0.3 - Part 9
376
+ * The Severity of a Condition is inherited from the base Event model defined in Part 5. It
377
+ * indicates the urgency of the Condition and is also commonly called ‘priority’, especially in
378
+ * relation to Alarms in the ProcessConditionClass.
379
+ *
380
+ * as per spec 1.0.3 - PArt 5
381
+ * Severity is an indication of the urgency of the Event. This is also commonly called “priority”.
382
+ * Values will range from 1 to 1 000, with 1 being the lowest severity and 1 000 being the highest.
383
+ * Typically, a severity of 1 would indicate an Event which is informational in nature, while a value
384
+ * of 1 000 would indicate an Event of catastrophic nature, which could potentially result in severe
385
+ * financial loss or loss of life.
386
+ * It is expected that very few Server implementations will support 1 000 distinct severity levels.
387
+ * Therefore, Server developers are responsible for distributing their severity levels across the
388
+ * 1 to 1 000 range in such a manner that clients can assume a linear distribution. For example, a
389
+ * client wishing to present five severity levels to a user should be able to do the following
390
+ * mapping:
391
+ * Client Severity OPC Severity
392
+ * HIGH 801 – 1 000
393
+ * MEDIUM HIGH 601 – 800
394
+ * MEDIUM 401 – 600
395
+ * MEDIUM LOW 201 – 400
396
+ * LOW 1 – 200
397
+ * In many cases a strict linear mapping of underlying source severities to the OPC Severity range
398
+ * is not appropriate. The Server developer will instead intelligently map the underlying source
399
+ * severities to the 1 to 1 000 OPC Severity range in some other fashion. In particular, it is
400
+ * recommended that Server developers map Events of high urgency into the OPC severity range
401
+ * of 667 to 1 000, Events of medium urgency into the OPC severity range of 334 to 666 and
402
+ * Events of low urgency into OPC severities of 1 to 333.
403
+ */
404
+ /**
405
+ * @method setSeverity
406
+ * @param severity {UInt16}
407
+ */
408
+ setSeverity(severity) {
409
+ (0, node_opcua_assert_1.assert)(isFinite(severity), "expecting a UInt16");
410
+ // record automatically last severity
411
+ const lastSeverity = this.getSeverity();
412
+ this.setLastSeverity(lastSeverity);
413
+ this._set_var("severity", node_opcua_variant_1.DataType.UInt16, severity);
414
+ }
415
+ /**
416
+ * @method getSeverity
417
+ * @return {UInt16}
418
+ */
419
+ getSeverity() {
420
+ const c = this.condition;
421
+ (0, node_opcua_assert_1.assert)(c.getEnabledState(), "condition must be enabled");
422
+ const value = this._get_var("severity");
423
+ return +value;
424
+ }
425
+ /*
426
+ * as per spec 1.0.3 - part 9:
427
+ * LastSeverity provides the previous severity of the ConditionBranch. Initially this Variable
428
+ * contains a zero value; it will return a value only after a severity change. The new severity is
429
+ * supplied via the Severity Property which is inherited from the BaseEventType.
430
+ *
431
+ */
432
+ /**
433
+ * @method setLastSeverity
434
+ * @param severity {UInt16}
435
+ */
436
+ setLastSeverity(severity) {
437
+ severity = +severity;
438
+ return this._set_var("lastSeverity", node_opcua_variant_1.DataType.UInt16, severity);
439
+ }
440
+ /**
441
+ * @method getLastSeverity
442
+ * @return {UInt16}
443
+ */
444
+ getLastSeverity() {
445
+ const value = this._get_var("lastSeverity");
446
+ return +value;
447
+ }
448
+ /**
449
+ * setReceiveTime
450
+ *
451
+ * (as per OPCUA 1.0.3 part 5)
452
+ *
453
+ * ReceiveTime provides the time the OPC UA Server received the Event from the underlying
454
+ * device of another Server.
455
+ *
456
+ * ReceiveTime is analogous to ServerTimestamp defined in Part 4, i.e.
457
+ * in the case where the OPC UA Server gets an Event from another OPC UA Server, each Server
458
+ * applies its own ReceiveTime. That implies that a Client may get the same Event, having the
459
+ * same EventId, from different Servers having different values of the ReceiveTime.
460
+ *
461
+ * The ReceiveTime shall always be returned as value and the Server is not allowed to return a
462
+ * StatusCode for the ReceiveTime indicating an error.
463
+ *
464
+ * @method setReceiveTime
465
+ * @param time {Date} : UTCTime
466
+ */
467
+ setReceiveTime(time) {
468
+ (0, node_opcua_assert_1.assert)(time instanceof Date);
469
+ return this._set_var("receiveTime", node_opcua_variant_1.DataType.DateTime, time);
470
+ }
471
+ /**
472
+ * (as per OPCUA 1.0.3 part 5)
473
+ * Time provides the time the Event occurred. This value is set as close to the event generator as
474
+ * possible. It often comes from the underlying system or device. Once set, intermediate OPC UA
475
+ * Servers shall not alter the value.
476
+ *
477
+ * @method setTime
478
+ * @param time {Date}
479
+ */
480
+ setTime(time) {
481
+ (0, node_opcua_assert_1.assert)(time instanceof Date);
482
+ return this._set_var("time", node_opcua_variant_1.DataType.DateTime, time);
483
+ }
484
+ /**
485
+ * LocalTime is a structure containing the Offset and the DaylightSavingInOffset flag. The Offset
486
+ * specifies the time difference (in minutes) between the Time Property and the time at the location
487
+ * in which the event was issued. If DaylightSavingInOffset is TRUE, then Standard/Daylight
488
+ * savings time (DST) at the originating location is in effect and Offset includes the DST c orrection.
489
+ * If FALSE then the Offset does not include DST correction and DST may or may not have been
490
+ * in effect.
491
+ * @method setLocalTime
492
+ * @param localTime {TimeZone}
493
+ */
494
+ setLocalTime(localTime) {
495
+ (0, node_opcua_assert_1.assert)(localTime instanceof node_opcua_types_1.TimeZoneDataType);
496
+ return this._set_var("localTime", node_opcua_variant_1.DataType.ExtensionObject, new node_opcua_types_1.TimeZoneDataType(localTime));
497
+ }
498
+ // read only !
499
+ getSourceName() {
500
+ return this._get_var("sourceName");
501
+ }
502
+ /**
503
+ * @method getSourceNode
504
+ * return {NodeId}
505
+ */
506
+ getSourceNode() {
507
+ return this._get_var("sourceNode");
508
+ }
509
+ /**
510
+ * @method getEventType
511
+ * return {NodeId}
512
+ */
513
+ getEventType() {
514
+ return this._get_var("eventType");
515
+ }
516
+ getMessage() {
517
+ return this._get_var("message");
518
+ }
519
+ isCurrentBranch() {
520
+ return (0, node_opcua_nodeid_1.sameNodeId)(this._get_var("branchId"), node_opcua_nodeid_1.NodeId.nullNodeId);
521
+ }
522
+ // -- ACKNOWLEDGEABLE -------------------------------------------------------------------
523
+ getAckedState() {
524
+ const acknowledgeableCondition = this.condition;
525
+ if (!acknowledgeableCondition.ackedState) {
526
+ throw new Error("Node " +
527
+ acknowledgeableCondition.browseName.toString() +
528
+ " of type " +
529
+ acknowledgeableCondition.typeDefinitionObj.browseName.toString() +
530
+ " has no AckedState");
531
+ }
532
+ return this._get_twoStateVariable("ackedState");
533
+ }
534
+ setAckedState(ackedState) {
535
+ ackedState = !!ackedState;
536
+ return (0, condition_1._setAckedState)(this, ackedState);
537
+ }
538
+ getConfirmedState() {
539
+ const acknowledgeableCondition = this.condition;
540
+ (0, node_opcua_assert_1.assert)(acknowledgeableCondition.confirmedState, "Must have a confirmed state");
541
+ return this._get_twoStateVariable("confirmedState");
542
+ }
543
+ setConfirmedStateIfExists(confirmedState) {
544
+ confirmedState = !!confirmedState;
545
+ const acknowledgeableCondition = this.condition;
546
+ if (!acknowledgeableCondition.confirmedState) {
547
+ // no condition node has been defined (this is valid)
548
+ // confirm state cannot be set
549
+ return;
550
+ }
551
+ // todo deal with Error code BadConditionBranchAlreadyConfirmed
552
+ return this._set_twoStateVariable("confirmedState", confirmedState);
553
+ }
554
+ setConfirmedState(confirmedState) {
555
+ const acknowledgeableCondition = this.condition;
556
+ (0, node_opcua_assert_1.assert)(acknowledgeableCondition.confirmedState, "Must have a confirmed state. Add ConfirmedState to the optionals");
557
+ return this.setConfirmedStateIfExists(confirmedState);
558
+ }
559
+ // ---- Shelving
560
+ /**
561
+ * @class ConditionSnapshot
562
+ */
563
+ /**
564
+ * @method getSuppressedState
565
+ * @return {Boolean}
566
+ */
567
+ getSuppressedState() {
568
+ return this._get_twoStateVariable("suppressedState");
569
+ }
570
+ /**
571
+ * @method setSuppressedState
572
+ * @param suppressed {Boolean}
573
+ */
574
+ setSuppressedState(suppressed) {
575
+ suppressed = !!suppressed;
576
+ this._set_twoStateVariable("suppressedState", suppressed);
577
+ }
578
+ getActiveState() {
579
+ return this._get_twoStateVariable("activeState");
580
+ }
581
+ setActiveState(newActiveState) {
582
+ // xx var activeState = self.getActiveState();
583
+ // xx if (activeState === newActiveState) {
584
+ // xx return StatusCodes.Bad;
585
+ // xx }
586
+ this._set_twoStateVariable("activeState", newActiveState);
587
+ return node_opcua_status_code_1.StatusCodes.Good;
588
+ }
589
+ // tslint:disable:no-empty
590
+ setShelvingState() {
591
+ // todo
592
+ }
593
+ toString() {
594
+ // public condition: any = null;
595
+ // public eventData: any = null;
596
+ // public branchId: NodeId | null = null;
597
+ const t = this.condition.addressSpace.findNode(this.condition.typeDefinition);
598
+ return ("" +
599
+ "condition: " +
600
+ (this.condition.browseName.toString() + " " + this.condition.nodeId.toString()) +
601
+ ", type: " +
602
+ (t.browseName.toString() + " " + t.nodeId.toString()) +
603
+ ", branchId: " +
604
+ (this.branchId ? this.branchId.toString() : "<null>") +
605
+ ", acked: " +
606
+ this.getAckedState() +
607
+ ", confirmed: " +
608
+ this.getConfirmedState() +
609
+ ", activeState: " +
610
+ this.getActiveState() +
611
+ // + ", suppressed: " + this.getSuppressedState()
612
+ ", retain: " +
613
+ this.getRetain() +
614
+ ", message: " +
615
+ this.getMessage() +
616
+ ", comment: " +
617
+ this.getComment());
618
+ }
619
+ /**
620
+ * @class ConditionSnapshot
621
+ * @param varName
622
+ * @param value
623
+ * @private
624
+ */
625
+ _set_twoStateVariable(varName, value) {
626
+ value = !!value;
627
+ const hrKey = ConditionSnapshot.normalizeName(varName);
628
+ const idKey = ConditionSnapshot.normalizeName(varName) + ".id";
629
+ const variant = new node_opcua_variant_1.Variant({ dataType: node_opcua_variant_1.DataType.Boolean, value });
630
+ this._map[idKey] = variant;
631
+ // also change varName with human readable text
632
+ const twoStateNode = this._node_index[hrKey];
633
+ if (!twoStateNode) {
634
+ throw new Error("Cannot find twoState Variable with name " + varName);
635
+ }
636
+ if (!(twoStateNode instanceof ua_two_state_variable_1.UATwoStateVariableImpl)) {
637
+ throw new Error("Cannot find twoState Variable with name " + varName + " " + twoStateNode);
638
+ }
639
+ const hrValue = new node_opcua_variant_1.Variant({
640
+ dataType: node_opcua_variant_1.DataType.LocalizedText,
641
+ value: value ? twoStateNode.getTrueState() : twoStateNode.getFalseState()
642
+ });
643
+ this._map[hrKey] = hrValue;
644
+ const node = this._node_index[idKey];
645
+ // also change ConditionNode if we are on currentBranch
646
+ if (this.isCurrentBranch()) {
647
+ (0, node_opcua_assert_1.assert)(twoStateNode instanceof ua_two_state_variable_1.UATwoStateVariableImpl);
648
+ twoStateNode.setValue(value);
649
+ // xx console.log("Is current branch", twoStateNode.toString(),variant.toString());
650
+ // xx console.log(" = ",twoStateNode.getValue());
651
+ }
652
+ this.emit("value_changed", node, variant);
653
+ }
654
+ _get_twoStateVariable(varName) {
655
+ const key = ConditionSnapshot.normalizeName(varName) + ".id";
656
+ const variant = this._map[key];
657
+ // istanbul ignore next
658
+ if (!variant) {
659
+ return "???";
660
+ // throw new Error("Cannot find TwoStateVariable with name " + varName);
661
+ }
662
+ return variant.value;
663
+ }
664
+ }
665
+ exports.ConditionSnapshot = ConditionSnapshot;
666
+ ConditionSnapshot.normalizeName = normalizeName;
667
667
  //# sourceMappingURL=condition_snapshot.js.map