node-opcua-address-space 2.97.0 → 2.98.1

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 (342) 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 +91 -91
  4. package/dist/source/continuation_points/continuation_point_manager.js +200 -200
  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 +33 -33
  8. package/dist/source/helpers/argument_list.js +254 -254
  9. package/dist/source/helpers/call_helpers.d.ts +6 -6
  10. package/dist/source/helpers/call_helpers.js +71 -71
  11. package/dist/source/helpers/coerce_enum_value.d.ts +6 -6
  12. package/dist/source/helpers/coerce_enum_value.js +33 -33
  13. package/dist/source/helpers/dump_tools.d.ts +14 -14
  14. package/dist/source/helpers/dump_tools.js +78 -78
  15. package/dist/source/helpers/ensure_secure_access.d.ts +9 -9
  16. package/dist/source/helpers/ensure_secure_access.js +76 -76
  17. package/dist/source/helpers/make_optionals_map.d.ts +21 -21
  18. package/dist/source/helpers/make_optionals_map.js +29 -29
  19. package/dist/source/helpers/multiform_func.d.ts +11 -11
  20. package/dist/source/helpers/multiform_func.js +75 -75
  21. package/dist/source/helpers/resolve_opaque_on_address_space.d.ts +3 -3
  22. package/dist/source/helpers/resolve_opaque_on_address_space.js +36 -36
  23. package/dist/source/index.d.ts +61 -61
  24. package/dist/source/index.js +89 -89
  25. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.d.ts +19 -19
  26. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.js +2 -2
  27. package/dist/source/interfaces/alarms_and_conditions/condition_snapshot.d.ts +193 -193
  28. package/dist/source/interfaces/alarms_and_conditions/condition_snapshot.js +2 -2
  29. package/dist/source/interfaces/alarms_and_conditions/deviation_stuff.d.ts +12 -12
  30. package/dist/source/interfaces/alarms_and_conditions/deviation_stuff.js +2 -2
  31. package/dist/source/interfaces/alarms_and_conditions/install_setpoint_options.d.ts +10 -10
  32. package/dist/source/interfaces/alarms_and_conditions/install_setpoint_options.js +2 -2
  33. package/dist/source/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.d.ts +7 -7
  34. package/dist/source/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.js +2 -2
  35. package/dist/source/interfaces/alarms_and_conditions/instantiate_condition_options.d.ts +7 -7
  36. package/dist/source/interfaces/alarms_and_conditions/instantiate_condition_options.js +2 -2
  37. package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.d.ts +4 -4
  38. package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.js +2 -2
  39. package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.d.ts +4 -4
  40. package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.js +2 -2
  41. package/dist/source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.d.ts +9 -9
  42. package/dist/source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.js +2 -2
  43. package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.d.ts +4 -4
  44. package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.js +2 -2
  45. package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.d.ts +4 -4
  46. package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.js +2 -2
  47. package/dist/source/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.d.ts +20 -20
  48. package/dist/source/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.js +2 -2
  49. package/dist/source/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.d.ts +23 -23
  50. package/dist/source/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.js +2 -2
  51. package/dist/source/interfaces/alarms_and_conditions/ua_alarm_condition_ex.d.ts +32 -32
  52. package/dist/source/interfaces/alarms_and_conditions/ua_alarm_condition_ex.js +2 -2
  53. package/dist/source/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.d.ts +19 -19
  54. package/dist/source/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.js +2 -2
  55. package/dist/source/interfaces/alarms_and_conditions/ua_condition_ex.d.ts +45 -42
  56. package/dist/source/interfaces/alarms_and_conditions/ua_condition_ex.js +2 -2
  57. package/dist/source/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.d.ts +7 -7
  58. package/dist/source/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.js +25 -25
  59. package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.d.ts +5 -5
  60. package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.js +2 -2
  61. package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.d.ts +20 -20
  62. package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.js +2 -2
  63. package/dist/source/interfaces/alarms_and_conditions/ua_limit_alarm_ex.d.ts +26 -26
  64. package/dist/source/interfaces/alarms_and_conditions/ua_limit_alarm_ex.js +2 -2
  65. package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.d.ts +8 -8
  66. package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.js +2 -2
  67. package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.d.ts +10 -10
  68. package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.js +2 -2
  69. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.d.ts +21 -21
  70. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js +2 -2
  71. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +24 -24
  72. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js +2 -2
  73. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.d.ts +12 -12
  74. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js +2 -2
  75. package/dist/source/interfaces/data_access/ua_y_array_item_ex.d.ts +8 -8
  76. package/dist/source/interfaces/data_access/ua_y_array_item_ex.js +2 -2
  77. package/dist/source/interfaces/extension_object_constructor.d.ts +10 -10
  78. package/dist/source/interfaces/extension_object_constructor.js +2 -2
  79. package/dist/source/interfaces/nodeset_loader_options.d.ts +4 -4
  80. package/dist/source/interfaces/nodeset_loader_options.js +2 -2
  81. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +12 -12
  82. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +2 -2
  83. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.d.ts +49 -49
  84. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js +2 -2
  85. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.d.ts +11 -11
  86. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js +2 -2
  87. package/dist/source/interfaces/state_machine/ua_shelved_state_machine_ex.d.ts +30 -30
  88. package/dist/source/interfaces/state_machine/ua_shelved_state_machine_ex.js +2 -2
  89. package/dist/source/interfaces/state_machine/ua_state_machine_type.d.ts +234 -234
  90. package/dist/source/interfaces/state_machine/ua_state_machine_type.js +2 -2
  91. package/dist/source/interfaces/state_machine/ua_transition_ex.d.ts +6 -6
  92. package/dist/source/interfaces/state_machine/ua_transition_ex.js +2 -2
  93. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +8 -8
  94. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js +2 -2
  95. package/dist/source/loader/decode_xml_extension_object.d.ts +6 -6
  96. package/dist/source/loader/decode_xml_extension_object.js +71 -71
  97. package/dist/source/loader/ensure_datatype_extracted.d.ts +5 -5
  98. package/dist/source/loader/ensure_datatype_extracted.js +70 -70
  99. package/dist/source/loader/generateAddressSpaceRaw.d.ts +11 -11
  100. package/dist/source/loader/generateAddressSpaceRaw.js +45 -45
  101. package/dist/source/loader/load_nodeset2.d.ts +17 -17
  102. package/dist/source/loader/load_nodeset2.js +1483 -1483
  103. package/dist/source/loader/make_semver_compatible.d.ts +6 -6
  104. package/dist/source/loader/make_semver_compatible.js +25 -25
  105. package/dist/source/loader/make_xml_extension_object_parser.d.ts +28 -28
  106. package/dist/source/loader/make_xml_extension_object_parser.js +326 -326
  107. package/dist/source/loader/namespace_post_step.d.ts +10 -10
  108. package/dist/source/loader/namespace_post_step.js +61 -61
  109. package/dist/source/loader/register_node_promoter.d.ts +2 -2
  110. package/dist/source/loader/register_node_promoter.js +9 -9
  111. package/dist/source/namespace.d.ts +6 -6
  112. package/dist/source/namespace.js +2 -2
  113. package/dist/source/namespace_alarm_and_condition.d.ts +32 -32
  114. package/dist/source/namespace_alarm_and_condition.js +2 -2
  115. package/dist/source/namespace_data_access.d.ts +42 -42
  116. package/dist/source/namespace_data_access.js +2 -2
  117. package/dist/source/namespace_machine_state.d.ts +8 -8
  118. package/dist/source/namespace_machine_state.js +2 -2
  119. package/dist/source/pseudo_session.d.ts +72 -72
  120. package/dist/source/pseudo_session.js +254 -254
  121. package/dist/source/session_context.d.ts +111 -111
  122. package/dist/source/session_context.js +264 -264
  123. package/dist/source/session_context.js.map +1 -1
  124. package/dist/source/set_namespace_meta_data.d.ts +2 -2
  125. package/dist/source/set_namespace_meta_data.js +59 -59
  126. package/dist/source/ua_root_folder.d.ts +9 -9
  127. package/dist/source/ua_root_folder.js +2 -2
  128. package/dist/source/ua_two_state_variable_ex.d.ts +23 -23
  129. package/dist/source/ua_two_state_variable_ex.js +2 -2
  130. package/dist/source/xml_writer.d.ts +18 -18
  131. package/dist/source/xml_writer.js +2 -2
  132. package/dist/src/address_space.d.ts +387 -387
  133. package/dist/src/address_space.js +1385 -1385
  134. package/dist/src/address_space.js.map +1 -1
  135. package/dist/src/address_space_change_event_tools.d.ts +6 -6
  136. package/dist/src/address_space_change_event_tools.js +152 -152
  137. package/dist/src/address_space_private.d.ts +43 -43
  138. package/dist/src/address_space_private.js +2 -2
  139. package/dist/src/alarms_and_conditions/condition.d.ts +5 -5
  140. package/dist/src/alarms_and_conditions/condition.js +78 -78
  141. package/dist/src/alarms_and_conditions/condition_info_impl.d.ts +26 -26
  142. package/dist/src/alarms_and_conditions/condition_info_impl.js +54 -54
  143. package/dist/src/alarms_and_conditions/condition_snapshot_impl.d.ts +222 -222
  144. package/dist/src/alarms_and_conditions/condition_snapshot_impl.js +657 -657
  145. package/dist/src/alarms_and_conditions/condition_snapshot_impl.js.map +1 -1
  146. package/dist/src/alarms_and_conditions/deviation_alarm_helper.d.ts +9 -9
  147. package/dist/src/alarms_and_conditions/deviation_alarm_helper.js +60 -60
  148. package/dist/src/alarms_and_conditions/index.d.ts +16 -16
  149. package/dist/src/alarms_and_conditions/index.js +32 -32
  150. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +44 -44
  151. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +244 -244
  152. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.d.ts +93 -93
  153. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js +418 -418
  154. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js.map +1 -1
  155. package/dist/src/alarms_and_conditions/ua_base_event_impl.d.ts +26 -26
  156. package/dist/src/alarms_and_conditions/ua_base_event_impl.js +38 -38
  157. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +44 -44
  158. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +183 -183
  159. package/dist/src/alarms_and_conditions/ua_condition_impl.d.ts +155 -153
  160. package/dist/src/alarms_and_conditions/ua_condition_impl.js +1028 -1028
  161. package/dist/src/alarms_and_conditions/ua_condition_impl.js.map +1 -1
  162. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +14 -14
  163. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js +34 -34
  164. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +24 -24
  165. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +56 -56
  166. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +11 -11
  167. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +11 -11
  168. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +23 -23
  169. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +86 -86
  170. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +11 -11
  171. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +7 -7
  172. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.d.ts +79 -79
  173. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js +250 -250
  174. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +24 -24
  175. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +50 -50
  176. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +19 -19
  177. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +162 -162
  178. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +46 -46
  179. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js +165 -165
  180. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +18 -18
  181. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +17 -17
  182. package/dist/src/apply_condition_refresh.d.ts +6 -6
  183. package/dist/src/apply_condition_refresh.js +27 -27
  184. package/dist/src/base_node_impl.d.ts +284 -284
  185. package/dist/src/base_node_impl.js +1454 -1454
  186. package/dist/src/base_node_private.d.ts +81 -81
  187. package/dist/src/base_node_private.js +832 -803
  188. package/dist/src/base_node_private.js.map +1 -1
  189. package/dist/src/check_value_rank_compatibility.d.ts +15 -15
  190. package/dist/src/check_value_rank_compatibility.js +81 -81
  191. package/dist/src/data_access/add_dataItem_stuff.d.ts +11 -11
  192. package/dist/src/data_access/add_dataItem_stuff.js +61 -61
  193. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.d.ts +1 -1
  194. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js +34 -34
  195. package/dist/src/data_access/ua_multistate_discrete_impl.d.ts +32 -32
  196. package/dist/src/data_access/ua_multistate_discrete_impl.js +130 -130
  197. package/dist/src/data_access/ua_multistate_value_discrete_impl.d.ts +52 -52
  198. package/dist/src/data_access/ua_multistate_value_discrete_impl.js +253 -253
  199. package/dist/src/data_access/ua_two_state_discrete_impl.d.ts +25 -25
  200. package/dist/src/data_access/ua_two_state_discrete_impl.js +155 -155
  201. package/dist/src/event_data.d.ts +34 -34
  202. package/dist/src/event_data.js +64 -64
  203. package/dist/src/extension_object_array_node.d.ts +23 -23
  204. package/dist/src/extension_object_array_node.js +248 -248
  205. package/dist/src/historical_access/address_space_historical_data_node.d.ts +26 -26
  206. package/dist/src/historical_access/address_space_historical_data_node.js +652 -652
  207. package/dist/src/idx_iterator.d.ts +8 -8
  208. package/dist/src/idx_iterator.js +50 -50
  209. package/dist/src/index_current.d.ts +46 -46
  210. package/dist/src/index_current.js +77 -77
  211. package/dist/src/namespace_impl.d.ts +456 -456
  212. package/dist/src/namespace_impl.js +1762 -1762
  213. package/dist/src/namespace_impl.js.map +1 -1
  214. package/dist/src/namespace_private.d.ts +23 -23
  215. package/dist/src/namespace_private.js +32 -32
  216. package/dist/src/nodeid_manager.d.ts +37 -37
  217. package/dist/src/nodeid_manager.js +183 -183
  218. package/dist/src/nodeset_tools/adjust_namespace_array.d.ts +2 -2
  219. package/dist/src/nodeset_tools/adjust_namespace_array.js +13 -13
  220. package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +18 -18
  221. package/dist/src/nodeset_tools/construct_namespace_dependency.js +140 -140
  222. package/dist/src/nodeset_tools/dump_to_bsd.d.ts +2 -2
  223. package/dist/src/nodeset_tools/dump_to_bsd.js +164 -164
  224. package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +10 -10
  225. package/dist/src/nodeset_tools/nodeset_to_xml.js +1287 -1287
  226. package/dist/src/private_namespace.d.ts +5 -5
  227. package/dist/src/private_namespace.js +19 -19
  228. package/dist/src/reference_impl.d.ts +43 -43
  229. package/dist/src/reference_impl.js +139 -139
  230. package/dist/src/role_permissions.d.ts +2 -2
  231. package/dist/src/role_permissions.js +10 -10
  232. package/dist/src/state_machine/finite_state_machine.d.ts +81 -81
  233. package/dist/src/state_machine/finite_state_machine.js +388 -388
  234. package/dist/src/state_machine/ua_shelving_state_machine_ex.d.ts +38 -38
  235. package/dist/src/state_machine/ua_shelving_state_machine_ex.js +250 -250
  236. package/dist/src/state_machine/ua_two_state_variable.d.ts +61 -61
  237. package/dist/src/state_machine/ua_two_state_variable.js +331 -331
  238. package/dist/src/tool_isSubtypeOf.d.ts +18 -18
  239. package/dist/src/tool_isSubtypeOf.js +124 -124
  240. package/dist/src/ua_condition_type.d.ts +8 -8
  241. package/dist/src/ua_condition_type.js +2 -2
  242. package/dist/src/ua_data_type_impl.d.ts +89 -89
  243. package/dist/src/ua_data_type_impl.js +368 -368
  244. package/dist/src/ua_method_impl.d.ts +42 -42
  245. package/dist/src/ua_method_impl.js +217 -217
  246. package/dist/src/ua_object_impl.d.ts +35 -35
  247. package/dist/src/ua_object_impl.js +168 -168
  248. package/dist/src/ua_object_type_impl.d.ts +50 -50
  249. package/dist/src/ua_object_type_impl.js +126 -126
  250. package/dist/src/ua_reference_type_impl.d.ts +45 -45
  251. package/dist/src/ua_reference_type_impl.js +141 -141
  252. package/dist/src/ua_variable_impl.d.ts +380 -380
  253. package/dist/src/ua_variable_impl.js +1738 -1738
  254. package/dist/src/ua_variable_impl_ext_obj.d.ts +23 -23
  255. package/dist/src/ua_variable_impl_ext_obj.js +670 -670
  256. package/dist/src/ua_variable_type_impl.d.ts +74 -74
  257. package/dist/src/ua_variable_type_impl.js +597 -581
  258. package/dist/src/ua_variable_type_impl.js.map +1 -1
  259. package/dist/src/ua_view_impl.d.ts +19 -19
  260. package/dist/src/ua_view_impl.js +43 -43
  261. package/dist/tsconfig_common.tsbuildinfo +1 -0
  262. package/distHelpers/add_event_generator_object.d.ts +3 -3
  263. package/distHelpers/add_event_generator_object.js +64 -64
  264. package/distHelpers/alarms_and_conditions_demo.d.ts +9 -9
  265. package/distHelpers/alarms_and_conditions_demo.js +115 -115
  266. package/distHelpers/assertHasMatchingReference.d.ts +19 -19
  267. package/distHelpers/assertHasMatchingReference.js +40 -40
  268. package/distHelpers/boiler_system.d.ts +113 -113
  269. package/distHelpers/boiler_system.js +395 -395
  270. package/distHelpers/create_minimalist_address_space_nodeset.d.ts +5 -5
  271. package/distHelpers/create_minimalist_address_space_nodeset.js +171 -171
  272. package/distHelpers/date_utils.d.ts +3 -3
  273. package/distHelpers/date_utils.js +9 -9
  274. package/distHelpers/dump_statemachine.js +127 -127
  275. package/distHelpers/get_address_space_fixture.d.ts +1 -1
  276. package/distHelpers/get_address_space_fixture.js +30 -30
  277. package/distHelpers/get_mini_address_space.d.ts +7 -7
  278. package/distHelpers/get_mini_address_space.js +36 -36
  279. package/distHelpers/index.d.ts +12 -12
  280. package/distHelpers/index.js +28 -28
  281. package/distHelpers/mock_session.d.ts +10 -10
  282. package/distHelpers/mock_session.js +25 -25
  283. package/distNodeJS/generate_address_space.d.ts +6 -6
  284. package/distNodeJS/generate_address_space.js +52 -52
  285. package/distNodeJS/index.d.ts +1 -1
  286. package/distNodeJS/index.js +17 -17
  287. package/package.json +51 -40
  288. package/source/interfaces/alarms_and_conditions/ua_condition_ex.ts +4 -3
  289. package/src/alarms_and_conditions/ua_condition_impl.ts +14 -9
  290. package/src/base_node_private.ts +73 -28
  291. package/src/ua_variable_type_impl.ts +35 -17
  292. package/.mocharc.yml +0 -12
  293. package/dist/src/tool_isSupertypeOf.d.ts +0 -18
  294. package/dist/src/tool_isSupertypeOf.js +0 -125
  295. package/dist/src/tool_isSupertypeOf.js.map +0 -1
  296. package/generate.js +0 -1
  297. package/source_nodejs/generate_address_space.ts +0 -60
  298. package/source_nodejs/index.ts +0 -1
  299. package/test_helpers/add_event_generator_object.ts +0 -71
  300. package/test_helpers/alarms_and_conditions_demo.ts +0 -151
  301. package/test_helpers/assertHasMatchingReference.ts +0 -43
  302. package/test_helpers/boiler_system.ts +0 -610
  303. package/test_helpers/create_minimalist_address_space_nodeset.ts +0 -208
  304. package/test_helpers/date_utils.ts +0 -5
  305. package/test_helpers/dump_statemachine.ts +0 -155
  306. package/test_helpers/get_address_space_fixture.ts +0 -30
  307. package/test_helpers/get_mini_address_space.ts +0 -42
  308. package/test_helpers/index.ts +0 -12
  309. package/test_helpers/mock_session.ts +0 -34
  310. package/test_helpers/test_fixtures/dataType_in_separateNamespace.xml +0 -150
  311. package/test_helpers/test_fixtures/dataType_in_separateNamespace_basic.xml +0 -57
  312. package/test_helpers/test_fixtures/dataType_in_separateNamespace_mix.xml +0 -136
  313. package/test_helpers/test_fixtures/dataType_issue.xml +0 -80
  314. package/test_helpers/test_fixtures/dataType_withEnumeration.xml +0 -82
  315. package/test_helpers/test_fixtures/dataType_with_isOptionSet.xml +0 -194
  316. package/test_helpers/test_fixtures/dataType_with_qualifiedname.xml +0 -71
  317. package/test_helpers/test_fixtures/dataType_with_recursive_structure.xml +0 -155
  318. package/test_helpers/test_fixtures/dataType_with_structures.xml +0 -605
  319. package/test_helpers/test_fixtures/dataType_with_union.xml +0 -90
  320. package/test_helpers/test_fixtures/datatype_as_per_1.04.xml +0 -118
  321. package/test_helpers/test_fixtures/datatype_with_allow_subtype.xml +0 -104
  322. package/test_helpers/test_fixtures/eurange_issue.xml +0 -74
  323. package/test_helpers/test_fixtures/example_issue1096.xml +0 -267
  324. package/test_helpers/test_fixtures/fixture_empty_nodeset2.xml +0 -106
  325. package/test_helpers/test_fixtures/fixture_simple_statemachine_nodeset2.xml +0 -1305
  326. package/test_helpers/test_fixtures/fixuture_nodeset_objects_with_some_methods.xml +0 -370
  327. package/test_helpers/test_fixtures/issue_1132_variable_with_nodeid_value.xml +0 -68
  328. package/test_helpers/test_fixtures/issue_846.xml +0 -3172
  329. package/test_helpers/test_fixtures/issue_899_variable_with_nodeid_value.xml +0 -33
  330. package/test_helpers/test_fixtures/mini.Node.Set2.xml +0 -4736
  331. package/test_helpers/test_fixtures/mini.nodeset.withVariousVariables.xml +0 -196
  332. package/test_helpers/test_fixtures/minimalist_nodeset_with_models.xml +0 -8
  333. package/test_helpers/test_fixtures/minimalist_nodeset_with_models_more_complex.xml +0 -20
  334. package/test_helpers/test_fixtures/nodeset_no_aliases.xml +0 -30
  335. package/test_helpers/test_fixtures/nodeset_no_aliases_with_aliases.xml +0 -31
  336. package/test_helpers/test_fixtures/nodeset_with_analog_items.xml +0 -45
  337. package/test_helpers/test_fixtures/nodeset_with_guid.xml +0 -1442
  338. package/test_helpers/test_fixtures/nodeset_with_int64_values.xml +0 -31
  339. package/test_helpers/test_fixtures/nodeset_with_special_char.xml +0 -34
  340. package/test_helpers/test_fixtures/nodeset_with_utf8_special_characters.xml +0 -20
  341. package/test_helpers/test_fixtures/variable_with_value.xml +0 -143
  342. package/test_helpers/test_fixtures/variabletype_with_value.xml +0 -324
@@ -1,389 +1,389 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.promoteToStateMachineType = exports.UAStateMachineTypeImpl = exports.promoteToStateMachine = exports.UAStateMachineImpl = exports.getFiniteStateMachineTypeStateByName = exports.getFiniteStateMachineTypeTransitions = exports.getFiniteStateMachineTypeStates = 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 ua_object_type_impl_1 = require("../ua_object_type_impl");
19
- const doDebug = false;
20
- class UATransitionImpl {
21
- }
22
- exports.UATransitionImpl = UATransitionImpl;
23
- function getComponentOfType(typeDef, typedefinition) {
24
- const get = (typeDef) => typeDef.getComponents().filter((cc) => {
25
- const c = cc;
26
- if (c.nodeClass !== node_opcua_data_model_1.NodeClass.Object)
27
- return false;
28
- if (!c.typeDefinitionObj || c.typeDefinitionObj.nodeClass !== node_opcua_data_model_1.NodeClass.ObjectType) {
29
- return false;
30
- }
31
- return c.typeDefinitionObj.isSubtypeOf(typedefinition);
32
- });
33
- let components_parts = get(typeDef);
34
- while (components_parts.length === 0 && typeDef.subtypeOfObj) {
35
- // there is no element of that type available in the top level
36
- typeDef = typeDef.subtypeOfObj;
37
- components_parts = get(typeDef);
38
- }
39
- return components_parts;
40
- }
41
- const defaultPredicate = (transitions, fromState, toState) => {
42
- if (transitions.length === 0) {
43
- return null;
44
- }
45
- if (transitions.length === 1) {
46
- return transitions[0];
47
- }
48
- // tslint:disable-next-line: no-console
49
- console.log(" FromState = ", fromState.browseName.toString());
50
- // tslint:disable-next-line: no-console
51
- console.log(" ToState = ", toState.browseName.toString());
52
- for (const transition of transitions) {
53
- // tslint:disable-next-line: no-console
54
- console.log(" possible transition : ", transition.browseName.toString(), " ", transition.nodeId.toString());
55
- }
56
- // tslint:disable-next-line: no-console
57
- 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");
58
- // tslint:disable-next-line: no-console
59
- console.log("fromStateNode: ", fromState.toString());
60
- return transitions[0];
61
- };
62
- function getFiniteStateMachineTypeStates(uaFiniteStateMachineType) {
63
- const addressSpace = uaFiniteStateMachineType.addressSpace;
64
- const initialStateType = addressSpace.findObjectType("InitialStateType");
65
- // istanbul ignore next
66
- if (!initialStateType) {
67
- throw new Error("cannot find InitialStateType");
68
- }
69
- const stateType = addressSpace.findObjectType("StateType");
70
- // istanbul ignore next
71
- if (!stateType) {
72
- throw new Error("cannot find StateType");
73
- }
74
- (0, node_opcua_assert_1.assert)(initialStateType.isSubtypeOf(stateType));
75
- const comp = getComponentOfType(uaFiniteStateMachineType, stateType);
76
- return comp;
77
- }
78
- exports.getFiniteStateMachineTypeStates = getFiniteStateMachineTypeStates;
79
- function getFiniteStateMachineTypeTransitions(uaFiniteStateMachineType) {
80
- const addressSpace = uaFiniteStateMachineType.addressSpace;
81
- const transitionType = addressSpace.findObjectType("TransitionType");
82
- // istanbul ignore next
83
- if (!transitionType) {
84
- throw new Error("cannot find TransitionType");
85
- }
86
- const comp = getComponentOfType(uaFiniteStateMachineType, transitionType);
87
- return comp;
88
- }
89
- exports.getFiniteStateMachineTypeTransitions = getFiniteStateMachineTypeTransitions;
90
- function getFiniteStateMachineTypeStateByName(uaFiniteStateMachineType, stateName) {
91
- let states = getFiniteStateMachineTypeStates(uaFiniteStateMachineType);
92
- states = states.filter((s) => {
93
- return s.browseName.name === stateName;
94
- });
95
- (0, node_opcua_assert_1.assert)(states.length <= 1);
96
- return states.length === 1 ? states[0] : null;
97
- }
98
- exports.getFiniteStateMachineTypeStateByName = getFiniteStateMachineTypeStateByName;
99
- /*
100
- *
101
- * @class StateMachine
102
- * @constructor
103
- * @extends UAObject
104
- *
105
- *
106
- */
107
- class UAStateMachineImpl extends ua_object_impl_1.UAObjectImpl {
108
- getStates() {
109
- const typeDef = this.typeDefinitionObj;
110
- return getFiniteStateMachineTypeStates(typeDef);
111
- }
112
- get states() {
113
- return this.getStates();
114
- }
115
- /**
116
- * @method getStateByName
117
- * @param name the name of the state to get
118
- * @return the state with the given name
119
- */
120
- getStateByName(name) {
121
- return getFiniteStateMachineTypeStateByName(this.typeDefinitionObj, name);
122
- }
123
- getTransitions() {
124
- const typeDef = this.typeDefinitionObj;
125
- return getFiniteStateMachineTypeTransitions(typeDef);
126
- }
127
- get transitions() {
128
- return this.getTransitions();
129
- }
130
- /**
131
- * return the node InitialStateType
132
- * @property initialState
133
- */
134
- get initialState() {
135
- const addressSpace = this.addressSpace;
136
- const initialStateType = addressSpace.findObjectType("InitialStateType");
137
- const typeDef = this.typeDefinitionObj;
138
- const comp = getComponentOfType(typeDef, initialStateType);
139
- // istanbul ignore next
140
- if (comp.length > 1) {
141
- throw new Error(" More than 1 initial state in stateMachine");
142
- }
143
- return comp.length === 0 ? null : comp[0];
144
- }
145
- /**
146
- *
147
- * @param node
148
- * @private
149
- */
150
- _coerceNode(node) {
151
- if (node === null) {
152
- return null;
153
- }
154
- const addressSpace = this.addressSpace;
155
- if (node instanceof base_node_impl_1.BaseNodeImpl) {
156
- return node;
157
- }
158
- else if (node instanceof node_opcua_nodeid_1.NodeId) {
159
- return addressSpace.findNode(node);
160
- }
161
- else if (typeof node === "string") {
162
- return this.getStateByName(node);
163
- }
164
- return null;
165
- }
166
- /**
167
- * @method isValidTransition
168
- * @param toStateNode
169
- * @return {boolean}
170
- */
171
- isValidTransition(toStateNode, predicate) {
172
- // is it legal to go from state currentState to toStateNode;
173
- if (!this.currentStateNode) {
174
- return true;
175
- }
176
- const n = this.currentState.readValue();
177
- // to be executed there must be a transition from currentState to toState
178
- const transition = this.findTransitionNode(this.currentStateNode, toStateNode, predicate);
179
- if (!transition) {
180
- // istanbul ignore next
181
- if (doDebug) {
182
- // tslint:disable-next-line: no-console
183
- console.log(" No transition from ", this.currentStateNode.browseName.toString(), " to ", toStateNode.toString());
184
- }
185
- return false;
186
- }
187
- return true;
188
- }
189
- /**
190
- */
191
- findTransitionNode(fromStateNode, toStateNode, predicate) {
192
- const addressSpace = this.addressSpace;
193
- const _fromStateNode = this._coerceNode(fromStateNode);
194
- if (!_fromStateNode) {
195
- return null;
196
- }
197
- const _toStateNode = this._coerceNode(toStateNode);
198
- if (!_toStateNode) {
199
- return null;
200
- }
201
- if (_fromStateNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
202
- throw new Error("Internal Error");
203
- }
204
- if (_toStateNode && _toStateNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
205
- throw new Error("Internal Error");
206
- }
207
- const stateType = addressSpace.findObjectType("StateType");
208
- if (!stateType) {
209
- throw new Error("Cannot find StateType");
210
- }
211
- (0, node_opcua_assert_1.assert)(_fromStateNode.typeDefinitionObj.isSubtypeOf(stateType));
212
- (0, node_opcua_assert_1.assert)(_toStateNode.typeDefinitionObj.isSubtypeOf(stateType));
213
- let transitions = _fromStateNode.findReferencesAsObject("FromState", false);
214
- transitions = transitions.filter((transition) => {
215
- (0, node_opcua_assert_1.assert)(transition.toStateNode.nodeClass === node_opcua_data_model_1.NodeClass.Object);
216
- return transition.toStateNode === _toStateNode;
217
- });
218
- if (transitions.length === 0) {
219
- // cannot find a transition from fromState to toState
220
- return null;
221
- }
222
- // istanbul ignore next
223
- if (transitions.length > 1) {
224
- const selectedTransition = (predicate || defaultPredicate)(transitions, _fromStateNode, _toStateNode);
225
- return selectedTransition;
226
- }
227
- return transitions[0];
228
- }
229
- get currentStateNode() {
230
- return this._currentStateNode;
231
- }
232
- /**
233
- * @property currentStateNode
234
- * @type BaseNode
235
- */
236
- set currentStateNode(value) {
237
- this._currentStateNode = value;
238
- }
239
- /**
240
- */
241
- getCurrentState() {
242
- // xx this.currentState.readValue().value.value.text
243
- // xx this.shelvingState.currentStateNode.browseName.toString()
244
- if (!this.currentStateNode) {
245
- return null;
246
- }
247
- return this.currentStateNode.browseName.toString();
248
- }
249
- /**
250
- * @method setState
251
- */
252
- setState(toStateNode, predicate) {
253
- if (!toStateNode) {
254
- this.currentStateNode = null;
255
- this.currentState.setValueFromSource({ dataType: node_opcua_variant_1.DataType.LocalizedText, value: null }, node_opcua_status_code_1.StatusCodes.BadStateNotActive);
256
- return;
257
- }
258
- if (typeof toStateNode === "string") {
259
- const state = this.getStateByName(toStateNode);
260
- // istanbul ignore next
261
- if (!state) {
262
- throw new Error("Cannot find state with name " + toStateNode);
263
- }
264
- (0, node_opcua_assert_1.assert)(state.browseName.name.toString() === toStateNode);
265
- toStateNode = state;
266
- }
267
- const fromStateNode = this.currentStateNode;
268
- toStateNode = this._coerceNode(toStateNode);
269
- (0, node_opcua_assert_1.assert)(toStateNode.nodeClass === node_opcua_data_model_1.NodeClass.Object);
270
- this.currentState.setValueFromSource({
271
- dataType: node_opcua_variant_1.DataType.LocalizedText,
272
- value: (0, node_opcua_data_model_1.coerceLocalizedText)(toStateNode.browseName.toString())
273
- }, node_opcua_status_code_1.StatusCodes.Good);
274
- this.currentStateNode = toStateNode;
275
- const transitionNode = this.findTransitionNode(fromStateNode, toStateNode, predicate);
276
- if (transitionNode) {
277
- // xx console.log("transitionNode ",transitionNode.toString());
278
- // The inherited Property SourceNode shall be filled with the NodeId of the StateMachine instance where the
279
- // Transition occurs. If the Transition occurs in a SubStateMachine, then the NodeId of the SubStateMachine
280
- // has to be used. If the Transition occurs between a StateMachine and a SubStateMachine, then the NodeId of
281
- // the StateMachine has to be used, independent of the direction of the Transition.
282
- // Transition identifies the Transition that triggered the Event.
283
- // FromState identifies the State before the Transition.
284
- // ToState identifies the State after the Transition.
285
- this.raiseEvent("TransitionEventType", {
286
- // Base EventType
287
- // xx nodeId: this.nodeId,
288
- // TransitionEventType
289
- // TransitionVariableType
290
- transition: {
291
- dataType: "LocalizedText",
292
- value: transitionNode.displayName[0]
293
- },
294
- "transition.id": transitionNode.transitionNumber.readValue().value,
295
- fromState: {
296
- dataType: "LocalizedText",
297
- value: fromStateNode ? fromStateNode.displayName[0] : ""
298
- },
299
- "fromState.id": fromStateNode
300
- ? fromStateNode.stateNumber.readValue().value
301
- : {
302
- dataType: "Null"
303
- },
304
- toState: {
305
- dataType: "LocalizedText",
306
- value: toStateNode.displayName[0]
307
- },
308
- "toState.id": toStateNode.stateNumber.readValue().value
309
- });
310
- }
311
- else {
312
- if (fromStateNode && fromStateNode !== toStateNode) {
313
- // istanbul ignore next
314
- if (doDebug) {
315
- const f = fromStateNode.browseName.toString();
316
- const t = toStateNode.browseName.toString();
317
- // tslint:disable-next-line:no-console
318
- console.log(chalk.red("Warning"), " cannot raise event : transition " + f + " to " + t + " is missing");
319
- }
320
- }
321
- }
322
- // also update executable flags on methods
323
- for (const method of this.getMethods()) {
324
- method._notifyAttributeChange(node_opcua_data_model_2.AttributeIds.Executable);
325
- }
326
- }
327
- /**
328
- * @internal
329
- * @private
330
- */
331
- _post_initialize() {
332
- const addressSpace = this.addressSpace;
333
- const finiteStateMachineType = addressSpace.findObjectType("FiniteStateMachineType");
334
- if (!finiteStateMachineType) {
335
- throw new Error("cannot find FiniteStateMachineType");
336
- }
337
- // xx assert(this.typeDefinitionObj && !this.subtypeOfObj);
338
- // xx assert(!this.typeDefinitionObj || this.typeDefinitionObj.isSubtypeOf(finiteStateMachineType));
339
- // get current Status
340
- const d = this.currentState.readValue();
341
- if (d.statusCode.isNotGood()) {
342
- this.setState(null);
343
- }
344
- else {
345
- const txt = d.value && d.value.value ? (d.value.value.text ? d.value.value.text.toString() : d.value.value.toString()) : "";
346
- this.currentStateNode = this.getStateByName(txt);
347
- }
348
- }
349
- }
350
- exports.UAStateMachineImpl = UAStateMachineImpl;
351
- function promoteToStateMachine(node) {
352
- if (node instanceof UAStateMachineImpl) {
353
- return node; // already promoted
354
- }
355
- Object.setPrototypeOf(node, UAStateMachineImpl.prototype);
356
- (0, node_opcua_assert_1.assert)(node instanceof UAStateMachineImpl, "should now be a State Machine");
357
- const _node = node;
358
- _node._post_initialize();
359
- return _node;
360
- }
361
- exports.promoteToStateMachine = promoteToStateMachine;
362
- (0, register_node_promoter_1.registerNodePromoter)(node_opcua_constants_1.ObjectTypeIds.FiniteStateMachineType, promoteToStateMachine);
363
- class UAStateMachineTypeImpl extends ua_object_type_impl_1.UAObjectTypeImpl {
364
- getStateByName(name) {
365
- return getFiniteStateMachineTypeStateByName(this, name);
366
- }
367
- getStates() {
368
- return getFiniteStateMachineTypeStates(this);
369
- }
370
- getTransitions() {
371
- return getFiniteStateMachineTypeTransitions(this);
372
- }
373
- _post_initialize() {
374
- /** */
375
- }
376
- }
377
- exports.UAStateMachineTypeImpl = UAStateMachineTypeImpl;
378
- function promoteToStateMachineType(node) {
379
- if (node instanceof UAStateMachineTypeImpl) {
380
- return node; // already promoted
381
- }
382
- Object.setPrototypeOf(node, UAStateMachineTypeImpl.prototype);
383
- (0, node_opcua_assert_1.assert)(node instanceof UAStateMachineTypeImpl, "should now be a State Machine");
384
- const _node = node;
385
- _node._post_initialize();
386
- return _node;
387
- }
388
- exports.promoteToStateMachineType = promoteToStateMachineType;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promoteToStateMachineType = exports.UAStateMachineTypeImpl = exports.promoteToStateMachine = exports.UAStateMachineImpl = exports.getFiniteStateMachineTypeStateByName = exports.getFiniteStateMachineTypeTransitions = exports.getFiniteStateMachineTypeStates = 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 ua_object_type_impl_1 = require("../ua_object_type_impl");
19
+ const doDebug = false;
20
+ class UATransitionImpl {
21
+ }
22
+ exports.UATransitionImpl = UATransitionImpl;
23
+ function getComponentOfType(typeDef, typedefinition) {
24
+ const get = (typeDef) => typeDef.getComponents().filter((cc) => {
25
+ const c = cc;
26
+ if (c.nodeClass !== node_opcua_data_model_1.NodeClass.Object)
27
+ return false;
28
+ if (!c.typeDefinitionObj || c.typeDefinitionObj.nodeClass !== node_opcua_data_model_1.NodeClass.ObjectType) {
29
+ return false;
30
+ }
31
+ return c.typeDefinitionObj.isSubtypeOf(typedefinition);
32
+ });
33
+ let components_parts = get(typeDef);
34
+ while (components_parts.length === 0 && typeDef.subtypeOfObj) {
35
+ // there is no element of that type available in the top level
36
+ typeDef = typeDef.subtypeOfObj;
37
+ components_parts = get(typeDef);
38
+ }
39
+ return components_parts;
40
+ }
41
+ const defaultPredicate = (transitions, fromState, toState) => {
42
+ if (transitions.length === 0) {
43
+ return null;
44
+ }
45
+ if (transitions.length === 1) {
46
+ return transitions[0];
47
+ }
48
+ // tslint:disable-next-line: no-console
49
+ console.log(" FromState = ", fromState.browseName.toString());
50
+ // tslint:disable-next-line: no-console
51
+ console.log(" ToState = ", toState.browseName.toString());
52
+ for (const transition of transitions) {
53
+ // tslint:disable-next-line: no-console
54
+ console.log(" possible transition : ", transition.browseName.toString(), " ", transition.nodeId.toString());
55
+ }
56
+ // tslint:disable-next-line: no-console
57
+ 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");
58
+ // tslint:disable-next-line: no-console
59
+ console.log("fromStateNode: ", fromState.toString());
60
+ return transitions[0];
61
+ };
62
+ function getFiniteStateMachineTypeStates(uaFiniteStateMachineType) {
63
+ const addressSpace = uaFiniteStateMachineType.addressSpace;
64
+ const initialStateType = addressSpace.findObjectType("InitialStateType");
65
+ // istanbul ignore next
66
+ if (!initialStateType) {
67
+ throw new Error("cannot find InitialStateType");
68
+ }
69
+ const stateType = addressSpace.findObjectType("StateType");
70
+ // istanbul ignore next
71
+ if (!stateType) {
72
+ throw new Error("cannot find StateType");
73
+ }
74
+ (0, node_opcua_assert_1.assert)(initialStateType.isSubtypeOf(stateType));
75
+ const comp = getComponentOfType(uaFiniteStateMachineType, stateType);
76
+ return comp;
77
+ }
78
+ exports.getFiniteStateMachineTypeStates = getFiniteStateMachineTypeStates;
79
+ function getFiniteStateMachineTypeTransitions(uaFiniteStateMachineType) {
80
+ const addressSpace = uaFiniteStateMachineType.addressSpace;
81
+ const transitionType = addressSpace.findObjectType("TransitionType");
82
+ // istanbul ignore next
83
+ if (!transitionType) {
84
+ throw new Error("cannot find TransitionType");
85
+ }
86
+ const comp = getComponentOfType(uaFiniteStateMachineType, transitionType);
87
+ return comp;
88
+ }
89
+ exports.getFiniteStateMachineTypeTransitions = getFiniteStateMachineTypeTransitions;
90
+ function getFiniteStateMachineTypeStateByName(uaFiniteStateMachineType, stateName) {
91
+ let states = getFiniteStateMachineTypeStates(uaFiniteStateMachineType);
92
+ states = states.filter((s) => {
93
+ return s.browseName.name === stateName;
94
+ });
95
+ (0, node_opcua_assert_1.assert)(states.length <= 1);
96
+ return states.length === 1 ? states[0] : null;
97
+ }
98
+ exports.getFiniteStateMachineTypeStateByName = getFiniteStateMachineTypeStateByName;
99
+ /*
100
+ *
101
+ * @class StateMachine
102
+ * @constructor
103
+ * @extends UAObject
104
+ *
105
+ *
106
+ */
107
+ class UAStateMachineImpl extends ua_object_impl_1.UAObjectImpl {
108
+ getStates() {
109
+ const typeDef = this.typeDefinitionObj;
110
+ return getFiniteStateMachineTypeStates(typeDef);
111
+ }
112
+ get states() {
113
+ return this.getStates();
114
+ }
115
+ /**
116
+ * @method getStateByName
117
+ * @param name the name of the state to get
118
+ * @return the state with the given name
119
+ */
120
+ getStateByName(name) {
121
+ return getFiniteStateMachineTypeStateByName(this.typeDefinitionObj, name);
122
+ }
123
+ getTransitions() {
124
+ const typeDef = this.typeDefinitionObj;
125
+ return getFiniteStateMachineTypeTransitions(typeDef);
126
+ }
127
+ get transitions() {
128
+ return this.getTransitions();
129
+ }
130
+ /**
131
+ * return the node InitialStateType
132
+ * @property initialState
133
+ */
134
+ get initialState() {
135
+ const addressSpace = this.addressSpace;
136
+ const initialStateType = addressSpace.findObjectType("InitialStateType");
137
+ const typeDef = this.typeDefinitionObj;
138
+ const comp = getComponentOfType(typeDef, initialStateType);
139
+ // istanbul ignore next
140
+ if (comp.length > 1) {
141
+ throw new Error(" More than 1 initial state in stateMachine");
142
+ }
143
+ return comp.length === 0 ? null : comp[0];
144
+ }
145
+ /**
146
+ *
147
+ * @param node
148
+ * @private
149
+ */
150
+ _coerceNode(node) {
151
+ if (node === null) {
152
+ return null;
153
+ }
154
+ const addressSpace = this.addressSpace;
155
+ if (node instanceof base_node_impl_1.BaseNodeImpl) {
156
+ return node;
157
+ }
158
+ else if (node instanceof node_opcua_nodeid_1.NodeId) {
159
+ return addressSpace.findNode(node);
160
+ }
161
+ else if (typeof node === "string") {
162
+ return this.getStateByName(node);
163
+ }
164
+ return null;
165
+ }
166
+ /**
167
+ * @method isValidTransition
168
+ * @param toStateNode
169
+ * @return {boolean}
170
+ */
171
+ isValidTransition(toStateNode, predicate) {
172
+ // is it legal to go from state currentState to toStateNode;
173
+ if (!this.currentStateNode) {
174
+ return true;
175
+ }
176
+ const n = this.currentState.readValue();
177
+ // to be executed there must be a transition from currentState to toState
178
+ const transition = this.findTransitionNode(this.currentStateNode, toStateNode, predicate);
179
+ if (!transition) {
180
+ // istanbul ignore next
181
+ if (doDebug) {
182
+ // tslint:disable-next-line: no-console
183
+ console.log(" No transition from ", this.currentStateNode.browseName.toString(), " to ", toStateNode.toString());
184
+ }
185
+ return false;
186
+ }
187
+ return true;
188
+ }
189
+ /**
190
+ */
191
+ findTransitionNode(fromStateNode, toStateNode, predicate) {
192
+ const addressSpace = this.addressSpace;
193
+ const _fromStateNode = this._coerceNode(fromStateNode);
194
+ if (!_fromStateNode) {
195
+ return null;
196
+ }
197
+ const _toStateNode = this._coerceNode(toStateNode);
198
+ if (!_toStateNode) {
199
+ return null;
200
+ }
201
+ if (_fromStateNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
202
+ throw new Error("Internal Error");
203
+ }
204
+ if (_toStateNode && _toStateNode.nodeClass !== node_opcua_data_model_1.NodeClass.Object) {
205
+ throw new Error("Internal Error");
206
+ }
207
+ const stateType = addressSpace.findObjectType("StateType");
208
+ if (!stateType) {
209
+ throw new Error("Cannot find StateType");
210
+ }
211
+ (0, node_opcua_assert_1.assert)(_fromStateNode.typeDefinitionObj.isSubtypeOf(stateType));
212
+ (0, node_opcua_assert_1.assert)(_toStateNode.typeDefinitionObj.isSubtypeOf(stateType));
213
+ let transitions = _fromStateNode.findReferencesAsObject("FromState", false);
214
+ transitions = transitions.filter((transition) => {
215
+ (0, node_opcua_assert_1.assert)(transition.toStateNode.nodeClass === node_opcua_data_model_1.NodeClass.Object);
216
+ return transition.toStateNode === _toStateNode;
217
+ });
218
+ if (transitions.length === 0) {
219
+ // cannot find a transition from fromState to toState
220
+ return null;
221
+ }
222
+ // istanbul ignore next
223
+ if (transitions.length > 1) {
224
+ const selectedTransition = (predicate || defaultPredicate)(transitions, _fromStateNode, _toStateNode);
225
+ return selectedTransition;
226
+ }
227
+ return transitions[0];
228
+ }
229
+ get currentStateNode() {
230
+ return this._currentStateNode;
231
+ }
232
+ /**
233
+ * @property currentStateNode
234
+ * @type BaseNode
235
+ */
236
+ set currentStateNode(value) {
237
+ this._currentStateNode = value;
238
+ }
239
+ /**
240
+ */
241
+ getCurrentState() {
242
+ // xx this.currentState.readValue().value.value.text
243
+ // xx this.shelvingState.currentStateNode.browseName.toString()
244
+ if (!this.currentStateNode) {
245
+ return null;
246
+ }
247
+ return this.currentStateNode.browseName.toString();
248
+ }
249
+ /**
250
+ * @method setState
251
+ */
252
+ setState(toStateNode, predicate) {
253
+ if (!toStateNode) {
254
+ this.currentStateNode = null;
255
+ this.currentState.setValueFromSource({ dataType: node_opcua_variant_1.DataType.LocalizedText, value: null }, node_opcua_status_code_1.StatusCodes.BadStateNotActive);
256
+ return;
257
+ }
258
+ if (typeof toStateNode === "string") {
259
+ const state = this.getStateByName(toStateNode);
260
+ // istanbul ignore next
261
+ if (!state) {
262
+ throw new Error("Cannot find state with name " + toStateNode);
263
+ }
264
+ (0, node_opcua_assert_1.assert)(state.browseName.name.toString() === toStateNode);
265
+ toStateNode = state;
266
+ }
267
+ const fromStateNode = this.currentStateNode;
268
+ toStateNode = this._coerceNode(toStateNode);
269
+ (0, node_opcua_assert_1.assert)(toStateNode.nodeClass === node_opcua_data_model_1.NodeClass.Object);
270
+ this.currentState.setValueFromSource({
271
+ dataType: node_opcua_variant_1.DataType.LocalizedText,
272
+ value: (0, node_opcua_data_model_1.coerceLocalizedText)(toStateNode.browseName.toString())
273
+ }, node_opcua_status_code_1.StatusCodes.Good);
274
+ this.currentStateNode = toStateNode;
275
+ const transitionNode = this.findTransitionNode(fromStateNode, toStateNode, predicate);
276
+ if (transitionNode) {
277
+ // xx console.log("transitionNode ",transitionNode.toString());
278
+ // The inherited Property SourceNode shall be filled with the NodeId of the StateMachine instance where the
279
+ // Transition occurs. If the Transition occurs in a SubStateMachine, then the NodeId of the SubStateMachine
280
+ // has to be used. If the Transition occurs between a StateMachine and a SubStateMachine, then the NodeId of
281
+ // the StateMachine has to be used, independent of the direction of the Transition.
282
+ // Transition identifies the Transition that triggered the Event.
283
+ // FromState identifies the State before the Transition.
284
+ // ToState identifies the State after the Transition.
285
+ this.raiseEvent("TransitionEventType", {
286
+ // Base EventType
287
+ // xx nodeId: this.nodeId,
288
+ // TransitionEventType
289
+ // TransitionVariableType
290
+ transition: {
291
+ dataType: "LocalizedText",
292
+ value: transitionNode.displayName[0]
293
+ },
294
+ "transition.id": transitionNode.transitionNumber.readValue().value,
295
+ fromState: {
296
+ dataType: "LocalizedText",
297
+ value: fromStateNode ? fromStateNode.displayName[0] : ""
298
+ },
299
+ "fromState.id": fromStateNode
300
+ ? fromStateNode.stateNumber.readValue().value
301
+ : {
302
+ dataType: "Null"
303
+ },
304
+ toState: {
305
+ dataType: "LocalizedText",
306
+ value: toStateNode.displayName[0]
307
+ },
308
+ "toState.id": toStateNode.stateNumber.readValue().value
309
+ });
310
+ }
311
+ else {
312
+ if (fromStateNode && fromStateNode !== toStateNode) {
313
+ // istanbul ignore next
314
+ if (doDebug) {
315
+ const f = fromStateNode.browseName.toString();
316
+ const t = toStateNode.browseName.toString();
317
+ // tslint:disable-next-line:no-console
318
+ console.log(chalk.red("Warning"), " cannot raise event : transition " + f + " to " + t + " is missing");
319
+ }
320
+ }
321
+ }
322
+ // also update executable flags on methods
323
+ for (const method of this.getMethods()) {
324
+ method._notifyAttributeChange(node_opcua_data_model_2.AttributeIds.Executable);
325
+ }
326
+ }
327
+ /**
328
+ * @internal
329
+ * @private
330
+ */
331
+ _post_initialize() {
332
+ const addressSpace = this.addressSpace;
333
+ const finiteStateMachineType = addressSpace.findObjectType("FiniteStateMachineType");
334
+ if (!finiteStateMachineType) {
335
+ throw new Error("cannot find FiniteStateMachineType");
336
+ }
337
+ // xx assert(this.typeDefinitionObj && !this.subtypeOfObj);
338
+ // xx assert(!this.typeDefinitionObj || this.typeDefinitionObj.isSubtypeOf(finiteStateMachineType));
339
+ // get current Status
340
+ const d = this.currentState.readValue();
341
+ if (d.statusCode.isNotGood()) {
342
+ this.setState(null);
343
+ }
344
+ else {
345
+ const txt = d.value && d.value.value ? (d.value.value.text ? d.value.value.text.toString() : d.value.value.toString()) : "";
346
+ this.currentStateNode = this.getStateByName(txt);
347
+ }
348
+ }
349
+ }
350
+ exports.UAStateMachineImpl = UAStateMachineImpl;
351
+ function promoteToStateMachine(node) {
352
+ if (node instanceof UAStateMachineImpl) {
353
+ return node; // already promoted
354
+ }
355
+ Object.setPrototypeOf(node, UAStateMachineImpl.prototype);
356
+ (0, node_opcua_assert_1.assert)(node instanceof UAStateMachineImpl, "should now be a State Machine");
357
+ const _node = node;
358
+ _node._post_initialize();
359
+ return _node;
360
+ }
361
+ exports.promoteToStateMachine = promoteToStateMachine;
362
+ (0, register_node_promoter_1.registerNodePromoter)(node_opcua_constants_1.ObjectTypeIds.FiniteStateMachineType, promoteToStateMachine);
363
+ class UAStateMachineTypeImpl extends ua_object_type_impl_1.UAObjectTypeImpl {
364
+ getStateByName(name) {
365
+ return getFiniteStateMachineTypeStateByName(this, name);
366
+ }
367
+ getStates() {
368
+ return getFiniteStateMachineTypeStates(this);
369
+ }
370
+ getTransitions() {
371
+ return getFiniteStateMachineTypeTransitions(this);
372
+ }
373
+ _post_initialize() {
374
+ /** */
375
+ }
376
+ }
377
+ exports.UAStateMachineTypeImpl = UAStateMachineTypeImpl;
378
+ function promoteToStateMachineType(node) {
379
+ if (node instanceof UAStateMachineTypeImpl) {
380
+ return node; // already promoted
381
+ }
382
+ Object.setPrototypeOf(node, UAStateMachineTypeImpl.prototype);
383
+ (0, node_opcua_assert_1.assert)(node instanceof UAStateMachineTypeImpl, "should now be a State Machine");
384
+ const _node = node;
385
+ _node._post_initialize();
386
+ return _node;
387
+ }
388
+ exports.promoteToStateMachineType = promoteToStateMachineType;
389
389
  //# sourceMappingURL=finite_state_machine.js.map