node-opcua-address-space 2.97.0 → 2.98.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/dist/source/address_space_ts.d.ts +118 -118
  2. package/dist/source/address_space_ts.js +17 -17
  3. package/dist/source/continuation_points/continuation_point_manager.d.ts +91 -91
  4. package/dist/source/continuation_points/continuation_point_manager.js +200 -200
  5. package/dist/source/helpers/adjust_browse_direction.d.ts +5 -5
  6. package/dist/source/helpers/adjust_browse_direction.js +11 -11
  7. package/dist/source/helpers/argument_list.d.ts +33 -33
  8. package/dist/source/helpers/argument_list.js +254 -254
  9. package/dist/source/helpers/call_helpers.d.ts +6 -6
  10. package/dist/source/helpers/call_helpers.js +71 -71
  11. package/dist/source/helpers/coerce_enum_value.d.ts +6 -6
  12. package/dist/source/helpers/coerce_enum_value.js +33 -33
  13. package/dist/source/helpers/dump_tools.d.ts +14 -14
  14. package/dist/source/helpers/dump_tools.js +78 -78
  15. package/dist/source/helpers/ensure_secure_access.d.ts +9 -9
  16. package/dist/source/helpers/ensure_secure_access.js +76 -76
  17. package/dist/source/helpers/make_optionals_map.d.ts +21 -21
  18. package/dist/source/helpers/make_optionals_map.js +29 -29
  19. package/dist/source/helpers/multiform_func.d.ts +11 -11
  20. package/dist/source/helpers/multiform_func.js +75 -75
  21. package/dist/source/helpers/resolve_opaque_on_address_space.d.ts +3 -3
  22. package/dist/source/helpers/resolve_opaque_on_address_space.js +36 -36
  23. package/dist/source/index.d.ts +61 -61
  24. package/dist/source/index.js +89 -89
  25. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.d.ts +19 -19
  26. package/dist/source/interfaces/alarms_and_conditions/condition_info_i.js +2 -2
  27. package/dist/source/interfaces/alarms_and_conditions/condition_snapshot.d.ts +193 -193
  28. package/dist/source/interfaces/alarms_and_conditions/condition_snapshot.js +2 -2
  29. package/dist/source/interfaces/alarms_and_conditions/deviation_stuff.d.ts +12 -12
  30. package/dist/source/interfaces/alarms_and_conditions/deviation_stuff.js +2 -2
  31. package/dist/source/interfaces/alarms_and_conditions/install_setpoint_options.d.ts +10 -10
  32. package/dist/source/interfaces/alarms_and_conditions/install_setpoint_options.js +2 -2
  33. package/dist/source/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.d.ts +7 -7
  34. package/dist/source/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.js +2 -2
  35. package/dist/source/interfaces/alarms_and_conditions/instantiate_condition_options.d.ts +7 -7
  36. package/dist/source/interfaces/alarms_and_conditions/instantiate_condition_options.js +2 -2
  37. package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.d.ts +4 -4
  38. package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.js +2 -2
  39. package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.d.ts +4 -4
  40. package/dist/source/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.js +2 -2
  41. package/dist/source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.d.ts +9 -9
  42. package/dist/source/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.js +2 -2
  43. package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.d.ts +4 -4
  44. package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.js +2 -2
  45. package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.d.ts +4 -4
  46. package/dist/source/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.js +2 -2
  47. package/dist/source/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.d.ts +20 -20
  48. package/dist/source/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.js +2 -2
  49. package/dist/source/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.d.ts +23 -23
  50. package/dist/source/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.js +2 -2
  51. package/dist/source/interfaces/alarms_and_conditions/ua_alarm_condition_ex.d.ts +32 -32
  52. package/dist/source/interfaces/alarms_and_conditions/ua_alarm_condition_ex.js +2 -2
  53. package/dist/source/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.d.ts +19 -19
  54. package/dist/source/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.js +2 -2
  55. package/dist/source/interfaces/alarms_and_conditions/ua_condition_ex.d.ts +45 -42
  56. package/dist/source/interfaces/alarms_and_conditions/ua_condition_ex.js +2 -2
  57. package/dist/source/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.d.ts +7 -7
  58. package/dist/source/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.js +25 -25
  59. package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.d.ts +5 -5
  60. package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.js +2 -2
  61. package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.d.ts +20 -20
  62. package/dist/source/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.js +2 -2
  63. package/dist/source/interfaces/alarms_and_conditions/ua_limit_alarm_ex.d.ts +26 -26
  64. package/dist/source/interfaces/alarms_and_conditions/ua_limit_alarm_ex.js +2 -2
  65. package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.d.ts +8 -8
  66. package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.js +2 -2
  67. package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.d.ts +10 -10
  68. package/dist/source/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.js +2 -2
  69. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.d.ts +21 -21
  70. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js +2 -2
  71. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +24 -24
  72. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js +2 -2
  73. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.d.ts +12 -12
  74. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js +2 -2
  75. package/dist/source/interfaces/data_access/ua_y_array_item_ex.d.ts +8 -8
  76. package/dist/source/interfaces/data_access/ua_y_array_item_ex.js +2 -2
  77. package/dist/source/interfaces/extension_object_constructor.d.ts +10 -10
  78. package/dist/source/interfaces/extension_object_constructor.js +2 -2
  79. package/dist/source/interfaces/nodeset_loader_options.d.ts +4 -4
  80. package/dist/source/interfaces/nodeset_loader_options.js +2 -2
  81. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +12 -12
  82. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +2 -2
  83. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.d.ts +49 -49
  84. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js +2 -2
  85. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.d.ts +11 -11
  86. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js +2 -2
  87. package/dist/source/interfaces/state_machine/ua_shelved_state_machine_ex.d.ts +30 -30
  88. package/dist/source/interfaces/state_machine/ua_shelved_state_machine_ex.js +2 -2
  89. package/dist/source/interfaces/state_machine/ua_state_machine_type.d.ts +234 -234
  90. package/dist/source/interfaces/state_machine/ua_state_machine_type.js +2 -2
  91. package/dist/source/interfaces/state_machine/ua_transition_ex.d.ts +6 -6
  92. package/dist/source/interfaces/state_machine/ua_transition_ex.js +2 -2
  93. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +8 -8
  94. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js +2 -2
  95. package/dist/source/loader/decode_xml_extension_object.d.ts +6 -6
  96. package/dist/source/loader/decode_xml_extension_object.js +71 -71
  97. package/dist/source/loader/ensure_datatype_extracted.d.ts +5 -5
  98. package/dist/source/loader/ensure_datatype_extracted.js +70 -70
  99. package/dist/source/loader/generateAddressSpaceRaw.d.ts +11 -11
  100. package/dist/source/loader/generateAddressSpaceRaw.js +45 -45
  101. package/dist/source/loader/load_nodeset2.d.ts +17 -17
  102. package/dist/source/loader/load_nodeset2.js +1483 -1483
  103. package/dist/source/loader/make_semver_compatible.d.ts +6 -6
  104. package/dist/source/loader/make_semver_compatible.js +25 -25
  105. package/dist/source/loader/make_xml_extension_object_parser.d.ts +28 -28
  106. package/dist/source/loader/make_xml_extension_object_parser.js +326 -326
  107. package/dist/source/loader/namespace_post_step.d.ts +10 -10
  108. package/dist/source/loader/namespace_post_step.js +61 -61
  109. package/dist/source/loader/register_node_promoter.d.ts +2 -2
  110. package/dist/source/loader/register_node_promoter.js +9 -9
  111. package/dist/source/namespace.d.ts +6 -6
  112. package/dist/source/namespace.js +2 -2
  113. package/dist/source/namespace_alarm_and_condition.d.ts +32 -32
  114. package/dist/source/namespace_alarm_and_condition.js +2 -2
  115. package/dist/source/namespace_data_access.d.ts +42 -42
  116. package/dist/source/namespace_data_access.js +2 -2
  117. package/dist/source/namespace_machine_state.d.ts +8 -8
  118. package/dist/source/namespace_machine_state.js +2 -2
  119. package/dist/source/pseudo_session.d.ts +72 -72
  120. package/dist/source/pseudo_session.js +254 -254
  121. package/dist/source/session_context.d.ts +111 -111
  122. package/dist/source/session_context.js +264 -264
  123. package/dist/source/session_context.js.map +1 -1
  124. package/dist/source/set_namespace_meta_data.d.ts +2 -2
  125. package/dist/source/set_namespace_meta_data.js +59 -59
  126. package/dist/source/ua_root_folder.d.ts +9 -9
  127. package/dist/source/ua_root_folder.js +2 -2
  128. package/dist/source/ua_two_state_variable_ex.d.ts +23 -23
  129. package/dist/source/ua_two_state_variable_ex.js +2 -2
  130. package/dist/source/xml_writer.d.ts +18 -18
  131. package/dist/source/xml_writer.js +2 -2
  132. package/dist/src/address_space.d.ts +387 -387
  133. package/dist/src/address_space.js +1385 -1385
  134. package/dist/src/address_space.js.map +1 -1
  135. package/dist/src/address_space_change_event_tools.d.ts +6 -6
  136. package/dist/src/address_space_change_event_tools.js +152 -152
  137. package/dist/src/address_space_private.d.ts +43 -43
  138. package/dist/src/address_space_private.js +2 -2
  139. package/dist/src/alarms_and_conditions/condition.d.ts +5 -5
  140. package/dist/src/alarms_and_conditions/condition.js +78 -78
  141. package/dist/src/alarms_and_conditions/condition_info_impl.d.ts +26 -26
  142. package/dist/src/alarms_and_conditions/condition_info_impl.js +54 -54
  143. package/dist/src/alarms_and_conditions/condition_snapshot_impl.d.ts +222 -222
  144. package/dist/src/alarms_and_conditions/condition_snapshot_impl.js +657 -657
  145. package/dist/src/alarms_and_conditions/condition_snapshot_impl.js.map +1 -1
  146. package/dist/src/alarms_and_conditions/deviation_alarm_helper.d.ts +9 -9
  147. package/dist/src/alarms_and_conditions/deviation_alarm_helper.js +60 -60
  148. package/dist/src/alarms_and_conditions/index.d.ts +16 -16
  149. package/dist/src/alarms_and_conditions/index.js +32 -32
  150. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +44 -44
  151. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +244 -244
  152. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.d.ts +93 -93
  153. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js +418 -418
  154. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js.map +1 -1
  155. package/dist/src/alarms_and_conditions/ua_base_event_impl.d.ts +26 -26
  156. package/dist/src/alarms_and_conditions/ua_base_event_impl.js +38 -38
  157. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +44 -44
  158. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +183 -183
  159. package/dist/src/alarms_and_conditions/ua_condition_impl.d.ts +155 -153
  160. package/dist/src/alarms_and_conditions/ua_condition_impl.js +1028 -1028
  161. package/dist/src/alarms_and_conditions/ua_condition_impl.js.map +1 -1
  162. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +14 -14
  163. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js +34 -34
  164. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +24 -24
  165. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +56 -56
  166. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +11 -11
  167. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +11 -11
  168. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +23 -23
  169. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +86 -86
  170. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +11 -11
  171. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +7 -7
  172. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.d.ts +79 -79
  173. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js +250 -250
  174. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +24 -24
  175. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +50 -50
  176. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +19 -19
  177. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +162 -162
  178. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +46 -46
  179. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js +165 -165
  180. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +18 -18
  181. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +17 -17
  182. package/dist/src/apply_condition_refresh.d.ts +6 -6
  183. package/dist/src/apply_condition_refresh.js +27 -27
  184. package/dist/src/base_node_impl.d.ts +284 -284
  185. package/dist/src/base_node_impl.js +1454 -1454
  186. package/dist/src/base_node_private.d.ts +81 -81
  187. package/dist/src/base_node_private.js +832 -803
  188. package/dist/src/base_node_private.js.map +1 -1
  189. package/dist/src/check_value_rank_compatibility.d.ts +15 -15
  190. package/dist/src/check_value_rank_compatibility.js +81 -81
  191. package/dist/src/data_access/add_dataItem_stuff.d.ts +11 -11
  192. package/dist/src/data_access/add_dataItem_stuff.js +61 -61
  193. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.d.ts +1 -1
  194. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js +34 -34
  195. package/dist/src/data_access/ua_multistate_discrete_impl.d.ts +32 -32
  196. package/dist/src/data_access/ua_multistate_discrete_impl.js +130 -130
  197. package/dist/src/data_access/ua_multistate_value_discrete_impl.d.ts +52 -52
  198. package/dist/src/data_access/ua_multistate_value_discrete_impl.js +253 -253
  199. package/dist/src/data_access/ua_two_state_discrete_impl.d.ts +25 -25
  200. package/dist/src/data_access/ua_two_state_discrete_impl.js +155 -155
  201. package/dist/src/event_data.d.ts +34 -34
  202. package/dist/src/event_data.js +64 -64
  203. package/dist/src/extension_object_array_node.d.ts +23 -23
  204. package/dist/src/extension_object_array_node.js +248 -248
  205. package/dist/src/historical_access/address_space_historical_data_node.d.ts +26 -26
  206. package/dist/src/historical_access/address_space_historical_data_node.js +652 -652
  207. package/dist/src/idx_iterator.d.ts +8 -8
  208. package/dist/src/idx_iterator.js +50 -50
  209. package/dist/src/index_current.d.ts +46 -46
  210. package/dist/src/index_current.js +77 -77
  211. package/dist/src/namespace_impl.d.ts +456 -456
  212. package/dist/src/namespace_impl.js +1762 -1762
  213. package/dist/src/namespace_impl.js.map +1 -1
  214. package/dist/src/namespace_private.d.ts +23 -23
  215. package/dist/src/namespace_private.js +32 -32
  216. package/dist/src/nodeid_manager.d.ts +37 -37
  217. package/dist/src/nodeid_manager.js +183 -183
  218. package/dist/src/nodeset_tools/adjust_namespace_array.d.ts +2 -2
  219. package/dist/src/nodeset_tools/adjust_namespace_array.js +13 -13
  220. package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +18 -18
  221. package/dist/src/nodeset_tools/construct_namespace_dependency.js +140 -140
  222. package/dist/src/nodeset_tools/dump_to_bsd.d.ts +2 -2
  223. package/dist/src/nodeset_tools/dump_to_bsd.js +164 -164
  224. package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +10 -10
  225. package/dist/src/nodeset_tools/nodeset_to_xml.js +1287 -1287
  226. package/dist/src/private_namespace.d.ts +5 -5
  227. package/dist/src/private_namespace.js +19 -19
  228. package/dist/src/reference_impl.d.ts +43 -43
  229. package/dist/src/reference_impl.js +139 -139
  230. package/dist/src/role_permissions.d.ts +2 -2
  231. package/dist/src/role_permissions.js +10 -10
  232. package/dist/src/state_machine/finite_state_machine.d.ts +81 -81
  233. package/dist/src/state_machine/finite_state_machine.js +388 -388
  234. package/dist/src/state_machine/ua_shelving_state_machine_ex.d.ts +38 -38
  235. package/dist/src/state_machine/ua_shelving_state_machine_ex.js +250 -250
  236. package/dist/src/state_machine/ua_two_state_variable.d.ts +61 -61
  237. package/dist/src/state_machine/ua_two_state_variable.js +331 -331
  238. package/dist/src/tool_isSubtypeOf.d.ts +18 -18
  239. package/dist/src/tool_isSubtypeOf.js +124 -124
  240. package/dist/src/ua_condition_type.d.ts +8 -8
  241. package/dist/src/ua_condition_type.js +2 -2
  242. package/dist/src/ua_data_type_impl.d.ts +89 -89
  243. package/dist/src/ua_data_type_impl.js +368 -368
  244. package/dist/src/ua_method_impl.d.ts +42 -42
  245. package/dist/src/ua_method_impl.js +217 -217
  246. package/dist/src/ua_object_impl.d.ts +35 -35
  247. package/dist/src/ua_object_impl.js +168 -168
  248. package/dist/src/ua_object_type_impl.d.ts +50 -50
  249. package/dist/src/ua_object_type_impl.js +126 -126
  250. package/dist/src/ua_reference_type_impl.d.ts +45 -45
  251. package/dist/src/ua_reference_type_impl.js +141 -141
  252. package/dist/src/ua_variable_impl.d.ts +380 -380
  253. package/dist/src/ua_variable_impl.js +1738 -1738
  254. package/dist/src/ua_variable_impl_ext_obj.d.ts +23 -23
  255. package/dist/src/ua_variable_impl_ext_obj.js +670 -670
  256. package/dist/src/ua_variable_type_impl.d.ts +74 -74
  257. package/dist/src/ua_variable_type_impl.js +597 -581
  258. package/dist/src/ua_variable_type_impl.js.map +1 -1
  259. package/dist/src/ua_view_impl.d.ts +19 -19
  260. package/dist/src/ua_view_impl.js +43 -43
  261. package/dist/tsconfig_common.tsbuildinfo +1 -0
  262. package/distHelpers/add_event_generator_object.d.ts +3 -3
  263. package/distHelpers/add_event_generator_object.js +64 -64
  264. package/distHelpers/alarms_and_conditions_demo.d.ts +9 -9
  265. package/distHelpers/alarms_and_conditions_demo.js +115 -115
  266. package/distHelpers/assertHasMatchingReference.d.ts +19 -19
  267. package/distHelpers/assertHasMatchingReference.js +40 -40
  268. package/distHelpers/boiler_system.d.ts +113 -113
  269. package/distHelpers/boiler_system.js +395 -395
  270. package/distHelpers/create_minimalist_address_space_nodeset.d.ts +5 -5
  271. package/distHelpers/create_minimalist_address_space_nodeset.js +171 -171
  272. package/distHelpers/date_utils.d.ts +3 -3
  273. package/distHelpers/date_utils.js +9 -9
  274. package/distHelpers/dump_statemachine.js +127 -127
  275. package/distHelpers/get_address_space_fixture.d.ts +1 -1
  276. package/distHelpers/get_address_space_fixture.js +30 -30
  277. package/distHelpers/get_mini_address_space.d.ts +7 -7
  278. package/distHelpers/get_mini_address_space.js +36 -36
  279. package/distHelpers/index.d.ts +12 -12
  280. package/distHelpers/index.js +28 -28
  281. package/distHelpers/mock_session.d.ts +10 -10
  282. package/distHelpers/mock_session.js +25 -25
  283. package/distNodeJS/generate_address_space.d.ts +6 -6
  284. package/distNodeJS/generate_address_space.js +52 -52
  285. package/distNodeJS/index.d.ts +1 -1
  286. package/distNodeJS/index.js +17 -17
  287. package/package.json +51 -40
  288. package/source/interfaces/alarms_and_conditions/ua_condition_ex.ts +4 -3
  289. package/src/alarms_and_conditions/ua_condition_impl.ts +14 -9
  290. package/src/base_node_private.ts +73 -28
  291. package/src/ua_variable_type_impl.ts +35 -17
  292. package/.mocharc.yml +0 -12
  293. package/dist/src/tool_isSupertypeOf.d.ts +0 -18
  294. package/dist/src/tool_isSupertypeOf.js +0 -125
  295. package/dist/src/tool_isSupertypeOf.js.map +0 -1
  296. package/generate.js +0 -1
  297. package/source_nodejs/generate_address_space.ts +0 -60
  298. package/source_nodejs/index.ts +0 -1
  299. package/test_helpers/add_event_generator_object.ts +0 -71
  300. package/test_helpers/alarms_and_conditions_demo.ts +0 -151
  301. package/test_helpers/assertHasMatchingReference.ts +0 -43
  302. package/test_helpers/boiler_system.ts +0 -610
  303. package/test_helpers/create_minimalist_address_space_nodeset.ts +0 -208
  304. package/test_helpers/date_utils.ts +0 -5
  305. package/test_helpers/dump_statemachine.ts +0 -155
  306. package/test_helpers/get_address_space_fixture.ts +0 -30
  307. package/test_helpers/get_mini_address_space.ts +0 -42
  308. package/test_helpers/index.ts +0 -12
  309. package/test_helpers/mock_session.ts +0 -34
  310. package/test_helpers/test_fixtures/dataType_in_separateNamespace.xml +0 -150
  311. package/test_helpers/test_fixtures/dataType_in_separateNamespace_basic.xml +0 -57
  312. package/test_helpers/test_fixtures/dataType_in_separateNamespace_mix.xml +0 -136
  313. package/test_helpers/test_fixtures/dataType_issue.xml +0 -80
  314. package/test_helpers/test_fixtures/dataType_withEnumeration.xml +0 -82
  315. package/test_helpers/test_fixtures/dataType_with_isOptionSet.xml +0 -194
  316. package/test_helpers/test_fixtures/dataType_with_qualifiedname.xml +0 -71
  317. package/test_helpers/test_fixtures/dataType_with_recursive_structure.xml +0 -155
  318. package/test_helpers/test_fixtures/dataType_with_structures.xml +0 -605
  319. package/test_helpers/test_fixtures/dataType_with_union.xml +0 -90
  320. package/test_helpers/test_fixtures/datatype_as_per_1.04.xml +0 -118
  321. package/test_helpers/test_fixtures/datatype_with_allow_subtype.xml +0 -104
  322. package/test_helpers/test_fixtures/eurange_issue.xml +0 -74
  323. package/test_helpers/test_fixtures/example_issue1096.xml +0 -267
  324. package/test_helpers/test_fixtures/fixture_empty_nodeset2.xml +0 -106
  325. package/test_helpers/test_fixtures/fixture_simple_statemachine_nodeset2.xml +0 -1305
  326. package/test_helpers/test_fixtures/fixuture_nodeset_objects_with_some_methods.xml +0 -370
  327. package/test_helpers/test_fixtures/issue_1132_variable_with_nodeid_value.xml +0 -68
  328. package/test_helpers/test_fixtures/issue_846.xml +0 -3172
  329. package/test_helpers/test_fixtures/issue_899_variable_with_nodeid_value.xml +0 -33
  330. package/test_helpers/test_fixtures/mini.Node.Set2.xml +0 -4736
  331. package/test_helpers/test_fixtures/mini.nodeset.withVariousVariables.xml +0 -196
  332. package/test_helpers/test_fixtures/minimalist_nodeset_with_models.xml +0 -8
  333. package/test_helpers/test_fixtures/minimalist_nodeset_with_models_more_complex.xml +0 -20
  334. package/test_helpers/test_fixtures/nodeset_no_aliases.xml +0 -30
  335. package/test_helpers/test_fixtures/nodeset_no_aliases_with_aliases.xml +0 -31
  336. package/test_helpers/test_fixtures/nodeset_with_analog_items.xml +0 -45
  337. package/test_helpers/test_fixtures/nodeset_with_guid.xml +0 -1442
  338. package/test_helpers/test_fixtures/nodeset_with_int64_values.xml +0 -31
  339. package/test_helpers/test_fixtures/nodeset_with_special_char.xml +0 -34
  340. package/test_helpers/test_fixtures/nodeset_with_utf8_special_characters.xml +0 -20
  341. package/test_helpers/test_fixtures/variable_with_value.xml +0 -143
  342. package/test_helpers/test_fixtures/variabletype_with_value.xml +0 -324
@@ -1,369 +1,369 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DataType_toString = exports.UADataTypeImpl = void 0;
4
- /**
5
- * @module node-opcua-address-space
6
- */
7
- const chalk = require("chalk");
8
- const node_opcua_assert_1 = require("node-opcua-assert");
9
- const node_opcua_data_model_1 = require("node-opcua-data-model");
10
- const node_opcua_data_model_2 = require("node-opcua-data-model");
11
- const node_opcua_data_value_1 = require("node-opcua-data-value");
12
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
13
- const node_opcua_numeric_range_1 = require("node-opcua-numeric-range");
14
- const node_opcua_status_code_1 = require("node-opcua-status-code");
15
- const node_opcua_types_1 = require("node-opcua-types");
16
- const node_opcua_variant_1 = require("node-opcua-variant");
17
- const node_opcua_constants_1 = require("node-opcua-constants");
18
- const session_context_1 = require("../source/session_context");
19
- const base_node_impl_1 = require("./base_node_impl");
20
- const base_node_private_1 = require("./base_node_private");
21
- const tools = require("./tool_isSubtypeOf");
22
- const tool_isSubtypeOf_1 = require("./tool_isSubtypeOf");
23
- const tool_isSubtypeOf_2 = require("./tool_isSubtypeOf");
24
- const base_node_private_2 = require("./base_node_private");
25
- class UADataTypeImpl extends base_node_impl_1.BaseNodeImpl {
26
- /**
27
- * returns true if this is a super type of baseType
28
- *
29
- * @example
30
- *
31
- * var dataTypeDouble = addressSpace.findDataType("Double");
32
- * var dataTypeNumber = addressSpace.findDataType("Number");
33
- * assert(dataTypeDouble.isSubtypeOf(dataTypeNumber));
34
- * assert(!dataTypeNumber.isSubtypeOf(dataTypeDouble));
35
- *
36
- */
37
- get subtypeOf() {
38
- return tool_isSubtypeOf_1.get_subtypeOf.call(this);
39
- }
40
- get subtypeOfObj() {
41
- return tool_isSubtypeOf_2.get_subtypeOfObj.call(this);
42
- }
43
- constructor(options) {
44
- super(options);
45
- this.nodeClass = node_opcua_data_model_1.NodeClass.DataType;
46
- this.definitionName = "";
47
- /** @deprecated */
48
- this.isSupertypeOf = tools.construct_isSubtypeOf(UADataTypeImpl);
49
- this.isSubtypeOf = tools.construct_isSubtypeOf(UADataTypeImpl);
50
- if (options.partialDefinition) {
51
- this.$partialDefinition = options.partialDefinition;
52
- this.$isUnion = options.isUnion;
53
- }
54
- this.isAbstract = options.isAbstract === undefined || options.isAbstract === null ? false : options.isAbstract;
55
- this.symbolicName = options.symbolicName || this.browseName.name;
56
- }
57
- get basicDataType() {
58
- return this.getBasicDataType();
59
- }
60
- getBasicDataType() {
61
- return this.addressSpace.findCorrespondingBasicDataType(this);
62
- }
63
- readAttribute(context, attributeId, indexRange, dataEncoding) {
64
- var _a;
65
- (0, node_opcua_assert_1.assert)(!context || context instanceof session_context_1.SessionContext);
66
- const options = {};
67
- switch (attributeId) {
68
- case node_opcua_data_model_2.AttributeIds.IsAbstract:
69
- options.statusCode = node_opcua_status_code_1.StatusCodes.Good;
70
- options.value = { dataType: node_opcua_variant_1.DataType.Boolean, value: !!this.isAbstract };
71
- break;
72
- case node_opcua_data_model_2.AttributeIds.DataTypeDefinition:
73
- {
74
- const _definition = (_a = this._getDefinition()) === null || _a === void 0 ? void 0 : _a.clone();
75
- if (_definition) {
76
- options.value = { dataType: node_opcua_variant_1.DataType.ExtensionObject, value: _definition };
77
- }
78
- else {
79
- options.statusCode = node_opcua_status_code_1.StatusCodes.BadAttributeIdInvalid;
80
- }
81
- }
82
- break;
83
- default:
84
- return super.readAttribute(context, attributeId, indexRange, dataEncoding);
85
- }
86
- return new node_opcua_data_value_1.DataValue(options);
87
- }
88
- getEncodingDefinition(encoding_name) {
89
- const encodingNode = this.getEncodingNode(encoding_name);
90
- if (!encodingNode) {
91
- throw new Error("Cannot find Encoding for " + encoding_name);
92
- }
93
- const indexRange = new node_opcua_numeric_range_1.NumericRange();
94
- const descriptionNodeRef = encodingNode.findReferences("HasDescription")[0];
95
- const descriptionNode = this.addressSpace.findNode(descriptionNodeRef.nodeId);
96
- if (!descriptionNode) {
97
- return null;
98
- }
99
- const dataValue = descriptionNode.readValue(session_context_1.SessionContext.defaultContext, indexRange);
100
- return dataValue.value.value.toString() || null;
101
- }
102
- getEncodingNode(encoding_name) {
103
- const _cache = (0, base_node_private_2.BaseNode_getCache)(this);
104
- _cache._encoding = _cache._encoding || {};
105
- const key = encoding_name + "Node";
106
- if (_cache._encoding[key] === undefined) {
107
- (0, node_opcua_assert_1.assert)(encoding_name === "Default Binary" || encoding_name === "Default XML" || encoding_name === "Default JSON");
108
- // could be binary or xml
109
- const refs = this.findReferences("HasEncoding", true);
110
- const addressSpace = this.addressSpace;
111
- const encoding = refs
112
- .map((ref) => addressSpace.findNode(ref.nodeId))
113
- .filter((obj) => obj !== null)
114
- .filter((obj) => obj.browseName.toString() === encoding_name);
115
- const node = encoding.length === 0 ? null : encoding[0];
116
- _cache._encoding[key] = node;
117
- }
118
- return _cache._encoding[key];
119
- }
120
- getEncodingNodeId(encoding_name) {
121
- const encoding = this.getEncodingNode(encoding_name);
122
- if (!encoding) {
123
- return null;
124
- }
125
- const namespaceUri = this.addressSpace.getNamespaceUri(encoding.nodeId.namespace);
126
- return node_opcua_nodeid_1.ExpandedNodeId.fromNodeId(encoding.nodeId, namespaceUri);
127
- }
128
- /**
129
- * returns the encoding of this node's
130
- * TODO objects have 2 encodings : XML and Binaries
131
- */
132
- get binaryEncoding() {
133
- return this.getEncodingNode("Default Binary");
134
- }
135
- get binaryEncodingDefinition() {
136
- return this.getEncodingDefinition("Default Binary");
137
- }
138
- get binaryEncodingNodeId() {
139
- return this.getEncodingNodeId("Default Binary");
140
- }
141
- get xmlEncoding() {
142
- return this.getEncodingNode("Default XML");
143
- }
144
- get xmlEncodingNodeId() {
145
- return this.getEncodingNodeId("Default XML");
146
- }
147
- get xmlEncodingDefinition() {
148
- return this.getEncodingDefinition("Default XML");
149
- }
150
- get jsonEncoding() {
151
- return this.getEncodingNode("Default JSON");
152
- }
153
- get jsonEncodingNodeId() {
154
- return this.getEncodingNodeId("Default JSON");
155
- }
156
- // public get jsonEncodingDefinition(): string | null {
157
- // return this.getEncodingDefinition("Default JSON");
158
- // }
159
- _getEnumerationInfo() {
160
- let definition = [];
161
- if (this.enumStrings) {
162
- const enumStrings = this.enumStrings.readValue().value.value;
163
- (0, node_opcua_assert_1.assert)(Array.isArray(enumStrings));
164
- definition = enumStrings.map((e, index) => {
165
- return {
166
- name: e.text,
167
- value: index
168
- };
169
- });
170
- }
171
- else if (this.enumValues) {
172
- (0, node_opcua_assert_1.assert)(this.enumValues, "must have a enumValues property");
173
- const enumValues = this.enumValues.readValue().value.value;
174
- (0, node_opcua_assert_1.assert)(Array.isArray(enumValues));
175
- definition = enumValues.map((e) => {
176
- return {
177
- name: e.displayName.text,
178
- value: e.value[1]
179
- };
180
- });
181
- }
182
- // construct nameIndex and valueIndex
183
- const indexes = {
184
- nameIndex: {},
185
- valueIndex: {}
186
- };
187
- for (const e of definition) {
188
- indexes.nameIndex[e.name] = e;
189
- indexes.valueIndex[e.value] = e;
190
- }
191
- return indexes;
192
- }
193
- isStructure() {
194
- const definition = this._getDefinition();
195
- return !!definition && definition instanceof node_opcua_types_1.StructureDefinition;
196
- }
197
- getStructureDefinition() {
198
- const definition = this._getDefinition();
199
- (0, node_opcua_assert_1.assert)(definition instanceof node_opcua_types_1.StructureDefinition);
200
- return definition;
201
- }
202
- isEnumeration() {
203
- const definition = this._getDefinition();
204
- return !!definition && definition instanceof node_opcua_types_1.EnumDefinition;
205
- }
206
- getEnumDefinition() {
207
- const definition = this._getDefinition();
208
- (0, node_opcua_assert_1.assert)(definition instanceof node_opcua_types_1.EnumDefinition);
209
- return definition;
210
- }
211
- // eslint-disable-next-line complexity
212
- _getDefinition() {
213
- var _a;
214
- if (this.$fullDefinition !== undefined) {
215
- return this.$fullDefinition;
216
- }
217
- const addressSpace = this.addressSpace;
218
- const enumeration = addressSpace.findDataType("Enumeration");
219
- const structure = addressSpace.findDataType("Structure");
220
- const union = addressSpace.findDataType("Union");
221
- // we have a data type from a companion specification
222
- // let's see if this data type need to be registered
223
- const isEnumeration = enumeration && this.isSubtypeOf(enumeration);
224
- const isStructure = structure && this.isSubtypeOf(structure);
225
- const isUnion = !!(structure && union && this.isSubtypeOf(union));
226
- const isRootDataType = (n) => n.nodeId.namespace === 0 && n.nodeId.value === node_opcua_constants_1.DataTypeIds.BaseDataType;
227
- // https://reference.opcfoundation.org/v104/Core/docs/Part3/8.49/#Table34
228
- if (isStructure) {
229
- // eslint-disable-next-line @typescript-eslint/no-this-alias
230
- let dataTypeNode = this;
231
- const allPartialDefinitions = [];
232
- while (dataTypeNode && !isRootDataType(dataTypeNode)) {
233
- if (dataTypeNode.$partialDefinition) {
234
- allPartialDefinitions.push(dataTypeNode.$partialDefinition);
235
- }
236
- dataTypeNode = dataTypeNode.subtypeOfObj;
237
- }
238
- // merge them:
239
- const definitionFields = [];
240
- for (const dd of allPartialDefinitions.reverse()) {
241
- definitionFields.push(...dd);
242
- }
243
- const basicDataType = ((_a = this.subtypeOfObj) === null || _a === void 0 ? void 0 : _a.nodeId) || new node_opcua_nodeid_1.NodeId();
244
- const defaultEncodingId = this.binaryEncodingNodeId || this.xmlEncodingNodeId || new node_opcua_nodeid_1.NodeId();
245
- const definitionName = this.browseName.name;
246
- this.$fullDefinition = makeStructureDefinition(definitionName, basicDataType, defaultEncodingId, definitionFields, isUnion);
247
- }
248
- else if (isEnumeration) {
249
- const allPartialDefinitions = [];
250
- // eslint-disable-next-line @typescript-eslint/no-this-alias
251
- let dataTypeNode = this;
252
- while (dataTypeNode && !isRootDataType(dataTypeNode)) {
253
- if (dataTypeNode.$partialDefinition) {
254
- allPartialDefinitions.push(dataTypeNode.$partialDefinition);
255
- }
256
- dataTypeNode = dataTypeNode.subtypeOfObj;
257
- }
258
- // merge them:
259
- const definitionFields = [];
260
- for (const dd of allPartialDefinitions.reverse()) {
261
- definitionFields.push(...dd);
262
- }
263
- this.$fullDefinition = makeEnumDefinition(definitionFields);
264
- }
265
- return this.$fullDefinition;
266
- }
267
- getDefinition() {
268
- const d = this._getDefinition();
269
- if (!d) {
270
- throw new Error("DataType has no definition property");
271
- }
272
- return d;
273
- }
274
- install_extra_properties() {
275
- //
276
- }
277
- toString() {
278
- const options = new base_node_private_1.ToStringBuilder();
279
- DataType_toString.call(this, options);
280
- return options.toString();
281
- }
282
- }
283
- exports.UADataTypeImpl = UADataTypeImpl;
284
- function dataTypeDefinition_toString(options) {
285
- const definition = this._getDefinition();
286
- if (!definition) {
287
- return;
288
- }
289
- const output = definition.toString();
290
- options.add(options.padding + chalk.yellow(" Definition : "));
291
- for (const str of output.split("\n")) {
292
- options.add(options.padding + chalk.yellow(" : " + str));
293
- }
294
- }
295
- function DataType_toString(options) {
296
- base_node_private_1.BaseNode_toString.call(this, options);
297
- options.add(options.padding + chalk.yellow(" isAbstract : " + this.isAbstract));
298
- options.add(options.padding + chalk.yellow(" definitionName : " + this.definitionName));
299
- options.add(options.padding +
300
- chalk.yellow(" binaryEncodingNodeId: ") +
301
- (this.binaryEncodingNodeId ? this.binaryEncodingNodeId.toString() : "<none>"));
302
- options.add(options.padding +
303
- chalk.yellow(" xmlEncodingNodeId : ") +
304
- (this.xmlEncodingNodeId ? this.xmlEncodingNodeId.toString() : "<none>"));
305
- options.add(options.padding +
306
- chalk.yellow(" jsonEncodingNodeId : ") +
307
- (this.jsonEncodingNodeId ? this.jsonEncodingNodeId.toString() : "<none>"));
308
- if (this.subtypeOfObj) {
309
- options.add(options.padding +
310
- chalk.yellow(" subtypeOfObj : ") +
311
- (this.subtypeOfObj ? this.subtypeOfObj.browseName.toString() : ""));
312
- }
313
- // references
314
- base_node_private_1.BaseNode_References_toString.call(this, options);
315
- dataTypeDefinition_toString.call(this, options);
316
- }
317
- exports.DataType_toString = DataType_toString;
318
- function makeEnumDefinition(definitionFields) {
319
- return new node_opcua_types_1.EnumDefinition({
320
- fields: definitionFields.map((x) => ({
321
- description: x.description,
322
- name: x.name,
323
- value: x.value
324
- }))
325
- });
326
- }
327
- function makeStructureDefinition(name, baseDataType, defaultEncodingId, fields, isUnion) {
328
- // Structure = 0,
329
- // StructureWithOptionalFields = 1,
330
- // Union = 2,
331
- const hasOptionalFields = fields.filter((field) => field.isOptional).length > 0;
332
- const structureType = isUnion
333
- ? node_opcua_types_1.StructureType.Union
334
- : hasOptionalFields
335
- ? node_opcua_types_1.StructureType.StructureWithOptionalFields
336
- : node_opcua_types_1.StructureType.Structure;
337
- const sd = new node_opcua_types_1.StructureDefinition({
338
- baseDataType,
339
- defaultEncodingId,
340
- fields,
341
- structureType
342
- });
343
- return sd;
344
- }
345
- /*
346
- function lockReadOnlyWithWriteDetection<T>(obj: T): T {
347
- if (obj instanceof Array) {
348
- return obj.map(lockReadOnlyWithWriteDetection) as unknown as T;
349
- }
350
- if (obj instanceof Object) {
351
- const _org = obj;
352
- for (const [key, value] of Object.entries(obj)) {
353
- lockReadOnlyWithWriteDetection(value);
354
- }
355
- obj = new Proxy(obj, {
356
- get: (target: any, prop: string) => {
357
- return target[prop];
358
- },
359
- set: (target: any, prop: string | symbol, value: any, receiver: any) => {
360
- console.log("QQQQQ Cannot modify stuff ");
361
- debugger;
362
- throw new Error("Invalid");
363
- }
364
- });
365
- }
366
- return obj;
367
- }
368
- */
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataType_toString = exports.UADataTypeImpl = void 0;
4
+ /**
5
+ * @module node-opcua-address-space
6
+ */
7
+ const chalk = require("chalk");
8
+ const node_opcua_assert_1 = require("node-opcua-assert");
9
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
10
+ const node_opcua_data_model_2 = require("node-opcua-data-model");
11
+ const node_opcua_data_value_1 = require("node-opcua-data-value");
12
+ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
13
+ const node_opcua_numeric_range_1 = require("node-opcua-numeric-range");
14
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
15
+ const node_opcua_types_1 = require("node-opcua-types");
16
+ const node_opcua_variant_1 = require("node-opcua-variant");
17
+ const node_opcua_constants_1 = require("node-opcua-constants");
18
+ const session_context_1 = require("../source/session_context");
19
+ const base_node_impl_1 = require("./base_node_impl");
20
+ const base_node_private_1 = require("./base_node_private");
21
+ const tools = require("./tool_isSubtypeOf");
22
+ const tool_isSubtypeOf_1 = require("./tool_isSubtypeOf");
23
+ const tool_isSubtypeOf_2 = require("./tool_isSubtypeOf");
24
+ const base_node_private_2 = require("./base_node_private");
25
+ class UADataTypeImpl extends base_node_impl_1.BaseNodeImpl {
26
+ /**
27
+ * returns true if this is a super type of baseType
28
+ *
29
+ * @example
30
+ *
31
+ * var dataTypeDouble = addressSpace.findDataType("Double");
32
+ * var dataTypeNumber = addressSpace.findDataType("Number");
33
+ * assert(dataTypeDouble.isSubtypeOf(dataTypeNumber));
34
+ * assert(!dataTypeNumber.isSubtypeOf(dataTypeDouble));
35
+ *
36
+ */
37
+ get subtypeOf() {
38
+ return tool_isSubtypeOf_1.get_subtypeOf.call(this);
39
+ }
40
+ get subtypeOfObj() {
41
+ return tool_isSubtypeOf_2.get_subtypeOfObj.call(this);
42
+ }
43
+ constructor(options) {
44
+ super(options);
45
+ this.nodeClass = node_opcua_data_model_1.NodeClass.DataType;
46
+ this.definitionName = "";
47
+ /** @deprecated */
48
+ this.isSupertypeOf = tools.construct_isSubtypeOf(UADataTypeImpl);
49
+ this.isSubtypeOf = tools.construct_isSubtypeOf(UADataTypeImpl);
50
+ if (options.partialDefinition) {
51
+ this.$partialDefinition = options.partialDefinition;
52
+ this.$isUnion = options.isUnion;
53
+ }
54
+ this.isAbstract = options.isAbstract === undefined || options.isAbstract === null ? false : options.isAbstract;
55
+ this.symbolicName = options.symbolicName || this.browseName.name;
56
+ }
57
+ get basicDataType() {
58
+ return this.getBasicDataType();
59
+ }
60
+ getBasicDataType() {
61
+ return this.addressSpace.findCorrespondingBasicDataType(this);
62
+ }
63
+ readAttribute(context, attributeId, indexRange, dataEncoding) {
64
+ var _a;
65
+ (0, node_opcua_assert_1.assert)(!context || context instanceof session_context_1.SessionContext);
66
+ const options = {};
67
+ switch (attributeId) {
68
+ case node_opcua_data_model_2.AttributeIds.IsAbstract:
69
+ options.statusCode = node_opcua_status_code_1.StatusCodes.Good;
70
+ options.value = { dataType: node_opcua_variant_1.DataType.Boolean, value: !!this.isAbstract };
71
+ break;
72
+ case node_opcua_data_model_2.AttributeIds.DataTypeDefinition:
73
+ {
74
+ const _definition = (_a = this._getDefinition()) === null || _a === void 0 ? void 0 : _a.clone();
75
+ if (_definition) {
76
+ options.value = { dataType: node_opcua_variant_1.DataType.ExtensionObject, value: _definition };
77
+ }
78
+ else {
79
+ options.statusCode = node_opcua_status_code_1.StatusCodes.BadAttributeIdInvalid;
80
+ }
81
+ }
82
+ break;
83
+ default:
84
+ return super.readAttribute(context, attributeId, indexRange, dataEncoding);
85
+ }
86
+ return new node_opcua_data_value_1.DataValue(options);
87
+ }
88
+ getEncodingDefinition(encoding_name) {
89
+ const encodingNode = this.getEncodingNode(encoding_name);
90
+ if (!encodingNode) {
91
+ throw new Error("Cannot find Encoding for " + encoding_name);
92
+ }
93
+ const indexRange = new node_opcua_numeric_range_1.NumericRange();
94
+ const descriptionNodeRef = encodingNode.findReferences("HasDescription")[0];
95
+ const descriptionNode = this.addressSpace.findNode(descriptionNodeRef.nodeId);
96
+ if (!descriptionNode) {
97
+ return null;
98
+ }
99
+ const dataValue = descriptionNode.readValue(session_context_1.SessionContext.defaultContext, indexRange);
100
+ return dataValue.value.value.toString() || null;
101
+ }
102
+ getEncodingNode(encoding_name) {
103
+ const _cache = (0, base_node_private_2.BaseNode_getCache)(this);
104
+ _cache._encoding = _cache._encoding || {};
105
+ const key = encoding_name + "Node";
106
+ if (_cache._encoding[key] === undefined) {
107
+ (0, node_opcua_assert_1.assert)(encoding_name === "Default Binary" || encoding_name === "Default XML" || encoding_name === "Default JSON");
108
+ // could be binary or xml
109
+ const refs = this.findReferences("HasEncoding", true);
110
+ const addressSpace = this.addressSpace;
111
+ const encoding = refs
112
+ .map((ref) => addressSpace.findNode(ref.nodeId))
113
+ .filter((obj) => obj !== null)
114
+ .filter((obj) => obj.browseName.toString() === encoding_name);
115
+ const node = encoding.length === 0 ? null : encoding[0];
116
+ _cache._encoding[key] = node;
117
+ }
118
+ return _cache._encoding[key];
119
+ }
120
+ getEncodingNodeId(encoding_name) {
121
+ const encoding = this.getEncodingNode(encoding_name);
122
+ if (!encoding) {
123
+ return null;
124
+ }
125
+ const namespaceUri = this.addressSpace.getNamespaceUri(encoding.nodeId.namespace);
126
+ return node_opcua_nodeid_1.ExpandedNodeId.fromNodeId(encoding.nodeId, namespaceUri);
127
+ }
128
+ /**
129
+ * returns the encoding of this node's
130
+ * TODO objects have 2 encodings : XML and Binaries
131
+ */
132
+ get binaryEncoding() {
133
+ return this.getEncodingNode("Default Binary");
134
+ }
135
+ get binaryEncodingDefinition() {
136
+ return this.getEncodingDefinition("Default Binary");
137
+ }
138
+ get binaryEncodingNodeId() {
139
+ return this.getEncodingNodeId("Default Binary");
140
+ }
141
+ get xmlEncoding() {
142
+ return this.getEncodingNode("Default XML");
143
+ }
144
+ get xmlEncodingNodeId() {
145
+ return this.getEncodingNodeId("Default XML");
146
+ }
147
+ get xmlEncodingDefinition() {
148
+ return this.getEncodingDefinition("Default XML");
149
+ }
150
+ get jsonEncoding() {
151
+ return this.getEncodingNode("Default JSON");
152
+ }
153
+ get jsonEncodingNodeId() {
154
+ return this.getEncodingNodeId("Default JSON");
155
+ }
156
+ // public get jsonEncodingDefinition(): string | null {
157
+ // return this.getEncodingDefinition("Default JSON");
158
+ // }
159
+ _getEnumerationInfo() {
160
+ let definition = [];
161
+ if (this.enumStrings) {
162
+ const enumStrings = this.enumStrings.readValue().value.value;
163
+ (0, node_opcua_assert_1.assert)(Array.isArray(enumStrings));
164
+ definition = enumStrings.map((e, index) => {
165
+ return {
166
+ name: e.text,
167
+ value: index
168
+ };
169
+ });
170
+ }
171
+ else if (this.enumValues) {
172
+ (0, node_opcua_assert_1.assert)(this.enumValues, "must have a enumValues property");
173
+ const enumValues = this.enumValues.readValue().value.value;
174
+ (0, node_opcua_assert_1.assert)(Array.isArray(enumValues));
175
+ definition = enumValues.map((e) => {
176
+ return {
177
+ name: e.displayName.text,
178
+ value: e.value[1]
179
+ };
180
+ });
181
+ }
182
+ // construct nameIndex and valueIndex
183
+ const indexes = {
184
+ nameIndex: {},
185
+ valueIndex: {}
186
+ };
187
+ for (const e of definition) {
188
+ indexes.nameIndex[e.name] = e;
189
+ indexes.valueIndex[e.value] = e;
190
+ }
191
+ return indexes;
192
+ }
193
+ isStructure() {
194
+ const definition = this._getDefinition();
195
+ return !!definition && definition instanceof node_opcua_types_1.StructureDefinition;
196
+ }
197
+ getStructureDefinition() {
198
+ const definition = this._getDefinition();
199
+ (0, node_opcua_assert_1.assert)(definition instanceof node_opcua_types_1.StructureDefinition);
200
+ return definition;
201
+ }
202
+ isEnumeration() {
203
+ const definition = this._getDefinition();
204
+ return !!definition && definition instanceof node_opcua_types_1.EnumDefinition;
205
+ }
206
+ getEnumDefinition() {
207
+ const definition = this._getDefinition();
208
+ (0, node_opcua_assert_1.assert)(definition instanceof node_opcua_types_1.EnumDefinition);
209
+ return definition;
210
+ }
211
+ // eslint-disable-next-line complexity
212
+ _getDefinition() {
213
+ var _a;
214
+ if (this.$fullDefinition !== undefined) {
215
+ return this.$fullDefinition;
216
+ }
217
+ const addressSpace = this.addressSpace;
218
+ const enumeration = addressSpace.findDataType("Enumeration");
219
+ const structure = addressSpace.findDataType("Structure");
220
+ const union = addressSpace.findDataType("Union");
221
+ // we have a data type from a companion specification
222
+ // let's see if this data type need to be registered
223
+ const isEnumeration = enumeration && this.isSubtypeOf(enumeration);
224
+ const isStructure = structure && this.isSubtypeOf(structure);
225
+ const isUnion = !!(structure && union && this.isSubtypeOf(union));
226
+ const isRootDataType = (n) => n.nodeId.namespace === 0 && n.nodeId.value === node_opcua_constants_1.DataTypeIds.BaseDataType;
227
+ // https://reference.opcfoundation.org/v104/Core/docs/Part3/8.49/#Table34
228
+ if (isStructure) {
229
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
230
+ let dataTypeNode = this;
231
+ const allPartialDefinitions = [];
232
+ while (dataTypeNode && !isRootDataType(dataTypeNode)) {
233
+ if (dataTypeNode.$partialDefinition) {
234
+ allPartialDefinitions.push(dataTypeNode.$partialDefinition);
235
+ }
236
+ dataTypeNode = dataTypeNode.subtypeOfObj;
237
+ }
238
+ // merge them:
239
+ const definitionFields = [];
240
+ for (const dd of allPartialDefinitions.reverse()) {
241
+ definitionFields.push(...dd);
242
+ }
243
+ const basicDataType = ((_a = this.subtypeOfObj) === null || _a === void 0 ? void 0 : _a.nodeId) || new node_opcua_nodeid_1.NodeId();
244
+ const defaultEncodingId = this.binaryEncodingNodeId || this.xmlEncodingNodeId || new node_opcua_nodeid_1.NodeId();
245
+ const definitionName = this.browseName.name;
246
+ this.$fullDefinition = makeStructureDefinition(definitionName, basicDataType, defaultEncodingId, definitionFields, isUnion);
247
+ }
248
+ else if (isEnumeration) {
249
+ const allPartialDefinitions = [];
250
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
251
+ let dataTypeNode = this;
252
+ while (dataTypeNode && !isRootDataType(dataTypeNode)) {
253
+ if (dataTypeNode.$partialDefinition) {
254
+ allPartialDefinitions.push(dataTypeNode.$partialDefinition);
255
+ }
256
+ dataTypeNode = dataTypeNode.subtypeOfObj;
257
+ }
258
+ // merge them:
259
+ const definitionFields = [];
260
+ for (const dd of allPartialDefinitions.reverse()) {
261
+ definitionFields.push(...dd);
262
+ }
263
+ this.$fullDefinition = makeEnumDefinition(definitionFields);
264
+ }
265
+ return this.$fullDefinition;
266
+ }
267
+ getDefinition() {
268
+ const d = this._getDefinition();
269
+ if (!d) {
270
+ throw new Error("DataType has no definition property");
271
+ }
272
+ return d;
273
+ }
274
+ install_extra_properties() {
275
+ //
276
+ }
277
+ toString() {
278
+ const options = new base_node_private_1.ToStringBuilder();
279
+ DataType_toString.call(this, options);
280
+ return options.toString();
281
+ }
282
+ }
283
+ exports.UADataTypeImpl = UADataTypeImpl;
284
+ function dataTypeDefinition_toString(options) {
285
+ const definition = this._getDefinition();
286
+ if (!definition) {
287
+ return;
288
+ }
289
+ const output = definition.toString();
290
+ options.add(options.padding + chalk.yellow(" Definition : "));
291
+ for (const str of output.split("\n")) {
292
+ options.add(options.padding + chalk.yellow(" : " + str));
293
+ }
294
+ }
295
+ function DataType_toString(options) {
296
+ base_node_private_1.BaseNode_toString.call(this, options);
297
+ options.add(options.padding + chalk.yellow(" isAbstract : " + this.isAbstract));
298
+ options.add(options.padding + chalk.yellow(" definitionName : " + this.definitionName));
299
+ options.add(options.padding +
300
+ chalk.yellow(" binaryEncodingNodeId: ") +
301
+ (this.binaryEncodingNodeId ? this.binaryEncodingNodeId.toString() : "<none>"));
302
+ options.add(options.padding +
303
+ chalk.yellow(" xmlEncodingNodeId : ") +
304
+ (this.xmlEncodingNodeId ? this.xmlEncodingNodeId.toString() : "<none>"));
305
+ options.add(options.padding +
306
+ chalk.yellow(" jsonEncodingNodeId : ") +
307
+ (this.jsonEncodingNodeId ? this.jsonEncodingNodeId.toString() : "<none>"));
308
+ if (this.subtypeOfObj) {
309
+ options.add(options.padding +
310
+ chalk.yellow(" subtypeOfObj : ") +
311
+ (this.subtypeOfObj ? this.subtypeOfObj.browseName.toString() : ""));
312
+ }
313
+ // references
314
+ base_node_private_1.BaseNode_References_toString.call(this, options);
315
+ dataTypeDefinition_toString.call(this, options);
316
+ }
317
+ exports.DataType_toString = DataType_toString;
318
+ function makeEnumDefinition(definitionFields) {
319
+ return new node_opcua_types_1.EnumDefinition({
320
+ fields: definitionFields.map((x) => ({
321
+ description: x.description,
322
+ name: x.name,
323
+ value: x.value
324
+ }))
325
+ });
326
+ }
327
+ function makeStructureDefinition(name, baseDataType, defaultEncodingId, fields, isUnion) {
328
+ // Structure = 0,
329
+ // StructureWithOptionalFields = 1,
330
+ // Union = 2,
331
+ const hasOptionalFields = fields.filter((field) => field.isOptional).length > 0;
332
+ const structureType = isUnion
333
+ ? node_opcua_types_1.StructureType.Union
334
+ : hasOptionalFields
335
+ ? node_opcua_types_1.StructureType.StructureWithOptionalFields
336
+ : node_opcua_types_1.StructureType.Structure;
337
+ const sd = new node_opcua_types_1.StructureDefinition({
338
+ baseDataType,
339
+ defaultEncodingId,
340
+ fields,
341
+ structureType
342
+ });
343
+ return sd;
344
+ }
345
+ /*
346
+ function lockReadOnlyWithWriteDetection<T>(obj: T): T {
347
+ if (obj instanceof Array) {
348
+ return obj.map(lockReadOnlyWithWriteDetection) as unknown as T;
349
+ }
350
+ if (obj instanceof Object) {
351
+ const _org = obj;
352
+ for (const [key, value] of Object.entries(obj)) {
353
+ lockReadOnlyWithWriteDetection(value);
354
+ }
355
+ obj = new Proxy(obj, {
356
+ get: (target: any, prop: string) => {
357
+ return target[prop];
358
+ },
359
+ set: (target: any, prop: string | symbol, value: any, receiver: any) => {
360
+ console.log("QQQQQ Cannot modify stuff ");
361
+ debugger;
362
+ throw new Error("Invalid");
363
+ }
364
+ });
365
+ }
366
+ return obj;
367
+ }
368
+ */
369
369
  //# sourceMappingURL=ua_data_type_impl.js.map