node-opcua-address-space 2.51.0

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 (598) hide show
  1. package/.mocharc.yml +12 -0
  2. package/LICENSE +20 -0
  3. package/dist/source/address_space_ts.d.ts +122 -0
  4. package/dist/source/address_space_ts.js +18 -0
  5. package/dist/source/address_space_ts.js.map +1 -0
  6. package/dist/source/continuation_points/continuation_point_manager.d.ts +21 -0
  7. package/dist/source/continuation_points/continuation_point_manager.js +100 -0
  8. package/dist/source/continuation_points/continuation_point_manager.js.map +1 -0
  9. package/dist/source/helpers/adjust_browse_direction.d.ts +5 -0
  10. package/dist/source/helpers/adjust_browse_direction.js +12 -0
  11. package/dist/source/helpers/adjust_browse_direction.js.map +1 -0
  12. package/dist/source/helpers/argument_list.d.ts +30 -0
  13. package/dist/source/helpers/argument_list.js +237 -0
  14. package/dist/source/helpers/argument_list.js.map +1 -0
  15. package/dist/source/helpers/call_helpers.d.ts +6 -0
  16. package/dist/source/helpers/call_helpers.js +71 -0
  17. package/dist/source/helpers/call_helpers.js.map +1 -0
  18. package/dist/source/helpers/check_event_clause.d.ts +17 -0
  19. package/dist/source/helpers/check_event_clause.js +53 -0
  20. package/dist/source/helpers/check_event_clause.js.map +1 -0
  21. package/dist/source/helpers/coerce_enum_value.d.ts +6 -0
  22. package/dist/source/helpers/coerce_enum_value.js +34 -0
  23. package/dist/source/helpers/coerce_enum_value.js.map +1 -0
  24. package/dist/source/helpers/dump_tools.d.ts +14 -0
  25. package/dist/source/helpers/dump_tools.js +79 -0
  26. package/dist/source/helpers/dump_tools.js.map +1 -0
  27. package/dist/source/helpers/ensure_secure_access.d.ts +9 -0
  28. package/dist/source/helpers/ensure_secure_access.js +90 -0
  29. package/dist/source/helpers/ensure_secure_access.js.map +1 -0
  30. package/dist/source/helpers/make_optionals_map.d.ts +21 -0
  31. package/dist/source/helpers/make_optionals_map.js +30 -0
  32. package/dist/source/helpers/make_optionals_map.js.map +1 -0
  33. package/dist/source/helpers/resolve_opaque_on_address_space.d.ts +3 -0
  34. package/dist/source/helpers/resolve_opaque_on_address_space.js +37 -0
  35. package/dist/source/helpers/resolve_opaque_on_address_space.js.map +1 -0
  36. package/dist/source/index.d.ts +39 -0
  37. package/dist/source/index.js +62 -0
  38. package/dist/source/index.js.map +1 -0
  39. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.d.ts +12 -0
  40. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.js +3 -0
  41. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.js.map +1 -0
  42. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.d.ts +1 -0
  43. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.js +3 -0
  44. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.js.map +1 -0
  45. package/dist/source/interfaces/data_access/ua_discrete_item.d.ts +4 -0
  46. package/dist/source/interfaces/data_access/ua_discrete_item.js +3 -0
  47. package/dist/source/interfaces/data_access/ua_discrete_item.js.map +1 -0
  48. package/dist/source/interfaces/data_access/ua_multistate_discrete.d.ts +25 -0
  49. package/dist/source/interfaces/data_access/ua_multistate_discrete.js +3 -0
  50. package/dist/source/interfaces/data_access/ua_multistate_discrete.js.map +1 -0
  51. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.d.ts +21 -0
  52. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js +3 -0
  53. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js.map +1 -0
  54. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.d.ts +27 -0
  55. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.js +3 -0
  56. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.js.map +1 -0
  57. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +24 -0
  58. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js +3 -0
  59. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js.map +1 -0
  60. package/dist/source/interfaces/data_access/ua_two_state_discrete.d.ts +17 -0
  61. package/dist/source/interfaces/data_access/ua_two_state_discrete.js +3 -0
  62. package/dist/source/interfaces/data_access/ua_two_state_discrete.js.map +1 -0
  63. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.d.ts +12 -0
  64. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js +3 -0
  65. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js.map +1 -0
  66. package/dist/source/interfaces/data_access/ua_y_array_item.d.ts +4 -0
  67. package/dist/source/interfaces/data_access/ua_y_array_item.js +3 -0
  68. package/dist/source/interfaces/data_access/ua_y_array_item.js.map +1 -0
  69. package/dist/source/interfaces/data_access/ua_y_array_item_ex.d.ts +8 -0
  70. package/dist/source/interfaces/data_access/ua_y_array_item_ex.js +3 -0
  71. package/dist/source/interfaces/data_access/ua_y_array_item_ex.js.map +1 -0
  72. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.d.ts +11 -0
  73. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.js +3 -0
  74. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.js.map +1 -0
  75. package/dist/source/interfaces/state_machine/finite_state_machine.d.ts +69 -0
  76. package/dist/source/interfaces/state_machine/finite_state_machine.js +3 -0
  77. package/dist/source/interfaces/state_machine/finite_state_machine.js.map +1 -0
  78. package/dist/source/interfaces/state_machine/program_finite_state_machine.d.ts +74 -0
  79. package/dist/source/interfaces/state_machine/program_finite_state_machine.js +3 -0
  80. package/dist/source/interfaces/state_machine/program_finite_state_machine.js.map +1 -0
  81. package/dist/source/interfaces/state_machine/state_machine.d.ts +342 -0
  82. package/dist/source/interfaces/state_machine/state_machine.js +3 -0
  83. package/dist/source/interfaces/state_machine/state_machine.js.map +1 -0
  84. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +12 -0
  85. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +3 -0
  86. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js.map +1 -0
  87. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.d.ts +49 -0
  88. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js +3 -0
  89. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js.map +1 -0
  90. package/dist/source/interfaces/state_machine/ua_finite_state_variable.d.ts +18 -0
  91. package/dist/source/interfaces/state_machine/ua_finite_state_variable.js +3 -0
  92. package/dist/source/interfaces/state_machine/ua_finite_state_variable.js.map +1 -0
  93. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.d.ts +11 -0
  94. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js +3 -0
  95. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js.map +1 -0
  96. package/dist/source/interfaces/state_machine/ua_state_machine_type.d.ts +222 -0
  97. package/dist/source/interfaces/state_machine/ua_state_machine_type.js +3 -0
  98. package/dist/source/interfaces/state_machine/ua_state_machine_type.js.map +1 -0
  99. package/dist/source/interfaces/state_machine/ua_state_variable.d.ts +29 -0
  100. package/dist/source/interfaces/state_machine/ua_state_variable.js +3 -0
  101. package/dist/source/interfaces/state_machine/ua_state_variable.js.map +1 -0
  102. package/dist/source/interfaces/state_machine/ua_transition_ex.d.ts +6 -0
  103. package/dist/source/interfaces/state_machine/ua_transition_ex.js +3 -0
  104. package/dist/source/interfaces/state_machine/ua_transition_ex.js.map +1 -0
  105. package/dist/source/interfaces/state_machine/ua_two_state_variable.d.ts +26 -0
  106. package/dist/source/interfaces/state_machine/ua_two_state_variable.js +3 -0
  107. package/dist/source/interfaces/state_machine/ua_two_state_variable.js.map +1 -0
  108. package/dist/source/interfaces/subscription_diagnostics_variable.d.ts +41 -0
  109. package/dist/source/interfaces/subscription_diagnostics_variable.js +3 -0
  110. package/dist/source/interfaces/subscription_diagnostics_variable.js.map +1 -0
  111. package/dist/source/interfaces/ua_authorisation_service.d.ts +1 -0
  112. package/dist/source/interfaces/ua_authorisation_service.js +3 -0
  113. package/dist/source/interfaces/ua_authorisation_service.js.map +1 -0
  114. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +8 -0
  115. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js +3 -0
  116. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js.map +1 -0
  117. package/dist/source/loader/generateAddressSpaceRaw.d.ts +10 -0
  118. package/dist/source/loader/generateAddressSpaceRaw.js +59 -0
  119. package/dist/source/loader/generateAddressSpaceRaw.js.map +1 -0
  120. package/dist/source/loader/load_nodeset2.d.ts +13 -0
  121. package/dist/source/loader/load_nodeset2.js +1392 -0
  122. package/dist/source/loader/load_nodeset2.js.map +1 -0
  123. package/dist/source/loader/namespace_post_step.d.ts +6 -0
  124. package/dist/source/loader/namespace_post_step.js +48 -0
  125. package/dist/source/loader/namespace_post_step.js.map +1 -0
  126. package/dist/source/loader/register_node_promoter.d.ts +3 -0
  127. package/dist/source/loader/register_node_promoter.js +10 -0
  128. package/dist/source/loader/register_node_promoter.js.map +1 -0
  129. package/dist/source/namespace.d.ts +6 -0
  130. package/dist/source/namespace.js +3 -0
  131. package/dist/source/namespace.js.map +1 -0
  132. package/dist/source/namespace_alarm_and_condition.d.ts +24 -0
  133. package/dist/source/namespace_alarm_and_condition.js +3 -0
  134. package/dist/source/namespace_alarm_and_condition.js.map +1 -0
  135. package/dist/source/namespace_data_access.d.ts +42 -0
  136. package/dist/source/namespace_data_access.js +3 -0
  137. package/dist/source/namespace_data_access.js.map +1 -0
  138. package/dist/source/namespace_machine_state.d.ts +7 -0
  139. package/dist/source/namespace_machine_state.js +3 -0
  140. package/dist/source/namespace_machine_state.js.map +1 -0
  141. package/dist/source/pseudo_session.d.ts +55 -0
  142. package/dist/source/pseudo_session.js +205 -0
  143. package/dist/source/pseudo_session.js.map +1 -0
  144. package/dist/source/session_context.d.ts +111 -0
  145. package/dist/source/session_context.js +266 -0
  146. package/dist/source/session_context.js.map +1 -0
  147. package/dist/source/set_namespace_meta_data.d.ts +2 -0
  148. package/dist/source/set_namespace_meta_data.js +60 -0
  149. package/dist/source/set_namespace_meta_data.js.map +1 -0
  150. package/dist/source/ua_namespace_meta_data_type.d.ts +71 -0
  151. package/dist/source/ua_namespace_meta_data_type.js +3 -0
  152. package/dist/source/ua_namespace_meta_data_type.js.map +1 -0
  153. package/dist/source/ua_root_folder.d.ts +9 -0
  154. package/dist/source/ua_root_folder.js +3 -0
  155. package/dist/source/ua_root_folder.js.map +1 -0
  156. package/dist/source/ua_two_state_variable_ex.d.ts +23 -0
  157. package/dist/source/ua_two_state_variable_ex.js +3 -0
  158. package/dist/source/ua_two_state_variable_ex.js.map +1 -0
  159. package/dist/source/xml_writer.d.ts +9 -0
  160. package/dist/source/xml_writer.js +3 -0
  161. package/dist/source/xml_writer.js.map +1 -0
  162. package/dist/src/address_space.d.ts +393 -0
  163. package/dist/src/address_space.js +1375 -0
  164. package/dist/src/address_space.js.map +1 -0
  165. package/dist/src/address_space_change_event_tools.d.ts +6 -0
  166. package/dist/src/address_space_change_event_tools.js +150 -0
  167. package/dist/src/address_space_change_event_tools.js.map +1 -0
  168. package/dist/src/address_space_private.d.ts +44 -0
  169. package/dist/src/address_space_private.js +3 -0
  170. package/dist/src/address_space_private.js.map +1 -0
  171. package/dist/src/alarms_and_conditions/base_event_type.d.ts +26 -0
  172. package/dist/src/alarms_and_conditions/base_event_type.js +41 -0
  173. package/dist/src/alarms_and_conditions/base_event_type.js.map +1 -0
  174. package/dist/src/alarms_and_conditions/check_where_clause.d.ts +4 -0
  175. package/dist/src/alarms_and_conditions/check_where_clause.js +110 -0
  176. package/dist/src/alarms_and_conditions/check_where_clause.js.map +1 -0
  177. package/dist/src/alarms_and_conditions/condition.d.ts +5 -0
  178. package/dist/src/alarms_and_conditions/condition.js +81 -0
  179. package/dist/src/alarms_and_conditions/condition.js.map +1 -0
  180. package/dist/src/alarms_and_conditions/condition_info.d.ts +27 -0
  181. package/dist/src/alarms_and_conditions/condition_info.js +55 -0
  182. package/dist/src/alarms_and_conditions/condition_info.js.map +1 -0
  183. package/dist/src/alarms_and_conditions/condition_snapshot.d.ts +232 -0
  184. package/dist/src/alarms_and_conditions/condition_snapshot.js +667 -0
  185. package/dist/src/alarms_and_conditions/condition_snapshot.js.map +1 -0
  186. package/dist/src/alarms_and_conditions/deviation_alarm_helper.d.ts +21 -0
  187. package/dist/src/alarms_and_conditions/deviation_alarm_helper.js +47 -0
  188. package/dist/src/alarms_and_conditions/deviation_alarm_helper.js.map +1 -0
  189. package/dist/src/alarms_and_conditions/extract_event_fields.d.ts +10 -0
  190. package/dist/src/alarms_and_conditions/extract_event_fields.js +90 -0
  191. package/dist/src/alarms_and_conditions/extract_event_fields.js.map +1 -0
  192. package/dist/src/alarms_and_conditions/index.d.ts +18 -0
  193. package/dist/src/alarms_and_conditions/index.js +31 -0
  194. package/dist/src/alarms_and_conditions/index.js.map +1 -0
  195. package/dist/src/alarms_and_conditions/shelving_state_machine.d.ts +22 -0
  196. package/dist/src/alarms_and_conditions/shelving_state_machine.js +241 -0
  197. package/dist/src/alarms_and_conditions/shelving_state_machine.js.map +1 -0
  198. package/dist/src/alarms_and_conditions/trip_alarm.d.ts +16 -0
  199. package/dist/src/alarms_and_conditions/trip_alarm.js +21 -0
  200. package/dist/src/alarms_and_conditions/trip_alarm.js.map +1 -0
  201. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.d.ts +54 -0
  202. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.js +255 -0
  203. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.js.map +1 -0
  204. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +62 -0
  205. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +244 -0
  206. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js.map +1 -0
  207. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.d.ts +138 -0
  208. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.js +460 -0
  209. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.js.map +1 -0
  210. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.d.ts +118 -0
  211. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js +417 -0
  212. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js.map +1 -0
  213. package/dist/src/alarms_and_conditions/ua_base_event_impl.d.ts +29 -0
  214. package/dist/src/alarms_and_conditions/ua_base_event_impl.js +39 -0
  215. package/dist/src/alarms_and_conditions/ua_base_event_impl.js.map +1 -0
  216. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.d.ts +35 -0
  217. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.js +32 -0
  218. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.js.map +1 -0
  219. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +21 -0
  220. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +26 -0
  221. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js.map +1 -0
  222. package/dist/src/alarms_and_conditions/ua_condition_base.d.ts +191 -0
  223. package/dist/src/alarms_and_conditions/ua_condition_base.js +1029 -0
  224. package/dist/src/alarms_and_conditions/ua_condition_base.js.map +1 -0
  225. package/dist/src/alarms_and_conditions/ua_condition_impl.d.ts +182 -0
  226. package/dist/src/alarms_and_conditions/ua_condition_impl.js +1021 -0
  227. package/dist/src/alarms_and_conditions/ua_condition_impl.js.map +1 -0
  228. package/dist/src/alarms_and_conditions/ua_discrete_alarm.d.ts +11 -0
  229. package/dist/src/alarms_and_conditions/ua_discrete_alarm.js +58 -0
  230. package/dist/src/alarms_and_conditions/ua_discrete_alarm.js.map +1 -0
  231. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +17 -0
  232. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js +58 -0
  233. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js.map +1 -0
  234. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.d.ts +24 -0
  235. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.js +59 -0
  236. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.js.map +1 -0
  237. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +27 -0
  238. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +57 -0
  239. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js.map +1 -0
  240. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.d.ts +14 -0
  241. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.js +17 -0
  242. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.js.map +1 -0
  243. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +9 -0
  244. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +12 -0
  245. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js.map +1 -0
  246. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.d.ts +22 -0
  247. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.js +87 -0
  248. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.js.map +1 -0
  249. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +38 -0
  250. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +87 -0
  251. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js.map +1 -0
  252. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.d.ts +6 -0
  253. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.js +11 -0
  254. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.js.map +1 -0
  255. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +10 -0
  256. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +8 -0
  257. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js.map +1 -0
  258. package/dist/src/alarms_and_conditions/ua_limit_alarm.d.ts +76 -0
  259. package/dist/src/alarms_and_conditions/ua_limit_alarm.js +237 -0
  260. package/dist/src/alarms_and_conditions/ua_limit_alarm.js.map +1 -0
  261. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.d.ts +98 -0
  262. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js +233 -0
  263. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js.map +1 -0
  264. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.d.ts +27 -0
  265. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.js +62 -0
  266. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.js.map +1 -0
  267. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +28 -0
  268. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +51 -0
  269. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js.map +1 -0
  270. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.d.ts +49 -0
  271. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.js +176 -0
  272. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.js.map +1 -0
  273. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +25 -0
  274. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +163 -0
  275. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js.map +1 -0
  276. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.d.ts +47 -0
  277. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.js +151 -0
  278. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.js.map +1 -0
  279. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +39 -0
  280. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js +136 -0
  281. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js.map +1 -0
  282. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.d.ts +16 -0
  283. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.js +18 -0
  284. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.js.map +1 -0
  285. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +16 -0
  286. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +18 -0
  287. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js.map +1 -0
  288. package/dist/src/apply_condition_refresh.d.ts +6 -0
  289. package/dist/src/apply_condition_refresh.js +28 -0
  290. package/dist/src/apply_condition_refresh.js.map +1 -0
  291. package/dist/src/base_node.d.ts +279 -0
  292. package/dist/src/base_node.js +1364 -0
  293. package/dist/src/base_node.js.map +1 -0
  294. package/dist/src/base_node_impl.d.ts +281 -0
  295. package/dist/src/base_node_impl.js +1394 -0
  296. package/dist/src/base_node_impl.js.map +1 -0
  297. package/dist/src/base_node_private.d.ts +61 -0
  298. package/dist/src/base_node_private.js +521 -0
  299. package/dist/src/base_node_private.js.map +1 -0
  300. package/dist/src/data_access/add_dataItem_stuff.d.ts +11 -0
  301. package/dist/src/data_access/add_dataItem_stuff.js +62 -0
  302. package/dist/src/data_access/add_dataItem_stuff.js.map +1 -0
  303. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.d.ts +1 -0
  304. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js +35 -0
  305. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js.map +1 -0
  306. package/dist/src/data_access/ua_analog_item.d.ts +13 -0
  307. package/dist/src/data_access/ua_analog_item.js +37 -0
  308. package/dist/src/data_access/ua_analog_item.js.map +1 -0
  309. package/dist/src/data_access/ua_data_item.d.ts +16 -0
  310. package/dist/src/data_access/ua_data_item.js +66 -0
  311. package/dist/src/data_access/ua_data_item.js.map +1 -0
  312. package/dist/src/data_access/ua_multistate_discrete.d.ts +23 -0
  313. package/dist/src/data_access/ua_multistate_discrete.js +131 -0
  314. package/dist/src/data_access/ua_multistate_discrete.js.map +1 -0
  315. package/dist/src/data_access/ua_multistate_discrete_impl.d.ts +32 -0
  316. package/dist/src/data_access/ua_multistate_discrete_impl.js +131 -0
  317. package/dist/src/data_access/ua_multistate_discrete_impl.js.map +1 -0
  318. package/dist/src/data_access/ua_multistate_value_discrete.d.ts +51 -0
  319. package/dist/src/data_access/ua_multistate_value_discrete.js +249 -0
  320. package/dist/src/data_access/ua_multistate_value_discrete.js.map +1 -0
  321. package/dist/src/data_access/ua_two_state_discrete.d.ts +25 -0
  322. package/dist/src/data_access/ua_two_state_discrete.js +154 -0
  323. package/dist/src/data_access/ua_two_state_discrete.js.map +1 -0
  324. package/dist/src/event_data.d.ts +29 -0
  325. package/dist/src/event_data.js +96 -0
  326. package/dist/src/event_data.js.map +1 -0
  327. package/dist/src/extension_object_array_node.d.ts +61 -0
  328. package/dist/src/extension_object_array_node.js +266 -0
  329. package/dist/src/extension_object_array_node.js.map +1 -0
  330. package/dist/src/historical_access/address_space_historical_data_node.d.ts +26 -0
  331. package/dist/src/historical_access/address_space_historical_data_node.js +662 -0
  332. package/dist/src/historical_access/address_space_historical_data_node.js.map +1 -0
  333. package/dist/src/index_current.d.ts +42 -0
  334. package/dist/src/index_current.js +71 -0
  335. package/dist/src/index_current.js.map +1 -0
  336. package/dist/src/namespace.d.ts +475 -0
  337. package/dist/src/namespace.js +1775 -0
  338. package/dist/src/namespace.js.map +1 -0
  339. package/dist/src/namespace_impl.d.ts +463 -0
  340. package/dist/src/namespace_impl.js +1763 -0
  341. package/dist/src/namespace_impl.js.map +1 -0
  342. package/dist/src/namespace_private.d.ts +21 -0
  343. package/dist/src/namespace_private.js +29 -0
  344. package/dist/src/namespace_private.js.map +1 -0
  345. package/dist/src/nodeid_manager.d.ts +36 -0
  346. package/dist/src/nodeid_manager.js +196 -0
  347. package/dist/src/nodeid_manager.js.map +1 -0
  348. package/dist/src/nodeset_tools/adjust_namespace_array.d.ts +2 -0
  349. package/dist/src/nodeset_tools/adjust_namespace_array.js +14 -0
  350. package/dist/src/nodeset_tools/adjust_namespace_array.js.map +1 -0
  351. package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +2 -0
  352. package/dist/src/nodeset_tools/construct_namespace_dependency.js +39 -0
  353. package/dist/src/nodeset_tools/construct_namespace_dependency.js.map +1 -0
  354. package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +2 -0
  355. package/dist/src/nodeset_tools/nodeset_to_xml.js +1155 -0
  356. package/dist/src/nodeset_tools/nodeset_to_xml.js.map +1 -0
  357. package/dist/src/nodeset_tools/typedictionary_to_xml.d.ts +2 -0
  358. package/dist/src/nodeset_tools/typedictionary_to_xml.js +147 -0
  359. package/dist/src/nodeset_tools/typedictionary_to_xml.js.map +1 -0
  360. package/dist/src/reference.d.ts +43 -0
  361. package/dist/src/reference.js +138 -0
  362. package/dist/src/reference.js.map +1 -0
  363. package/dist/src/reference_impl.d.ts +43 -0
  364. package/dist/src/reference_impl.js +138 -0
  365. package/dist/src/reference_impl.js.map +1 -0
  366. package/dist/src/role_permissions.d.ts +2 -0
  367. package/dist/src/role_permissions.js +11 -0
  368. package/dist/src/role_permissions.js.map +1 -0
  369. package/dist/src/session_context.d.ts +4 -0
  370. package/dist/src/session_context.js +9 -0
  371. package/dist/src/session_context.js.map +1 -0
  372. package/dist/src/state_machine/finite_state_machine.d.ts +67 -0
  373. package/dist/src/state_machine/finite_state_machine.js +354 -0
  374. package/dist/src/state_machine/finite_state_machine.js.map +1 -0
  375. package/dist/src/state_machine/ua_shelving_state_machine_ex.d.ts +34 -0
  376. package/dist/src/state_machine/ua_shelving_state_machine_ex.js +244 -0
  377. package/dist/src/state_machine/ua_shelving_state_machine_ex.js.map +1 -0
  378. package/dist/src/state_machine/ua_two_state_variable.d.ts +61 -0
  379. package/dist/src/state_machine/ua_two_state_variable.js +332 -0
  380. package/dist/src/state_machine/ua_two_state_variable.js.map +1 -0
  381. package/dist/src/tool_isSupertypeOf.d.ts +17 -0
  382. package/dist/src/tool_isSupertypeOf.js +103 -0
  383. package/dist/src/tool_isSupertypeOf.js.map +1 -0
  384. package/dist/src/ua_condition_type.d.ts +8 -0
  385. package/dist/src/ua_condition_type.js +3 -0
  386. package/dist/src/ua_condition_type.js.map +1 -0
  387. package/dist/src/ua_data_type.d.ts +83 -0
  388. package/dist/src/ua_data_type.js +289 -0
  389. package/dist/src/ua_data_type.js.map +1 -0
  390. package/dist/src/ua_data_type_impl.d.ts +83 -0
  391. package/dist/src/ua_data_type_impl.js +291 -0
  392. package/dist/src/ua_data_type_impl.js.map +1 -0
  393. package/dist/src/ua_method.d.ts +42 -0
  394. package/dist/src/ua_method.js +204 -0
  395. package/dist/src/ua_method.js.map +1 -0
  396. package/dist/src/ua_method_impl.d.ts +40 -0
  397. package/dist/src/ua_method_impl.js +203 -0
  398. package/dist/src/ua_method_impl.js.map +1 -0
  399. package/dist/src/ua_object.d.ts +29 -0
  400. package/dist/src/ua_object.js +153 -0
  401. package/dist/src/ua_object.js.map +1 -0
  402. package/dist/src/ua_object_impl.d.ts +29 -0
  403. package/dist/src/ua_object_impl.js +156 -0
  404. package/dist/src/ua_object_impl.js.map +1 -0
  405. package/dist/src/ua_object_type.d.ts +49 -0
  406. package/dist/src/ua_object_type.js +124 -0
  407. package/dist/src/ua_object_type.js.map +1 -0
  408. package/dist/src/ua_object_type_impl.d.ts +48 -0
  409. package/dist/src/ua_object_type_impl.js +124 -0
  410. package/dist/src/ua_object_type_impl.js.map +1 -0
  411. package/dist/src/ua_reference_type.d.ts +42 -0
  412. package/dist/src/ua_reference_type.js +138 -0
  413. package/dist/src/ua_reference_type.js.map +1 -0
  414. package/dist/src/ua_reference_type_impl.d.ts +43 -0
  415. package/dist/src/ua_reference_type_impl.js +138 -0
  416. package/dist/src/ua_reference_type_impl.js.map +1 -0
  417. package/dist/src/ua_variable.d.ts +346 -0
  418. package/dist/src/ua_variable.js +1721 -0
  419. package/dist/src/ua_variable.js.map +1 -0
  420. package/dist/src/ua_variable_impl.d.ts +353 -0
  421. package/dist/src/ua_variable_impl.js +1719 -0
  422. package/dist/src/ua_variable_impl.js.map +1 -0
  423. package/dist/src/ua_variable_type.d.ts +54 -0
  424. package/dist/src/ua_variable_type.js +555 -0
  425. package/dist/src/ua_variable_type.js.map +1 -0
  426. package/dist/src/ua_variable_type_impl.d.ts +63 -0
  427. package/dist/src/ua_variable_type_impl.js +556 -0
  428. package/dist/src/ua_variable_type_impl.js.map +1 -0
  429. package/dist/src/ua_view.d.ts +16 -0
  430. package/dist/src/ua_view.js +42 -0
  431. package/dist/src/ua_view.js.map +1 -0
  432. package/dist/src/ua_view_impl.d.ts +15 -0
  433. package/dist/src/ua_view_impl.js +37 -0
  434. package/dist/src/ua_view_impl.js.map +1 -0
  435. package/distHelpers/add_event_generator_object.d.ts +3 -0
  436. package/distHelpers/add_event_generator_object.js +66 -0
  437. package/distHelpers/add_event_generator_object.js.map +1 -0
  438. package/distHelpers/alarms_and_conditions_demo.d.ts +10 -0
  439. package/distHelpers/alarms_and_conditions_demo.js +115 -0
  440. package/distHelpers/alarms_and_conditions_demo.js.map +1 -0
  441. package/distHelpers/assertHasMatchingReference.d.ts +19 -0
  442. package/distHelpers/assertHasMatchingReference.js +41 -0
  443. package/distHelpers/assertHasMatchingReference.js.map +1 -0
  444. package/distHelpers/boiler_system.d.ts +113 -0
  445. package/distHelpers/boiler_system.js +397 -0
  446. package/distHelpers/boiler_system.js.map +1 -0
  447. package/distHelpers/create_minimalist_address_space_nodeset.d.ts +5 -0
  448. package/distHelpers/create_minimalist_address_space_nodeset.js +171 -0
  449. package/distHelpers/create_minimalist_address_space_nodeset.js.map +1 -0
  450. package/distHelpers/dump_statemachine.d.ts +6 -0
  451. package/distHelpers/dump_statemachine.js +116 -0
  452. package/distHelpers/dump_statemachine.js.map +1 -0
  453. package/distHelpers/get_address_space_fixture.d.ts +1 -0
  454. package/distHelpers/get_address_space_fixture.js +31 -0
  455. package/distHelpers/get_address_space_fixture.js.map +1 -0
  456. package/distHelpers/get_mini_address_space.d.ts +7 -0
  457. package/distHelpers/get_mini_address_space.js +37 -0
  458. package/distHelpers/get_mini_address_space.js.map +1 -0
  459. package/distHelpers/index.d.ts +11 -0
  460. package/distHelpers/index.js +24 -0
  461. package/distHelpers/index.js.map +1 -0
  462. package/distNodeJS/generate_address_space.d.ts +4 -0
  463. package/distNodeJS/generate_address_space.js +31 -0
  464. package/distNodeJS/generate_address_space.js.map +1 -0
  465. package/distNodeJS/index.d.ts +1 -0
  466. package/distNodeJS/index.js +14 -0
  467. package/distNodeJS/index.js.map +1 -0
  468. package/generate.js +1 -0
  469. package/nodeJS.d.ts +1 -0
  470. package/nodeJS.js +1 -0
  471. package/package.json +87 -0
  472. package/source/address_space_ts.ts +217 -0
  473. package/source/continuation_points/continuation_point_manager.ts +121 -0
  474. package/source/helpers/adjust_browse_direction.ts +15 -0
  475. package/source/helpers/argument_list.ts +286 -0
  476. package/source/helpers/call_helpers.ts +112 -0
  477. package/source/helpers/check_event_clause.ts +62 -0
  478. package/source/helpers/coerce_enum_value.ts +33 -0
  479. package/source/helpers/dump_tools.ts +92 -0
  480. package/source/helpers/ensure_secure_access.ts +88 -0
  481. package/source/helpers/make_optionals_map.ts +49 -0
  482. package/source/helpers/resolve_opaque_on_address_space.ts +23 -0
  483. package/source/index.ts +49 -0
  484. package/source/interfaces/alarms_and_conditions/condition_info_i.ts +13 -0
  485. package/source/interfaces/data_access/ua_multistate_discrete_ex.ts +26 -0
  486. package/source/interfaces/data_access/ua_multistate_value_discrete_ex.ts +34 -0
  487. package/source/interfaces/data_access/ua_two_state_discrete_ex.ts +14 -0
  488. package/source/interfaces/data_access/ua_y_array_item_ex.ts +10 -0
  489. package/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.ts +14 -0
  490. package/source/interfaces/state_machine/ua_finite_state_machine_type.ts +50 -0
  491. package/source/interfaces/state_machine/ua_program_state_machine_type.ts +13 -0
  492. package/source/interfaces/state_machine/ua_state_machine_type.ts +261 -0
  493. package/source/interfaces/state_machine/ua_transition_ex.ts +7 -0
  494. package/source/interfaces/ua_subscription_diagnostics_variable_ex.ts +8 -0
  495. package/source/loader/generateAddressSpaceRaw.ts +79 -0
  496. package/source/loader/load_nodeset2.ts +1600 -0
  497. package/source/loader/namespace_post_step.ts +36 -0
  498. package/source/loader/register_node_promoter.ts +8 -0
  499. package/source/namespace.ts +9 -0
  500. package/source/namespace_alarm_and_condition.ts +47 -0
  501. package/source/namespace_data_access.ts +60 -0
  502. package/source/namespace_machine_state.ts +13 -0
  503. package/source/pseudo_session.ts +288 -0
  504. package/source/session_context.ts +345 -0
  505. package/source/set_namespace_meta_data.ts +68 -0
  506. package/source/ua_root_folder.ts +10 -0
  507. package/source/ua_two_state_variable_ex.ts +35 -0
  508. package/source/xml_writer.ts +15 -0
  509. package/source_nodejs/generate_address_space.ts +36 -0
  510. package/source_nodejs/index.ts +1 -0
  511. package/src/address_space.ts +1575 -0
  512. package/src/address_space_change_event_tools.ts +177 -0
  513. package/src/address_space_private.ts +98 -0
  514. package/src/alarms_and_conditions/check_where_clause.ts +148 -0
  515. package/src/alarms_and_conditions/condition.ts +89 -0
  516. package/src/alarms_and_conditions/condition_info.ts +66 -0
  517. package/src/alarms_and_conditions/condition_snapshot.ts +766 -0
  518. package/src/alarms_and_conditions/deviation_alarm_helper.ts +66 -0
  519. package/src/alarms_and_conditions/extract_event_fields.ts +104 -0
  520. package/src/alarms_and_conditions/index.ts +18 -0
  521. package/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.ts +339 -0
  522. package/src/alarms_and_conditions/ua_alarm_condition_impl.ts +513 -0
  523. package/src/alarms_and_conditions/ua_base_event_impl.ts +55 -0
  524. package/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.ts +50 -0
  525. package/src/alarms_and_conditions/ua_condition_impl.ts +1298 -0
  526. package/src/alarms_and_conditions/ua_discrete_alarm_impl.ts +81 -0
  527. package/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.ts +110 -0
  528. package/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.ts +19 -0
  529. package/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.ts +130 -0
  530. package/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.ts +24 -0
  531. package/src/alarms_and_conditions/ua_limit_alarm_impl.ts +305 -0
  532. package/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.ts +108 -0
  533. package/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.ts +224 -0
  534. package/src/alarms_and_conditions/ua_off_normal_alarm_impl.ts +186 -0
  535. package/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.ts +27 -0
  536. package/src/apply_condition_refresh.ts +30 -0
  537. package/src/base_node_impl.ts +1749 -0
  538. package/src/base_node_private.ts +690 -0
  539. package/src/data_access/add_dataItem_stuff.ts +75 -0
  540. package/src/data_access/check_variant_compatibility_ua_analog_item.ts +41 -0
  541. package/src/data_access/ua_multistate_discrete_impl.ts +168 -0
  542. package/src/data_access/ua_multistate_value_discrete.ts +299 -0
  543. package/src/data_access/ua_two_state_discrete.ts +185 -0
  544. package/src/event_data.ts +117 -0
  545. package/src/extension_object_array_node.ts +325 -0
  546. package/src/historical_access/address_space_historical_data_node.ts +828 -0
  547. package/src/index_current.ts +52 -0
  548. package/src/namespace_impl.ts +2181 -0
  549. package/src/namespace_private.ts +60 -0
  550. package/src/nodeid_manager.ts +228 -0
  551. package/src/nodeset_tools/adjust_namespace_array.ts +11 -0
  552. package/src/nodeset_tools/construct_namespace_dependency.ts +40 -0
  553. package/src/nodeset_tools/nodeset_to_xml.ts +1317 -0
  554. package/src/nodeset_tools/typedictionary_to_xml.ts +175 -0
  555. package/src/reference_impl.ts +169 -0
  556. package/src/role_permissions.ts +6 -0
  557. package/src/state_machine/finite_state_machine.ts +428 -0
  558. package/src/state_machine/ua_shelving_state_machine_ex.ts +314 -0
  559. package/src/state_machine/ua_two_state_variable.ts +421 -0
  560. package/src/tool_isSupertypeOf.ts +129 -0
  561. package/src/ua_condition_type.ts +10 -0
  562. package/src/ua_data_type_impl.ts +356 -0
  563. package/src/ua_method_impl.ts +278 -0
  564. package/src/ua_object_impl.ts +203 -0
  565. package/src/ua_object_type_impl.ts +158 -0
  566. package/src/ua_reference_type_impl.ts +174 -0
  567. package/src/ua_variable_impl.ts +2277 -0
  568. package/src/ua_variable_type_impl.ts +741 -0
  569. package/src/ua_view_impl.ts +54 -0
  570. package/testHelpers.d.ts +1 -0
  571. package/testHelpers.js +1 -0
  572. package/test_helpers/add_event_generator_object.ts +71 -0
  573. package/test_helpers/alarms_and_conditions_demo.ts +147 -0
  574. package/test_helpers/assertHasMatchingReference.ts +43 -0
  575. package/test_helpers/boiler_system.ts +618 -0
  576. package/test_helpers/create_minimalist_address_space_nodeset.ts +208 -0
  577. package/test_helpers/dump_statemachine.ts +155 -0
  578. package/test_helpers/get_address_space_fixture.ts +30 -0
  579. package/test_helpers/get_mini_address_space.ts +42 -0
  580. package/test_helpers/index.ts +11 -0
  581. package/test_helpers/test_fixtures/dataType_in_separateNamespace.xml +150 -0
  582. package/test_helpers/test_fixtures/dataType_in_separateNamespace_basic.xml +57 -0
  583. package/test_helpers/test_fixtures/dataType_in_separateNamespace_mix.xml +136 -0
  584. package/test_helpers/test_fixtures/dataType_withEnumeration.xml +82 -0
  585. package/test_helpers/test_fixtures/dataType_with_isOptionSet.xml +194 -0
  586. package/test_helpers/test_fixtures/dataType_with_structures.xml +605 -0
  587. package/test_helpers/test_fixtures/dataType_with_union.xml +1 -0
  588. package/test_helpers/test_fixtures/datatype_as_per_1.04.xml +91 -0
  589. package/test_helpers/test_fixtures/fixture_empty_nodeset2.xml +106 -0
  590. package/test_helpers/test_fixtures/fixture_simple_statemachine_nodeset2.xml +1303 -0
  591. package/test_helpers/test_fixtures/fixuture_nodeset_objects_with_some_methods.xml +362 -0
  592. package/test_helpers/test_fixtures/issue_846.xml +3172 -0
  593. package/test_helpers/test_fixtures/issue_899_variable_with_nodeid_value.xml +33 -0
  594. package/test_helpers/test_fixtures/mini.Node.Set2.xml +4508 -0
  595. package/test_helpers/test_fixtures/mini.nodeset.withVariousVariables.xml +194 -0
  596. package/test_helpers/test_fixtures/minimalist_nodeset_with_models.xml +8 -0
  597. package/test_helpers/test_fixtures/minimalist_nodeset_with_models_more_complex.xml +16 -0
  598. package/test_helpers/test_fixtures/nodeset_with_analog_items.xml +45 -0
@@ -0,0 +1,185 @@
1
+ import assert from "node-opcua-assert";
2
+ import { coerceLocalizedText, LocalizedText, LocalizedTextLike, QualifiedNameLike } from "node-opcua-data-model";
3
+ import { DataType, Variant, VariantLike } from "node-opcua-variant";
4
+ import { VariableTypeIds } from "node-opcua-constants";
5
+ import { INamespace, UAVariable, BindVariableOptions, UAProperty, ISessionContext } from "node-opcua-address-space-base";
6
+ import { DataValueT } from "node-opcua-data-value";
7
+ import { NumericRange } from "node-opcua-numeric-range";
8
+
9
+ import { UAVariableImpl } from "../ua_variable_impl";
10
+ import { registerNodePromoter } from "../../source/loader/register_node_promoter";
11
+ import { AddTwoStateDiscreteOptions } from "../../source/address_space_ts";
12
+ import { UATwoStateDiscreteEx } from "../../source/interfaces/data_access/ua_two_state_discrete_ex";
13
+
14
+ import { add_dataItem_stuff } from "./add_dataItem_stuff";
15
+
16
+ export interface UATwoStateDiscreteImpl {
17
+ falseState: UAProperty<LocalizedText, /*c*/ DataType.LocalizedText>;
18
+ trueState: UAProperty<LocalizedText, /*c*/ DataType.LocalizedText>;
19
+
20
+ readValue(
21
+ context?: ISessionContext | null,
22
+ indexRange?: NumericRange,
23
+ dataEncoding?: QualifiedNameLike | null
24
+ ): DataValueT<boolean, DataType.Boolean>;
25
+
26
+ readValueAsync(context: ISessionContext | null, callback?: any): any;
27
+ }
28
+ export class UATwoStateDiscreteImpl extends UAVariableImpl implements UATwoStateDiscreteEx {
29
+ /*
30
+ * @private
31
+ */
32
+ _post_initialize(): void {
33
+ // The StatusCode SemanticsChanged bit shall be set if any of the FalseState or TrueState
34
+ // (changes can cause misinterpretation by users or (scripting) programs) Properties are changed
35
+ // (see section 5.2 for additional information).
36
+ const handler = this.handle_semantic_changed.bind(this);
37
+
38
+ const falseState = this.getPropertyByName("FalseState");
39
+ /* istanbul ignore else */
40
+ if (falseState) {
41
+ falseState.on("value_changed", handler);
42
+ } else {
43
+ console.warn(
44
+ "warning: UATwoStateDiscrete -> a FalseState property is mandatory ",
45
+ this.browseName.toString(),
46
+ this.nodeId.toString()
47
+ );
48
+ }
49
+ const trueState = this.getPropertyByName("TrueState");
50
+ /* istanbul ignore else */
51
+ if (trueState) {
52
+ trueState.on("value_changed", handler);
53
+ } else {
54
+ console.warn(
55
+ "waring: UATwoStateDiscrete -> a TrueState property is mandatory",
56
+ this.browseName.toString(),
57
+ this.nodeId.toString()
58
+ );
59
+ }
60
+ }
61
+ setValue(value: boolean | LocalizedTextLike): void {
62
+ if (typeof value === "boolean") {
63
+ this.setValueFromSource({ dataType: DataType.Boolean, value });
64
+ } else {
65
+ const text: string = (typeof value === "string" ? value : value.text) || "";
66
+ if (text === this.getTrueStateAsString()) {
67
+ this.setValue(true);
68
+ } else if (text === this.getFalseStateAsString()) {
69
+ this.setValue(false);
70
+ } else {
71
+ throw new Error("setValue invalid value " + value);
72
+ }
73
+ }
74
+ }
75
+ getValue(): boolean {
76
+ return this.readValue().value.value as boolean;
77
+ }
78
+ getValueAsString(): string {
79
+ if (this.getValue()) {
80
+ return this.getTrueStateAsString();
81
+ } else {
82
+ return this.getFalseStateAsString();
83
+ }
84
+ }
85
+ getTrueStateAsString(): string {
86
+ return (this.trueState.readValue().value.value as LocalizedText).text || "";
87
+ }
88
+ getFalseStateAsString(): string {
89
+ return (this.falseState.readValue().value.value as LocalizedText).text || "";
90
+ }
91
+
92
+ public clone(options1: any, optionalFilter: any, extraInfo: any): UAVariable {
93
+ const variable1 = UAVariableImpl.prototype.clone.call(this, options1, optionalFilter, extraInfo);
94
+ promoteToTwoStateDiscrete(variable1);
95
+ return variable1;
96
+ }
97
+ }
98
+
99
+ export function promoteToTwoStateDiscrete(node: UAVariable): UATwoStateDiscreteEx {
100
+ if (node instanceof UATwoStateDiscreteImpl) {
101
+ return node as unknown as UATwoStateDiscreteEx; // already promoted
102
+ }
103
+ Object.setPrototypeOf(node, UATwoStateDiscreteImpl.prototype);
104
+ assert(node instanceof UATwoStateDiscreteImpl, "should now be a UATwoStateDiscrete");
105
+ const _node = node as UATwoStateDiscreteImpl;
106
+ _node._post_initialize();
107
+ return _node as unknown as UATwoStateDiscreteEx;
108
+ }
109
+ registerNodePromoter(VariableTypeIds.TwoStateDiscreteType, promoteToTwoStateDiscrete);
110
+
111
+ export function _addTwoStateDiscrete(namespace: INamespace, options: AddTwoStateDiscreteOptions): UATwoStateDiscreteEx {
112
+ const addressSpace = namespace.addressSpace;
113
+
114
+ assert(!Object.prototype.hasOwnProperty.call(options, "ValuePrecision"));
115
+
116
+ const twoStateDiscreteType = addressSpace.findVariableType("TwoStateDiscreteType");
117
+ if (!twoStateDiscreteType) {
118
+ throw new Error("expecting TwoStateDiscreteType to be defined , check nodeset xml file");
119
+ }
120
+
121
+ let value: undefined | BindVariableOptions;
122
+ if (typeof options.value === "boolean") {
123
+ value = new Variant({ dataType: DataType.Boolean, value: !!options.value });
124
+ } else {
125
+ value = options.value;
126
+ }
127
+ // todo : if options.typeDefinition is specified,
128
+ // todo : refactor to use twoStateDiscreteType.instantiate
129
+
130
+ const variable = namespace.addVariable({
131
+ accessLevel: options.accessLevel,
132
+ browseName: options.browseName,
133
+ componentOf: options.componentOf,
134
+ dataType: DataType.Boolean,
135
+ nodeId: options.nodeId,
136
+ typeDefinition: twoStateDiscreteType.nodeId,
137
+ userAccessLevel: options.userAccessLevel,
138
+ modellingRule: options.modellingRule,
139
+ minimumSamplingInterval: options.minimumSamplingInterval,
140
+ value
141
+ }) as UAVariable;
142
+
143
+ /*
144
+ const dataValueVerif = variable.readValue();
145
+ assert(dataValueVerif.value.dataType === DataType.Boolean);
146
+ */
147
+ const handler = (variable as UAVariableImpl).handle_semantic_changed.bind(variable);
148
+
149
+ add_dataItem_stuff(variable, options);
150
+
151
+ const trueStateNode = namespace.addVariable({
152
+ browseName: { name: "TrueState", namespaceIndex: 0 },
153
+ dataType: "LocalizedText",
154
+ minimumSamplingInterval: 0,
155
+ propertyOf: variable,
156
+ typeDefinition: "PropertyType",
157
+ modellingRule: options.modellingRule ? "Mandatory" : undefined,
158
+ value: new Variant({
159
+ dataType: DataType.LocalizedText,
160
+ value: coerceLocalizedText(options.trueState || "ON")
161
+ })
162
+ });
163
+
164
+ trueStateNode.on("value_changed", handler);
165
+
166
+ const falseStateNode = namespace.addVariable({
167
+ browseName: { name: "FalseState", namespaceIndex: 0 },
168
+ dataType: "LocalizedText",
169
+ minimumSamplingInterval: 0,
170
+ propertyOf: variable,
171
+ typeDefinition: "PropertyType",
172
+ modellingRule: options.modellingRule ? "Mandatory" : undefined,
173
+
174
+ value: new Variant({
175
+ dataType: DataType.LocalizedText,
176
+ value: coerceLocalizedText(options.falseState || "OFF")
177
+ })
178
+ });
179
+
180
+ falseStateNode.on("value_changed", handler);
181
+
182
+ variable.install_extra_properties();
183
+
184
+ return promoteToTwoStateDiscrete(variable);
185
+ }
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @module node-opcua-address-space.Private
3
+ */
4
+ import { assert } from "node-opcua-assert";
5
+ import { AttributeIds, NodeClass } from "node-opcua-data-model";
6
+ import { DataValue } from "node-opcua-data-value";
7
+ import { NodeId } from "node-opcua-nodeid";
8
+ import { constructBrowsePathFromQualifiedName } from "node-opcua-service-translate-browse-path";
9
+ import { StatusCodes } from "node-opcua-status-code";
10
+ import { SimpleAttributeOperand } from "node-opcua-types";
11
+ import { DataType, Variant, VariantLike } from "node-opcua-variant";
12
+
13
+ import {
14
+ ISessionContext,
15
+ BaseNode,
16
+ IEventData,
17
+ UAVariable
18
+ } from "node-opcua-address-space-base";
19
+
20
+ /**
21
+ * @class EventData
22
+ * @param eventTypeNode {BaseNode}
23
+ * @constructor
24
+ */
25
+ export class EventData implements IEventData {
26
+
27
+ public eventId: NodeId;
28
+ public $eventDataSource: BaseNode;
29
+
30
+ private __nodes: { [key: string]: Variant };
31
+
32
+ constructor(eventTypeNode: BaseNode) {
33
+ this.__nodes = {};
34
+ this.eventId = NodeId.nullNodeId;
35
+ this.$eventDataSource = eventTypeNode;
36
+ }
37
+
38
+ /**
39
+ * @method resolveSelectClause
40
+ * @param selectClause {SimpleAttributeOperand}
41
+ * @return {NodeId|null}
42
+ */
43
+ public resolveSelectClause(selectClause: SimpleAttributeOperand): NodeId | null {
44
+ assert(selectClause instanceof SimpleAttributeOperand);
45
+ const addressSpace = this.$eventDataSource.addressSpace;
46
+
47
+ if (selectClause.browsePath!.length === 0 && selectClause.attributeId === AttributeIds.NodeId) {
48
+ assert(!"Cannot use resolveSelectClause on this selectClause as it has no browsePath");
49
+ }
50
+ // navigate to the innerNode specified by the browsePath [ QualifiedName]
51
+ const browsePath = constructBrowsePathFromQualifiedName(this.$eventDataSource, selectClause.browsePath);
52
+
53
+ // xx console.log(self.$eventDataSource.browseName.toString());
54
+ // xx console.log("xx browse Path", browsePath.toString());
55
+
56
+ const browsePathResult = addressSpace.browsePath(browsePath);
57
+
58
+ // xx console.log(" br",
59
+ // self.$eventDataSource.nodeId.toString(),
60
+ // selectClause.browsePath.toString(),
61
+ // browsePathResult.targets[0] ? browsePathResult.targets[0].targetId.toString() : "!!!NOT FOUND!!!"é)
62
+
63
+ if (browsePathResult.statusCode !== StatusCodes.Good) {
64
+ return null;
65
+ }
66
+ if (!browsePathResult.targets) {
67
+ return null;
68
+ }
69
+ // istanbul ignore next
70
+ if (browsePathResult.targets.length !== 1) {
71
+ // xx console.log("selectClause ",selectClause.toString());
72
+ // xx console.log("browsePathResult ",browsePathResult.toString());
73
+ // xx throw new Error("browsePathResult.targets.length !== 1" + browsePathResult.targets.length);
74
+ }
75
+ return browsePathResult.targets[0].targetId;
76
+ }
77
+
78
+ public setValue(lowerName: string, node: BaseNode, variant: VariantLike): void {
79
+ const eventData = this as any;
80
+ eventData[lowerName] = Variant.coerce(variant); /// _coerceVariant(variant);
81
+ eventData.__nodes[node.nodeId.toString()] = eventData[lowerName];
82
+ }
83
+ /**
84
+ * @method readValue
85
+ * @param nodeId {NodeId}
86
+ * @param selectClause {SimpleAttributeOperand}
87
+ * @return {Variant}
88
+ */
89
+ public readValue(sessionContext: ISessionContext, nodeId: NodeId, selectClause: SimpleAttributeOperand): Variant {
90
+ assert(nodeId instanceof NodeId);
91
+ assert(selectClause instanceof SimpleAttributeOperand);
92
+ assert(nodeId instanceof NodeId);
93
+ const addressSpace = this.$eventDataSource.addressSpace;
94
+
95
+ const node = addressSpace.findNode(nodeId)!;
96
+ const key = node.nodeId.toString();
97
+
98
+ // if the value exists in cache ... we read it from cache...
99
+ const cached_value = this.__nodes[key];
100
+ if (cached_value) {
101
+ return cached_value;
102
+ }
103
+
104
+ if (node.nodeClass === NodeClass.Variable && selectClause.attributeId === AttributeIds.Value) {
105
+ const nodeVariable = node as UAVariable;
106
+ return prepare(nodeVariable.readValue(sessionContext, selectClause.indexRange));
107
+ }
108
+ return prepare(node.readAttribute(sessionContext, selectClause.attributeId));
109
+ }
110
+ }
111
+
112
+ function prepare(dataValue: DataValue): Variant {
113
+ if (dataValue.statusCode === StatusCodes.Good) {
114
+ return dataValue.value;
115
+ }
116
+ return new Variant({ dataType: DataType.StatusCode, value: dataValue.statusCode });
117
+ }
@@ -0,0 +1,325 @@
1
+ /**
2
+ * @module node-opcua-address-space.Private
3
+ */
4
+ import { assert } from "node-opcua-assert";
5
+
6
+ import { BrowseDirection, NodeClass } from "node-opcua-data-model";
7
+ import { checkDebugFlag, make_debugLog } from "node-opcua-debug";
8
+ import { NodeId } from "node-opcua-nodeid";
9
+ import { Variant } from "node-opcua-variant";
10
+ import { DataType } from "node-opcua-variant";
11
+ import { VariantArrayType } from "node-opcua-variant";
12
+
13
+ import { ExtensionObject } from "node-opcua-extension-object";
14
+ import {
15
+ UADataType,
16
+ UADynamicVariableArray,
17
+ UAObject,
18
+ UAReferenceType,
19
+ UAVariable
20
+ } from "node-opcua-address-space-base"
21
+ import { UAVariableImpl } from "./ua_variable_impl";
22
+
23
+ const doDebug = checkDebugFlag(__filename);
24
+ const debugLog = make_debugLog(__filename);
25
+ /*
26
+ * define a complex Variable containing a array of extension objects
27
+ * each element of the array is also accessible as a component variable.
28
+ *
29
+ */
30
+
31
+ function getExtObjArrayNodeValue(this: any) {
32
+ return new Variant({
33
+ arrayType: VariantArrayType.Array,
34
+ dataType: DataType.ExtensionObject,
35
+ value: this.$$extensionObjectArray
36
+ });
37
+ }
38
+
39
+ function removeElementByIndex<T extends ExtensionObject>(uaArrayVariableNode: UADynamicVariableArray<T>, elementIndex: number) {
40
+ const _array = uaArrayVariableNode.$$extensionObjectArray;
41
+
42
+ assert(typeof elementIndex === "number");
43
+
44
+ const addressSpace = uaArrayVariableNode.addressSpace;
45
+ const extObj = _array[elementIndex];
46
+ const browseName = uaArrayVariableNode.$$getElementBrowseName(extObj);
47
+
48
+ // remove element from global array (inefficient)
49
+ uaArrayVariableNode.$$extensionObjectArray.splice(elementIndex, 1);
50
+
51
+ // remove matching component
52
+ const node = uaArrayVariableNode.getComponentByName(browseName);
53
+ if (!node) {
54
+ throw new Error(" cannot find component ");
55
+ }
56
+
57
+ const hasComponent = uaArrayVariableNode.addressSpace.findReferenceType("HasComponent")! as UAReferenceType;
58
+
59
+ // remove the hasComponent reference toward node
60
+ uaArrayVariableNode.removeReference({
61
+ isForward: true,
62
+ nodeId: node.nodeId,
63
+ referenceType: hasComponent.nodeId
64
+ });
65
+
66
+ // now check if node has still some parent
67
+ const parents = node.findReferencesEx("HasChild", BrowseDirection.Inverse);
68
+ if (parents.length === 0) {
69
+ addressSpace.deleteNode(node.nodeId);
70
+ }
71
+ }
72
+
73
+ /**
74
+ *
75
+ * create a node Variable that contains a array of ExtensionObject of a given type
76
+ * @method createExtObjArrayNode
77
+ * @param parentFolder
78
+ * @param options
79
+ * @param options.browseName
80
+ * @param options.complexVariableType
81
+ * @param options.variableType the type of Extension objects stored in the array.
82
+ * @param options.indexPropertyName
83
+ * @return {Object|UAVariable}
84
+ */
85
+ export function createExtObjArrayNode<T extends ExtensionObject>(parentFolder: UAObject, options: any): UADynamicVariableArray<T> {
86
+ assert(typeof options.variableType === "string");
87
+ assert(typeof options.indexPropertyName === "string");
88
+
89
+ const addressSpace = parentFolder.addressSpace;
90
+ const namespace = parentFolder.namespace;
91
+
92
+ const complexVariableType = addressSpace.findVariableType(options.complexVariableType);
93
+ if (!complexVariableType) {
94
+ throw new Error("cannot find complex variable type");
95
+ }
96
+ assert(!complexVariableType.nodeId.isEmpty());
97
+
98
+ const variableType = addressSpace.findVariableType(options.variableType);
99
+ if (!variableType) {
100
+ throw new Error("cannot find variable Type");
101
+ }
102
+ assert(!variableType.nodeId.isEmpty());
103
+
104
+ const structure = addressSpace.findDataType("Structure");
105
+ assert(structure, "Structure Type not found: please check your nodeset file");
106
+
107
+ const dataType = addressSpace.findDataType(variableType.dataType);
108
+ if (!dataType) {
109
+ throw new Error("cannot find Data Type");
110
+ }
111
+
112
+ assert(dataType.isSupertypeOf(structure as any), "expecting a structure (= ExtensionObject) here ");
113
+
114
+ const inner_options = {
115
+ componentOf: parentFolder,
116
+
117
+ browseName: options.browseName,
118
+ dataType: dataType.nodeId,
119
+ typeDefinition: complexVariableType.nodeId,
120
+ value: { dataType: DataType.ExtensionObject, value: [], arrayType: VariantArrayType.Array },
121
+ valueRank: 1
122
+ };
123
+
124
+ const uaArrayVariableNode = namespace.addVariable(inner_options) as UADynamicVariableArray<T>;
125
+
126
+ bindExtObjArrayNode(uaArrayVariableNode, options.variableType, options.indexPropertyName);
127
+
128
+ return uaArrayVariableNode;
129
+ }
130
+
131
+ /**
132
+ * @method bindExtObjArrayNode
133
+ * @param uaArrayVariableNode
134
+ * @param variableTypeNodeId
135
+ * @param indexPropertyName
136
+ * @return
137
+ */
138
+ export function bindExtObjArrayNode<T extends ExtensionObject>(
139
+ uaArrayVariableNode: UADynamicVariableArray<T>,
140
+ variableTypeNodeId: string | NodeId,
141
+ indexPropertyName: string
142
+ ): UAVariable {
143
+ const addressSpace = uaArrayVariableNode.addressSpace;
144
+
145
+ const variableType = addressSpace.findVariableType(variableTypeNodeId);
146
+ if (!variableType) {
147
+ throw new Error("Cannot find VariableType " + variableTypeNodeId.toString());
148
+ }
149
+ assert(!variableType.nodeId.isEmpty());
150
+
151
+ let structure = addressSpace.findDataType("Structure");
152
+ assert(structure, "Structure Type not found: please check your nodeset file");
153
+
154
+ let dataType = addressSpace.findDataType(variableType.dataType);
155
+ if (!dataType) {
156
+ throw new Error("Cannot find DataType " + variableType.dataType.toString());
157
+ }
158
+ assert(dataType.isSupertypeOf(structure as any), "expecting a structure (= ExtensionObject) here ");
159
+
160
+ assert(!uaArrayVariableNode.$$variableType, "uaArrayVariableNode has already been bound !");
161
+
162
+ uaArrayVariableNode.$$variableType = variableType;
163
+
164
+ structure = addressSpace.findDataType("Structure");
165
+ assert(structure, "Structure Type not found: please check your nodeset file");
166
+
167
+ // verify that an object with same doesn't already exist
168
+ dataType = addressSpace.findDataType(variableType.dataType)! as UADataType;
169
+ assert(dataType!.isSupertypeOf(structure as any), "expecting a structure (= ExtensionObject) here ");
170
+
171
+ uaArrayVariableNode.$$dataType = dataType;
172
+ uaArrayVariableNode.$$extensionObjectArray = [];
173
+ uaArrayVariableNode.$$indexPropertyName = indexPropertyName;
174
+
175
+ uaArrayVariableNode.$$getElementBrowseName = function (this: any, extObj: ExtensionObject) {
176
+ const indexPropertyName1 = this.$$indexPropertyName;
177
+
178
+ if (!Object.prototype.hasOwnProperty.call(extObj,indexPropertyName1)) {
179
+ console.log(" extension object do not have ", indexPropertyName1, extObj);
180
+ }
181
+ // assert(extObj.constructor === addressSpace.constructExtensionObject(dataType));
182
+ assert(Object.prototype.hasOwnProperty.call(extObj,indexPropertyName1));
183
+ const browseName = (extObj as any)[indexPropertyName1].toString();
184
+ return browseName;
185
+ };
186
+
187
+ const options = {
188
+ get: getExtObjArrayNodeValue,
189
+ set: undefined // readonly
190
+ };
191
+
192
+ // bind the readonly
193
+ uaArrayVariableNode.bindVariable(options, true);
194
+
195
+ return uaArrayVariableNode;
196
+ }
197
+
198
+ /**
199
+ * @method addElement
200
+ * add a new element in a ExtensionObject Array variable
201
+ * @param options {Object} data used to construct the underlying ExtensionObject
202
+ * @param uaArrayVariableNode {UAVariable}
203
+ * @return {UAVariable}
204
+ *
205
+ * @method addElement
206
+ * add a new element in a ExtensionObject Array variable
207
+ * @param nodeVariable a variable already exposing an extension objects
208
+ * @param uaArrayVariableNode {UAVariable}
209
+ * @return {UAVariable}
210
+ *
211
+ * @method addElement
212
+ * add a new element in a ExtensionObject Array variable
213
+ * @param constructor constructor of the extension object to create
214
+ * @param uaArrayVariableNode {UAVariable}
215
+ * @return {UAVariable}
216
+ */
217
+ export function addElement<T extends ExtensionObject>(
218
+ options: any /* ExtensionObjectConstructor | ExtensionObject | UAVariable*/,
219
+ uaArrayVariableNode: UADynamicVariableArray<T>
220
+ ): UAVariable {
221
+ assert(uaArrayVariableNode, " must provide an UAVariable containing the array");
222
+ // verify that arr has been created correctly
223
+ assert(
224
+ !!uaArrayVariableNode.$$variableType && !!uaArrayVariableNode.$$dataType,
225
+ "did you create the array Node with createExtObjArrayNode ?"
226
+ );
227
+ assert(uaArrayVariableNode.$$dataType.nodeClass === NodeClass.DataType);
228
+
229
+ const addressSpace = uaArrayVariableNode.addressSpace;
230
+ const Constructor = addressSpace.getExtensionObjectConstructor(uaArrayVariableNode.$$dataType);
231
+ assert(Constructor instanceof Function);
232
+
233
+ let extensionObject: T;
234
+ let elVar = null;
235
+ let browseName;
236
+
237
+ if (options instanceof UAVariableImpl) {
238
+ elVar = options;
239
+ extensionObject = elVar.$extensionObject; // get shared extension object
240
+
241
+ assert(
242
+ extensionObject instanceof Constructor,
243
+ "the provided variable must expose a Extension Object of the expected type "
244
+ );
245
+ // add a reference
246
+ uaArrayVariableNode.addReference({
247
+ isForward: true,
248
+ nodeId: elVar.nodeId,
249
+ referenceType: "HasComponent"
250
+ });
251
+ // xx elVar.bindExtensionObject();
252
+ } else {
253
+ if (options instanceof Constructor) {
254
+ // extension object has already been created
255
+ extensionObject = options as T;
256
+ } else {
257
+ extensionObject = addressSpace.constructExtensionObject(uaArrayVariableNode.$$dataType, options) as T;
258
+ }
259
+ browseName = uaArrayVariableNode.$$getElementBrowseName(extensionObject);
260
+ elVar = uaArrayVariableNode.$$variableType.instantiate({
261
+ browseName,
262
+ componentOf: uaArrayVariableNode.nodeId,
263
+ value: { dataType: DataType.ExtensionObject, value: extensionObject }
264
+ }) as UAVariableImpl;
265
+ elVar.bindExtensionObject();
266
+ elVar.$extensionObject = extensionObject;
267
+ }
268
+
269
+ // also add the value inside
270
+ uaArrayVariableNode.$$extensionObjectArray.push(extensionObject);
271
+
272
+ return elVar;
273
+ }
274
+
275
+ /**
276
+ *
277
+ * @method removeElement
278
+ * @param uaArrayVariableNode {UAVariable}
279
+ * @param element {number} index of element to remove in array
280
+ *
281
+ *
282
+ * @method removeElement
283
+ * @param uaArrayVariableNode {UAVariable}
284
+ * @param element {UAVariable} node of element to remove in array
285
+ *
286
+ * @method removeElement
287
+ * @param uaArrayVariableNode {UAVariable}
288
+ * @param element {ExtensionObject} extension object of the node of element to remove in array
289
+ *
290
+ */
291
+ export function removeElement<T extends ExtensionObject>(
292
+ uaArrayVariableNode: UADynamicVariableArray<T>,
293
+ element: any /* number | UAVariable | (a any) => boolean | ExtensionObject */
294
+ ): void {
295
+ assert(element, "element must exist");
296
+ const _array = uaArrayVariableNode.$$extensionObjectArray;
297
+ if (_array.length === 0) {
298
+ throw new Error(" cannot remove an element from an empty array ");
299
+ }
300
+ let elementIndex = -1;
301
+
302
+ if (typeof element === "number") {
303
+ // find element by index
304
+ elementIndex = element;
305
+ assert(elementIndex >= 0 && elementIndex < _array.length);
306
+ } else if (element && element.nodeClass) {
307
+ // find element by name
308
+ const browseNameToFind = element.browseName.name!.toString();
309
+ elementIndex = _array.findIndex((obj: any, i: number) => {
310
+ const browseName = uaArrayVariableNode.$$getElementBrowseName(obj).toString();
311
+ return browseName === browseNameToFind;
312
+ });
313
+ } else if (typeof element === "function") {
314
+ // find element by functor
315
+ elementIndex = _array.findIndex(element);
316
+ } else {
317
+ // find element by inner extension object
318
+ assert(_array[0].constructor.name === (element as any).constructor.name, "element must match");
319
+ elementIndex = _array.findIndex((x: any) => x === element);
320
+ }
321
+ if (elementIndex < 0) {
322
+ throw new Error(" cannot find element matching " + element.toString());
323
+ }
324
+ return removeElementByIndex(uaArrayVariableNode, elementIndex);
325
+ }