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,332 +1,332 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._addTwoStateVariable = exports.UATwoStateVariableImpl = exports.promoteToTwoStateVariable = exports._install_TwoStateVariable_machinery = void 0;
4
- /**
5
- * @module node-opcua-address-space
6
- */
7
- const node_opcua_assert_1 = require("node-opcua-assert");
8
- const node_opcua_constants_1 = require("node-opcua-constants");
9
- const node_opcua_data_model_1 = require("node-opcua-data-model");
10
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
11
- const node_opcua_nodeid_2 = require("node-opcua-nodeid");
12
- const node_opcua_status_code_1 = require("node-opcua-status-code");
13
- const node_opcua_variant_1 = require("node-opcua-variant");
14
- const node_opcua_variant_2 = require("node-opcua-variant");
15
- // public interfaces
16
- const register_node_promoter_1 = require("../../source/loader/register_node_promoter");
17
- // private types
18
- const ua_variable_impl_1 = require("../ua_variable_impl");
19
- const hasTrueSubState_ReferenceTypeNodeId = (0, node_opcua_nodeid_1.resolveNodeId)("HasTrueSubState");
20
- const hasFalseSubState_ReferenceTypeNodeId = (0, node_opcua_nodeid_1.resolveNodeId)("HasFalseSubState");
21
- // Release 1.03 12 OPC Unified Architecture, Part 9
22
- // Two-state state machines
23
- // Most states defined in this standard are simple – i.e. they are either TRUE or FALSE. The
24
- // TwoStateVariableType is introduced specifically for this use case. More complex states are
25
- // modelled by using a StateMachineType defined in Part 5.
26
- // The TwoStateVariableType is derived from the StateVariableType.
27
- //
28
- // Attribute Value
29
- // BrowseName TwoStateVariableType
30
- // DataType LocalizedText
31
- // ValueRank -1 (-1 = Scalar)
32
- // IsAbstract False
33
- //
34
- // Subtype of the StateVariableType defined in Part 5.
35
- // Note that a Reference to this subtype is not shown in the definition of the StateVariableType
36
- //
37
- // References NodeClass BrowseName DataType TypeDefinition Modelling Rule
38
- // HasProperty Variable Id Boolean PropertyType Mandatory
39
- // HasProperty Variable TransitionTime UtcTime PropertyType Optional
40
- // HasProperty Variable EffectiveTransitionTime UtcTime PropertyType Optional
41
- // HasProperty Variable TrueState LocalizedText PropertyType Optional
42
- // HasProperty Variable FalseState LocalizedText PropertyType Optional
43
- // HasTrueSubState StateMachine or
44
- // TwoStateVariableType
45
- // <StateIdentifier> Defined in Clause 5.4.2 Optional
46
- // HasFalseSubState StateMachine or
47
- // TwoStateVariableType
48
- // <StateIdentifier> Defined in Clause 5.4.3 Optional
49
- function _updateTransitionTime(node) {
50
- // TransitionTime specifies the time when the current state was entered.
51
- if (node.transitionTime) {
52
- node.transitionTime.setValueFromSource({ dataType: node_opcua_variant_2.DataType.DateTime, value: new Date() });
53
- }
54
- }
55
- function _updateEffectiveTransitionTime(node) {
56
- if (node.effectiveTransitionTime) {
57
- // xx console.log("xxxx _updateEffectiveTransitionTime
58
- // because subStateNode ",subStateNode.browseName.toString());
59
- node.effectiveTransitionTime.setValueFromSource({
60
- dataType: node_opcua_variant_2.DataType.DateTime,
61
- value: new Date()
62
- });
63
- }
64
- }
65
- function _getEffectiveDisplayName(node) {
66
- const humanReadableString = _getHumanReadableString(node);
67
- if (humanReadableString.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
68
- return humanReadableString;
69
- }
70
- const boolValue = node.getValue();
71
- let subStateNodes;
72
- if (boolValue) {
73
- subStateNodes = node.findReferencesExAsObject("HasTrueSubState", node_opcua_data_model_1.BrowseDirection.Forward);
74
- }
75
- else {
76
- subStateNodes = node.findReferencesExAsObject("HasFalseSubState", node_opcua_data_model_1.BrowseDirection.Forward);
77
- }
78
- const states = subStateNodes.forEach((n) => {
79
- // todo happen
80
- });
81
- return humanReadableString;
82
- }
83
- function _getHumanReadableString(node) {
84
- const dataValue = node.id.readValue();
85
- if (dataValue.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
86
- const _c = dataValue.clone();
87
- _c.value = new node_opcua_variant_1.Variant({
88
- dataType: node_opcua_variant_2.DataType.LocalizedText,
89
- value: (0, node_opcua_data_model_1.coerceLocalizedText)("")
90
- });
91
- return _c;
92
- }
93
- (0, node_opcua_assert_1.assert)(dataValue.value.dataType === node_opcua_variant_2.DataType.Boolean);
94
- const boolValue = dataValue.value.value;
95
- // The Value Attribute of a TwoStateVariable contains the current state as a human readable name.
96
- // The EnabledState for example, might contain the name “Enabled” when TRUE and “Disabled” when FALSE.
97
- const dataValue2 = dataValue.clone();
98
- dataValue2.value = new node_opcua_variant_1.Variant({
99
- dataType: node_opcua_variant_2.DataType.LocalizedText,
100
- value: boolValue ? node.getTrueState() : node.getFalseState()
101
- });
102
- return dataValue2;
103
- }
104
- function _install_TwoStateVariable_machinery(node, options) {
105
- (0, node_opcua_assert_1.assert)(node.dataTypeObj.browseName.toString() === "LocalizedText");
106
- (0, node_opcua_assert_1.assert)(node.minimumSamplingInterval === 0);
107
- (0, node_opcua_assert_1.assert)(node.typeDefinitionObj.browseName.toString() === "TwoStateVariableType");
108
- (0, node_opcua_assert_1.assert)(node.dataTypeObj.browseName.toString() === "LocalizedText");
109
- (0, node_opcua_assert_1.assert)(Object.prototype.hasOwnProperty.call(node, "valueRank") && (node.valueRank === -1 || node.valueRank === 0));
110
- // promote node into a UATwoStateVariable
111
- const _node = promoteToTwoStateVariable(node);
112
- node.initialize(options);
113
- return _node;
114
- }
115
- exports._install_TwoStateVariable_machinery = _install_TwoStateVariable_machinery;
116
- function promoteToTwoStateVariable(node) {
117
- if (node instanceof UATwoStateVariableImpl) {
118
- return node;
119
- }
120
- // istanbul ignore next
121
- if (!(node instanceof ua_variable_impl_1.UAVariableImpl)) {
122
- throw new Error("Trying to promote a invalid object");
123
- }
124
- Object.setPrototypeOf(node, UATwoStateVariableImpl.prototype);
125
- return node;
126
- }
127
- exports.promoteToTwoStateVariable = promoteToTwoStateVariable;
128
- (0, register_node_promoter_1.registerNodePromoter)(node_opcua_constants_1.VariableTypeIds.TwoStateVariableType, promoteToTwoStateVariable);
129
- /***
130
- * @class UATwoStateVariable
131
- * @constructor
132
- * @extends UAVariable
133
- */
134
- class UATwoStateVariableImpl extends ua_variable_impl_1.UAVariableImplT {
135
- constructor(opts) {
136
- super(opts);
137
- }
138
- get isFalseSubStateOf() {
139
- return super.isFalseSubStateOf;
140
- }
141
- get isTrueSubStateOf() {
142
- return super.isTrueSubStateOf;
143
- }
144
- initialize(options) {
145
- if (options.trueState) {
146
- (0, node_opcua_assert_1.assert)(!!options.falseState);
147
- (0, node_opcua_assert_1.assert)(typeof options.trueState === "string");
148
- (0, node_opcua_assert_1.assert)(typeof options.falseState === "string");
149
- if (this.falseState) {
150
- this.falseState.setValueFromSource({
151
- dataType: node_opcua_variant_2.DataType.LocalizedText,
152
- value: (0, node_opcua_data_model_1.coerceLocalizedText)(options.falseState)
153
- });
154
- }
155
- else {
156
- this._trueState = (0, node_opcua_data_model_1.coerceLocalizedText)(options.trueState).text;
157
- }
158
- if (this.trueState) {
159
- this.trueState.setValueFromSource({
160
- dataType: node_opcua_variant_2.DataType.LocalizedText,
161
- value: (0, node_opcua_data_model_1.coerceLocalizedText)(options.trueState)
162
- });
163
- }
164
- else {
165
- this._falseState = (0, node_opcua_data_model_1.coerceLocalizedText)(options.falseState).text;
166
- }
167
- }
168
- // handle isTrueSubStateOf
169
- if (options.isTrueSubStateOf) {
170
- this.addReference({
171
- isForward: false,
172
- nodeId: options.isTrueSubStateOf,
173
- referenceType: "HasTrueSubState"
174
- });
175
- }
176
- if (options.isFalseSubStateOf) {
177
- this.addReference({
178
- isForward: false,
179
- nodeId: options.isFalseSubStateOf,
180
- referenceType: "HasFalseSubState"
181
- });
182
- }
183
- if (options.value === undefined) {
184
- this.id.setValueFromSource({
185
- dataType: "Boolean",
186
- value: false
187
- }, node_opcua_status_code_1.StatusCodes.UncertainInitialValue);
188
- }
189
- else if (typeof options.value === "boolean") {
190
- this.id.setValueFromSource({
191
- dataType: "Boolean",
192
- value: options.value
193
- }, node_opcua_status_code_1.StatusCodes.Good);
194
- }
195
- else if (Object.prototype.hasOwnProperty.call(options.value, "dataType")) {
196
- (0, node_opcua_assert_1.assert)(options.value.dataType === node_opcua_variant_2.DataType.Boolean);
197
- this.id.setValueFromSource(options.value, node_opcua_status_code_1.StatusCodes.Good);
198
- }
199
- else {
200
- this.id.bindVariable(options.value);
201
- }
202
- this._postInitialize();
203
- }
204
- _postInitialize() {
205
- if (this.effectiveTransitionTime) {
206
- // install "value_changed" event handler on SubState that are already defined
207
- const subStates = this.getTrueSubStates().concat(this.getFalseSubStates());
208
- for (const subState of subStates) {
209
- subState.on("value_changed", () => _updateEffectiveTransitionTime(this));
210
- }
211
- }
212
- // it should be possible to define a trueState and falseState LocalizedText even if
213
- // the trueState or FalseState node is not exposed. Therefore we need to store their value
214
- // into dedicated variables.
215
- this.id.on("value_changed", () => {
216
- this._internal_set_dataValue(_getHumanReadableString(this));
217
- });
218
- this._internal_set_dataValue(_getHumanReadableString(this));
219
- // todo : also set the effectiveDisplayName if present
220
- // from spec Part 5
221
- // Release 1.03 OPC Unified Architecture, Part 5
222
- // EffectiveDisplayName contains a human readable name for the current state of the state
223
- // machine after taking the state of any SubStateMachines in account. There is no rule specified
224
- // for which state or sub-state should be used. It is up to the Server and will depend on the
225
- // semantics of the StateMachineType
226
- //
227
- // EffectiveDisplayName will be constructed by adding the EnableState
228
- // and the State of the addTrue state
229
- if (this.effectiveDisplayName) {
230
- this.id.on("value_changed", () => {
231
- this.effectiveDisplayName._internal_set_dataValue(_getEffectiveDisplayName(this));
232
- });
233
- this.effectiveDisplayName._internal_set_dataValue(_getEffectiveDisplayName(this));
234
- }
235
- }
236
- /**
237
- * @method setValue
238
- * @param boolValue {Boolean}
239
- */
240
- setValue(boolValue) {
241
- (0, node_opcua_assert_1.assert)(typeof boolValue === "boolean");
242
- const dataValue = this.id.readValue();
243
- const oldValue = dataValue.value.value;
244
- if (dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good && boolValue === oldValue) {
245
- return; // nothing to do
246
- }
247
- //
248
- this.id.setValueFromSource(new node_opcua_variant_1.Variant({ dataType: node_opcua_variant_2.DataType.Boolean, value: boolValue }));
249
- _updateTransitionTime(this);
250
- _updateEffectiveTransitionTime(this);
251
- }
252
- /**
253
- * @method getValue
254
- * @return {Boolean}
255
- */
256
- getValue() {
257
- const dataValue = this.id.readValue();
258
- (0, node_opcua_assert_1.assert)(dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good);
259
- (0, node_opcua_assert_1.assert)(dataValue.value.dataType === node_opcua_variant_2.DataType.Boolean);
260
- return dataValue.value.value;
261
- }
262
- /**
263
- * @method getValueAsString
264
- * @return {string}
265
- */
266
- getValueAsString() {
267
- var _a;
268
- const dataValue = this.readValue();
269
- (0, node_opcua_assert_1.assert)(dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good);
270
- (0, node_opcua_assert_1.assert)(dataValue.value.dataType === node_opcua_variant_2.DataType.LocalizedText);
271
- return ((_a = dataValue.value.value.text) === null || _a === void 0 ? void 0 : _a.toString()) || "";
272
- }
273
- getTrueState() {
274
- return this.trueState ? this.trueState.readValue().value.value : (0, node_opcua_data_model_1.coerceLocalizedText)(this._trueState || "TRUE");
275
- }
276
- getFalseState() {
277
- return this.falseState ? this.falseState.readValue().value.value : (0, node_opcua_data_model_1.coerceLocalizedText)(this._falseState || "FALSE");
278
- }
279
- // TODO : shall we care about overloading the remove_backward_reference method ?
280
- // some TrueSubState and FalseSubState relationship may be added later
281
- // so we need a mechanism to keep adding the "value_changed" event handle on subStates that
282
- // will be defined later.
283
- // install change detection on sub State
284
- // this is useful to change the effective transitionTime
285
- // EffectiveTransitionTime specifies the time when the current state or one of its sub states was entered.
286
- // If, for example, a LevelAlarm is active and – while active – switches several times between High and
287
- // HighHigh, then the TransitionTime stays at the point in time where the Alarm became active whereas the
288
- // EffectiveTransitionTime changes with each shift of a sub state.
289
- _add_backward_reference(reference) {
290
- super._add_backward_reference(reference);
291
- if (reference.isForward &&
292
- ((0, node_opcua_nodeid_2.sameNodeId)(reference.referenceType, hasTrueSubState_ReferenceTypeNodeId) ||
293
- (0, node_opcua_nodeid_2.sameNodeId)(reference.referenceType, hasFalseSubState_ReferenceTypeNodeId))) {
294
- const addressSpace = this.addressSpace;
295
- // add event handle
296
- const subState = addressSpace.findNode(reference.nodeId);
297
- subState.on("value_changed", _updateEffectiveTransitionTime.bind(null, this, subState));
298
- }
299
- }
300
- }
301
- exports.UATwoStateVariableImpl = UATwoStateVariableImpl;
302
- function _addTwoStateVariable(namespace, options) {
303
- const addressSpace = namespace.addressSpace;
304
- const twoStateVariableType = addressSpace.findVariableType("TwoStateVariableType");
305
- if (!twoStateVariableType) {
306
- throw new Error("cannot find TwoStateVariableType");
307
- }
308
- options.optionals = options.optionals || [];
309
- if (options.trueState) {
310
- options.optionals.push("TrueState");
311
- }
312
- if (options.falseState) {
313
- options.optionals.push("FalseState");
314
- }
315
- // we want event based changes...
316
- options.minimumSamplingInterval = 0;
317
- const node = twoStateVariableType.instantiate({
318
- browseName: options.browseName,
319
- nodeId: options.nodeId,
320
- description: options.description,
321
- componentOf: options.componentOf,
322
- organizedBy: options.organizedBy,
323
- modellingRule: options.modellingRule,
324
- dataType: (0, node_opcua_nodeid_1.resolveNodeId)(node_opcua_variant_2.DataType.LocalizedText),
325
- minimumSamplingInterval: options.minimumSamplingInterval,
326
- optionals: options.optionals
327
- });
328
- const _node = _install_TwoStateVariable_machinery(node, options);
329
- return _node;
330
- }
331
- exports._addTwoStateVariable = _addTwoStateVariable;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._addTwoStateVariable = exports.UATwoStateVariableImpl = exports.promoteToTwoStateVariable = exports._install_TwoStateVariable_machinery = void 0;
4
+ /**
5
+ * @module node-opcua-address-space
6
+ */
7
+ const node_opcua_assert_1 = require("node-opcua-assert");
8
+ const node_opcua_constants_1 = require("node-opcua-constants");
9
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
10
+ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
11
+ const node_opcua_nodeid_2 = require("node-opcua-nodeid");
12
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
13
+ const node_opcua_variant_1 = require("node-opcua-variant");
14
+ const node_opcua_variant_2 = require("node-opcua-variant");
15
+ // public interfaces
16
+ const register_node_promoter_1 = require("../../source/loader/register_node_promoter");
17
+ // private types
18
+ const ua_variable_impl_1 = require("../ua_variable_impl");
19
+ const hasTrueSubState_ReferenceTypeNodeId = (0, node_opcua_nodeid_1.resolveNodeId)("HasTrueSubState");
20
+ const hasFalseSubState_ReferenceTypeNodeId = (0, node_opcua_nodeid_1.resolveNodeId)("HasFalseSubState");
21
+ // Release 1.03 12 OPC Unified Architecture, Part 9
22
+ // Two-state state machines
23
+ // Most states defined in this standard are simple – i.e. they are either TRUE or FALSE. The
24
+ // TwoStateVariableType is introduced specifically for this use case. More complex states are
25
+ // modelled by using a StateMachineType defined in Part 5.
26
+ // The TwoStateVariableType is derived from the StateVariableType.
27
+ //
28
+ // Attribute Value
29
+ // BrowseName TwoStateVariableType
30
+ // DataType LocalizedText
31
+ // ValueRank -1 (-1 = Scalar)
32
+ // IsAbstract False
33
+ //
34
+ // Subtype of the StateVariableType defined in Part 5.
35
+ // Note that a Reference to this subtype is not shown in the definition of the StateVariableType
36
+ //
37
+ // References NodeClass BrowseName DataType TypeDefinition Modelling Rule
38
+ // HasProperty Variable Id Boolean PropertyType Mandatory
39
+ // HasProperty Variable TransitionTime UtcTime PropertyType Optional
40
+ // HasProperty Variable EffectiveTransitionTime UtcTime PropertyType Optional
41
+ // HasProperty Variable TrueState LocalizedText PropertyType Optional
42
+ // HasProperty Variable FalseState LocalizedText PropertyType Optional
43
+ // HasTrueSubState StateMachine or
44
+ // TwoStateVariableType
45
+ // <StateIdentifier> Defined in Clause 5.4.2 Optional
46
+ // HasFalseSubState StateMachine or
47
+ // TwoStateVariableType
48
+ // <StateIdentifier> Defined in Clause 5.4.3 Optional
49
+ function _updateTransitionTime(node) {
50
+ // TransitionTime specifies the time when the current state was entered.
51
+ if (node.transitionTime) {
52
+ node.transitionTime.setValueFromSource({ dataType: node_opcua_variant_2.DataType.DateTime, value: new Date() });
53
+ }
54
+ }
55
+ function _updateEffectiveTransitionTime(node) {
56
+ if (node.effectiveTransitionTime) {
57
+ // xx console.log("xxxx _updateEffectiveTransitionTime
58
+ // because subStateNode ",subStateNode.browseName.toString());
59
+ node.effectiveTransitionTime.setValueFromSource({
60
+ dataType: node_opcua_variant_2.DataType.DateTime,
61
+ value: new Date()
62
+ });
63
+ }
64
+ }
65
+ function _getEffectiveDisplayName(node) {
66
+ const humanReadableString = _getHumanReadableString(node);
67
+ if (humanReadableString.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
68
+ return humanReadableString;
69
+ }
70
+ const boolValue = node.getValue();
71
+ let subStateNodes;
72
+ if (boolValue) {
73
+ subStateNodes = node.findReferencesExAsObject("HasTrueSubState", node_opcua_data_model_1.BrowseDirection.Forward);
74
+ }
75
+ else {
76
+ subStateNodes = node.findReferencesExAsObject("HasFalseSubState", node_opcua_data_model_1.BrowseDirection.Forward);
77
+ }
78
+ const states = subStateNodes.forEach((n) => {
79
+ // todo happen
80
+ });
81
+ return humanReadableString;
82
+ }
83
+ function _getHumanReadableString(node) {
84
+ const dataValue = node.id.readValue();
85
+ if (dataValue.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
86
+ const _c = dataValue.clone();
87
+ _c.value = new node_opcua_variant_1.Variant({
88
+ dataType: node_opcua_variant_2.DataType.LocalizedText,
89
+ value: (0, node_opcua_data_model_1.coerceLocalizedText)("")
90
+ });
91
+ return _c;
92
+ }
93
+ (0, node_opcua_assert_1.assert)(dataValue.value.dataType === node_opcua_variant_2.DataType.Boolean);
94
+ const boolValue = dataValue.value.value;
95
+ // The Value Attribute of a TwoStateVariable contains the current state as a human readable name.
96
+ // The EnabledState for example, might contain the name “Enabled” when TRUE and “Disabled” when FALSE.
97
+ const dataValue2 = dataValue.clone();
98
+ dataValue2.value = new node_opcua_variant_1.Variant({
99
+ dataType: node_opcua_variant_2.DataType.LocalizedText,
100
+ value: boolValue ? node.getTrueState() : node.getFalseState()
101
+ });
102
+ return dataValue2;
103
+ }
104
+ function _install_TwoStateVariable_machinery(node, options) {
105
+ (0, node_opcua_assert_1.assert)(node.dataTypeObj.browseName.toString() === "LocalizedText");
106
+ (0, node_opcua_assert_1.assert)(node.minimumSamplingInterval === 0);
107
+ (0, node_opcua_assert_1.assert)(node.typeDefinitionObj.browseName.toString() === "TwoStateVariableType");
108
+ (0, node_opcua_assert_1.assert)(node.dataTypeObj.browseName.toString() === "LocalizedText");
109
+ (0, node_opcua_assert_1.assert)(Object.prototype.hasOwnProperty.call(node, "valueRank") && (node.valueRank === -1 || node.valueRank === 0));
110
+ // promote node into a UATwoStateVariable
111
+ const _node = promoteToTwoStateVariable(node);
112
+ node.initialize(options);
113
+ return _node;
114
+ }
115
+ exports._install_TwoStateVariable_machinery = _install_TwoStateVariable_machinery;
116
+ function promoteToTwoStateVariable(node) {
117
+ if (node instanceof UATwoStateVariableImpl) {
118
+ return node;
119
+ }
120
+ // istanbul ignore next
121
+ if (!(node instanceof ua_variable_impl_1.UAVariableImpl)) {
122
+ throw new Error("Trying to promote a invalid object");
123
+ }
124
+ Object.setPrototypeOf(node, UATwoStateVariableImpl.prototype);
125
+ return node;
126
+ }
127
+ exports.promoteToTwoStateVariable = promoteToTwoStateVariable;
128
+ (0, register_node_promoter_1.registerNodePromoter)(node_opcua_constants_1.VariableTypeIds.TwoStateVariableType, promoteToTwoStateVariable);
129
+ /***
130
+ * @class UATwoStateVariable
131
+ * @constructor
132
+ * @extends UAVariable
133
+ */
134
+ class UATwoStateVariableImpl extends ua_variable_impl_1.UAVariableImplT {
135
+ constructor(opts) {
136
+ super(opts);
137
+ }
138
+ get isFalseSubStateOf() {
139
+ return super.isFalseSubStateOf;
140
+ }
141
+ get isTrueSubStateOf() {
142
+ return super.isTrueSubStateOf;
143
+ }
144
+ initialize(options) {
145
+ if (options.trueState) {
146
+ (0, node_opcua_assert_1.assert)(!!options.falseState);
147
+ (0, node_opcua_assert_1.assert)(typeof options.trueState === "string");
148
+ (0, node_opcua_assert_1.assert)(typeof options.falseState === "string");
149
+ if (this.falseState) {
150
+ this.falseState.setValueFromSource({
151
+ dataType: node_opcua_variant_2.DataType.LocalizedText,
152
+ value: (0, node_opcua_data_model_1.coerceLocalizedText)(options.falseState)
153
+ });
154
+ }
155
+ else {
156
+ this._trueState = (0, node_opcua_data_model_1.coerceLocalizedText)(options.trueState).text;
157
+ }
158
+ if (this.trueState) {
159
+ this.trueState.setValueFromSource({
160
+ dataType: node_opcua_variant_2.DataType.LocalizedText,
161
+ value: (0, node_opcua_data_model_1.coerceLocalizedText)(options.trueState)
162
+ });
163
+ }
164
+ else {
165
+ this._falseState = (0, node_opcua_data_model_1.coerceLocalizedText)(options.falseState).text;
166
+ }
167
+ }
168
+ // handle isTrueSubStateOf
169
+ if (options.isTrueSubStateOf) {
170
+ this.addReference({
171
+ isForward: false,
172
+ nodeId: options.isTrueSubStateOf,
173
+ referenceType: "HasTrueSubState"
174
+ });
175
+ }
176
+ if (options.isFalseSubStateOf) {
177
+ this.addReference({
178
+ isForward: false,
179
+ nodeId: options.isFalseSubStateOf,
180
+ referenceType: "HasFalseSubState"
181
+ });
182
+ }
183
+ if (options.value === undefined) {
184
+ this.id.setValueFromSource({
185
+ dataType: "Boolean",
186
+ value: false
187
+ }, node_opcua_status_code_1.StatusCodes.UncertainInitialValue);
188
+ }
189
+ else if (typeof options.value === "boolean") {
190
+ this.id.setValueFromSource({
191
+ dataType: "Boolean",
192
+ value: options.value
193
+ }, node_opcua_status_code_1.StatusCodes.Good);
194
+ }
195
+ else if (Object.prototype.hasOwnProperty.call(options.value, "dataType")) {
196
+ (0, node_opcua_assert_1.assert)(options.value.dataType === node_opcua_variant_2.DataType.Boolean);
197
+ this.id.setValueFromSource(options.value, node_opcua_status_code_1.StatusCodes.Good);
198
+ }
199
+ else {
200
+ this.id.bindVariable(options.value);
201
+ }
202
+ this._postInitialize();
203
+ }
204
+ _postInitialize() {
205
+ if (this.effectiveTransitionTime) {
206
+ // install "value_changed" event handler on SubState that are already defined
207
+ const subStates = this.getTrueSubStates().concat(this.getFalseSubStates());
208
+ for (const subState of subStates) {
209
+ subState.on("value_changed", () => _updateEffectiveTransitionTime(this));
210
+ }
211
+ }
212
+ // it should be possible to define a trueState and falseState LocalizedText even if
213
+ // the trueState or FalseState node is not exposed. Therefore we need to store their value
214
+ // into dedicated variables.
215
+ this.id.on("value_changed", () => {
216
+ this._internal_set_dataValue(_getHumanReadableString(this));
217
+ });
218
+ this._internal_set_dataValue(_getHumanReadableString(this));
219
+ // todo : also set the effectiveDisplayName if present
220
+ // from spec Part 5
221
+ // Release 1.03 OPC Unified Architecture, Part 5
222
+ // EffectiveDisplayName contains a human readable name for the current state of the state
223
+ // machine after taking the state of any SubStateMachines in account. There is no rule specified
224
+ // for which state or sub-state should be used. It is up to the Server and will depend on the
225
+ // semantics of the StateMachineType
226
+ //
227
+ // EffectiveDisplayName will be constructed by adding the EnableState
228
+ // and the State of the addTrue state
229
+ if (this.effectiveDisplayName) {
230
+ this.id.on("value_changed", () => {
231
+ this.effectiveDisplayName._internal_set_dataValue(_getEffectiveDisplayName(this));
232
+ });
233
+ this.effectiveDisplayName._internal_set_dataValue(_getEffectiveDisplayName(this));
234
+ }
235
+ }
236
+ /**
237
+ * @method setValue
238
+ * @param boolValue {Boolean}
239
+ */
240
+ setValue(boolValue) {
241
+ (0, node_opcua_assert_1.assert)(typeof boolValue === "boolean");
242
+ const dataValue = this.id.readValue();
243
+ const oldValue = dataValue.value.value;
244
+ if (dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good && boolValue === oldValue) {
245
+ return; // nothing to do
246
+ }
247
+ //
248
+ this.id.setValueFromSource(new node_opcua_variant_1.Variant({ dataType: node_opcua_variant_2.DataType.Boolean, value: boolValue }));
249
+ _updateTransitionTime(this);
250
+ _updateEffectiveTransitionTime(this);
251
+ }
252
+ /**
253
+ * @method getValue
254
+ * @return {Boolean}
255
+ */
256
+ getValue() {
257
+ const dataValue = this.id.readValue();
258
+ (0, node_opcua_assert_1.assert)(dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good);
259
+ (0, node_opcua_assert_1.assert)(dataValue.value.dataType === node_opcua_variant_2.DataType.Boolean);
260
+ return dataValue.value.value;
261
+ }
262
+ /**
263
+ * @method getValueAsString
264
+ * @return {string}
265
+ */
266
+ getValueAsString() {
267
+ var _a;
268
+ const dataValue = this.readValue();
269
+ (0, node_opcua_assert_1.assert)(dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good);
270
+ (0, node_opcua_assert_1.assert)(dataValue.value.dataType === node_opcua_variant_2.DataType.LocalizedText);
271
+ return ((_a = dataValue.value.value.text) === null || _a === void 0 ? void 0 : _a.toString()) || "";
272
+ }
273
+ getTrueState() {
274
+ return this.trueState ? this.trueState.readValue().value.value : (0, node_opcua_data_model_1.coerceLocalizedText)(this._trueState || "TRUE");
275
+ }
276
+ getFalseState() {
277
+ return this.falseState ? this.falseState.readValue().value.value : (0, node_opcua_data_model_1.coerceLocalizedText)(this._falseState || "FALSE");
278
+ }
279
+ // TODO : shall we care about overloading the remove_backward_reference method ?
280
+ // some TrueSubState and FalseSubState relationship may be added later
281
+ // so we need a mechanism to keep adding the "value_changed" event handle on subStates that
282
+ // will be defined later.
283
+ // install change detection on sub State
284
+ // this is useful to change the effective transitionTime
285
+ // EffectiveTransitionTime specifies the time when the current state or one of its sub states was entered.
286
+ // If, for example, a LevelAlarm is active and – while active – switches several times between High and
287
+ // HighHigh, then the TransitionTime stays at the point in time where the Alarm became active whereas the
288
+ // EffectiveTransitionTime changes with each shift of a sub state.
289
+ _add_backward_reference(reference) {
290
+ super._add_backward_reference(reference);
291
+ if (reference.isForward &&
292
+ ((0, node_opcua_nodeid_2.sameNodeId)(reference.referenceType, hasTrueSubState_ReferenceTypeNodeId) ||
293
+ (0, node_opcua_nodeid_2.sameNodeId)(reference.referenceType, hasFalseSubState_ReferenceTypeNodeId))) {
294
+ const addressSpace = this.addressSpace;
295
+ // add event handle
296
+ const subState = addressSpace.findNode(reference.nodeId);
297
+ subState.on("value_changed", _updateEffectiveTransitionTime.bind(null, this, subState));
298
+ }
299
+ }
300
+ }
301
+ exports.UATwoStateVariableImpl = UATwoStateVariableImpl;
302
+ function _addTwoStateVariable(namespace, options) {
303
+ const addressSpace = namespace.addressSpace;
304
+ const twoStateVariableType = addressSpace.findVariableType("TwoStateVariableType");
305
+ if (!twoStateVariableType) {
306
+ throw new Error("cannot find TwoStateVariableType");
307
+ }
308
+ options.optionals = options.optionals || [];
309
+ if (options.trueState) {
310
+ options.optionals.push("TrueState");
311
+ }
312
+ if (options.falseState) {
313
+ options.optionals.push("FalseState");
314
+ }
315
+ // we want event based changes...
316
+ options.minimumSamplingInterval = 0;
317
+ const node = twoStateVariableType.instantiate({
318
+ browseName: options.browseName,
319
+ nodeId: options.nodeId,
320
+ description: options.description,
321
+ componentOf: options.componentOf,
322
+ organizedBy: options.organizedBy,
323
+ modellingRule: options.modellingRule,
324
+ dataType: (0, node_opcua_nodeid_1.resolveNodeId)(node_opcua_variant_2.DataType.LocalizedText),
325
+ minimumSamplingInterval: options.minimumSamplingInterval,
326
+ optionals: options.optionals
327
+ });
328
+ const _node = _install_TwoStateVariable_machinery(node, options);
329
+ return _node;
330
+ }
331
+ exports._addTwoStateVariable = _addTwoStateVariable;
332
332
  //# sourceMappingURL=ua_two_state_variable.js.map