node-opcua-address-space 2.71.0 → 2.72.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/dist/source/address_space_ts.d.ts +118 -118
  2. package/dist/source/address_space_ts.js +17 -17
  3. package/dist/source/continuation_points/continuation_point_manager.d.ts +32 -32
  4. package/dist/source/continuation_points/continuation_point_manager.js +195 -195
  5. package/dist/source/helpers/adjust_browse_direction.d.ts +5 -5
  6. package/dist/source/helpers/adjust_browse_direction.js +11 -11
  7. package/dist/source/helpers/argument_list.d.ts +34 -34
  8. package/dist/source/helpers/argument_list.js +285 -285
  9. package/dist/source/helpers/call_helpers.d.ts +6 -6
  10. package/dist/source/helpers/call_helpers.js +70 -70
  11. package/dist/source/helpers/check_event_clause.d.ts +17 -17
  12. package/dist/source/helpers/check_event_clause.js +52 -52
  13. package/dist/source/helpers/coerce_enum_value.d.ts +6 -6
  14. package/dist/source/helpers/coerce_enum_value.js +33 -33
  15. package/dist/source/helpers/dump_tools.d.ts +14 -14
  16. package/dist/source/helpers/dump_tools.js +78 -78
  17. package/dist/source/helpers/ensure_secure_access.d.ts +9 -9
  18. package/dist/source/helpers/ensure_secure_access.js +76 -76
  19. package/dist/source/helpers/make_optionals_map.d.ts +21 -21
  20. package/dist/source/helpers/make_optionals_map.js +29 -29
  21. package/dist/source/helpers/multiform_func.d.ts +11 -11
  22. package/dist/source/helpers/multiform_func.js +73 -73
  23. package/dist/source/helpers/resolve_opaque_on_address_space.d.ts +3 -3
  24. package/dist/source/helpers/resolve_opaque_on_address_space.js +36 -36
  25. package/dist/source/index.d.ts +40 -40
  26. package/dist/source/index.js +66 -66
  27. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.d.ts +12 -12
  28. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.js +2 -2
  29. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.d.ts +21 -21
  30. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js +2 -2
  31. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +24 -24
  32. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js +2 -2
  33. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.d.ts +12 -12
  34. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js +2 -2
  35. package/dist/source/interfaces/data_access/ua_y_array_item_ex.d.ts +8 -8
  36. package/dist/source/interfaces/data_access/ua_y_array_item_ex.js +2 -2
  37. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +12 -12
  38. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +2 -2
  39. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.d.ts +49 -49
  40. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js +2 -2
  41. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.d.ts +11 -11
  42. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js +2 -2
  43. package/dist/source/interfaces/state_machine/ua_state_machine_type.d.ts +222 -222
  44. package/dist/source/interfaces/state_machine/ua_state_machine_type.js +2 -2
  45. package/dist/source/interfaces/state_machine/ua_transition_ex.d.ts +6 -6
  46. package/dist/source/interfaces/state_machine/ua_transition_ex.js +2 -2
  47. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +8 -8
  48. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js +2 -2
  49. package/dist/source/loader/decode_xml_extension_object.d.ts +6 -6
  50. package/dist/source/loader/decode_xml_extension_object.js +71 -71
  51. package/dist/source/loader/ensure_datatype_extracted.d.ts +5 -5
  52. package/dist/source/loader/ensure_datatype_extracted.js +45 -45
  53. package/dist/source/loader/generateAddressSpaceRaw.d.ts +10 -10
  54. package/dist/source/loader/generateAddressSpaceRaw.js +45 -45
  55. package/dist/source/loader/load_nodeset2.d.ts +16 -16
  56. package/dist/source/loader/load_nodeset2.js +1468 -1464
  57. package/dist/source/loader/load_nodeset2.js.map +1 -1
  58. package/dist/source/loader/make_semver_compatible.d.ts +6 -0
  59. package/dist/source/loader/make_semver_compatible.js +26 -0
  60. package/dist/source/loader/make_semver_compatible.js.map +1 -0
  61. package/dist/source/loader/make_xml_extension_object_parser.d.ts +28 -28
  62. package/dist/source/loader/make_xml_extension_object_parser.js +325 -315
  63. package/dist/source/loader/make_xml_extension_object_parser.js.map +1 -1
  64. package/dist/source/loader/namespace_post_step.d.ts +6 -6
  65. package/dist/source/loader/namespace_post_step.js +47 -47
  66. package/dist/source/loader/register_node_promoter.d.ts +3 -3
  67. package/dist/source/loader/register_node_promoter.js +9 -9
  68. package/dist/source/namespace.d.ts +6 -6
  69. package/dist/source/namespace.js +2 -2
  70. package/dist/source/namespace_alarm_and_condition.d.ts +24 -24
  71. package/dist/source/namespace_alarm_and_condition.js +2 -2
  72. package/dist/source/namespace_data_access.d.ts +42 -42
  73. package/dist/source/namespace_data_access.js +2 -2
  74. package/dist/source/namespace_machine_state.d.ts +7 -7
  75. package/dist/source/namespace_machine_state.js +2 -2
  76. package/dist/source/pseudo_session.d.ts +55 -55
  77. package/dist/source/pseudo_session.js +203 -203
  78. package/dist/source/session_context.d.ts +111 -111
  79. package/dist/source/session_context.js +265 -265
  80. package/dist/source/set_namespace_meta_data.d.ts +2 -2
  81. package/dist/source/set_namespace_meta_data.js +59 -59
  82. package/dist/source/ua_root_folder.d.ts +9 -9
  83. package/dist/source/ua_root_folder.js +2 -2
  84. package/dist/source/ua_two_state_variable_ex.d.ts +23 -23
  85. package/dist/source/ua_two_state_variable_ex.js +2 -2
  86. package/dist/source/xml_writer.d.ts +9 -9
  87. package/dist/source/xml_writer.js +2 -2
  88. package/dist/src/address_space.d.ts +392 -392
  89. package/dist/src/address_space.js +1387 -1387
  90. package/dist/src/address_space_change_event_tools.d.ts +6 -6
  91. package/dist/src/address_space_change_event_tools.js +149 -149
  92. package/dist/src/address_space_private.d.ts +43 -43
  93. package/dist/src/address_space_private.js +2 -2
  94. package/dist/src/alarms_and_conditions/check_where_clause.d.ts +4 -4
  95. package/dist/src/alarms_and_conditions/check_where_clause.js +109 -109
  96. package/dist/src/alarms_and_conditions/condition.d.ts +5 -5
  97. package/dist/src/alarms_and_conditions/condition.js +80 -80
  98. package/dist/src/alarms_and_conditions/condition_info.d.ts +27 -27
  99. package/dist/src/alarms_and_conditions/condition_info.js +54 -54
  100. package/dist/src/alarms_and_conditions/condition_snapshot.d.ts +233 -233
  101. package/dist/src/alarms_and_conditions/condition_snapshot.js +666 -666
  102. package/dist/src/alarms_and_conditions/deviation_alarm_helper.d.ts +21 -21
  103. package/dist/src/alarms_and_conditions/deviation_alarm_helper.js +46 -46
  104. package/dist/src/alarms_and_conditions/extract_event_fields.d.ts +10 -10
  105. package/dist/src/alarms_and_conditions/extract_event_fields.js +89 -89
  106. package/dist/src/alarms_and_conditions/index.d.ts +18 -18
  107. package/dist/src/alarms_and_conditions/index.js +34 -34
  108. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +64 -62
  109. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +244 -244
  110. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js.map +1 -1
  111. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.d.ts +124 -118
  112. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js +416 -416
  113. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js.map +1 -1
  114. package/dist/src/alarms_and_conditions/ua_base_event_impl.d.ts +29 -29
  115. package/dist/src/alarms_and_conditions/ua_base_event_impl.js +38 -38
  116. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +36 -21
  117. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +115 -25
  118. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js.map +1 -1
  119. package/dist/src/alarms_and_conditions/ua_condition_impl.d.ts +187 -182
  120. package/dist/src/alarms_and_conditions/ua_condition_impl.js +1024 -1022
  121. package/dist/src/alarms_and_conditions/ua_condition_impl.js.map +1 -1
  122. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +18 -17
  123. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js +57 -57
  124. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js.map +1 -1
  125. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +30 -27
  126. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +56 -56
  127. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js.map +1 -1
  128. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +11 -9
  129. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +11 -11
  130. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js.map +1 -1
  131. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +40 -38
  132. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +86 -86
  133. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js.map +1 -1
  134. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +10 -10
  135. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +7 -7
  136. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.d.ts +105 -97
  137. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js +250 -250
  138. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js.map +1 -1
  139. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +29 -28
  140. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +50 -50
  141. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js.map +1 -1
  142. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +26 -25
  143. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +162 -162
  144. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js.map +1 -1
  145. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +48 -39
  146. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js +161 -135
  147. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js.map +1 -1
  148. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +17 -16
  149. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +17 -17
  150. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js.map +1 -1
  151. package/dist/src/apply_condition_refresh.d.ts +6 -6
  152. package/dist/src/apply_condition_refresh.js +27 -27
  153. package/dist/src/base_node_impl.d.ts +281 -281
  154. package/dist/src/base_node_impl.js +1395 -1395
  155. package/dist/src/base_node_private.d.ts +61 -61
  156. package/dist/src/base_node_private.js +705 -705
  157. package/dist/src/data_access/add_dataItem_stuff.d.ts +11 -11
  158. package/dist/src/data_access/add_dataItem_stuff.js +61 -61
  159. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.d.ts +1 -1
  160. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js +34 -34
  161. package/dist/src/data_access/ua_multistate_discrete_impl.d.ts +32 -32
  162. package/dist/src/data_access/ua_multistate_discrete_impl.js +130 -130
  163. package/dist/src/data_access/ua_multistate_value_discrete.d.ts +51 -51
  164. package/dist/src/data_access/ua_multistate_value_discrete.js +249 -249
  165. package/dist/src/data_access/ua_two_state_discrete.d.ts +25 -25
  166. package/dist/src/data_access/ua_two_state_discrete.js +153 -153
  167. package/dist/src/event_data.d.ts +29 -29
  168. package/dist/src/event_data.js +95 -95
  169. package/dist/src/extension_object_array_node.d.ts +61 -61
  170. package/dist/src/extension_object_array_node.js +276 -276
  171. package/dist/src/historical_access/address_space_historical_data_node.d.ts +26 -26
  172. package/dist/src/historical_access/address_space_historical_data_node.js +630 -630
  173. package/dist/src/index_current.d.ts +45 -45
  174. package/dist/src/index_current.js +77 -77
  175. package/dist/src/namespace_impl.d.ts +457 -457
  176. package/dist/src/namespace_impl.js +1733 -1733
  177. package/dist/src/namespace_private.d.ts +21 -21
  178. package/dist/src/namespace_private.js +32 -32
  179. package/dist/src/nodeid_manager.d.ts +36 -36
  180. package/dist/src/nodeid_manager.js +197 -197
  181. package/dist/src/nodeset_tools/adjust_namespace_array.d.ts +2 -2
  182. package/dist/src/nodeset_tools/adjust_namespace_array.js +13 -13
  183. package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +2 -2
  184. package/dist/src/nodeset_tools/construct_namespace_dependency.js +83 -83
  185. package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +2 -2
  186. package/dist/src/nodeset_tools/nodeset_to_xml.js +1143 -1143
  187. package/dist/src/nodeset_tools/typedictionary_to_xml.d.ts +2 -2
  188. package/dist/src/nodeset_tools/typedictionary_to_xml.js +154 -154
  189. package/dist/src/reference_impl.d.ts +43 -43
  190. package/dist/src/reference_impl.js +139 -139
  191. package/dist/src/role_permissions.d.ts +2 -2
  192. package/dist/src/role_permissions.js +10 -10
  193. package/dist/src/state_machine/finite_state_machine.d.ts +67 -67
  194. package/dist/src/state_machine/finite_state_machine.js +353 -353
  195. package/dist/src/state_machine/ua_shelving_state_machine_ex.d.ts +34 -34
  196. package/dist/src/state_machine/ua_shelving_state_machine_ex.js +250 -250
  197. package/dist/src/state_machine/ua_two_state_variable.d.ts +61 -61
  198. package/dist/src/state_machine/ua_two_state_variable.js +331 -331
  199. package/dist/src/tool_isSupertypeOf.d.ts +17 -17
  200. package/dist/src/tool_isSupertypeOf.js +108 -108
  201. package/dist/src/ua_condition_type.d.ts +8 -8
  202. package/dist/src/ua_condition_type.js +2 -2
  203. package/dist/src/ua_data_type_impl.d.ts +93 -93
  204. package/dist/src/ua_data_type_impl.js +368 -368
  205. package/dist/src/ua_method_impl.d.ts +41 -41
  206. package/dist/src/ua_method_impl.js +208 -208
  207. package/dist/src/ua_object_impl.d.ts +35 -33
  208. package/dist/src/ua_object_impl.js +162 -156
  209. package/dist/src/ua_object_impl.js.map +1 -1
  210. package/dist/src/ua_object_type_impl.d.ts +48 -48
  211. package/dist/src/ua_object_type_impl.js +124 -124
  212. package/dist/src/ua_reference_type_impl.d.ts +43 -43
  213. package/dist/src/ua_reference_type_impl.js +139 -139
  214. package/dist/src/ua_variable_impl.d.ts +351 -351
  215. package/dist/src/ua_variable_impl.js +1604 -1604
  216. package/dist/src/ua_variable_impl_ext_obj.d.ts +17 -17
  217. package/dist/src/ua_variable_impl_ext_obj.js +437 -437
  218. package/dist/src/ua_variable_type_impl.d.ts +62 -62
  219. package/dist/src/ua_variable_type_impl.js +570 -570
  220. package/dist/src/ua_view_impl.d.ts +19 -15
  221. package/dist/src/ua_view_impl.js +43 -36
  222. package/dist/src/ua_view_impl.js.map +1 -1
  223. package/distHelpers/add_event_generator_object.d.ts +3 -3
  224. package/distHelpers/add_event_generator_object.js +65 -65
  225. package/distHelpers/alarms_and_conditions_demo.d.ts +10 -10
  226. package/distHelpers/alarms_and_conditions_demo.js +114 -114
  227. package/distHelpers/assertHasMatchingReference.d.ts +19 -19
  228. package/distHelpers/assertHasMatchingReference.js +40 -40
  229. package/distHelpers/boiler_system.d.ts +113 -113
  230. package/distHelpers/boiler_system.js +395 -395
  231. package/distHelpers/create_minimalist_address_space_nodeset.d.ts +5 -5
  232. package/distHelpers/create_minimalist_address_space_nodeset.js +171 -171
  233. package/distHelpers/date_utils.d.ts +3 -3
  234. package/distHelpers/date_utils.js +9 -9
  235. package/distHelpers/dump_statemachine.js +127 -127
  236. package/distHelpers/get_address_space_fixture.d.ts +1 -1
  237. package/distHelpers/get_address_space_fixture.js +30 -30
  238. package/distHelpers/get_mini_address_space.d.ts +7 -7
  239. package/distHelpers/get_mini_address_space.js +36 -36
  240. package/distHelpers/index.d.ts +12 -12
  241. package/distHelpers/index.js +28 -28
  242. package/distHelpers/mock_session.d.ts +14 -14
  243. package/distHelpers/mock_session.js +25 -25
  244. package/distNodeJS/generate_address_space.d.ts +4 -4
  245. package/distNodeJS/generate_address_space.js +41 -41
  246. package/distNodeJS/index.d.ts +1 -1
  247. package/distNodeJS/index.js +17 -17
  248. package/package.json +23 -23
  249. package/source/loader/load_nodeset2.ts +21 -17
  250. package/source/loader/make_semver_compatible.ts +23 -0
  251. package/source/loader/make_xml_extension_object_parser.ts +16 -6
  252. package/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.ts +13 -6
  253. package/src/alarms_and_conditions/ua_alarm_condition_impl.ts +15 -10
  254. package/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.ts +126 -10
  255. package/src/alarms_and_conditions/ua_condition_impl.ts +26 -13
  256. package/src/alarms_and_conditions/ua_discrete_alarm_impl.ts +10 -4
  257. package/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.ts +7 -6
  258. package/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.ts +5 -3
  259. package/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.ts +7 -6
  260. package/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.ts +1 -1
  261. package/src/alarms_and_conditions/ua_limit_alarm_impl.ts +23 -13
  262. package/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.ts +6 -7
  263. package/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.ts +6 -7
  264. package/src/alarms_and_conditions/ua_off_normal_alarm_impl.ts +62 -30
  265. package/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.ts +5 -5
  266. package/src/ua_object_impl.ts +11 -3
  267. package/src/ua_view_impl.ts +6 -4
  268. package/test_helpers/test_fixtures/dataType_issue.xml +9 -9
  269. package/test_helpers/test_fixtures/nodeset_with_guid.xml +1442 -0
  270. package/test_helpers/test_fixtures/nodeset_with_int64_values.xml +31 -0
  271. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.d.ts +0 -23
  272. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.js +0 -3
  273. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.js.map +0 -1
  274. package/dist/source/interfaces/data_access/ua_discrete_item.d.ts +0 -6
  275. package/dist/source/interfaces/data_access/ua_discrete_item.js +0 -3
  276. package/dist/source/interfaces/data_access/ua_discrete_item.js.map +0 -1
  277. package/dist/source/interfaces/data_access/ua_multistate_discrete.d.ts +0 -25
  278. package/dist/source/interfaces/data_access/ua_multistate_discrete.js +0 -3
  279. package/dist/source/interfaces/data_access/ua_multistate_discrete.js.map +0 -1
  280. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.d.ts +0 -27
  281. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.js +0 -3
  282. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.js.map +0 -1
  283. package/dist/source/interfaces/data_access/ua_two_state_discrete.d.ts +0 -17
  284. package/dist/source/interfaces/data_access/ua_two_state_discrete.js +0 -3
  285. package/dist/source/interfaces/data_access/ua_two_state_discrete.js.map +0 -1
  286. package/dist/source/interfaces/data_access/ua_y_array_item.d.ts +0 -19
  287. package/dist/source/interfaces/data_access/ua_y_array_item.js +0 -3
  288. package/dist/source/interfaces/data_access/ua_y_array_item.js.map +0 -1
  289. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.d.ts +0 -11
  290. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.js +0 -3
  291. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.js.map +0 -1
  292. package/dist/source/interfaces/state_machine/finite_state_machine.d.ts +0 -70
  293. package/dist/source/interfaces/state_machine/finite_state_machine.js +0 -3
  294. package/dist/source/interfaces/state_machine/finite_state_machine.js.map +0 -1
  295. package/dist/source/interfaces/state_machine/program_finite_state_machine.d.ts +0 -74
  296. package/dist/source/interfaces/state_machine/program_finite_state_machine.js +0 -3
  297. package/dist/source/interfaces/state_machine/program_finite_state_machine.js.map +0 -1
  298. package/dist/source/interfaces/state_machine/state_machine.d.ts +0 -342
  299. package/dist/source/interfaces/state_machine/state_machine.js +0 -3
  300. package/dist/source/interfaces/state_machine/state_machine.js.map +0 -1
  301. package/dist/source/interfaces/state_machine/ua_finite_state_variable.d.ts +0 -18
  302. package/dist/source/interfaces/state_machine/ua_finite_state_variable.js +0 -3
  303. package/dist/source/interfaces/state_machine/ua_finite_state_variable.js.map +0 -1
  304. package/dist/source/interfaces/state_machine/ua_state_variable.d.ts +0 -29
  305. package/dist/source/interfaces/state_machine/ua_state_variable.js +0 -3
  306. package/dist/source/interfaces/state_machine/ua_state_variable.js.map +0 -1
  307. package/dist/source/interfaces/state_machine/ua_two_state_variable.d.ts +0 -26
  308. package/dist/source/interfaces/state_machine/ua_two_state_variable.js +0 -3
  309. package/dist/source/interfaces/state_machine/ua_two_state_variable.js.map +0 -1
  310. package/dist/source/interfaces/subscription_diagnostics_variable.d.ts +0 -41
  311. package/dist/source/interfaces/subscription_diagnostics_variable.js +0 -3
  312. package/dist/source/interfaces/subscription_diagnostics_variable.js.map +0 -1
  313. package/dist/src/alarms_and_conditions/base_event_type.d.ts +0 -26
  314. package/dist/src/alarms_and_conditions/base_event_type.js +0 -41
  315. package/dist/src/alarms_and_conditions/base_event_type.js.map +0 -1
  316. package/dist/src/alarms_and_conditions/shelving_state_machine.d.ts +0 -22
  317. package/dist/src/alarms_and_conditions/shelving_state_machine.js +0 -241
  318. package/dist/src/alarms_and_conditions/shelving_state_machine.js.map +0 -1
  319. package/dist/src/alarms_and_conditions/trip_alarm.d.ts +0 -16
  320. package/dist/src/alarms_and_conditions/trip_alarm.js +0 -21
  321. package/dist/src/alarms_and_conditions/trip_alarm.js.map +0 -1
  322. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.d.ts +0 -54
  323. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.js +0 -255
  324. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.js.map +0 -1
  325. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.d.ts +0 -138
  326. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.js +0 -460
  327. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.js.map +0 -1
  328. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.d.ts +0 -35
  329. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.js +0 -32
  330. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.js.map +0 -1
  331. package/dist/src/alarms_and_conditions/ua_condition_base.d.ts +0 -191
  332. package/dist/src/alarms_and_conditions/ua_condition_base.js +0 -1029
  333. package/dist/src/alarms_and_conditions/ua_condition_base.js.map +0 -1
  334. package/dist/src/alarms_and_conditions/ua_discrete_alarm.d.ts +0 -11
  335. package/dist/src/alarms_and_conditions/ua_discrete_alarm.js +0 -58
  336. package/dist/src/alarms_and_conditions/ua_discrete_alarm.js.map +0 -1
  337. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.d.ts +0 -24
  338. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.js +0 -59
  339. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.js.map +0 -1
  340. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.d.ts +0 -14
  341. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.js +0 -17
  342. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.js.map +0 -1
  343. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.d.ts +0 -22
  344. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.js +0 -87
  345. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.js.map +0 -1
  346. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.d.ts +0 -6
  347. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.js +0 -11
  348. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.js.map +0 -1
  349. package/dist/src/alarms_and_conditions/ua_limit_alarm.d.ts +0 -76
  350. package/dist/src/alarms_and_conditions/ua_limit_alarm.js +0 -237
  351. package/dist/src/alarms_and_conditions/ua_limit_alarm.js.map +0 -1
  352. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.d.ts +0 -27
  353. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.js +0 -62
  354. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.js.map +0 -1
  355. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.d.ts +0 -49
  356. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.js +0 -176
  357. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.js.map +0 -1
  358. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.d.ts +0 -47
  359. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.js +0 -151
  360. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.js.map +0 -1
  361. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.d.ts +0 -16
  362. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.js +0 -18
  363. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.js.map +0 -1
  364. package/dist/src/base_node.d.ts +0 -270
  365. package/dist/src/base_node.js +0 -1299
  366. package/dist/src/base_node.js.map +0 -1
  367. package/dist/src/data_access/ua_analog_item.d.ts +0 -13
  368. package/dist/src/data_access/ua_analog_item.js +0 -37
  369. package/dist/src/data_access/ua_analog_item.js.map +0 -1
  370. package/dist/src/data_access/ua_data_item.d.ts +0 -16
  371. package/dist/src/data_access/ua_data_item.js +0 -66
  372. package/dist/src/data_access/ua_data_item.js.map +0 -1
  373. package/dist/src/data_access/ua_multistate_discrete.d.ts +0 -24
  374. package/dist/src/data_access/ua_multistate_discrete.js +0 -132
  375. package/dist/src/data_access/ua_multistate_discrete.js.map +0 -1
  376. package/dist/src/namespace.d.ts +0 -472
  377. package/dist/src/namespace.js +0 -1759
  378. package/dist/src/namespace.js.map +0 -1
  379. package/dist/src/reference.d.ts +0 -43
  380. package/dist/src/reference.js +0 -138
  381. package/dist/src/reference.js.map +0 -1
  382. package/dist/src/session_context.d.ts +0 -4
  383. package/dist/src/session_context.js +0 -9
  384. package/dist/src/session_context.js.map +0 -1
  385. package/dist/src/ua_data_type.d.ts +0 -81
  386. package/dist/src/ua_data_type.js +0 -259
  387. package/dist/src/ua_data_type.js.map +0 -1
  388. package/dist/src/ua_method.d.ts +0 -33
  389. package/dist/src/ua_method.js +0 -194
  390. package/dist/src/ua_method.js.map +0 -1
  391. package/dist/src/ua_object.d.ts +0 -27
  392. package/dist/src/ua_object.js +0 -153
  393. package/dist/src/ua_object.js.map +0 -1
  394. package/dist/src/ua_object_type.d.ts +0 -49
  395. package/dist/src/ua_object_type.js +0 -123
  396. package/dist/src/ua_object_type.js.map +0 -1
  397. package/dist/src/ua_reference_type.d.ts +0 -31
  398. package/dist/src/ua_reference_type.js +0 -108
  399. package/dist/src/ua_reference_type.js.map +0 -1
  400. package/dist/src/ua_variable.d.ts +0 -346
  401. package/dist/src/ua_variable.js +0 -1651
  402. package/dist/src/ua_variable.js.map +0 -1
  403. package/dist/src/ua_variable_type.d.ts +0 -57
  404. package/dist/src/ua_variable_type.js +0 -530
  405. package/dist/src/ua_variable_type.js.map +0 -1
  406. package/dist/src/ua_view.d.ts +0 -16
  407. package/dist/src/ua_view.js +0 -41
  408. package/dist/src/ua_view.js.map +0 -1
@@ -1,706 +1,706 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseNode_add_backward_reference = exports.BaseNode_remove_backward_reference = exports._constructReferenceDescription = exports._handle_HierarchicalReference = exports._clone = exports._clone_non_hierarchical_references = exports._clone_children_references = exports.VariableOrVariableType_toString = exports.valueRankToString = exports.UAObjectType_toString = exports.UAObject_toString = exports.UAVariable_toString = exports.UAVariableType_toString = exports.BaseNode_References_toString = exports.BaseNode_toString = exports.ToStringBuilder = exports.BaseNode_clearCache = exports.BaseNode_getCache = exports.BaseNode_getPrivate = exports.BaseNode_removePrivate = exports.BaseNode_initPrivate = void 0;
4
- /**
5
- * @module node-opcua-address-space.Private
6
- */
7
- // tslint:disable:no-bitwise
8
- const chalk = require("chalk");
9
- const node_opcua_assert_1 = require("node-opcua-assert");
10
- const node_opcua_data_model_1 = require("node-opcua-data-model");
11
- const node_opcua_debug_1 = require("node-opcua-debug");
12
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
13
- const node_opcua_types_1 = require("node-opcua-types");
14
- const node_opcua_constants_1 = require("node-opcua-constants");
15
- const namespace_private_1 = require("./namespace_private");
16
- const reference_impl_1 = require("./reference_impl");
17
- const base_node_impl_1 = require("./base_node_impl");
18
- // eslint-disable-next-line prefer-const
19
- let doTrace = (0, node_opcua_debug_1.checkDebugFlag)("INSTANTIATE");
20
- const traceLog = console.log.bind(console);
21
- const g_weakMap = new WeakMap();
22
- const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
23
- function BaseNode_initPrivate(self) {
24
- const _private = {
25
- __address_space: null,
26
- _referenceIdx: {},
27
- _back_referenceIdx: {},
28
- _browseFilter: undefined,
29
- _cache: {},
30
- _description: undefined,
31
- _displayName: [],
32
- _parent: undefined,
33
- _subtype_idx: {},
34
- _subtype_idxVersion: 0
35
- };
36
- g_weakMap.set(self, _private);
37
- return _private;
38
- }
39
- exports.BaseNode_initPrivate = BaseNode_initPrivate;
40
- function BaseNode_removePrivate(self) {
41
- // there is no need to delete object from weak map
42
- // the GC will take care of this in due course
43
- // g_weakMap.delete(self);
44
- const _private = BaseNode_getPrivate(self);
45
- _private._cache = {};
46
- _private.__address_space = null;
47
- _private._back_referenceIdx = {};
48
- _private._referenceIdx = {};
49
- _private._description = undefined;
50
- _private._displayName = [];
51
- }
52
- exports.BaseNode_removePrivate = BaseNode_removePrivate;
53
- function BaseNode_getPrivate(self) {
54
- return g_weakMap.get(self);
55
- }
56
- exports.BaseNode_getPrivate = BaseNode_getPrivate;
57
- function BaseNode_getCache(node) {
58
- return BaseNode_getPrivate(node)._cache;
59
- }
60
- exports.BaseNode_getCache = BaseNode_getCache;
61
- function BaseNode_clearCache(node) {
62
- const _private = BaseNode_getPrivate(node);
63
- if (_private && _private._cache) {
64
- _private._cache = {};
65
- }
66
- }
67
- exports.BaseNode_clearCache = BaseNode_clearCache;
68
- const hasTypeDefinition_ReferenceTypeNodeId = (0, node_opcua_nodeid_1.resolveNodeId)("HasTypeDefinition");
69
- class ToStringBuilder {
70
- constructor() {
71
- this.level = 0;
72
- this.cycleDetector = {};
73
- this.padding = "";
74
- this.str = [];
75
- //
76
- this.str = [];
77
- }
78
- add(line) {
79
- this.str.push(line);
80
- }
81
- toString() {
82
- return this.str.join("\n");
83
- }
84
- indent(str, padding) {
85
- padding = padding || " ";
86
- return str
87
- .split("\n")
88
- .map((r) => {
89
- return padding + r;
90
- })
91
- .join("\n");
92
- }
93
- }
94
- exports.ToStringBuilder = ToStringBuilder;
95
- function set_as_processed(options, nodeId) {
96
- options.cycleDetector[nodeId.toString()] = nodeId;
97
- }
98
- function is_already_processed(options, nodeId) {
99
- return !!options.cycleDetector[nodeId.toString()];
100
- }
101
- function BaseNode_toString(options) {
102
- options.level = options.level || 1;
103
- set_as_processed(options, this.nodeId);
104
- options.add("");
105
- options.add(options.padding + chalk.yellow(" nodeId : ") + this.nodeId.toString());
106
- options.add(options.padding + chalk.yellow(" nodeClass : ") + node_opcua_data_model_1.NodeClass[this.nodeClass] + " (" + this.nodeClass + ")");
107
- options.add(options.padding + chalk.yellow(" browseName : ") + this.browseName.toString());
108
- options.add(options.padding +
109
- chalk.yellow(" displayName : ") +
110
- this.displayName.map((f) => f.locale + " " + f.text).join(" | "));
111
- options.add(options.padding + chalk.yellow(" description : ") + (this.description ? this.description.toString() : ""));
112
- }
113
- exports.BaseNode_toString = BaseNode_toString;
114
- function BaseNode_References_toString(options) {
115
- const _private = BaseNode_getPrivate(this);
116
- const displayOptions = {
117
- addressSpace: this.addressSpace
118
- };
119
- const addressSpace = this.addressSpace;
120
- options.add(options.padding +
121
- chalk.yellow(" references : ") +
122
- " length =" +
123
- Object.keys(_private._referenceIdx).length);
124
- function dump_reference(follow, reference) {
125
- if (!reference) {
126
- return;
127
- }
128
- const o = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
129
- if (!o) {
130
- warningLog("cannot find referece", reference.toString());
131
- return;
132
- }
133
- const name = o.browseName.toString();
134
- const modellingRule = o.modellingRule || " ";
135
- const extra = modellingRule[0] +
136
- (() => {
137
- switch (o.nodeClass) {
138
- case node_opcua_data_model_1.NodeClass.Object:
139
- return "[O] ";
140
- case node_opcua_data_model_1.NodeClass.Variable:
141
- return "[V] " + o.dataType.toString(displayOptions).padEnd(10);
142
- case node_opcua_data_model_1.NodeClass.Method:
143
- return "[M] ";
144
- case node_opcua_data_model_1.NodeClass.DataType:
145
- return "[DT]";
146
- case node_opcua_data_model_1.NodeClass.ReferenceType:
147
- return "[RT]";
148
- case node_opcua_data_model_1.NodeClass.ObjectType:
149
- return "[OT]";
150
- case node_opcua_data_model_1.NodeClass.VariableType:
151
- return "[VT]";
152
- case node_opcua_data_model_1.NodeClass.View:
153
- return "[V] ";
154
- }
155
- return "";
156
- })();
157
- options.add(options.padding +
158
- chalk.yellow(" +-> ") +
159
- reference.toString(displayOptions) +
160
- " " +
161
- chalk.cyan(name.padEnd(25, " ")) +
162
- " " +
163
- chalk.magentaBright(extra));
164
- // ignore HasTypeDefinition as it has been already handled
165
- if ((0, node_opcua_nodeid_1.sameNodeId)(reference.referenceType, hasTypeDefinition_ReferenceTypeNodeId) && reference.nodeId.namespace === 0) {
166
- return;
167
- }
168
- if (o) {
169
- if (!is_already_processed(options, o.nodeId)) {
170
- set_as_processed(options, o.nodeId);
171
- if (options.level > 1 && follow) {
172
- const rr = o.toString({
173
- cycleDetector: options.cycleDetector,
174
- level: options.level - 1,
175
- padding: options.padding + " "
176
- });
177
- options.add(rr);
178
- }
179
- }
180
- }
181
- }
182
- // direct reference
183
- Object.values(_private._referenceIdx).forEach(dump_reference.bind(null, true));
184
- const br = Object.values(_private._back_referenceIdx).map((x) => x);
185
- options.add(options.padding +
186
- chalk.yellow(" back_references : ") +
187
- chalk.cyan(" length =") +
188
- br.length +
189
- chalk.grey(" ( references held by other nodes involving this node)"));
190
- // backward reference
191
- br.forEach(dump_reference.bind(null, false));
192
- }
193
- exports.BaseNode_References_toString = BaseNode_References_toString;
194
- function _UAType_toString(options) {
195
- if (this.subtypeOfObj) {
196
- options.add(options.padding +
197
- chalk.yellow(" subtypeOf : ") +
198
- this.subtypeOfObj.browseName.toString() +
199
- " (" +
200
- this.subtypeOfObj.nodeId.toString() +
201
- ")");
202
- }
203
- }
204
- function _UAInstance_toString(options) {
205
- if (this.typeDefinitionObj) {
206
- options.add(options.padding +
207
- chalk.yellow(" typeDefinition : ") +
208
- this.typeDefinitionObj.browseName.toString() +
209
- " (" +
210
- this.typeDefinitionObj.nodeId.toString() +
211
- ")");
212
- }
213
- }
214
- function UAVariableType_toString(options) {
215
- BaseNode_toString.call(this, options);
216
- _UAType_toString.call(this, options);
217
- VariableOrVariableType_toString.call(this, options);
218
- BaseNode_References_toString.call(this, options);
219
- }
220
- exports.UAVariableType_toString = UAVariableType_toString;
221
- function UAVariable_toString(options) {
222
- BaseNode_toString.call(this, options);
223
- _UAInstance_toString.call(this, options);
224
- VariableOrVariableType_toString.call(this, options);
225
- AccessLevelFlags_toString.call(this, options);
226
- BaseNode_References_toString.call(this, options);
227
- }
228
- exports.UAVariable_toString = UAVariable_toString;
229
- function UAObject_toString(options) {
230
- BaseNode_toString.call(this, options);
231
- _UAInstance_toString.call(this, options);
232
- BaseNode_References_toString.call(this, options);
233
- }
234
- exports.UAObject_toString = UAObject_toString;
235
- function UAObjectType_toString(options) {
236
- BaseNode_toString.call(this, options);
237
- _UAType_toString.call(this, options);
238
- BaseNode_References_toString.call(this, options);
239
- }
240
- exports.UAObjectType_toString = UAObjectType_toString;
241
- function valueRankToString(valueRank) {
242
- switch (valueRank) {
243
- case 1:
244
- return "OneDimension (1)";
245
- case 0:
246
- return "OneOrMoreDimensions (0)"; // The value is an array with one or more dimensions
247
- case -1:
248
- return "Scalar (-1)";
249
- case -2:
250
- return "Any (-2)"; // The value can be a scalar or an array with any number of dimensions
251
- case -3:
252
- return "ScalarOrOneDimension (2)"; // The value can be a scalar or a one dimensional array.
253
- default:
254
- if (valueRank > 0) {
255
- return "" + valueRank + "-Dimensions";
256
- }
257
- else {
258
- return "Invalid (" + valueRank + ")";
259
- }
260
- }
261
- }
262
- exports.valueRankToString = valueRankToString;
263
- function accessLevelFlagToString(flag) {
264
- const str = [];
265
- if (flag & node_opcua_data_model_1.AccessLevelFlag.CurrentRead) {
266
- str.push("CurrentRead");
267
- }
268
- if (flag & node_opcua_data_model_1.AccessLevelFlag.CurrentWrite) {
269
- str.push("CurrentWrite");
270
- }
271
- if (flag & node_opcua_data_model_1.AccessLevelFlag.HistoryRead) {
272
- str.push("HistoryRead");
273
- }
274
- if (flag & node_opcua_data_model_1.AccessLevelFlag.HistoryWrite) {
275
- str.push("HistoryWrite");
276
- }
277
- if (flag & node_opcua_data_model_1.AccessLevelFlag.SemanticChange) {
278
- str.push("SemanticChange");
279
- }
280
- if (flag & node_opcua_data_model_1.AccessLevelFlag.StatusWrite) {
281
- str.push("StatusWrite");
282
- }
283
- if (flag & node_opcua_data_model_1.AccessLevelFlag.TimestampWrite) {
284
- str.push("TimestampWrite");
285
- }
286
- return str.join(" | ");
287
- }
288
- function AccessLevelFlags_toString(options) {
289
- (0, node_opcua_assert_1.assert)(options);
290
- options.add(options.padding + chalk.yellow(" accessLevel : ") + " " + accessLevelFlagToString(this.accessLevel));
291
- if (this.userAccessLevel !== undefined) {
292
- options.add(options.padding + chalk.yellow(" userAccessLevel : ") + " " + accessLevelFlagToString(this.userAccessLevel));
293
- }
294
- }
295
- function VariableOrVariableType_toString(options) {
296
- (0, node_opcua_assert_1.assert)(options);
297
- if (this.dataType) {
298
- const addressSpace = this.addressSpace;
299
- const d = addressSpace.findNode(this.dataType);
300
- const n = d ? "(" + d.browseName.toString() + ")" : " (???)";
301
- options.add(options.padding + chalk.yellow(" dataType : ") + this.dataType + " " + n);
302
- }
303
- if (this.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
304
- const _dataValue = this.$dataValue;
305
- if (_dataValue) {
306
- options.add(options.padding +
307
- chalk.yellow(" value : ") +
308
- "\n" +
309
- options.indent(_dataValue.toString(), options.padding + " | "));
310
- }
311
- }
312
- if (Object.prototype.hasOwnProperty.call(this, "valueRank")) {
313
- if (this.valueRank !== undefined) {
314
- options.add(options.padding + chalk.yellow(" valueRank : ") + " " + valueRankToString(this.valueRank));
315
- }
316
- else {
317
- options.add(options.padding + chalk.yellow(" valueRank : ") + " undefined");
318
- }
319
- }
320
- if (this.minimumSamplingInterval !== undefined) {
321
- options.add(options.padding +
322
- chalk.yellow(" minimumSamplingInterval : ") +
323
- " " +
324
- this.minimumSamplingInterval.toString() +
325
- " ms");
326
- }
327
- if (this.arrayDimensions) {
328
- options.add(options.padding +
329
- chalk.yellow(" arrayDimension : ") +
330
- " [" +
331
- this.arrayDimensions.join(",").toString() +
332
- " ]");
333
- }
334
- }
335
- exports.VariableOrVariableType_toString = VariableOrVariableType_toString;
336
- const defaultExtraInfo = {
337
- level: 0,
338
- pad() {
339
- return "";
340
- },
341
- registerClonedObject(node, node1) {
342
- /** */
343
- }
344
- };
345
- /**
346
- * clone properties and methods
347
- * @private
348
- */
349
- function _clone_collection_new(newParent, collectionRef, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap) {
350
- var _a;
351
- const namespace = newParent.namespace;
352
- extraInfo = extraInfo || defaultExtraInfo;
353
- const addressSpace = newParent.addressSpace;
354
- (0, node_opcua_assert_1.assert)(!optionalFilter || (typeof optionalFilter.shouldKeep === "function" && typeof optionalFilter.filterFor === "function"));
355
- for (const reference of collectionRef) {
356
- const node = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
357
- // ensure node is of the correct type,
358
- // it may happen that the xml nodeset2 file was malformed
359
- // istanbul ignore next
360
- if (typeof node.clone !== "function") {
361
- // tslint:disable-next-line:no-console
362
- warningLog(chalk.red("Warning : cannot clone node ") +
363
- node.browseName.toString() +
364
- " of class " +
365
- node_opcua_data_model_1.NodeClass[node.nodeClass].toString() +
366
- " while cloning " +
367
- newParent.browseName.toString());
368
- continue;
369
- }
370
- if (optionalFilter && node && !optionalFilter.shouldKeep(node)) {
371
- doTrace && traceLog(extraInfo.pad(), "skipping optional ", node.browseName.toString(), "that doesn't appear in the filter");
372
- continue; // skip this node
373
- }
374
- const key = node.browseName.toString();
375
- if (browseNameMap === null || browseNameMap === void 0 ? void 0 : browseNameMap.has(key)) {
376
- continue; // skipping node with same browseName
377
- }
378
- browseNameMap === null || browseNameMap === void 0 ? void 0 : browseNameMap.add(key);
379
- // assert(reference.isForward);
380
- // assert(reference.referenceType instanceof NodeId, "" + reference.referenceType.toString());
381
- const options = {
382
- namespace,
383
- references: [new reference_impl_1.ReferenceImpl({ referenceType: reference.referenceType, isForward: false, nodeId: newParent.nodeId })],
384
- copyAlsoModellingRules
385
- };
386
- doTrace &&
387
- traceLog(extraInfo.pad(), "cloning => ", reference.referenceType.toString({ addressSpace }), "=>", node.browseName.toString(), chalk.magentaBright((_a = node.typeDefinitionObj) === null || _a === void 0 ? void 0 : _a.browseName.toString()));
388
- extraInfo.level += 4;
389
- const clone = node.clone(options, optionalFilter, extraInfo);
390
- extraInfo.level -= 4;
391
- // also clone or instantiate interface members that may be required in the optionals
392
- extraInfo.level++;
393
- _cloneInterface(newParent, node, optionalFilter, extraInfo, browseNameMap);
394
- extraInfo.level--;
395
- if (extraInfo) {
396
- extraInfo.registerClonedObject(node, clone);
397
- }
398
- }
399
- }
400
- function _extractInterfaces2(typeDefinitionNode, extraInfo) {
401
- if (!typeDefinitionNode ||
402
- (typeDefinitionNode.nodeId.namespace === 0 &&
403
- (typeDefinitionNode.nodeId.value === node_opcua_constants_1.ObjectTypeIds.BaseObjectType ||
404
- typeDefinitionNode.nodeId.value === node_opcua_constants_1.VariableTypeIds.BaseVariableType))) {
405
- return [];
406
- }
407
- const addressSpace = typeDefinitionNode.addressSpace;
408
- // example:
409
- // FolderType
410
- // FunctionalGroupType
411
- // MachineryItemIdentificationType : IMachineryItemVendorNameplateType
412
- // MachineIdentificationType : IMachineTagNameplateType, IMachineVendorNamePlateType
413
- // MachineToolIdentificationType
414
- //
415
- //
416
- // IMachineTagNameplateType -subTypeOf-> ITagNameplateType
417
- // IMachineVendorNamePlateType -subTypeOf-> IMachineryItemVendorNamePlateType
418
- // IMachineryItemVendorNamePlateType -subTypeOf-> IVendorNameplateType
419
- const interfacesRef = typeDefinitionNode.findReferencesEx("HasInterface", node_opcua_data_model_1.BrowseDirection.Forward);
420
- const interfaces = interfacesRef.map((r) => addressSpace.findNode(r.nodeId));
421
- const baseInterfaces = [];
422
- for (const iface of interfaces) {
423
- doTrace &&
424
- traceLog(extraInfo.pad(), typeDefinitionNode.browseName.toString(), " - has interface -> ", iface.browseName.toString());
425
- baseInterfaces.push(iface);
426
- if (iface.subtypeOfObj) {
427
- extraInfo.level++;
428
- baseInterfaces.push(..._extractInterfaces2(iface.subtypeOfObj, extraInfo));
429
- extraInfo.level--;
430
- }
431
- }
432
- interfaces.push(...baseInterfaces);
433
- if (typeDefinitionNode.subtypeOfObj) {
434
- doTrace &&
435
- traceLog(extraInfo.pad(), typeDefinitionNode.browseName.toString(), " - subtypef -> ", typeDefinitionNode.subtypeOfObj.browseName.toString());
436
- extraInfo.level++;
437
- interfaces.push(..._extractInterfaces2(typeDefinitionNode.subtypeOfObj, extraInfo));
438
- extraInfo.level--;
439
- }
440
- const dedupedInterfaces = [...new Set(interfaces)];
441
- doTrace &&
442
- traceLog(extraInfo.pad(), chalk.yellow("Interface for ", typeDefinitionNode.browseName.toString()), "=", dedupedInterfaces.map((x) => x.browseName.toString()).join(" "));
443
- return dedupedInterfaces;
444
- }
445
- /*
446
-
447
- // also find all related interfaces
448
- if (false && typeDefinitionNode) {
449
- dotrace && tracelog("typeDefinitionNode = ", typeDefinitionNode.browseName.toString());
450
- const interfaces = _extractInterfaces(typeDefinitionNode);
451
- for (const interfaceNode of interfaces) {
452
- dotrace && tracelog(" adding member of interface ", interfaceNode.browseName.toString());
453
- const fromInterface = interfaceNode.findReferencesEx("Aggregates", BrowseDirection.Forward);
454
- dotrace && tracelog(
455
- " B ",
456
- fromInterface.map((r) => r.toString({ addressSpace }) + " " + r.node!.browseName.toString()).join("\n")
457
- );
458
- add(fromInterface);
459
- }
460
- }
461
- */
462
- function _crap_extractInterfaces(typeDefinitionNode, extraInfo) {
463
- if (typeDefinitionNode.nodeId.namespace === 0 &&
464
- (typeDefinitionNode.nodeId.value === node_opcua_constants_1.ObjectTypeIds.BaseObjectType ||
465
- typeDefinitionNode.nodeId.value === node_opcua_constants_1.VariableTypeIds.BaseVariableType)) {
466
- return [];
467
- }
468
- const addressSpace = typeDefinitionNode.addressSpace;
469
- // example:
470
- // FolderType
471
- // FunctionalGroupType
472
- // MachineryItemIdentificationType : IMachineryItemVendorNameplateType
473
- // MachineIdentificationType : IMachineTagNameplateType, IMachineVendorNamePlateType
474
- // MachineToolIdentificationType
475
- //
476
- //
477
- // IMachineTagNameplateType -subTypeOf-> ITagNameplateType
478
- // IMachineVendorNamePlateType -subTypeOf-> IMachineryItemVendorNamePlateType
479
- // IMachineryItemVendorNamePlateType -subTypeOf-> IVendorNameplateType
480
- const interfacesRef = typeDefinitionNode.findReferencesEx("HasInterface", node_opcua_data_model_1.BrowseDirection.Forward);
481
- const interfaces = interfacesRef.map((r) => r.node);
482
- for (const iface of interfaces) {
483
- doTrace && traceLog(extraInfo.pad(), " interface ", iface.browseName.toString());
484
- }
485
- return interfaces;
486
- }
487
- function _cloneInterface(newParent, node, optionalFilter, extraInfo, browseNameMap) {
488
- doTrace &&
489
- traceLog(extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad(), chalk.green("-------------------- now cloning interfaces of ", node.browseName.toString(), node.nodeId.toString()));
490
- extraInfo = extraInfo || defaultExtraInfo;
491
- const addressSpace = node.addressSpace;
492
- const typeDefinitionNode = node.typeDefinitionObj;
493
- if (!typeDefinitionNode) {
494
- return;
495
- }
496
- const interfaces = _extractInterfaces2(typeDefinitionNode, extraInfo);
497
- if (interfaces.length === 0) {
498
- if (doTrace) {
499
- traceLog(extraInfo.pad(), chalk.yellow("No interface for ", node.browseName.toString(), node.nodeId.toString()));
500
- }
501
- return;
502
- }
503
- doTrace && traceLog(extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad(), chalk.green("-------------------- interfaces are ", interfaces.length));
504
- const localFilter = optionalFilter.filterFor(node);
505
- for (const iface of interfaces) {
506
- const aggregates = iface.findReferencesEx("Aggregates", node_opcua_data_model_1.BrowseDirection.Forward);
507
- doTrace &&
508
- traceLog(extraInfo.pad(), chalk.magentaBright(" interface ", iface.browseName.toString()), "\n" + (extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad()), aggregates.map((r) => r.toString({ addressSpace })).join("\n" + (extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad())));
509
- _clone_collection_new(node, aggregates, false, localFilter, extraInfo, browseNameMap);
510
- }
511
- }
512
- function _clone_children_references(node, newParent, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap) {
513
- // find all reference that derives from the Aggregates
514
- const aggregatesRef = node.findReferencesEx("Aggregates", node_opcua_data_model_1.BrowseDirection.Forward);
515
- _clone_collection_new(newParent, aggregatesRef, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap);
516
- }
517
- exports._clone_children_references = _clone_children_references;
518
- function _clone_non_hierarchical_references(node, newParent, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap) {
519
- // clone only some non hierarchical_references that we do want to clone
520
- // such as:
521
- // HasSubStateMachine
522
- // (may be other as well later ... to do )
523
- (0, node_opcua_assert_1.assert)(newParent instanceof base_node_impl_1.BaseNodeImpl);
524
- // find all reference that derives from the HasSubStateMachine
525
- const references = node.findReferencesEx("HasSubStateMachine", node_opcua_data_model_1.BrowseDirection.Forward);
526
- _clone_collection_new(newParent, references, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap);
527
- }
528
- exports._clone_non_hierarchical_references = _clone_non_hierarchical_references;
529
- /**
530
- * @method _clone
531
- * @private
532
- */
533
- function _clone(Constructor, options, optionalFilter, extraInfo) {
534
- (0, node_opcua_assert_1.assert)(typeof Constructor === "function");
535
- (0, node_opcua_assert_1.assert)(options !== null && typeof options === "object");
536
- (0, node_opcua_assert_1.assert)(!extraInfo || (extraInfo !== null && typeof extraInfo === "object" && typeof extraInfo.registerClonedObject === "function"));
537
- (0, node_opcua_assert_1.assert)(!this.subtypeOf, "We do not do cloning of Type yet");
538
- const namespace = options.namespace;
539
- const constructorOptions = Object.assign(Object.assign({}, options), { addressSpace: namespace.addressSpace, browseName: this.browseName, description: this.description, displayName: this.displayName, nodeClass: this.nodeClass });
540
- constructorOptions.references = options.references || [];
541
- if (this.nodeClass === node_opcua_data_model_1.NodeClass.Variable || this.nodeClass === node_opcua_data_model_1.NodeClass.Object) {
542
- const voThis = this;
543
- if (voThis.typeDefinition) {
544
- constructorOptions.references.push(new reference_impl_1.ReferenceImpl({
545
- isForward: true,
546
- nodeId: voThis.typeDefinition,
547
- referenceType: (0, node_opcua_nodeid_1.resolveNodeId)("HasTypeDefinition")
548
- }));
549
- }
550
- }
551
- if (!constructorOptions.modellingRule) {
552
- if (this.modellingRule && options.copyAlsoModellingRules) {
553
- const modellingRuleNode = this.findReferencesAsObject("HasModellingRule", true)[0];
554
- (0, node_opcua_assert_1.assert)(modellingRuleNode);
555
- constructorOptions.references.push(new reference_impl_1.ReferenceImpl({
556
- isForward: true,
557
- nodeId: modellingRuleNode.nodeId,
558
- referenceType: (0, node_opcua_nodeid_1.resolveNodeId)("HasModellingRule")
559
- }));
560
- }
561
- }
562
- else {
563
- (0, namespace_private_1.UANamespace_process_modelling_rule)(constructorOptions.references, constructorOptions.modellingRule);
564
- }
565
- constructorOptions.nodeId = namespace.constructNodeId(constructorOptions);
566
- (0, node_opcua_assert_1.assert)(constructorOptions.nodeId instanceof node_opcua_nodeid_1.NodeId);
567
- const cloneObj = new Constructor(constructorOptions);
568
- this.addressSpace._register(cloneObj);
569
- if (!options.ignoreChildren) {
570
- // clone children and the rest ....
571
- options.copyAlsoModellingRules = options.copyAlsoModellingRules || false;
572
- const newFilter = optionalFilter.filterFor(cloneObj);
573
- const browseNameMap = new Set();
574
- _clone_children_references(this, cloneObj, options.copyAlsoModellingRules, newFilter, extraInfo, browseNameMap);
575
- //
576
- let typeDefinitionNode = this.typeDefinitionObj;
577
- while (typeDefinitionNode) {
578
- doTrace &&
579
- traceLog(extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad(), chalk.blueBright("---------------------- Exploring ", typeDefinitionNode.browseName.toString()));
580
- _clone_children_references(typeDefinitionNode, cloneObj, options.copyAlsoModellingRules, newFilter, extraInfo, browseNameMap);
581
- typeDefinitionNode = typeDefinitionNode.subtypeOfObj;
582
- }
583
- _clone_non_hierarchical_references(this, cloneObj, options.copyAlsoModellingRules, newFilter, extraInfo, browseNameMap);
584
- }
585
- cloneObj.propagate_back_references();
586
- cloneObj.install_extra_properties();
587
- return cloneObj;
588
- }
589
- exports._clone = _clone;
590
- function _handle_HierarchicalReference(node, reference) {
591
- const _cache = BaseNode_getCache(node);
592
- if (!reference.isForward)
593
- return;
594
- if (_cache._childByNameMap) {
595
- const addressSpace = node.addressSpace;
596
- const referenceType = reference_impl_1.ReferenceImpl.resolveReferenceType(addressSpace, reference);
597
- if (referenceType) {
598
- const HierarchicalReferencesType = addressSpace.findReferenceType("HierarchicalReferences");
599
- if (referenceType.isSupertypeOf(HierarchicalReferencesType)) {
600
- (0, node_opcua_assert_1.assert)(reference.isForward);
601
- const targetNode = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
602
- _cache._childByNameMap[targetNode.browseName.name.toString()] = targetNode;
603
- }
604
- }
605
- }
606
- }
607
- exports._handle_HierarchicalReference = _handle_HierarchicalReference;
608
- function _remove_HierarchicalReference(node, reference) {
609
- const _cache = BaseNode_getCache(node);
610
- if (_cache._childByNameMap) {
611
- const addressSpace = node.addressSpace;
612
- const referenceType = reference_impl_1.ReferenceImpl.resolveReferenceType(addressSpace, reference);
613
- if (referenceType) {
614
- const HierarchicalReferencesType = addressSpace.findReferenceType("HierarchicalReferences");
615
- if (referenceType.isSupertypeOf(HierarchicalReferencesType)) {
616
- (0, node_opcua_assert_1.assert)(reference.isForward);
617
- const targetNode = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
618
- // Xx dotrace && tracelog(" adding object to map");
619
- delete _cache._childByNameMap[targetNode.browseName.name.toString()];
620
- }
621
- }
622
- }
623
- }
624
- function _makeReferenceDescription(addressSpace, reference, resultMask) {
625
- const isForward = reference.isForward;
626
- const referenceTypeId = reference_impl_1.ReferenceImpl.resolveReferenceType(addressSpace, reference).nodeId;
627
- (0, node_opcua_assert_1.assert)(referenceTypeId instanceof node_opcua_nodeid_1.NodeId);
628
- const obj = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
629
- let data = {};
630
- if (!obj) {
631
- // cannot find reference node
632
- data = {
633
- isForward,
634
- nodeId: reference.nodeId,
635
- referenceTypeId: resultMask & node_opcua_data_model_1.ResultMask.ReferenceType ? referenceTypeId : null,
636
- typeDefinition: null
637
- };
638
- }
639
- else {
640
- (0, node_opcua_assert_1.assert)(reference.nodeId, " obj.nodeId");
641
- data = {
642
- browseName: resultMask & node_opcua_data_model_1.ResultMask.BrowseName ? (0, node_opcua_data_model_1.coerceQualifiedName)(obj.browseName) : null,
643
- displayName: resultMask & node_opcua_data_model_1.ResultMask.DisplayName ? (0, node_opcua_data_model_1.coerceLocalizedText)(obj.displayName[0]) : null,
644
- isForward: resultMask & node_opcua_data_model_1.ResultMask.IsForward ? isForward : false,
645
- nodeClass: resultMask & node_opcua_data_model_1.ResultMask.NodeClass ? obj.nodeClass : node_opcua_data_model_1.NodeClass.Unspecified,
646
- nodeId: obj.nodeId,
647
- referenceTypeId: resultMask & node_opcua_data_model_1.ResultMask.ReferenceType ? referenceTypeId : null,
648
- typeDefinition: resultMask & node_opcua_data_model_1.ResultMask.TypeDefinition ? obj.typeDefinition : null
649
- };
650
- }
651
- if (data.typeDefinition === null) {
652
- data.typeDefinition = new node_opcua_nodeid_1.NodeId();
653
- }
654
- const referenceDescription = new node_opcua_types_1.ReferenceDescription(data);
655
- return referenceDescription;
656
- }
657
- function _constructReferenceDescription(addressSpace, references, resultMask) {
658
- (0, node_opcua_assert_1.assert)(Array.isArray(references));
659
- return references.map((reference) => _makeReferenceDescription(addressSpace, reference, resultMask));
660
- }
661
- exports._constructReferenceDescription = _constructReferenceDescription;
662
- function BaseNode_remove_backward_reference(reference) {
663
- const _private = BaseNode_getPrivate(this);
664
- _remove_HierarchicalReference(this, reference);
665
- const h = reference.hash;
666
- if (_private._back_referenceIdx && _private._back_referenceIdx[h]) {
667
- // note : h may not exist in _back_referenceIdx since we are not indexing
668
- // _back_referenceIdx to UAObjectType and UAVariableType for performance reasons
669
- _private._back_referenceIdx[h].dispose();
670
- delete _private._back_referenceIdx[h];
671
- }
672
- reference.dispose();
673
- }
674
- exports.BaseNode_remove_backward_reference = BaseNode_remove_backward_reference;
675
- function BaseNode_add_backward_reference(reference) {
676
- const _private = BaseNode_getPrivate(this);
677
- const h = reference.hash;
678
- (0, node_opcua_assert_1.assert)(typeof h === "string");
679
- // istanbul ignore next
680
- if (_private._referenceIdx[h]) {
681
- // the reference exists already in the forward references
682
- // this append for instance when the XML NotSetFile has redundant <UAReference>
683
- // in this case there is nothing to do
684
- return;
685
- }
686
- // istanbul ignore next
687
- if (_private._back_referenceIdx[h]) {
688
- const opts = { addressSpace: this.addressSpace };
689
- warningLog(" Warning !", this.browseName.toString());
690
- warningLog(" ", reference.toString(opts));
691
- warningLog(" already found in ===>");
692
- warningLog(Object.values(_private._back_referenceIdx).map((c) => c.toString(opts)).join("\n"));
693
- // tslint:disable-next-line:no-console
694
- warningLog("===>");
695
- throw new Error("reference exists already in _back_references");
696
- }
697
- if (!(0, base_node_impl_1.getReferenceType)(reference)) {
698
- const stop_here = 1;
699
- }
700
- // assert(reference._referenceType instanceof ReferenceType);
701
- _private._back_referenceIdx[h] = reference;
702
- _handle_HierarchicalReference(this, reference);
703
- this._clear_caches();
704
- }
705
- exports.BaseNode_add_backward_reference = BaseNode_add_backward_reference;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseNode_add_backward_reference = exports.BaseNode_remove_backward_reference = exports._constructReferenceDescription = exports._handle_HierarchicalReference = exports._clone = exports._clone_non_hierarchical_references = exports._clone_children_references = exports.VariableOrVariableType_toString = exports.valueRankToString = exports.UAObjectType_toString = exports.UAObject_toString = exports.UAVariable_toString = exports.UAVariableType_toString = exports.BaseNode_References_toString = exports.BaseNode_toString = exports.ToStringBuilder = exports.BaseNode_clearCache = exports.BaseNode_getCache = exports.BaseNode_getPrivate = exports.BaseNode_removePrivate = exports.BaseNode_initPrivate = void 0;
4
+ /**
5
+ * @module node-opcua-address-space.Private
6
+ */
7
+ // tslint:disable:no-bitwise
8
+ const chalk = require("chalk");
9
+ const node_opcua_assert_1 = require("node-opcua-assert");
10
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
11
+ const node_opcua_debug_1 = require("node-opcua-debug");
12
+ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
13
+ const node_opcua_types_1 = require("node-opcua-types");
14
+ const node_opcua_constants_1 = require("node-opcua-constants");
15
+ const namespace_private_1 = require("./namespace_private");
16
+ const reference_impl_1 = require("./reference_impl");
17
+ const base_node_impl_1 = require("./base_node_impl");
18
+ // eslint-disable-next-line prefer-const
19
+ let doTrace = (0, node_opcua_debug_1.checkDebugFlag)("INSTANTIATE");
20
+ const traceLog = console.log.bind(console);
21
+ const g_weakMap = new WeakMap();
22
+ const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
23
+ function BaseNode_initPrivate(self) {
24
+ const _private = {
25
+ __address_space: null,
26
+ _referenceIdx: {},
27
+ _back_referenceIdx: {},
28
+ _browseFilter: undefined,
29
+ _cache: {},
30
+ _description: undefined,
31
+ _displayName: [],
32
+ _parent: undefined,
33
+ _subtype_idx: {},
34
+ _subtype_idxVersion: 0
35
+ };
36
+ g_weakMap.set(self, _private);
37
+ return _private;
38
+ }
39
+ exports.BaseNode_initPrivate = BaseNode_initPrivate;
40
+ function BaseNode_removePrivate(self) {
41
+ // there is no need to delete object from weak map
42
+ // the GC will take care of this in due course
43
+ // g_weakMap.delete(self);
44
+ const _private = BaseNode_getPrivate(self);
45
+ _private._cache = {};
46
+ _private.__address_space = null;
47
+ _private._back_referenceIdx = {};
48
+ _private._referenceIdx = {};
49
+ _private._description = undefined;
50
+ _private._displayName = [];
51
+ }
52
+ exports.BaseNode_removePrivate = BaseNode_removePrivate;
53
+ function BaseNode_getPrivate(self) {
54
+ return g_weakMap.get(self);
55
+ }
56
+ exports.BaseNode_getPrivate = BaseNode_getPrivate;
57
+ function BaseNode_getCache(node) {
58
+ return BaseNode_getPrivate(node)._cache;
59
+ }
60
+ exports.BaseNode_getCache = BaseNode_getCache;
61
+ function BaseNode_clearCache(node) {
62
+ const _private = BaseNode_getPrivate(node);
63
+ if (_private && _private._cache) {
64
+ _private._cache = {};
65
+ }
66
+ }
67
+ exports.BaseNode_clearCache = BaseNode_clearCache;
68
+ const hasTypeDefinition_ReferenceTypeNodeId = (0, node_opcua_nodeid_1.resolveNodeId)("HasTypeDefinition");
69
+ class ToStringBuilder {
70
+ constructor() {
71
+ this.level = 0;
72
+ this.cycleDetector = {};
73
+ this.padding = "";
74
+ this.str = [];
75
+ //
76
+ this.str = [];
77
+ }
78
+ add(line) {
79
+ this.str.push(line);
80
+ }
81
+ toString() {
82
+ return this.str.join("\n");
83
+ }
84
+ indent(str, padding) {
85
+ padding = padding || " ";
86
+ return str
87
+ .split("\n")
88
+ .map((r) => {
89
+ return padding + r;
90
+ })
91
+ .join("\n");
92
+ }
93
+ }
94
+ exports.ToStringBuilder = ToStringBuilder;
95
+ function set_as_processed(options, nodeId) {
96
+ options.cycleDetector[nodeId.toString()] = nodeId;
97
+ }
98
+ function is_already_processed(options, nodeId) {
99
+ return !!options.cycleDetector[nodeId.toString()];
100
+ }
101
+ function BaseNode_toString(options) {
102
+ options.level = options.level || 1;
103
+ set_as_processed(options, this.nodeId);
104
+ options.add("");
105
+ options.add(options.padding + chalk.yellow(" nodeId : ") + this.nodeId.toString());
106
+ options.add(options.padding + chalk.yellow(" nodeClass : ") + node_opcua_data_model_1.NodeClass[this.nodeClass] + " (" + this.nodeClass + ")");
107
+ options.add(options.padding + chalk.yellow(" browseName : ") + this.browseName.toString());
108
+ options.add(options.padding +
109
+ chalk.yellow(" displayName : ") +
110
+ this.displayName.map((f) => f.locale + " " + f.text).join(" | "));
111
+ options.add(options.padding + chalk.yellow(" description : ") + (this.description ? this.description.toString() : ""));
112
+ }
113
+ exports.BaseNode_toString = BaseNode_toString;
114
+ function BaseNode_References_toString(options) {
115
+ const _private = BaseNode_getPrivate(this);
116
+ const displayOptions = {
117
+ addressSpace: this.addressSpace
118
+ };
119
+ const addressSpace = this.addressSpace;
120
+ options.add(options.padding +
121
+ chalk.yellow(" references : ") +
122
+ " length =" +
123
+ Object.keys(_private._referenceIdx).length);
124
+ function dump_reference(follow, reference) {
125
+ if (!reference) {
126
+ return;
127
+ }
128
+ const o = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
129
+ if (!o) {
130
+ warningLog("cannot find referece", reference.toString());
131
+ return;
132
+ }
133
+ const name = o.browseName.toString();
134
+ const modellingRule = o.modellingRule || " ";
135
+ const extra = modellingRule[0] +
136
+ (() => {
137
+ switch (o.nodeClass) {
138
+ case node_opcua_data_model_1.NodeClass.Object:
139
+ return "[O] ";
140
+ case node_opcua_data_model_1.NodeClass.Variable:
141
+ return "[V] " + o.dataType.toString(displayOptions).padEnd(10);
142
+ case node_opcua_data_model_1.NodeClass.Method:
143
+ return "[M] ";
144
+ case node_opcua_data_model_1.NodeClass.DataType:
145
+ return "[DT]";
146
+ case node_opcua_data_model_1.NodeClass.ReferenceType:
147
+ return "[RT]";
148
+ case node_opcua_data_model_1.NodeClass.ObjectType:
149
+ return "[OT]";
150
+ case node_opcua_data_model_1.NodeClass.VariableType:
151
+ return "[VT]";
152
+ case node_opcua_data_model_1.NodeClass.View:
153
+ return "[V] ";
154
+ }
155
+ return "";
156
+ })();
157
+ options.add(options.padding +
158
+ chalk.yellow(" +-> ") +
159
+ reference.toString(displayOptions) +
160
+ " " +
161
+ chalk.cyan(name.padEnd(25, " ")) +
162
+ " " +
163
+ chalk.magentaBright(extra));
164
+ // ignore HasTypeDefinition as it has been already handled
165
+ if ((0, node_opcua_nodeid_1.sameNodeId)(reference.referenceType, hasTypeDefinition_ReferenceTypeNodeId) && reference.nodeId.namespace === 0) {
166
+ return;
167
+ }
168
+ if (o) {
169
+ if (!is_already_processed(options, o.nodeId)) {
170
+ set_as_processed(options, o.nodeId);
171
+ if (options.level > 1 && follow) {
172
+ const rr = o.toString({
173
+ cycleDetector: options.cycleDetector,
174
+ level: options.level - 1,
175
+ padding: options.padding + " "
176
+ });
177
+ options.add(rr);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ // direct reference
183
+ Object.values(_private._referenceIdx).forEach(dump_reference.bind(null, true));
184
+ const br = Object.values(_private._back_referenceIdx).map((x) => x);
185
+ options.add(options.padding +
186
+ chalk.yellow(" back_references : ") +
187
+ chalk.cyan(" length =") +
188
+ br.length +
189
+ chalk.grey(" ( references held by other nodes involving this node)"));
190
+ // backward reference
191
+ br.forEach(dump_reference.bind(null, false));
192
+ }
193
+ exports.BaseNode_References_toString = BaseNode_References_toString;
194
+ function _UAType_toString(options) {
195
+ if (this.subtypeOfObj) {
196
+ options.add(options.padding +
197
+ chalk.yellow(" subtypeOf : ") +
198
+ this.subtypeOfObj.browseName.toString() +
199
+ " (" +
200
+ this.subtypeOfObj.nodeId.toString() +
201
+ ")");
202
+ }
203
+ }
204
+ function _UAInstance_toString(options) {
205
+ if (this.typeDefinitionObj) {
206
+ options.add(options.padding +
207
+ chalk.yellow(" typeDefinition : ") +
208
+ this.typeDefinitionObj.browseName.toString() +
209
+ " (" +
210
+ this.typeDefinitionObj.nodeId.toString() +
211
+ ")");
212
+ }
213
+ }
214
+ function UAVariableType_toString(options) {
215
+ BaseNode_toString.call(this, options);
216
+ _UAType_toString.call(this, options);
217
+ VariableOrVariableType_toString.call(this, options);
218
+ BaseNode_References_toString.call(this, options);
219
+ }
220
+ exports.UAVariableType_toString = UAVariableType_toString;
221
+ function UAVariable_toString(options) {
222
+ BaseNode_toString.call(this, options);
223
+ _UAInstance_toString.call(this, options);
224
+ VariableOrVariableType_toString.call(this, options);
225
+ AccessLevelFlags_toString.call(this, options);
226
+ BaseNode_References_toString.call(this, options);
227
+ }
228
+ exports.UAVariable_toString = UAVariable_toString;
229
+ function UAObject_toString(options) {
230
+ BaseNode_toString.call(this, options);
231
+ _UAInstance_toString.call(this, options);
232
+ BaseNode_References_toString.call(this, options);
233
+ }
234
+ exports.UAObject_toString = UAObject_toString;
235
+ function UAObjectType_toString(options) {
236
+ BaseNode_toString.call(this, options);
237
+ _UAType_toString.call(this, options);
238
+ BaseNode_References_toString.call(this, options);
239
+ }
240
+ exports.UAObjectType_toString = UAObjectType_toString;
241
+ function valueRankToString(valueRank) {
242
+ switch (valueRank) {
243
+ case 1:
244
+ return "OneDimension (1)";
245
+ case 0:
246
+ return "OneOrMoreDimensions (0)"; // The value is an array with one or more dimensions
247
+ case -1:
248
+ return "Scalar (-1)";
249
+ case -2:
250
+ return "Any (-2)"; // The value can be a scalar or an array with any number of dimensions
251
+ case -3:
252
+ return "ScalarOrOneDimension (2)"; // The value can be a scalar or a one dimensional array.
253
+ default:
254
+ if (valueRank > 0) {
255
+ return "" + valueRank + "-Dimensions";
256
+ }
257
+ else {
258
+ return "Invalid (" + valueRank + ")";
259
+ }
260
+ }
261
+ }
262
+ exports.valueRankToString = valueRankToString;
263
+ function accessLevelFlagToString(flag) {
264
+ const str = [];
265
+ if (flag & node_opcua_data_model_1.AccessLevelFlag.CurrentRead) {
266
+ str.push("CurrentRead");
267
+ }
268
+ if (flag & node_opcua_data_model_1.AccessLevelFlag.CurrentWrite) {
269
+ str.push("CurrentWrite");
270
+ }
271
+ if (flag & node_opcua_data_model_1.AccessLevelFlag.HistoryRead) {
272
+ str.push("HistoryRead");
273
+ }
274
+ if (flag & node_opcua_data_model_1.AccessLevelFlag.HistoryWrite) {
275
+ str.push("HistoryWrite");
276
+ }
277
+ if (flag & node_opcua_data_model_1.AccessLevelFlag.SemanticChange) {
278
+ str.push("SemanticChange");
279
+ }
280
+ if (flag & node_opcua_data_model_1.AccessLevelFlag.StatusWrite) {
281
+ str.push("StatusWrite");
282
+ }
283
+ if (flag & node_opcua_data_model_1.AccessLevelFlag.TimestampWrite) {
284
+ str.push("TimestampWrite");
285
+ }
286
+ return str.join(" | ");
287
+ }
288
+ function AccessLevelFlags_toString(options) {
289
+ (0, node_opcua_assert_1.assert)(options);
290
+ options.add(options.padding + chalk.yellow(" accessLevel : ") + " " + accessLevelFlagToString(this.accessLevel));
291
+ if (this.userAccessLevel !== undefined) {
292
+ options.add(options.padding + chalk.yellow(" userAccessLevel : ") + " " + accessLevelFlagToString(this.userAccessLevel));
293
+ }
294
+ }
295
+ function VariableOrVariableType_toString(options) {
296
+ (0, node_opcua_assert_1.assert)(options);
297
+ if (this.dataType) {
298
+ const addressSpace = this.addressSpace;
299
+ const d = addressSpace.findNode(this.dataType);
300
+ const n = d ? "(" + d.browseName.toString() + ")" : " (???)";
301
+ options.add(options.padding + chalk.yellow(" dataType : ") + this.dataType + " " + n);
302
+ }
303
+ if (this.nodeClass === node_opcua_data_model_1.NodeClass.Variable) {
304
+ const _dataValue = this.$dataValue;
305
+ if (_dataValue) {
306
+ options.add(options.padding +
307
+ chalk.yellow(" value : ") +
308
+ "\n" +
309
+ options.indent(_dataValue.toString(), options.padding + " | "));
310
+ }
311
+ }
312
+ if (Object.prototype.hasOwnProperty.call(this, "valueRank")) {
313
+ if (this.valueRank !== undefined) {
314
+ options.add(options.padding + chalk.yellow(" valueRank : ") + " " + valueRankToString(this.valueRank));
315
+ }
316
+ else {
317
+ options.add(options.padding + chalk.yellow(" valueRank : ") + " undefined");
318
+ }
319
+ }
320
+ if (this.minimumSamplingInterval !== undefined) {
321
+ options.add(options.padding +
322
+ chalk.yellow(" minimumSamplingInterval : ") +
323
+ " " +
324
+ this.minimumSamplingInterval.toString() +
325
+ " ms");
326
+ }
327
+ if (this.arrayDimensions) {
328
+ options.add(options.padding +
329
+ chalk.yellow(" arrayDimension : ") +
330
+ " [" +
331
+ this.arrayDimensions.join(",").toString() +
332
+ " ]");
333
+ }
334
+ }
335
+ exports.VariableOrVariableType_toString = VariableOrVariableType_toString;
336
+ const defaultExtraInfo = {
337
+ level: 0,
338
+ pad() {
339
+ return "";
340
+ },
341
+ registerClonedObject(node, node1) {
342
+ /** */
343
+ }
344
+ };
345
+ /**
346
+ * clone properties and methods
347
+ * @private
348
+ */
349
+ function _clone_collection_new(newParent, collectionRef, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap) {
350
+ var _a;
351
+ const namespace = newParent.namespace;
352
+ extraInfo = extraInfo || defaultExtraInfo;
353
+ const addressSpace = newParent.addressSpace;
354
+ (0, node_opcua_assert_1.assert)(!optionalFilter || (typeof optionalFilter.shouldKeep === "function" && typeof optionalFilter.filterFor === "function"));
355
+ for (const reference of collectionRef) {
356
+ const node = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
357
+ // ensure node is of the correct type,
358
+ // it may happen that the xml nodeset2 file was malformed
359
+ // istanbul ignore next
360
+ if (typeof node.clone !== "function") {
361
+ // tslint:disable-next-line:no-console
362
+ warningLog(chalk.red("Warning : cannot clone node ") +
363
+ node.browseName.toString() +
364
+ " of class " +
365
+ node_opcua_data_model_1.NodeClass[node.nodeClass].toString() +
366
+ " while cloning " +
367
+ newParent.browseName.toString());
368
+ continue;
369
+ }
370
+ if (optionalFilter && node && !optionalFilter.shouldKeep(node)) {
371
+ doTrace && traceLog(extraInfo.pad(), "skipping optional ", node.browseName.toString(), "that doesn't appear in the filter");
372
+ continue; // skip this node
373
+ }
374
+ const key = node.browseName.toString();
375
+ if (browseNameMap === null || browseNameMap === void 0 ? void 0 : browseNameMap.has(key)) {
376
+ continue; // skipping node with same browseName
377
+ }
378
+ browseNameMap === null || browseNameMap === void 0 ? void 0 : browseNameMap.add(key);
379
+ // assert(reference.isForward);
380
+ // assert(reference.referenceType instanceof NodeId, "" + reference.referenceType.toString());
381
+ const options = {
382
+ namespace,
383
+ references: [new reference_impl_1.ReferenceImpl({ referenceType: reference.referenceType, isForward: false, nodeId: newParent.nodeId })],
384
+ copyAlsoModellingRules
385
+ };
386
+ doTrace &&
387
+ traceLog(extraInfo.pad(), "cloning => ", reference.referenceType.toString({ addressSpace }), "=>", node.browseName.toString(), chalk.magentaBright((_a = node.typeDefinitionObj) === null || _a === void 0 ? void 0 : _a.browseName.toString()));
388
+ extraInfo.level += 4;
389
+ const clone = node.clone(options, optionalFilter, extraInfo);
390
+ extraInfo.level -= 4;
391
+ // also clone or instantiate interface members that may be required in the optionals
392
+ extraInfo.level++;
393
+ _cloneInterface(newParent, node, optionalFilter, extraInfo, browseNameMap);
394
+ extraInfo.level--;
395
+ if (extraInfo) {
396
+ extraInfo.registerClonedObject(node, clone);
397
+ }
398
+ }
399
+ }
400
+ function _extractInterfaces2(typeDefinitionNode, extraInfo) {
401
+ if (!typeDefinitionNode ||
402
+ (typeDefinitionNode.nodeId.namespace === 0 &&
403
+ (typeDefinitionNode.nodeId.value === node_opcua_constants_1.ObjectTypeIds.BaseObjectType ||
404
+ typeDefinitionNode.nodeId.value === node_opcua_constants_1.VariableTypeIds.BaseVariableType))) {
405
+ return [];
406
+ }
407
+ const addressSpace = typeDefinitionNode.addressSpace;
408
+ // example:
409
+ // FolderType
410
+ // FunctionalGroupType
411
+ // MachineryItemIdentificationType : IMachineryItemVendorNameplateType
412
+ // MachineIdentificationType : IMachineTagNameplateType, IMachineVendorNamePlateType
413
+ // MachineToolIdentificationType
414
+ //
415
+ //
416
+ // IMachineTagNameplateType -subTypeOf-> ITagNameplateType
417
+ // IMachineVendorNamePlateType -subTypeOf-> IMachineryItemVendorNamePlateType
418
+ // IMachineryItemVendorNamePlateType -subTypeOf-> IVendorNameplateType
419
+ const interfacesRef = typeDefinitionNode.findReferencesEx("HasInterface", node_opcua_data_model_1.BrowseDirection.Forward);
420
+ const interfaces = interfacesRef.map((r) => addressSpace.findNode(r.nodeId));
421
+ const baseInterfaces = [];
422
+ for (const iface of interfaces) {
423
+ doTrace &&
424
+ traceLog(extraInfo.pad(), typeDefinitionNode.browseName.toString(), " - has interface -> ", iface.browseName.toString());
425
+ baseInterfaces.push(iface);
426
+ if (iface.subtypeOfObj) {
427
+ extraInfo.level++;
428
+ baseInterfaces.push(..._extractInterfaces2(iface.subtypeOfObj, extraInfo));
429
+ extraInfo.level--;
430
+ }
431
+ }
432
+ interfaces.push(...baseInterfaces);
433
+ if (typeDefinitionNode.subtypeOfObj) {
434
+ doTrace &&
435
+ traceLog(extraInfo.pad(), typeDefinitionNode.browseName.toString(), " - subtypef -> ", typeDefinitionNode.subtypeOfObj.browseName.toString());
436
+ extraInfo.level++;
437
+ interfaces.push(..._extractInterfaces2(typeDefinitionNode.subtypeOfObj, extraInfo));
438
+ extraInfo.level--;
439
+ }
440
+ const dedupedInterfaces = [...new Set(interfaces)];
441
+ doTrace &&
442
+ traceLog(extraInfo.pad(), chalk.yellow("Interface for ", typeDefinitionNode.browseName.toString()), "=", dedupedInterfaces.map((x) => x.browseName.toString()).join(" "));
443
+ return dedupedInterfaces;
444
+ }
445
+ /*
446
+
447
+ // also find all related interfaces
448
+ if (false && typeDefinitionNode) {
449
+ dotrace && tracelog("typeDefinitionNode = ", typeDefinitionNode.browseName.toString());
450
+ const interfaces = _extractInterfaces(typeDefinitionNode);
451
+ for (const interfaceNode of interfaces) {
452
+ dotrace && tracelog(" adding member of interface ", interfaceNode.browseName.toString());
453
+ const fromInterface = interfaceNode.findReferencesEx("Aggregates", BrowseDirection.Forward);
454
+ dotrace && tracelog(
455
+ " B ",
456
+ fromInterface.map((r) => r.toString({ addressSpace }) + " " + r.node!.browseName.toString()).join("\n")
457
+ );
458
+ add(fromInterface);
459
+ }
460
+ }
461
+ */
462
+ function _crap_extractInterfaces(typeDefinitionNode, extraInfo) {
463
+ if (typeDefinitionNode.nodeId.namespace === 0 &&
464
+ (typeDefinitionNode.nodeId.value === node_opcua_constants_1.ObjectTypeIds.BaseObjectType ||
465
+ typeDefinitionNode.nodeId.value === node_opcua_constants_1.VariableTypeIds.BaseVariableType)) {
466
+ return [];
467
+ }
468
+ const addressSpace = typeDefinitionNode.addressSpace;
469
+ // example:
470
+ // FolderType
471
+ // FunctionalGroupType
472
+ // MachineryItemIdentificationType : IMachineryItemVendorNameplateType
473
+ // MachineIdentificationType : IMachineTagNameplateType, IMachineVendorNamePlateType
474
+ // MachineToolIdentificationType
475
+ //
476
+ //
477
+ // IMachineTagNameplateType -subTypeOf-> ITagNameplateType
478
+ // IMachineVendorNamePlateType -subTypeOf-> IMachineryItemVendorNamePlateType
479
+ // IMachineryItemVendorNamePlateType -subTypeOf-> IVendorNameplateType
480
+ const interfacesRef = typeDefinitionNode.findReferencesEx("HasInterface", node_opcua_data_model_1.BrowseDirection.Forward);
481
+ const interfaces = interfacesRef.map((r) => r.node);
482
+ for (const iface of interfaces) {
483
+ doTrace && traceLog(extraInfo.pad(), " interface ", iface.browseName.toString());
484
+ }
485
+ return interfaces;
486
+ }
487
+ function _cloneInterface(newParent, node, optionalFilter, extraInfo, browseNameMap) {
488
+ doTrace &&
489
+ traceLog(extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad(), chalk.green("-------------------- now cloning interfaces of ", node.browseName.toString(), node.nodeId.toString()));
490
+ extraInfo = extraInfo || defaultExtraInfo;
491
+ const addressSpace = node.addressSpace;
492
+ const typeDefinitionNode = node.typeDefinitionObj;
493
+ if (!typeDefinitionNode) {
494
+ return;
495
+ }
496
+ const interfaces = _extractInterfaces2(typeDefinitionNode, extraInfo);
497
+ if (interfaces.length === 0) {
498
+ if (doTrace) {
499
+ traceLog(extraInfo.pad(), chalk.yellow("No interface for ", node.browseName.toString(), node.nodeId.toString()));
500
+ }
501
+ return;
502
+ }
503
+ doTrace && traceLog(extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad(), chalk.green("-------------------- interfaces are ", interfaces.length));
504
+ const localFilter = optionalFilter.filterFor(node);
505
+ for (const iface of interfaces) {
506
+ const aggregates = iface.findReferencesEx("Aggregates", node_opcua_data_model_1.BrowseDirection.Forward);
507
+ doTrace &&
508
+ traceLog(extraInfo.pad(), chalk.magentaBright(" interface ", iface.browseName.toString()), "\n" + (extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad()), aggregates.map((r) => r.toString({ addressSpace })).join("\n" + (extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad())));
509
+ _clone_collection_new(node, aggregates, false, localFilter, extraInfo, browseNameMap);
510
+ }
511
+ }
512
+ function _clone_children_references(node, newParent, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap) {
513
+ // find all reference that derives from the Aggregates
514
+ const aggregatesRef = node.findReferencesEx("Aggregates", node_opcua_data_model_1.BrowseDirection.Forward);
515
+ _clone_collection_new(newParent, aggregatesRef, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap);
516
+ }
517
+ exports._clone_children_references = _clone_children_references;
518
+ function _clone_non_hierarchical_references(node, newParent, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap) {
519
+ // clone only some non hierarchical_references that we do want to clone
520
+ // such as:
521
+ // HasSubStateMachine
522
+ // (may be other as well later ... to do )
523
+ (0, node_opcua_assert_1.assert)(newParent instanceof base_node_impl_1.BaseNodeImpl);
524
+ // find all reference that derives from the HasSubStateMachine
525
+ const references = node.findReferencesEx("HasSubStateMachine", node_opcua_data_model_1.BrowseDirection.Forward);
526
+ _clone_collection_new(newParent, references, copyAlsoModellingRules, optionalFilter, extraInfo, browseNameMap);
527
+ }
528
+ exports._clone_non_hierarchical_references = _clone_non_hierarchical_references;
529
+ /**
530
+ * @method _clone
531
+ * @private
532
+ */
533
+ function _clone(Constructor, options, optionalFilter, extraInfo) {
534
+ (0, node_opcua_assert_1.assert)(typeof Constructor === "function");
535
+ (0, node_opcua_assert_1.assert)(options !== null && typeof options === "object");
536
+ (0, node_opcua_assert_1.assert)(!extraInfo || (extraInfo !== null && typeof extraInfo === "object" && typeof extraInfo.registerClonedObject === "function"));
537
+ (0, node_opcua_assert_1.assert)(!this.subtypeOf, "We do not do cloning of Type yet");
538
+ const namespace = options.namespace;
539
+ const constructorOptions = Object.assign(Object.assign({}, options), { addressSpace: namespace.addressSpace, browseName: this.browseName, description: this.description, displayName: this.displayName, nodeClass: this.nodeClass });
540
+ constructorOptions.references = options.references || [];
541
+ if (this.nodeClass === node_opcua_data_model_1.NodeClass.Variable || this.nodeClass === node_opcua_data_model_1.NodeClass.Object) {
542
+ const voThis = this;
543
+ if (voThis.typeDefinition) {
544
+ constructorOptions.references.push(new reference_impl_1.ReferenceImpl({
545
+ isForward: true,
546
+ nodeId: voThis.typeDefinition,
547
+ referenceType: (0, node_opcua_nodeid_1.resolveNodeId)("HasTypeDefinition")
548
+ }));
549
+ }
550
+ }
551
+ if (!constructorOptions.modellingRule) {
552
+ if (this.modellingRule && options.copyAlsoModellingRules) {
553
+ const modellingRuleNode = this.findReferencesAsObject("HasModellingRule", true)[0];
554
+ (0, node_opcua_assert_1.assert)(modellingRuleNode);
555
+ constructorOptions.references.push(new reference_impl_1.ReferenceImpl({
556
+ isForward: true,
557
+ nodeId: modellingRuleNode.nodeId,
558
+ referenceType: (0, node_opcua_nodeid_1.resolveNodeId)("HasModellingRule")
559
+ }));
560
+ }
561
+ }
562
+ else {
563
+ (0, namespace_private_1.UANamespace_process_modelling_rule)(constructorOptions.references, constructorOptions.modellingRule);
564
+ }
565
+ constructorOptions.nodeId = namespace.constructNodeId(constructorOptions);
566
+ (0, node_opcua_assert_1.assert)(constructorOptions.nodeId instanceof node_opcua_nodeid_1.NodeId);
567
+ const cloneObj = new Constructor(constructorOptions);
568
+ this.addressSpace._register(cloneObj);
569
+ if (!options.ignoreChildren) {
570
+ // clone children and the rest ....
571
+ options.copyAlsoModellingRules = options.copyAlsoModellingRules || false;
572
+ const newFilter = optionalFilter.filterFor(cloneObj);
573
+ const browseNameMap = new Set();
574
+ _clone_children_references(this, cloneObj, options.copyAlsoModellingRules, newFilter, extraInfo, browseNameMap);
575
+ //
576
+ let typeDefinitionNode = this.typeDefinitionObj;
577
+ while (typeDefinitionNode) {
578
+ doTrace &&
579
+ traceLog(extraInfo === null || extraInfo === void 0 ? void 0 : extraInfo.pad(), chalk.blueBright("---------------------- Exploring ", typeDefinitionNode.browseName.toString()));
580
+ _clone_children_references(typeDefinitionNode, cloneObj, options.copyAlsoModellingRules, newFilter, extraInfo, browseNameMap);
581
+ typeDefinitionNode = typeDefinitionNode.subtypeOfObj;
582
+ }
583
+ _clone_non_hierarchical_references(this, cloneObj, options.copyAlsoModellingRules, newFilter, extraInfo, browseNameMap);
584
+ }
585
+ cloneObj.propagate_back_references();
586
+ cloneObj.install_extra_properties();
587
+ return cloneObj;
588
+ }
589
+ exports._clone = _clone;
590
+ function _handle_HierarchicalReference(node, reference) {
591
+ const _cache = BaseNode_getCache(node);
592
+ if (!reference.isForward)
593
+ return;
594
+ if (_cache._childByNameMap) {
595
+ const addressSpace = node.addressSpace;
596
+ const referenceType = reference_impl_1.ReferenceImpl.resolveReferenceType(addressSpace, reference);
597
+ if (referenceType) {
598
+ const HierarchicalReferencesType = addressSpace.findReferenceType("HierarchicalReferences");
599
+ if (referenceType.isSupertypeOf(HierarchicalReferencesType)) {
600
+ (0, node_opcua_assert_1.assert)(reference.isForward);
601
+ const targetNode = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
602
+ _cache._childByNameMap[targetNode.browseName.name.toString()] = targetNode;
603
+ }
604
+ }
605
+ }
606
+ }
607
+ exports._handle_HierarchicalReference = _handle_HierarchicalReference;
608
+ function _remove_HierarchicalReference(node, reference) {
609
+ const _cache = BaseNode_getCache(node);
610
+ if (_cache._childByNameMap) {
611
+ const addressSpace = node.addressSpace;
612
+ const referenceType = reference_impl_1.ReferenceImpl.resolveReferenceType(addressSpace, reference);
613
+ if (referenceType) {
614
+ const HierarchicalReferencesType = addressSpace.findReferenceType("HierarchicalReferences");
615
+ if (referenceType.isSupertypeOf(HierarchicalReferencesType)) {
616
+ (0, node_opcua_assert_1.assert)(reference.isForward);
617
+ const targetNode = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
618
+ // Xx dotrace && tracelog(" adding object to map");
619
+ delete _cache._childByNameMap[targetNode.browseName.name.toString()];
620
+ }
621
+ }
622
+ }
623
+ }
624
+ function _makeReferenceDescription(addressSpace, reference, resultMask) {
625
+ const isForward = reference.isForward;
626
+ const referenceTypeId = reference_impl_1.ReferenceImpl.resolveReferenceType(addressSpace, reference).nodeId;
627
+ (0, node_opcua_assert_1.assert)(referenceTypeId instanceof node_opcua_nodeid_1.NodeId);
628
+ const obj = reference_impl_1.ReferenceImpl.resolveReferenceNode(addressSpace, reference);
629
+ let data = {};
630
+ if (!obj) {
631
+ // cannot find reference node
632
+ data = {
633
+ isForward,
634
+ nodeId: reference.nodeId,
635
+ referenceTypeId: resultMask & node_opcua_data_model_1.ResultMask.ReferenceType ? referenceTypeId : null,
636
+ typeDefinition: null
637
+ };
638
+ }
639
+ else {
640
+ (0, node_opcua_assert_1.assert)(reference.nodeId, " obj.nodeId");
641
+ data = {
642
+ browseName: resultMask & node_opcua_data_model_1.ResultMask.BrowseName ? (0, node_opcua_data_model_1.coerceQualifiedName)(obj.browseName) : null,
643
+ displayName: resultMask & node_opcua_data_model_1.ResultMask.DisplayName ? (0, node_opcua_data_model_1.coerceLocalizedText)(obj.displayName[0]) : null,
644
+ isForward: resultMask & node_opcua_data_model_1.ResultMask.IsForward ? isForward : false,
645
+ nodeClass: resultMask & node_opcua_data_model_1.ResultMask.NodeClass ? obj.nodeClass : node_opcua_data_model_1.NodeClass.Unspecified,
646
+ nodeId: obj.nodeId,
647
+ referenceTypeId: resultMask & node_opcua_data_model_1.ResultMask.ReferenceType ? referenceTypeId : null,
648
+ typeDefinition: resultMask & node_opcua_data_model_1.ResultMask.TypeDefinition ? obj.typeDefinition : null
649
+ };
650
+ }
651
+ if (data.typeDefinition === null) {
652
+ data.typeDefinition = new node_opcua_nodeid_1.NodeId();
653
+ }
654
+ const referenceDescription = new node_opcua_types_1.ReferenceDescription(data);
655
+ return referenceDescription;
656
+ }
657
+ function _constructReferenceDescription(addressSpace, references, resultMask) {
658
+ (0, node_opcua_assert_1.assert)(Array.isArray(references));
659
+ return references.map((reference) => _makeReferenceDescription(addressSpace, reference, resultMask));
660
+ }
661
+ exports._constructReferenceDescription = _constructReferenceDescription;
662
+ function BaseNode_remove_backward_reference(reference) {
663
+ const _private = BaseNode_getPrivate(this);
664
+ _remove_HierarchicalReference(this, reference);
665
+ const h = reference.hash;
666
+ if (_private._back_referenceIdx && _private._back_referenceIdx[h]) {
667
+ // note : h may not exist in _back_referenceIdx since we are not indexing
668
+ // _back_referenceIdx to UAObjectType and UAVariableType for performance reasons
669
+ _private._back_referenceIdx[h].dispose();
670
+ delete _private._back_referenceIdx[h];
671
+ }
672
+ reference.dispose();
673
+ }
674
+ exports.BaseNode_remove_backward_reference = BaseNode_remove_backward_reference;
675
+ function BaseNode_add_backward_reference(reference) {
676
+ const _private = BaseNode_getPrivate(this);
677
+ const h = reference.hash;
678
+ (0, node_opcua_assert_1.assert)(typeof h === "string");
679
+ // istanbul ignore next
680
+ if (_private._referenceIdx[h]) {
681
+ // the reference exists already in the forward references
682
+ // this append for instance when the XML NotSetFile has redundant <UAReference>
683
+ // in this case there is nothing to do
684
+ return;
685
+ }
686
+ // istanbul ignore next
687
+ if (_private._back_referenceIdx[h]) {
688
+ const opts = { addressSpace: this.addressSpace };
689
+ warningLog(" Warning !", this.browseName.toString());
690
+ warningLog(" ", reference.toString(opts));
691
+ warningLog(" already found in ===>");
692
+ warningLog(Object.values(_private._back_referenceIdx).map((c) => c.toString(opts)).join("\n"));
693
+ // tslint:disable-next-line:no-console
694
+ warningLog("===>");
695
+ throw new Error("reference exists already in _back_references");
696
+ }
697
+ if (!(0, base_node_impl_1.getReferenceType)(reference)) {
698
+ const stop_here = 1;
699
+ }
700
+ // assert(reference._referenceType instanceof ReferenceType);
701
+ _private._back_referenceIdx[h] = reference;
702
+ _handle_HierarchicalReference(this, reference);
703
+ this._clear_caches();
704
+ }
705
+ exports.BaseNode_add_backward_reference = BaseNode_add_backward_reference;
706
706
  //# sourceMappingURL=base_node_private.js.map