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,354 +1,354 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.promoteToStateMachine = exports.UAStateMachineImpl = exports.UATransitionImpl = void 0;
4
- /**
5
- * @module node-opcua-address-space
6
- */
7
- const chalk = require("chalk");
8
- const node_opcua_assert_1 = require("node-opcua-assert");
9
- const node_opcua_constants_1 = require("node-opcua-constants");
10
- const node_opcua_data_model_1 = require("node-opcua-data-model");
11
- const node_opcua_data_model_2 = require("node-opcua-data-model");
12
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
13
- const node_opcua_status_code_1 = require("node-opcua-status-code");
14
- const node_opcua_variant_1 = require("node-opcua-variant");
15
- const register_node_promoter_1 = require("../../source/loader/register_node_promoter");
16
- const ua_object_impl_1 = require("../ua_object_impl");
17
- const base_node_impl_1 = require("../base_node_impl");
18
- const doDebug = false;
19
- class UATransitionImpl {
20
- }
21
- exports.UATransitionImpl = UATransitionImpl;
22
- function getComponentFromTypeAndSubtype(typeDef) {
23
- const components_parts = [];
24
- components_parts.push(typeDef.getComponents());
25
- while (typeDef.subtypeOfObj) {
26
- typeDef = typeDef.subtypeOfObj;
27
- components_parts.push(typeDef.getComponents());
28
- }
29
- return Array.prototype.concat.apply([], components_parts).filter((x) => x.nodeClass === node_opcua_data_model_1.NodeClass.Object);
30
- }
31
- const defaultPredicate = (transitions, fromState, toState) => {
32
- if (transitions.length === 0) {
33
- return null;
34
- }
35
- if (transitions.length === 1) {
36
- return transitions[0];
37
- }
38
- // tslint:disable-next-line: no-console
39
- console.log(" FromState = ", fromState.browseName.toString());
40
- // tslint:disable-next-line: no-console
41
- console.log(" ToState = ", toState.browseName.toString());
42
- for (const transition of transitions) {
43
- // tslint:disable-next-line: no-console
44
- console.log(" possible transition : ", transition.browseName.toString(), " ", transition.nodeId.toString());
45
- }
46
- // tslint:disable-next-line: no-console
47
- console.log("warning: a duplicated FromState Reference to the same target has been found.\nPlease check your model or provide a predicate method to select which one to use");
48
- // tslint:disable-next-line: no-console
49
- console.log("fromStateNode: ", fromState.toString());
50
- return transitions[0];
51
- };
52
- /*
53
- *
54
- * @class StateMachine
55
- * @constructor
56
- * @extends UAObject
57
- *
58
- *
59
- */
60
- class UAStateMachineImpl extends ua_object_impl_1.UAObjectImpl {
61
- getStates() {
62
- const addressSpace = this.addressSpace;
63
- const initialStateType = addressSpace.findObjectType("InitialStateType");
64
- // istanbul ignore next
65
- if (!initialStateType) {
66
- throw new Error("cannot find InitialStateType");
67
- }
68
- const stateType = addressSpace.findObjectType("StateType");
69
- // istanbul ignore next
70
- if (!stateType) {
71
- throw new Error("cannot find StateType");
72
- }
73
- (0, node_opcua_assert_1.assert)(initialStateType.isSupertypeOf(stateType));
74
- const typeDef = this.typeDefinitionObj;
75
- let comp = getComponentFromTypeAndSubtype(typeDef);
76
- comp = comp.filter((c) => {
77
- if (!c.typeDefinitionObj || c.typeDefinitionObj.nodeClass !== node_opcua_data_model_1.NodeClass.ObjectType) {
78
- return false;
79
- }
80
- return c.typeDefinitionObj.isSupertypeOf(stateType);
81
- });
82
- return comp;
83
- }
84
- get states() {
85
- return this.getStates();
86
- }
87
- /**
88
- * @method getStateByName
89
- * @param name the name of the state to get
90
- * @return the state with the given name
91
- */
92
- getStateByName(name) {
93
- let states = this.getStates();
94
- states = states.filter((s) => {
95
- return s.browseName.name === name;
96
- });
97
- (0, node_opcua_assert_1.assert)(states.length <= 1);
98
- return states.length === 1 ? states[0] : null;
99
- }
100
- getTransitions() {
101
- const addressSpace = this.addressSpace;
102
- const transitionType = addressSpace.findObjectType("TransitionType");
103
- // istanbul ignore next
104
- if (!transitionType) {
105
- throw new Error("cannot find TransitionType");
106
- }
107
- const typeDef = this.typeDefinitionObj;
108
- let comp = getComponentFromTypeAndSubtype(typeDef);
109
- comp = comp.filter((c) => {
110
- if (!c.typeDefinitionObj || c.typeDefinitionObj.nodeClass !== node_opcua_data_model_1.NodeClass.ObjectType) {
111
- return false;
112
- }
113
- return c.typeDefinitionObj.isSupertypeOf(transitionType);
114
- });
115
- return comp;
116
- }
117
- get transitions() {
118
- return this.getTransitions();
119
- }
120
- /**
121
- * return the node InitialStateType
122
- * @property initialState
123
- */
124
- get initialState() {
125
- const addressSpace = this.addressSpace;
126
- const initialStateType = addressSpace.findObjectType("InitialStateType");
127
- const typeDef = this.typeDefinitionObj;
128
- let comp = getComponentFromTypeAndSubtype(typeDef);
129
- comp = comp.filter((c) => c.typeDefinitionObj === initialStateType);
130
- // istanbul ignore next
131
- if (comp.length > 1) {
132
- throw new Error(" More than 1 initial state in stateMachine");
133
- }
134
- return comp.length === 0 ? null : comp[0];
135
- }
136
- /**
137
- *
138
- * @param node
139
- * @private
140
- */
141
- _coerceNode(node) {
142
- if (node === null) {
143
- return null;
144
- }
145
- const addressSpace = this.addressSpace;
146
- if (node instanceof base_node_impl_1.BaseNodeImpl) {
147
- return node;
148
- }
149
- else if (node instanceof node_opcua_nodeid_1.NodeId) {
150
- return addressSpace.findNode(node);
151
- }
152
- else if (typeof node === "string") {
153
- return this.getStateByName(node);
154
- }
155
- return null;
156
- }
157
- /**
158
- * @method isValidTransition
159
- * @param toStateNode
160
- * @return {boolean}
161
- */
162
- isValidTransition(toStateNode, predicate) {
163
- // is it legal to go from state currentState to toStateNode;
164
- if (!this.currentStateNode) {
165
- return true;
166
- }
167
- const n = this.currentState.readValue();
168
- // to be executed there must be a transition from currentState to toState
169
- const transition = this.findTransitionNode(this.currentStateNode, toStateNode, predicate);
170
- if (!transition) {
171
- // istanbul ignore next
172
- if (doDebug) {
173
- // tslint:disable-next-line: no-console
174
- console.log(" No transition from ", this.currentStateNode.browseName.toString(), " to ", toStateNode.toString());
175
- }
176
- return false;
177
- }
178
- return true;
179
- }
180
- /**
181
- */
182
- findTransitionNode(fromStateNode, toStateNode, predicate) {
183
- const addressSpace = this.addressSpace;
184
- const _fromStateNode = this._coerceNode(fromStateNode);
185
- if (!_fromStateNode) {
186
- return null;
187
- }
188
- const _toStateNode = this._coerceNode(toStateNode);
189
- if (!_toStateNode) {
190
- return null;
191
- }
192
- if (_fromStateNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
193
- throw new Error("Internal Error");
194
- }
195
- if (_toStateNode && _toStateNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
196
- throw new Error("Internal Error");
197
- }
198
- const stateType = addressSpace.findObjectType("StateType");
199
- if (!stateType) {
200
- throw new Error("Cannot find StateType");
201
- }
202
- (0, node_opcua_assert_1.assert)(_fromStateNode.typeDefinitionObj.isSupertypeOf(stateType));
203
- (0, node_opcua_assert_1.assert)(_toStateNode.typeDefinitionObj.isSupertypeOf(stateType));
204
- let transitions = _fromStateNode.findReferencesAsObject("FromState", false);
205
- transitions = transitions.filter((transition) => {
206
- (0, node_opcua_assert_1.assert)(transition.toStateNode.nodeClass === node_opcua_data_model_1.NodeClass.Object);
207
- return transition.toStateNode === _toStateNode;
208
- });
209
- if (transitions.length === 0) {
210
- // cannot find a transition from fromState to toState
211
- return null;
212
- }
213
- // istanbul ignore next
214
- if (transitions.length > 1) {
215
- const selectedTransition = (predicate || defaultPredicate)(transitions, _fromStateNode, _toStateNode);
216
- return selectedTransition;
217
- }
218
- return transitions[0];
219
- }
220
- get currentStateNode() {
221
- return this._currentStateNode;
222
- }
223
- /**
224
- * @property currentStateNode
225
- * @type BaseNode
226
- */
227
- set currentStateNode(value) {
228
- this._currentStateNode = value;
229
- }
230
- /**
231
- */
232
- getCurrentState() {
233
- // xx this.currentState.readValue().value.value.text
234
- // xx this.shelvingState.currentStateNode.browseName.toString()
235
- if (!this.currentStateNode) {
236
- return null;
237
- }
238
- return this.currentStateNode.browseName.toString();
239
- }
240
- /**
241
- * @method setState
242
- */
243
- setState(toStateNode, predicate) {
244
- if (!toStateNode) {
245
- this.currentStateNode = null;
246
- this.currentState.setValueFromSource({ dataType: node_opcua_variant_1.DataType.LocalizedText, value: null }, node_opcua_status_code_1.StatusCodes.BadStateNotActive);
247
- return;
248
- }
249
- if (typeof toStateNode === "string") {
250
- const state = this.getStateByName(toStateNode);
251
- // istanbul ignore next
252
- if (!state) {
253
- throw new Error("Cannot find state with name " + toStateNode);
254
- }
255
- (0, node_opcua_assert_1.assert)(state.browseName.name.toString() === toStateNode);
256
- toStateNode = state;
257
- }
258
- const fromStateNode = this.currentStateNode;
259
- toStateNode = this._coerceNode(toStateNode);
260
- (0, node_opcua_assert_1.assert)(toStateNode.nodeClass === node_opcua_data_model_1.NodeClass.Object);
261
- this.currentState.setValueFromSource({
262
- dataType: node_opcua_variant_1.DataType.LocalizedText,
263
- value: (0, node_opcua_data_model_1.coerceLocalizedText)(toStateNode.browseName.toString())
264
- }, node_opcua_status_code_1.StatusCodes.Good);
265
- this.currentStateNode = toStateNode;
266
- const transitionNode = this.findTransitionNode(fromStateNode, toStateNode, predicate);
267
- if (transitionNode) {
268
- // xx console.log("transitionNode ",transitionNode.toString());
269
- // The inherited Property SourceNode shall be filled with the NodeId of the StateMachine instance where the
270
- // Transition occurs. If the Transition occurs in a SubStateMachine, then the NodeId of the SubStateMachine
271
- // has to be used. If the Transition occurs between a StateMachine and a SubStateMachine, then the NodeId of
272
- // the StateMachine has to be used, independent of the direction of the Transition.
273
- // Transition identifies the Transition that triggered the Event.
274
- // FromState identifies the State before the Transition.
275
- // ToState identifies the State after the Transition.
276
- this.raiseEvent("TransitionEventType", {
277
- // Base EventType
278
- // xx nodeId: this.nodeId,
279
- // TransitionEventType
280
- // TransitionVariableType
281
- transition: {
282
- dataType: "LocalizedText",
283
- value: transitionNode.displayName[0]
284
- },
285
- "transition.id": transitionNode.transitionNumber.readValue().value,
286
- fromState: {
287
- dataType: "LocalizedText",
288
- value: fromStateNode ? fromStateNode.displayName[0] : ""
289
- },
290
- "fromState.id": fromStateNode
291
- ? fromStateNode.stateNumber.readValue().value
292
- : {
293
- dataType: "Null"
294
- },
295
- toState: {
296
- dataType: "LocalizedText",
297
- value: toStateNode.displayName[0]
298
- },
299
- "toState.id": toStateNode.stateNumber.readValue().value
300
- });
301
- }
302
- else {
303
- if (fromStateNode && fromStateNode !== toStateNode) {
304
- // istanbul ignore next
305
- if (doDebug) {
306
- const f = fromStateNode.browseName.toString();
307
- const t = toStateNode.browseName.toString();
308
- // tslint:disable-next-line:no-console
309
- console.log(chalk.red("Warning"), " cannot raise event : transition " + f + " to " + t + " is missing");
310
- }
311
- }
312
- }
313
- // also update executable flags on methods
314
- for (const method of this.getMethods()) {
315
- method._notifyAttributeChange(node_opcua_data_model_2.AttributeIds.Executable);
316
- }
317
- }
318
- /**
319
- * @internal
320
- * @private
321
- */
322
- _post_initialize() {
323
- const addressSpace = this.addressSpace;
324
- const finiteStateMachineType = addressSpace.findObjectType("FiniteStateMachineType");
325
- if (!finiteStateMachineType) {
326
- throw new Error("cannot find FiniteStateMachineType");
327
- }
328
- // xx assert(this.typeDefinitionObj && !this.subtypeOfObj);
329
- // xx assert(!this.typeDefinitionObj || this.typeDefinitionObj.isSupertypeOf(finiteStateMachineType));
330
- // get current Status
331
- const d = this.currentState.readValue();
332
- if (d.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
333
- this.setState(null);
334
- }
335
- else {
336
- const txt = d.value && d.value.value ? (d.value.value.text ? d.value.value.text.toString() : d.value.value.toString()) : "";
337
- this.currentStateNode = this.getStateByName(txt);
338
- }
339
- }
340
- }
341
- exports.UAStateMachineImpl = UAStateMachineImpl;
342
- function promoteToStateMachine(node) {
343
- if (node instanceof UAStateMachineImpl) {
344
- return node; // already promoted
345
- }
346
- Object.setPrototypeOf(node, UAStateMachineImpl.prototype);
347
- (0, node_opcua_assert_1.assert)(node instanceof UAStateMachineImpl, "should now be a State Machine");
348
- const _node = node;
349
- _node._post_initialize();
350
- return _node;
351
- }
352
- exports.promoteToStateMachine = promoteToStateMachine;
353
- (0, register_node_promoter_1.registerNodePromoter)(node_opcua_constants_1.ObjectTypeIds.FiniteStateMachineType, promoteToStateMachine);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promoteToStateMachine = exports.UAStateMachineImpl = exports.UATransitionImpl = void 0;
4
+ /**
5
+ * @module node-opcua-address-space
6
+ */
7
+ const chalk = require("chalk");
8
+ const node_opcua_assert_1 = require("node-opcua-assert");
9
+ const node_opcua_constants_1 = require("node-opcua-constants");
10
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
11
+ const node_opcua_data_model_2 = require("node-opcua-data-model");
12
+ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
13
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
14
+ const node_opcua_variant_1 = require("node-opcua-variant");
15
+ const register_node_promoter_1 = require("../../source/loader/register_node_promoter");
16
+ const ua_object_impl_1 = require("../ua_object_impl");
17
+ const base_node_impl_1 = require("../base_node_impl");
18
+ const doDebug = false;
19
+ class UATransitionImpl {
20
+ }
21
+ exports.UATransitionImpl = UATransitionImpl;
22
+ function getComponentFromTypeAndSubtype(typeDef) {
23
+ const components_parts = [];
24
+ components_parts.push(typeDef.getComponents());
25
+ while (typeDef.subtypeOfObj) {
26
+ typeDef = typeDef.subtypeOfObj;
27
+ components_parts.push(typeDef.getComponents());
28
+ }
29
+ return Array.prototype.concat.apply([], components_parts).filter((x) => x.nodeClass === node_opcua_data_model_1.NodeClass.Object);
30
+ }
31
+ const defaultPredicate = (transitions, fromState, toState) => {
32
+ if (transitions.length === 0) {
33
+ return null;
34
+ }
35
+ if (transitions.length === 1) {
36
+ return transitions[0];
37
+ }
38
+ // tslint:disable-next-line: no-console
39
+ console.log(" FromState = ", fromState.browseName.toString());
40
+ // tslint:disable-next-line: no-console
41
+ console.log(" ToState = ", toState.browseName.toString());
42
+ for (const transition of transitions) {
43
+ // tslint:disable-next-line: no-console
44
+ console.log(" possible transition : ", transition.browseName.toString(), " ", transition.nodeId.toString());
45
+ }
46
+ // tslint:disable-next-line: no-console
47
+ console.log("warning: a duplicated FromState Reference to the same target has been found.\nPlease check your model or provide a predicate method to select which one to use");
48
+ // tslint:disable-next-line: no-console
49
+ console.log("fromStateNode: ", fromState.toString());
50
+ return transitions[0];
51
+ };
52
+ /*
53
+ *
54
+ * @class StateMachine
55
+ * @constructor
56
+ * @extends UAObject
57
+ *
58
+ *
59
+ */
60
+ class UAStateMachineImpl extends ua_object_impl_1.UAObjectImpl {
61
+ getStates() {
62
+ const addressSpace = this.addressSpace;
63
+ const initialStateType = addressSpace.findObjectType("InitialStateType");
64
+ // istanbul ignore next
65
+ if (!initialStateType) {
66
+ throw new Error("cannot find InitialStateType");
67
+ }
68
+ const stateType = addressSpace.findObjectType("StateType");
69
+ // istanbul ignore next
70
+ if (!stateType) {
71
+ throw new Error("cannot find StateType");
72
+ }
73
+ (0, node_opcua_assert_1.assert)(initialStateType.isSupertypeOf(stateType));
74
+ const typeDef = this.typeDefinitionObj;
75
+ let comp = getComponentFromTypeAndSubtype(typeDef);
76
+ comp = comp.filter((c) => {
77
+ if (!c.typeDefinitionObj || c.typeDefinitionObj.nodeClass !== node_opcua_data_model_1.NodeClass.ObjectType) {
78
+ return false;
79
+ }
80
+ return c.typeDefinitionObj.isSupertypeOf(stateType);
81
+ });
82
+ return comp;
83
+ }
84
+ get states() {
85
+ return this.getStates();
86
+ }
87
+ /**
88
+ * @method getStateByName
89
+ * @param name the name of the state to get
90
+ * @return the state with the given name
91
+ */
92
+ getStateByName(name) {
93
+ let states = this.getStates();
94
+ states = states.filter((s) => {
95
+ return s.browseName.name === name;
96
+ });
97
+ (0, node_opcua_assert_1.assert)(states.length <= 1);
98
+ return states.length === 1 ? states[0] : null;
99
+ }
100
+ getTransitions() {
101
+ const addressSpace = this.addressSpace;
102
+ const transitionType = addressSpace.findObjectType("TransitionType");
103
+ // istanbul ignore next
104
+ if (!transitionType) {
105
+ throw new Error("cannot find TransitionType");
106
+ }
107
+ const typeDef = this.typeDefinitionObj;
108
+ let comp = getComponentFromTypeAndSubtype(typeDef);
109
+ comp = comp.filter((c) => {
110
+ if (!c.typeDefinitionObj || c.typeDefinitionObj.nodeClass !== node_opcua_data_model_1.NodeClass.ObjectType) {
111
+ return false;
112
+ }
113
+ return c.typeDefinitionObj.isSupertypeOf(transitionType);
114
+ });
115
+ return comp;
116
+ }
117
+ get transitions() {
118
+ return this.getTransitions();
119
+ }
120
+ /**
121
+ * return the node InitialStateType
122
+ * @property initialState
123
+ */
124
+ get initialState() {
125
+ const addressSpace = this.addressSpace;
126
+ const initialStateType = addressSpace.findObjectType("InitialStateType");
127
+ const typeDef = this.typeDefinitionObj;
128
+ let comp = getComponentFromTypeAndSubtype(typeDef);
129
+ comp = comp.filter((c) => c.typeDefinitionObj === initialStateType);
130
+ // istanbul ignore next
131
+ if (comp.length > 1) {
132
+ throw new Error(" More than 1 initial state in stateMachine");
133
+ }
134
+ return comp.length === 0 ? null : comp[0];
135
+ }
136
+ /**
137
+ *
138
+ * @param node
139
+ * @private
140
+ */
141
+ _coerceNode(node) {
142
+ if (node === null) {
143
+ return null;
144
+ }
145
+ const addressSpace = this.addressSpace;
146
+ if (node instanceof base_node_impl_1.BaseNodeImpl) {
147
+ return node;
148
+ }
149
+ else if (node instanceof node_opcua_nodeid_1.NodeId) {
150
+ return addressSpace.findNode(node);
151
+ }
152
+ else if (typeof node === "string") {
153
+ return this.getStateByName(node);
154
+ }
155
+ return null;
156
+ }
157
+ /**
158
+ * @method isValidTransition
159
+ * @param toStateNode
160
+ * @return {boolean}
161
+ */
162
+ isValidTransition(toStateNode, predicate) {
163
+ // is it legal to go from state currentState to toStateNode;
164
+ if (!this.currentStateNode) {
165
+ return true;
166
+ }
167
+ const n = this.currentState.readValue();
168
+ // to be executed there must be a transition from currentState to toState
169
+ const transition = this.findTransitionNode(this.currentStateNode, toStateNode, predicate);
170
+ if (!transition) {
171
+ // istanbul ignore next
172
+ if (doDebug) {
173
+ // tslint:disable-next-line: no-console
174
+ console.log(" No transition from ", this.currentStateNode.browseName.toString(), " to ", toStateNode.toString());
175
+ }
176
+ return false;
177
+ }
178
+ return true;
179
+ }
180
+ /**
181
+ */
182
+ findTransitionNode(fromStateNode, toStateNode, predicate) {
183
+ const addressSpace = this.addressSpace;
184
+ const _fromStateNode = this._coerceNode(fromStateNode);
185
+ if (!_fromStateNode) {
186
+ return null;
187
+ }
188
+ const _toStateNode = this._coerceNode(toStateNode);
189
+ if (!_toStateNode) {
190
+ return null;
191
+ }
192
+ if (_fromStateNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
193
+ throw new Error("Internal Error");
194
+ }
195
+ if (_toStateNode && _toStateNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
196
+ throw new Error("Internal Error");
197
+ }
198
+ const stateType = addressSpace.findObjectType("StateType");
199
+ if (!stateType) {
200
+ throw new Error("Cannot find StateType");
201
+ }
202
+ (0, node_opcua_assert_1.assert)(_fromStateNode.typeDefinitionObj.isSupertypeOf(stateType));
203
+ (0, node_opcua_assert_1.assert)(_toStateNode.typeDefinitionObj.isSupertypeOf(stateType));
204
+ let transitions = _fromStateNode.findReferencesAsObject("FromState", false);
205
+ transitions = transitions.filter((transition) => {
206
+ (0, node_opcua_assert_1.assert)(transition.toStateNode.nodeClass === node_opcua_data_model_1.NodeClass.Object);
207
+ return transition.toStateNode === _toStateNode;
208
+ });
209
+ if (transitions.length === 0) {
210
+ // cannot find a transition from fromState to toState
211
+ return null;
212
+ }
213
+ // istanbul ignore next
214
+ if (transitions.length > 1) {
215
+ const selectedTransition = (predicate || defaultPredicate)(transitions, _fromStateNode, _toStateNode);
216
+ return selectedTransition;
217
+ }
218
+ return transitions[0];
219
+ }
220
+ get currentStateNode() {
221
+ return this._currentStateNode;
222
+ }
223
+ /**
224
+ * @property currentStateNode
225
+ * @type BaseNode
226
+ */
227
+ set currentStateNode(value) {
228
+ this._currentStateNode = value;
229
+ }
230
+ /**
231
+ */
232
+ getCurrentState() {
233
+ // xx this.currentState.readValue().value.value.text
234
+ // xx this.shelvingState.currentStateNode.browseName.toString()
235
+ if (!this.currentStateNode) {
236
+ return null;
237
+ }
238
+ return this.currentStateNode.browseName.toString();
239
+ }
240
+ /**
241
+ * @method setState
242
+ */
243
+ setState(toStateNode, predicate) {
244
+ if (!toStateNode) {
245
+ this.currentStateNode = null;
246
+ this.currentState.setValueFromSource({ dataType: node_opcua_variant_1.DataType.LocalizedText, value: null }, node_opcua_status_code_1.StatusCodes.BadStateNotActive);
247
+ return;
248
+ }
249
+ if (typeof toStateNode === "string") {
250
+ const state = this.getStateByName(toStateNode);
251
+ // istanbul ignore next
252
+ if (!state) {
253
+ throw new Error("Cannot find state with name " + toStateNode);
254
+ }
255
+ (0, node_opcua_assert_1.assert)(state.browseName.name.toString() === toStateNode);
256
+ toStateNode = state;
257
+ }
258
+ const fromStateNode = this.currentStateNode;
259
+ toStateNode = this._coerceNode(toStateNode);
260
+ (0, node_opcua_assert_1.assert)(toStateNode.nodeClass === node_opcua_data_model_1.NodeClass.Object);
261
+ this.currentState.setValueFromSource({
262
+ dataType: node_opcua_variant_1.DataType.LocalizedText,
263
+ value: (0, node_opcua_data_model_1.coerceLocalizedText)(toStateNode.browseName.toString())
264
+ }, node_opcua_status_code_1.StatusCodes.Good);
265
+ this.currentStateNode = toStateNode;
266
+ const transitionNode = this.findTransitionNode(fromStateNode, toStateNode, predicate);
267
+ if (transitionNode) {
268
+ // xx console.log("transitionNode ",transitionNode.toString());
269
+ // The inherited Property SourceNode shall be filled with the NodeId of the StateMachine instance where the
270
+ // Transition occurs. If the Transition occurs in a SubStateMachine, then the NodeId of the SubStateMachine
271
+ // has to be used. If the Transition occurs between a StateMachine and a SubStateMachine, then the NodeId of
272
+ // the StateMachine has to be used, independent of the direction of the Transition.
273
+ // Transition identifies the Transition that triggered the Event.
274
+ // FromState identifies the State before the Transition.
275
+ // ToState identifies the State after the Transition.
276
+ this.raiseEvent("TransitionEventType", {
277
+ // Base EventType
278
+ // xx nodeId: this.nodeId,
279
+ // TransitionEventType
280
+ // TransitionVariableType
281
+ transition: {
282
+ dataType: "LocalizedText",
283
+ value: transitionNode.displayName[0]
284
+ },
285
+ "transition.id": transitionNode.transitionNumber.readValue().value,
286
+ fromState: {
287
+ dataType: "LocalizedText",
288
+ value: fromStateNode ? fromStateNode.displayName[0] : ""
289
+ },
290
+ "fromState.id": fromStateNode
291
+ ? fromStateNode.stateNumber.readValue().value
292
+ : {
293
+ dataType: "Null"
294
+ },
295
+ toState: {
296
+ dataType: "LocalizedText",
297
+ value: toStateNode.displayName[0]
298
+ },
299
+ "toState.id": toStateNode.stateNumber.readValue().value
300
+ });
301
+ }
302
+ else {
303
+ if (fromStateNode && fromStateNode !== toStateNode) {
304
+ // istanbul ignore next
305
+ if (doDebug) {
306
+ const f = fromStateNode.browseName.toString();
307
+ const t = toStateNode.browseName.toString();
308
+ // tslint:disable-next-line:no-console
309
+ console.log(chalk.red("Warning"), " cannot raise event : transition " + f + " to " + t + " is missing");
310
+ }
311
+ }
312
+ }
313
+ // also update executable flags on methods
314
+ for (const method of this.getMethods()) {
315
+ method._notifyAttributeChange(node_opcua_data_model_2.AttributeIds.Executable);
316
+ }
317
+ }
318
+ /**
319
+ * @internal
320
+ * @private
321
+ */
322
+ _post_initialize() {
323
+ const addressSpace = this.addressSpace;
324
+ const finiteStateMachineType = addressSpace.findObjectType("FiniteStateMachineType");
325
+ if (!finiteStateMachineType) {
326
+ throw new Error("cannot find FiniteStateMachineType");
327
+ }
328
+ // xx assert(this.typeDefinitionObj && !this.subtypeOfObj);
329
+ // xx assert(!this.typeDefinitionObj || this.typeDefinitionObj.isSupertypeOf(finiteStateMachineType));
330
+ // get current Status
331
+ const d = this.currentState.readValue();
332
+ if (d.statusCode !== node_opcua_status_code_1.StatusCodes.Good) {
333
+ this.setState(null);
334
+ }
335
+ else {
336
+ const txt = d.value && d.value.value ? (d.value.value.text ? d.value.value.text.toString() : d.value.value.toString()) : "";
337
+ this.currentStateNode = this.getStateByName(txt);
338
+ }
339
+ }
340
+ }
341
+ exports.UAStateMachineImpl = UAStateMachineImpl;
342
+ function promoteToStateMachine(node) {
343
+ if (node instanceof UAStateMachineImpl) {
344
+ return node; // already promoted
345
+ }
346
+ Object.setPrototypeOf(node, UAStateMachineImpl.prototype);
347
+ (0, node_opcua_assert_1.assert)(node instanceof UAStateMachineImpl, "should now be a State Machine");
348
+ const _node = node;
349
+ _node._post_initialize();
350
+ return _node;
351
+ }
352
+ exports.promoteToStateMachine = promoteToStateMachine;
353
+ (0, register_node_promoter_1.registerNodePromoter)(node_opcua_constants_1.ObjectTypeIds.FiniteStateMachineType, promoteToStateMachine);
354
354
  //# sourceMappingURL=finite_state_machine.js.map