node-opcua-address-space 2.70.3 → 2.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) 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/alarms_and_conditions/ua_condition_base_i.d.ts +23 -0
  30. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.js +3 -0
  31. package/dist/source/interfaces/alarms_and_conditions/ua_condition_base_i.js.map +1 -0
  32. package/dist/source/interfaces/data_access/ua_discrete_item.d.ts +6 -0
  33. package/dist/source/interfaces/data_access/ua_discrete_item.js +3 -0
  34. package/dist/source/interfaces/data_access/ua_discrete_item.js.map +1 -0
  35. package/dist/source/interfaces/data_access/ua_multistate_discrete.d.ts +25 -0
  36. package/dist/source/interfaces/data_access/ua_multistate_discrete.js +3 -0
  37. package/dist/source/interfaces/data_access/ua_multistate_discrete.js.map +1 -0
  38. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.d.ts +21 -21
  39. package/dist/source/interfaces/data_access/ua_multistate_discrete_ex.js +2 -2
  40. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.d.ts +27 -0
  41. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.js +3 -0
  42. package/dist/source/interfaces/data_access/ua_multistate_value_discrete.js.map +1 -0
  43. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +24 -24
  44. package/dist/source/interfaces/data_access/ua_multistate_value_discrete_ex.js +2 -2
  45. package/dist/source/interfaces/data_access/ua_two_state_discrete.d.ts +17 -0
  46. package/dist/source/interfaces/data_access/ua_two_state_discrete.js +3 -0
  47. package/dist/source/interfaces/data_access/ua_two_state_discrete.js.map +1 -0
  48. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.d.ts +12 -12
  49. package/dist/source/interfaces/data_access/ua_two_state_discrete_ex.js +2 -2
  50. package/dist/source/interfaces/data_access/ua_y_array_item.d.ts +19 -0
  51. package/dist/source/interfaces/data_access/ua_y_array_item.js +3 -0
  52. package/dist/source/interfaces/data_access/ua_y_array_item.js.map +1 -0
  53. package/dist/source/interfaces/data_access/ua_y_array_item_ex.d.ts +8 -8
  54. package/dist/source/interfaces/data_access/ua_y_array_item_ex.js +2 -2
  55. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.d.ts +11 -0
  56. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.js +3 -0
  57. package/dist/source/interfaces/state_machine/exclusive_limit_state_machine.js.map +1 -0
  58. package/dist/source/interfaces/state_machine/finite_state_machine.d.ts +70 -0
  59. package/dist/source/interfaces/state_machine/finite_state_machine.js +3 -0
  60. package/dist/source/interfaces/state_machine/finite_state_machine.js.map +1 -0
  61. package/dist/source/interfaces/state_machine/program_finite_state_machine.d.ts +74 -0
  62. package/dist/source/interfaces/state_machine/program_finite_state_machine.js +3 -0
  63. package/dist/source/interfaces/state_machine/program_finite_state_machine.js.map +1 -0
  64. package/dist/source/interfaces/state_machine/state_machine.d.ts +342 -0
  65. package/dist/source/interfaces/state_machine/state_machine.js +3 -0
  66. package/dist/source/interfaces/state_machine/state_machine.js.map +1 -0
  67. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +12 -12
  68. package/dist/source/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +2 -2
  69. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.d.ts +49 -49
  70. package/dist/source/interfaces/state_machine/ua_finite_state_machine_type.js +2 -2
  71. package/dist/source/interfaces/state_machine/ua_finite_state_variable.d.ts +18 -0
  72. package/dist/source/interfaces/state_machine/ua_finite_state_variable.js +3 -0
  73. package/dist/source/interfaces/state_machine/ua_finite_state_variable.js.map +1 -0
  74. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.d.ts +11 -11
  75. package/dist/source/interfaces/state_machine/ua_program_state_machine_type.js +2 -2
  76. package/dist/source/interfaces/state_machine/ua_state_machine_type.d.ts +222 -222
  77. package/dist/source/interfaces/state_machine/ua_state_machine_type.js +2 -2
  78. package/dist/source/interfaces/state_machine/ua_state_variable.d.ts +29 -0
  79. package/dist/source/interfaces/state_machine/ua_state_variable.js +3 -0
  80. package/dist/source/interfaces/state_machine/ua_state_variable.js.map +1 -0
  81. package/dist/source/interfaces/state_machine/ua_transition_ex.d.ts +6 -6
  82. package/dist/source/interfaces/state_machine/ua_transition_ex.js +2 -2
  83. package/dist/source/interfaces/state_machine/ua_two_state_variable.d.ts +26 -0
  84. package/dist/source/interfaces/state_machine/ua_two_state_variable.js +3 -0
  85. package/dist/source/interfaces/state_machine/ua_two_state_variable.js.map +1 -0
  86. package/dist/source/interfaces/subscription_diagnostics_variable.d.ts +41 -0
  87. package/dist/source/interfaces/subscription_diagnostics_variable.js +3 -0
  88. package/dist/source/interfaces/subscription_diagnostics_variable.js.map +1 -0
  89. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +8 -8
  90. package/dist/source/interfaces/ua_subscription_diagnostics_variable_ex.js +2 -2
  91. package/dist/source/loader/decode_xml_extension_object.d.ts +6 -6
  92. package/dist/source/loader/decode_xml_extension_object.js +71 -71
  93. package/dist/source/loader/ensure_datatype_extracted.d.ts +5 -5
  94. package/dist/source/loader/ensure_datatype_extracted.js +45 -45
  95. package/dist/source/loader/generateAddressSpaceRaw.d.ts +10 -10
  96. package/dist/source/loader/generateAddressSpaceRaw.js +45 -45
  97. package/dist/source/loader/load_nodeset2.d.ts +16 -16
  98. package/dist/source/loader/load_nodeset2.js +1464 -1464
  99. package/dist/source/loader/make_xml_extension_object_parser.d.ts +28 -28
  100. package/dist/source/loader/make_xml_extension_object_parser.js +315 -315
  101. package/dist/source/loader/namespace_post_step.d.ts +6 -6
  102. package/dist/source/loader/namespace_post_step.js +47 -47
  103. package/dist/source/loader/register_node_promoter.d.ts +3 -3
  104. package/dist/source/loader/register_node_promoter.js +9 -9
  105. package/dist/source/namespace.d.ts +6 -6
  106. package/dist/source/namespace.js +2 -2
  107. package/dist/source/namespace_alarm_and_condition.d.ts +24 -24
  108. package/dist/source/namespace_alarm_and_condition.js +2 -2
  109. package/dist/source/namespace_data_access.d.ts +42 -42
  110. package/dist/source/namespace_data_access.js +2 -2
  111. package/dist/source/namespace_machine_state.d.ts +7 -7
  112. package/dist/source/namespace_machine_state.js +2 -2
  113. package/dist/source/pseudo_session.d.ts +55 -55
  114. package/dist/source/pseudo_session.js +203 -203
  115. package/dist/source/session_context.d.ts +111 -111
  116. package/dist/source/session_context.js +265 -265
  117. package/dist/source/set_namespace_meta_data.d.ts +2 -2
  118. package/dist/source/set_namespace_meta_data.js +59 -59
  119. package/dist/source/ua_root_folder.d.ts +9 -9
  120. package/dist/source/ua_root_folder.js +2 -2
  121. package/dist/source/ua_two_state_variable_ex.d.ts +23 -23
  122. package/dist/source/ua_two_state_variable_ex.js +2 -2
  123. package/dist/source/xml_writer.d.ts +9 -9
  124. package/dist/source/xml_writer.js +2 -2
  125. package/dist/src/address_space.d.ts +392 -392
  126. package/dist/src/address_space.js +1387 -1387
  127. package/dist/src/address_space_change_event_tools.d.ts +6 -6
  128. package/dist/src/address_space_change_event_tools.js +149 -149
  129. package/dist/src/address_space_private.d.ts +43 -43
  130. package/dist/src/address_space_private.js +2 -2
  131. package/dist/src/alarms_and_conditions/base_event_type.d.ts +26 -0
  132. package/dist/src/alarms_and_conditions/base_event_type.js +41 -0
  133. package/dist/src/alarms_and_conditions/base_event_type.js.map +1 -0
  134. package/dist/src/alarms_and_conditions/check_where_clause.d.ts +4 -4
  135. package/dist/src/alarms_and_conditions/check_where_clause.js +109 -109
  136. package/dist/src/alarms_and_conditions/condition.d.ts +5 -5
  137. package/dist/src/alarms_and_conditions/condition.js +80 -80
  138. package/dist/src/alarms_and_conditions/condition_info.d.ts +27 -27
  139. package/dist/src/alarms_and_conditions/condition_info.js +54 -54
  140. package/dist/src/alarms_and_conditions/condition_snapshot.d.ts +233 -233
  141. package/dist/src/alarms_and_conditions/condition_snapshot.js +666 -666
  142. package/dist/src/alarms_and_conditions/deviation_alarm_helper.d.ts +21 -21
  143. package/dist/src/alarms_and_conditions/deviation_alarm_helper.js +46 -46
  144. package/dist/src/alarms_and_conditions/extract_event_fields.d.ts +10 -10
  145. package/dist/src/alarms_and_conditions/extract_event_fields.js +89 -89
  146. package/dist/src/alarms_and_conditions/index.d.ts +18 -18
  147. package/dist/src/alarms_and_conditions/index.js +34 -34
  148. package/dist/src/alarms_and_conditions/shelving_state_machine.d.ts +22 -0
  149. package/dist/src/alarms_and_conditions/shelving_state_machine.js +241 -0
  150. package/dist/src/alarms_and_conditions/shelving_state_machine.js.map +1 -0
  151. package/dist/src/alarms_and_conditions/trip_alarm.d.ts +16 -0
  152. package/dist/src/alarms_and_conditions/trip_alarm.js +21 -0
  153. package/dist/src/alarms_and_conditions/trip_alarm.js.map +1 -0
  154. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.d.ts +54 -0
  155. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.js +255 -0
  156. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_base.js.map +1 -0
  157. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +62 -62
  158. package/dist/src/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +244 -244
  159. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.d.ts +138 -0
  160. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.js +460 -0
  161. package/dist/src/alarms_and_conditions/ua_alarm_condition_base.js.map +1 -0
  162. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.d.ts +118 -118
  163. package/dist/src/alarms_and_conditions/ua_alarm_condition_impl.js +416 -416
  164. package/dist/src/alarms_and_conditions/ua_base_event_impl.d.ts +29 -29
  165. package/dist/src/alarms_and_conditions/ua_base_event_impl.js +38 -38
  166. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.d.ts +35 -0
  167. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.js +32 -0
  168. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm.js.map +1 -0
  169. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +21 -21
  170. package/dist/src/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +25 -25
  171. package/dist/src/alarms_and_conditions/ua_condition_base.d.ts +191 -0
  172. package/dist/src/alarms_and_conditions/ua_condition_base.js +1029 -0
  173. package/dist/src/alarms_and_conditions/ua_condition_base.js.map +1 -0
  174. package/dist/src/alarms_and_conditions/ua_condition_impl.d.ts +182 -182
  175. package/dist/src/alarms_and_conditions/ua_condition_impl.js +1022 -1022
  176. package/dist/src/alarms_and_conditions/ua_discrete_alarm.d.ts +11 -0
  177. package/dist/src/alarms_and_conditions/ua_discrete_alarm.js +58 -0
  178. package/dist/src/alarms_and_conditions/ua_discrete_alarm.js.map +1 -0
  179. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +17 -17
  180. package/dist/src/alarms_and_conditions/ua_discrete_alarm_impl.js +57 -57
  181. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.d.ts +24 -0
  182. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.js +59 -0
  183. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm.js.map +1 -0
  184. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +27 -27
  185. package/dist/src/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +56 -56
  186. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.d.ts +14 -0
  187. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.js +17 -0
  188. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm.js.map +1 -0
  189. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +9 -9
  190. package/dist/src/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +11 -11
  191. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.d.ts +22 -0
  192. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.js +87 -0
  193. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm.js.map +1 -0
  194. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +38 -38
  195. package/dist/src/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +86 -86
  196. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.d.ts +6 -0
  197. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.js +11 -0
  198. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm.js.map +1 -0
  199. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +10 -10
  200. package/dist/src/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +7 -7
  201. package/dist/src/alarms_and_conditions/ua_limit_alarm.d.ts +76 -0
  202. package/dist/src/alarms_and_conditions/ua_limit_alarm.js +237 -0
  203. package/dist/src/alarms_and_conditions/ua_limit_alarm.js.map +1 -0
  204. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.d.ts +97 -97
  205. package/dist/src/alarms_and_conditions/ua_limit_alarm_impl.js +250 -250
  206. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.d.ts +27 -0
  207. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.js +62 -0
  208. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm.js.map +1 -0
  209. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +28 -28
  210. package/dist/src/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +50 -50
  211. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.d.ts +49 -0
  212. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.js +176 -0
  213. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm.js.map +1 -0
  214. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +25 -25
  215. package/dist/src/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +162 -162
  216. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.d.ts +47 -0
  217. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.js +151 -0
  218. package/dist/src/alarms_and_conditions/ua_off_normal_alarm.js.map +1 -0
  219. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +39 -39
  220. package/dist/src/alarms_and_conditions/ua_off_normal_alarm_impl.js +135 -135
  221. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.d.ts +16 -0
  222. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.js +18 -0
  223. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm.js.map +1 -0
  224. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +16 -16
  225. package/dist/src/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +17 -17
  226. package/dist/src/apply_condition_refresh.d.ts +6 -6
  227. package/dist/src/apply_condition_refresh.js +27 -27
  228. package/dist/src/base_node.d.ts +270 -0
  229. package/dist/src/base_node.js +1299 -0
  230. package/dist/src/base_node.js.map +1 -0
  231. package/dist/src/base_node_impl.d.ts +281 -281
  232. package/dist/src/base_node_impl.js +1395 -1395
  233. package/dist/src/base_node_private.d.ts +61 -61
  234. package/dist/src/base_node_private.js +705 -705
  235. package/dist/src/data_access/add_dataItem_stuff.d.ts +11 -11
  236. package/dist/src/data_access/add_dataItem_stuff.js +61 -61
  237. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.d.ts +1 -1
  238. package/dist/src/data_access/check_variant_compatibility_ua_analog_item.js +34 -34
  239. package/dist/src/data_access/ua_analog_item.d.ts +13 -0
  240. package/dist/src/data_access/ua_analog_item.js +37 -0
  241. package/dist/src/data_access/ua_analog_item.js.map +1 -0
  242. package/dist/src/data_access/ua_data_item.d.ts +16 -0
  243. package/dist/src/data_access/ua_data_item.js +66 -0
  244. package/dist/src/data_access/ua_data_item.js.map +1 -0
  245. package/dist/src/data_access/ua_multistate_discrete.d.ts +24 -0
  246. package/dist/src/data_access/ua_multistate_discrete.js +132 -0
  247. package/dist/src/data_access/ua_multistate_discrete.js.map +1 -0
  248. package/dist/src/data_access/ua_multistate_discrete_impl.d.ts +32 -32
  249. package/dist/src/data_access/ua_multistate_discrete_impl.js +130 -130
  250. package/dist/src/data_access/ua_multistate_value_discrete.d.ts +51 -51
  251. package/dist/src/data_access/ua_multistate_value_discrete.js +249 -249
  252. package/dist/src/data_access/ua_two_state_discrete.d.ts +25 -25
  253. package/dist/src/data_access/ua_two_state_discrete.js +153 -153
  254. package/dist/src/event_data.d.ts +29 -29
  255. package/dist/src/event_data.js +95 -95
  256. package/dist/src/extension_object_array_node.d.ts +61 -61
  257. package/dist/src/extension_object_array_node.js +276 -276
  258. package/dist/src/historical_access/address_space_historical_data_node.d.ts +26 -26
  259. package/dist/src/historical_access/address_space_historical_data_node.js +630 -630
  260. package/dist/src/index_current.d.ts +45 -45
  261. package/dist/src/index_current.js +77 -77
  262. package/dist/src/namespace.d.ts +472 -0
  263. package/dist/src/namespace.js +1759 -0
  264. package/dist/src/namespace.js.map +1 -0
  265. package/dist/src/namespace_impl.d.ts +457 -457
  266. package/dist/src/namespace_impl.js +1733 -1733
  267. package/dist/src/namespace_private.d.ts +21 -21
  268. package/dist/src/namespace_private.js +32 -32
  269. package/dist/src/nodeid_manager.d.ts +36 -36
  270. package/dist/src/nodeid_manager.js +197 -197
  271. package/dist/src/nodeset_tools/adjust_namespace_array.d.ts +2 -2
  272. package/dist/src/nodeset_tools/adjust_namespace_array.js +13 -13
  273. package/dist/src/nodeset_tools/construct_namespace_dependency.d.ts +2 -2
  274. package/dist/src/nodeset_tools/construct_namespace_dependency.js +83 -83
  275. package/dist/src/nodeset_tools/nodeset_to_xml.d.ts +2 -2
  276. package/dist/src/nodeset_tools/nodeset_to_xml.js +1143 -1143
  277. package/dist/src/nodeset_tools/typedictionary_to_xml.d.ts +2 -2
  278. package/dist/src/nodeset_tools/typedictionary_to_xml.js +154 -154
  279. package/dist/src/reference.d.ts +43 -0
  280. package/dist/src/reference.js +138 -0
  281. package/dist/src/reference.js.map +1 -0
  282. package/dist/src/reference_impl.d.ts +43 -43
  283. package/dist/src/reference_impl.js +139 -139
  284. package/dist/src/role_permissions.d.ts +2 -2
  285. package/dist/src/role_permissions.js +10 -10
  286. package/dist/src/session_context.d.ts +4 -0
  287. package/dist/src/session_context.js +9 -0
  288. package/dist/src/session_context.js.map +1 -0
  289. package/dist/src/state_machine/finite_state_machine.d.ts +67 -67
  290. package/dist/src/state_machine/finite_state_machine.js +353 -353
  291. package/dist/src/state_machine/ua_shelving_state_machine_ex.d.ts +34 -34
  292. package/dist/src/state_machine/ua_shelving_state_machine_ex.js +250 -250
  293. package/dist/src/state_machine/ua_two_state_variable.d.ts +61 -61
  294. package/dist/src/state_machine/ua_two_state_variable.js +331 -331
  295. package/dist/src/tool_isSupertypeOf.d.ts +17 -17
  296. package/dist/src/tool_isSupertypeOf.js +108 -108
  297. package/dist/src/ua_condition_type.d.ts +8 -8
  298. package/dist/src/ua_condition_type.js +2 -2
  299. package/dist/src/ua_data_type.d.ts +81 -0
  300. package/dist/src/ua_data_type.js +259 -0
  301. package/dist/src/ua_data_type.js.map +1 -0
  302. package/dist/src/ua_data_type_impl.d.ts +93 -93
  303. package/dist/src/ua_data_type_impl.js +368 -368
  304. package/dist/src/ua_method.d.ts +33 -0
  305. package/dist/src/ua_method.js +194 -0
  306. package/dist/src/ua_method.js.map +1 -0
  307. package/dist/src/ua_method_impl.d.ts +41 -41
  308. package/dist/src/ua_method_impl.js +208 -208
  309. package/dist/src/ua_object.d.ts +27 -0
  310. package/dist/src/ua_object.js +153 -0
  311. package/dist/src/ua_object.js.map +1 -0
  312. package/dist/src/ua_object_impl.d.ts +33 -33
  313. package/dist/src/ua_object_impl.js +156 -156
  314. package/dist/src/ua_object_type.d.ts +49 -0
  315. package/dist/src/ua_object_type.js +123 -0
  316. package/dist/src/ua_object_type.js.map +1 -0
  317. package/dist/src/ua_object_type_impl.d.ts +48 -48
  318. package/dist/src/ua_object_type_impl.js +124 -124
  319. package/dist/src/ua_reference_type.d.ts +31 -0
  320. package/dist/src/ua_reference_type.js +108 -0
  321. package/dist/src/ua_reference_type.js.map +1 -0
  322. package/dist/src/ua_reference_type_impl.d.ts +43 -43
  323. package/dist/src/ua_reference_type_impl.js +139 -139
  324. package/dist/src/ua_variable.d.ts +346 -0
  325. package/dist/src/ua_variable.js +1651 -0
  326. package/dist/src/ua_variable.js.map +1 -0
  327. package/dist/src/ua_variable_impl.d.ts +351 -351
  328. package/dist/src/ua_variable_impl.js +1604 -1604
  329. package/dist/src/ua_variable_impl_ext_obj.d.ts +17 -17
  330. package/dist/src/ua_variable_impl_ext_obj.js +437 -437
  331. package/dist/src/ua_variable_type.d.ts +57 -0
  332. package/dist/src/ua_variable_type.js +530 -0
  333. package/dist/src/ua_variable_type.js.map +1 -0
  334. package/dist/src/ua_variable_type_impl.d.ts +62 -62
  335. package/dist/src/ua_variable_type_impl.js +570 -564
  336. package/dist/src/ua_variable_type_impl.js.map +1 -1
  337. package/dist/src/ua_view.d.ts +16 -0
  338. package/dist/src/ua_view.js +41 -0
  339. package/dist/src/ua_view.js.map +1 -0
  340. package/dist/src/ua_view_impl.d.ts +15 -15
  341. package/dist/src/ua_view_impl.js +36 -36
  342. package/distHelpers/add_event_generator_object.d.ts +3 -3
  343. package/distHelpers/add_event_generator_object.js +65 -65
  344. package/distHelpers/alarms_and_conditions_demo.d.ts +10 -10
  345. package/distHelpers/alarms_and_conditions_demo.js +114 -114
  346. package/distHelpers/assertHasMatchingReference.d.ts +19 -19
  347. package/distHelpers/assertHasMatchingReference.js +40 -40
  348. package/distHelpers/boiler_system.d.ts +113 -113
  349. package/distHelpers/boiler_system.js +395 -395
  350. package/distHelpers/create_minimalist_address_space_nodeset.d.ts +5 -5
  351. package/distHelpers/create_minimalist_address_space_nodeset.js +171 -171
  352. package/distHelpers/date_utils.d.ts +3 -3
  353. package/distHelpers/date_utils.js +9 -9
  354. package/distHelpers/dump_statemachine.js +127 -127
  355. package/distHelpers/get_address_space_fixture.d.ts +1 -1
  356. package/distHelpers/get_address_space_fixture.js +30 -30
  357. package/distHelpers/get_mini_address_space.d.ts +7 -7
  358. package/distHelpers/get_mini_address_space.js +36 -36
  359. package/distHelpers/index.d.ts +12 -12
  360. package/distHelpers/index.js +28 -28
  361. package/distHelpers/mock_session.d.ts +14 -14
  362. package/distHelpers/mock_session.js +25 -25
  363. package/distNodeJS/generate_address_space.d.ts +4 -4
  364. package/distNodeJS/generate_address_space.js +41 -41
  365. package/distNodeJS/index.d.ts +1 -1
  366. package/distNodeJS/index.js +17 -17
  367. package/package.json +38 -38
  368. package/src/ua_variable_type_impl.ts +11 -4
  369. package/test_helpers/test_fixtures/eurange_issue.xml +73 -0
@@ -1,266 +1,266 @@
1
- "use strict";
2
- /**
3
- * @module node-opcua-address-space
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SessionContext = exports.makeRoles = exports.WellKnownRolesNodeId = exports.WellKnownRoles = exports.PermissionType = exports.RolePermissionType = void 0;
7
- const node_opcua_assert_1 = require("node-opcua-assert");
8
- const node_opcua_crypto_1 = require("node-opcua-crypto");
9
- const node_opcua_data_model_1 = require("node-opcua-data-model");
10
- const node_opcua_nodeid_1 = require("node-opcua-nodeid");
11
- const node_opcua_types_1 = require("node-opcua-types");
12
- const node_opcua_status_code_1 = require("node-opcua-status-code");
13
- var node_opcua_types_2 = require("node-opcua-types");
14
- Object.defineProperty(exports, "RolePermissionType", { enumerable: true, get: function () { return node_opcua_types_2.RolePermissionType; } });
15
- Object.defineProperty(exports, "PermissionType", { enumerable: true, get: function () { return node_opcua_types_2.PermissionType; } });
16
- function getUserName(userIdentityToken) {
17
- if (userIdentityToken instanceof node_opcua_types_1.AnonymousIdentityToken) {
18
- return "anonymous";
19
- }
20
- if (userIdentityToken instanceof node_opcua_types_1.X509IdentityToken) {
21
- const certInfo = (0, node_opcua_crypto_1.exploreCertificate)(userIdentityToken.certificateData);
22
- const userName = certInfo.tbsCertificate.subject.commonName || "";
23
- if (typeof userName !== "string") {
24
- throw new Error("Invalid username");
25
- }
26
- return userName;
27
- }
28
- if (userIdentityToken instanceof node_opcua_types_1.UserNameIdentityToken) {
29
- if (userIdentityToken.policyId === "anonymous") {
30
- return "anonymous";
31
- }
32
- (0, node_opcua_assert_1.assert)(Object.prototype.hasOwnProperty.call(userIdentityToken, "userName"));
33
- return userIdentityToken.userName;
34
- }
35
- throw new Error("Invalid user identity token");
36
- }
37
- /**
38
- *
39
- */
40
- var WellKnownRoles;
41
- (function (WellKnownRoles) {
42
- WellKnownRoles[WellKnownRoles["Anonymous"] = 15644] = "Anonymous";
43
- WellKnownRoles[WellKnownRoles["AuthenticatedUser"] = 15656] = "AuthenticatedUser";
44
- WellKnownRoles[WellKnownRoles["ConfigureAdmin"] = 15716] = "ConfigureAdmin";
45
- WellKnownRoles[WellKnownRoles["Engineer"] = 16036] = "Engineer";
46
- WellKnownRoles[WellKnownRoles["Observer"] = 15668] = "Observer";
47
- WellKnownRoles[WellKnownRoles["Operator"] = 15680] = "Operator";
48
- WellKnownRoles[WellKnownRoles["SecurityAdmin"] = 15704] = "SecurityAdmin";
49
- WellKnownRoles[WellKnownRoles["Supervisor"] = 15692] = "Supervisor";
50
- })(WellKnownRoles = exports.WellKnownRoles || (exports.WellKnownRoles = {}));
51
- var WellKnownRolesNodeId;
52
- (function (WellKnownRolesNodeId) {
53
- WellKnownRolesNodeId[WellKnownRolesNodeId["Anonymous"] = 15644] = "Anonymous";
54
- WellKnownRolesNodeId[WellKnownRolesNodeId["AuthenticatedUser"] = 15656] = "AuthenticatedUser";
55
- WellKnownRolesNodeId[WellKnownRolesNodeId["ConfigureAdmin"] = 15716] = "ConfigureAdmin";
56
- WellKnownRolesNodeId[WellKnownRolesNodeId["Engineer"] = 16036] = "Engineer";
57
- WellKnownRolesNodeId[WellKnownRolesNodeId["Observer"] = 15668] = "Observer";
58
- WellKnownRolesNodeId[WellKnownRolesNodeId["Operator"] = 15680] = "Operator";
59
- WellKnownRolesNodeId[WellKnownRolesNodeId["SecurityAdmin"] = 15704] = "SecurityAdmin";
60
- WellKnownRolesNodeId[WellKnownRolesNodeId["Supervisor"] = 15692] = "Supervisor";
61
- })(WellKnownRolesNodeId = exports.WellKnownRolesNodeId || (exports.WellKnownRolesNodeId = {}));
62
- function getPermissionForRole(rolePermissions, role) {
63
- if (rolePermissions === null) {
64
- return node_opcua_data_model_1.allPermissions;
65
- }
66
- const a = rolePermissions.find((r) => {
67
- return (0, node_opcua_nodeid_1.sameNodeId)((0, node_opcua_nodeid_1.resolveNodeId)(r.roleId), role);
68
- });
69
- return a !== undefined ? a.permissions | node_opcua_data_model_1.PermissionFlag.None : node_opcua_data_model_1.PermissionFlag.None;
70
- }
71
- function isDefaultContext(context) {
72
- return context === SessionContext.defaultContext;
73
- }
74
- function getAccessRestrictionsOnNamespace(namespace, context) {
75
- var _a, _b, _c;
76
- // ignore permission when default context is provided (to avoid recursion)
77
- if (isDefaultContext(context)) {
78
- return node_opcua_data_model_1.AccessRestrictionsFlag.None;
79
- }
80
- const namespaces = (_c = (_b = (_a = namespace.addressSpace.rootFolder) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.server) === null || _c === void 0 ? void 0 : _c.namespaces;
81
- if (!namespaces) {
82
- return node_opcua_data_model_1.AccessRestrictionsFlag.None;
83
- }
84
- const namespaceObject = namespaces.getChildByName(namespace.namespaceUri);
85
- if (!namespaceObject) {
86
- return node_opcua_data_model_1.AccessRestrictionsFlag.None;
87
- }
88
- const defaultAccessRestriction = namespaceObject.getChildByName("defaultAccessRestriction");
89
- if (defaultAccessRestriction) {
90
- const dataValue = defaultAccessRestriction.readAttribute(null, node_opcua_data_model_1.AttributeIds.Value);
91
- if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good) {
92
- return dataValue.value.value;
93
- }
94
- }
95
- return node_opcua_data_model_1.AccessRestrictionsFlag.None;
96
- }
97
- function getDefaultUserRolePermissionsOnNamespace(namespace, context) {
98
- var _a, _b, _c;
99
- // ignore permission when default context is provided
100
- if (isDefaultContext(context)) {
101
- return null;
102
- }
103
- const namespaces = (_c = (_b = (_a = namespace.addressSpace.rootFolder) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.server) === null || _c === void 0 ? void 0 : _c.namespaces;
104
- if (!namespaces) {
105
- return null;
106
- }
107
- const uaNamespaceObject = namespaces.getChildByName(namespace.namespaceUri);
108
- if (!uaNamespaceObject) {
109
- return null;
110
- }
111
- const defaultUserRolePermissions = uaNamespaceObject.getChildByName("DefaultUserRolePermissions");
112
- if (defaultUserRolePermissions) {
113
- const dataValue = defaultUserRolePermissions.readValue();
114
- if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good && dataValue.value.value && dataValue.value.value.length > 0) {
115
- return dataValue.value.value;
116
- }
117
- }
118
- const defaultRolePermissions = uaNamespaceObject.getChildByName("DefaultRolePermissions");
119
- if (defaultRolePermissions) {
120
- const dataValue = defaultRolePermissions.readValue();
121
- if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good) {
122
- return dataValue.value.value;
123
- }
124
- }
125
- return null;
126
- }
127
- function makeRoles(roleIds) {
128
- if (typeof roleIds === "number") {
129
- roleIds = [roleIds];
130
- }
131
- if (typeof roleIds === "string") {
132
- roleIds = roleIds.split(";").map((r) => (0, node_opcua_nodeid_1.resolveNodeId)("WellKnownRole_" + r));
133
- }
134
- return roleIds.map((r) => (0, node_opcua_nodeid_1.resolveNodeId)(r));
135
- }
136
- exports.makeRoles = makeRoles;
137
- class SessionContext {
138
- constructor(options) {
139
- this.continuationPoints = {};
140
- options = options || {};
141
- this.session = options.session;
142
- this.object = options.object;
143
- this.server = options.server;
144
- this.currentTime = undefined;
145
- }
146
- /**
147
- * getCurrentUserRoles
148
- *
149
- * guest => anonymous user (unauthenticated)
150
- * default => default authenticated user
151
- *
152
- */
153
- getCurrentUserRoles() {
154
- if (!this.session) {
155
- return []; // default context => no Session
156
- }
157
- (0, node_opcua_assert_1.assert)(this.session != null, "expecting a session");
158
- const userIdentityToken = this.session.userIdentityToken;
159
- if (!userIdentityToken) {
160
- return [];
161
- }
162
- const anonymous = makeRoles([WellKnownRoles.Anonymous]);
163
- const username = getUserName(userIdentityToken);
164
- if (username === "anonymous") {
165
- return anonymous;
166
- }
167
- if (!this.server || !this.server.userManager) {
168
- return anonymous;
169
- }
170
- (0, node_opcua_assert_1.assert)(this.server != null, "expecting a server");
171
- if (typeof this.server.userManager.getUserRoles !== "function") {
172
- return anonymous;
173
- }
174
- const rolesNodeId = this.server.userManager.getUserRoles(username);
175
- if (rolesNodeId.findIndex((r) => r.namespace === 0 && r.value === WellKnownRoles.AuthenticatedUser) < 0) {
176
- rolesNodeId.push((0, node_opcua_nodeid_1.resolveNodeId)(WellKnownRoles.AuthenticatedUser));
177
- }
178
- return rolesNodeId;
179
- }
180
- getApplicableRolePermissions(node) {
181
- if (!node.rolePermissions) {
182
- const namespace = node.namespace;
183
- const defaultUserRolePermissions = getDefaultUserRolePermissionsOnNamespace(namespace, this);
184
- return defaultUserRolePermissions;
185
- }
186
- return node.rolePermissions;
187
- }
188
- getPermissions(node) {
189
- const applicableRolePermissions = this.getApplicableRolePermissions(node);
190
- const roles = this.getCurrentUserRoles();
191
- if (roles.length === 0) {
192
- return node_opcua_data_model_1.allPermissions;
193
- }
194
- let orFlags = 0;
195
- for (const role of roles) {
196
- orFlags = orFlags | getPermissionForRole(applicableRolePermissions, role);
197
- }
198
- return orFlags;
199
- }
200
- getAccessRestrictions(node) {
201
- if (node.accessRestrictions === undefined) {
202
- const namespace = node.namespace;
203
- const accessRestrictions = getAccessRestrictionsOnNamespace(namespace, this);
204
- return accessRestrictions;
205
- }
206
- return node.accessRestrictions;
207
- }
208
- /**
209
- *
210
- * @param node
211
- * @returns true if the browse is denied (access is restricted)
212
- */
213
- isBrowseAccessRestricted(node) {
214
- if (this.checkPermission(node, node_opcua_types_1.PermissionType.Browse)) {
215
- return false; // can browse
216
- }
217
- return true; // browse restriction
218
- }
219
- /**
220
- *
221
- * @param node
222
- * @returns true if the context is access restricted
223
- */
224
- isAccessRestricted(node) {
225
- var _a, _b;
226
- const accessRestrictions = this.getAccessRestrictions(node);
227
- if (accessRestrictions === node_opcua_data_model_1.AccessRestrictionsFlag.None) {
228
- return false;
229
- }
230
- if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.SessionRequired) {
231
- if (!this.session) {
232
- return true;
233
- }
234
- }
235
- const securityMode = (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.channel) === null || _b === void 0 ? void 0 : _b.securityMode;
236
- if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.SigningRequired) {
237
- if (securityMode !== node_opcua_types_1.MessageSecurityMode.Sign && securityMode !== node_opcua_types_1.MessageSecurityMode.SignAndEncrypt) {
238
- return true;
239
- }
240
- }
241
- if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.EncryptionRequired) {
242
- if (securityMode !== node_opcua_types_1.MessageSecurityMode.SignAndEncrypt) {
243
- return true;
244
- }
245
- }
246
- return false;
247
- }
248
- /**
249
- * @method checkPermission
250
- * @param node
251
- * @param requestedPermission
252
- * @return {Boolean} returns true of the current user is granted the requested Permission
253
- */
254
- checkPermission(node, requestedPermission) {
255
- const permissions = this.getPermissions(node);
256
- return (permissions & requestedPermission) === requestedPermission;
257
- }
258
- currentUserHasRole(role) {
259
- const currentUserRole = this.getCurrentUserRoles();
260
- const n = (0, node_opcua_nodeid_1.resolveNodeId)(role);
261
- return currentUserRole.findIndex((r) => (0, node_opcua_nodeid_1.sameNodeId)(r, n)) >= 0;
262
- }
263
- }
264
- exports.SessionContext = SessionContext;
265
- SessionContext.defaultContext = new SessionContext({});
1
+ "use strict";
2
+ /**
3
+ * @module node-opcua-address-space
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SessionContext = exports.makeRoles = exports.WellKnownRolesNodeId = exports.WellKnownRoles = exports.PermissionType = exports.RolePermissionType = void 0;
7
+ const node_opcua_assert_1 = require("node-opcua-assert");
8
+ const node_opcua_crypto_1 = require("node-opcua-crypto");
9
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
10
+ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
11
+ const node_opcua_types_1 = require("node-opcua-types");
12
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
13
+ var node_opcua_types_2 = require("node-opcua-types");
14
+ Object.defineProperty(exports, "RolePermissionType", { enumerable: true, get: function () { return node_opcua_types_2.RolePermissionType; } });
15
+ Object.defineProperty(exports, "PermissionType", { enumerable: true, get: function () { return node_opcua_types_2.PermissionType; } });
16
+ function getUserName(userIdentityToken) {
17
+ if (userIdentityToken instanceof node_opcua_types_1.AnonymousIdentityToken) {
18
+ return "anonymous";
19
+ }
20
+ if (userIdentityToken instanceof node_opcua_types_1.X509IdentityToken) {
21
+ const certInfo = (0, node_opcua_crypto_1.exploreCertificate)(userIdentityToken.certificateData);
22
+ const userName = certInfo.tbsCertificate.subject.commonName || "";
23
+ if (typeof userName !== "string") {
24
+ throw new Error("Invalid username");
25
+ }
26
+ return userName;
27
+ }
28
+ if (userIdentityToken instanceof node_opcua_types_1.UserNameIdentityToken) {
29
+ if (userIdentityToken.policyId === "anonymous") {
30
+ return "anonymous";
31
+ }
32
+ (0, node_opcua_assert_1.assert)(Object.prototype.hasOwnProperty.call(userIdentityToken, "userName"));
33
+ return userIdentityToken.userName;
34
+ }
35
+ throw new Error("Invalid user identity token");
36
+ }
37
+ /**
38
+ *
39
+ */
40
+ var WellKnownRoles;
41
+ (function (WellKnownRoles) {
42
+ WellKnownRoles[WellKnownRoles["Anonymous"] = 15644] = "Anonymous";
43
+ WellKnownRoles[WellKnownRoles["AuthenticatedUser"] = 15656] = "AuthenticatedUser";
44
+ WellKnownRoles[WellKnownRoles["ConfigureAdmin"] = 15716] = "ConfigureAdmin";
45
+ WellKnownRoles[WellKnownRoles["Engineer"] = 16036] = "Engineer";
46
+ WellKnownRoles[WellKnownRoles["Observer"] = 15668] = "Observer";
47
+ WellKnownRoles[WellKnownRoles["Operator"] = 15680] = "Operator";
48
+ WellKnownRoles[WellKnownRoles["SecurityAdmin"] = 15704] = "SecurityAdmin";
49
+ WellKnownRoles[WellKnownRoles["Supervisor"] = 15692] = "Supervisor";
50
+ })(WellKnownRoles = exports.WellKnownRoles || (exports.WellKnownRoles = {}));
51
+ var WellKnownRolesNodeId;
52
+ (function (WellKnownRolesNodeId) {
53
+ WellKnownRolesNodeId[WellKnownRolesNodeId["Anonymous"] = 15644] = "Anonymous";
54
+ WellKnownRolesNodeId[WellKnownRolesNodeId["AuthenticatedUser"] = 15656] = "AuthenticatedUser";
55
+ WellKnownRolesNodeId[WellKnownRolesNodeId["ConfigureAdmin"] = 15716] = "ConfigureAdmin";
56
+ WellKnownRolesNodeId[WellKnownRolesNodeId["Engineer"] = 16036] = "Engineer";
57
+ WellKnownRolesNodeId[WellKnownRolesNodeId["Observer"] = 15668] = "Observer";
58
+ WellKnownRolesNodeId[WellKnownRolesNodeId["Operator"] = 15680] = "Operator";
59
+ WellKnownRolesNodeId[WellKnownRolesNodeId["SecurityAdmin"] = 15704] = "SecurityAdmin";
60
+ WellKnownRolesNodeId[WellKnownRolesNodeId["Supervisor"] = 15692] = "Supervisor";
61
+ })(WellKnownRolesNodeId = exports.WellKnownRolesNodeId || (exports.WellKnownRolesNodeId = {}));
62
+ function getPermissionForRole(rolePermissions, role) {
63
+ if (rolePermissions === null) {
64
+ return node_opcua_data_model_1.allPermissions;
65
+ }
66
+ const a = rolePermissions.find((r) => {
67
+ return (0, node_opcua_nodeid_1.sameNodeId)((0, node_opcua_nodeid_1.resolveNodeId)(r.roleId), role);
68
+ });
69
+ return a !== undefined ? a.permissions | node_opcua_data_model_1.PermissionFlag.None : node_opcua_data_model_1.PermissionFlag.None;
70
+ }
71
+ function isDefaultContext(context) {
72
+ return context === SessionContext.defaultContext;
73
+ }
74
+ function getAccessRestrictionsOnNamespace(namespace, context) {
75
+ var _a, _b, _c;
76
+ // ignore permission when default context is provided (to avoid recursion)
77
+ if (isDefaultContext(context)) {
78
+ return node_opcua_data_model_1.AccessRestrictionsFlag.None;
79
+ }
80
+ const namespaces = (_c = (_b = (_a = namespace.addressSpace.rootFolder) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.server) === null || _c === void 0 ? void 0 : _c.namespaces;
81
+ if (!namespaces) {
82
+ return node_opcua_data_model_1.AccessRestrictionsFlag.None;
83
+ }
84
+ const namespaceObject = namespaces.getChildByName(namespace.namespaceUri);
85
+ if (!namespaceObject) {
86
+ return node_opcua_data_model_1.AccessRestrictionsFlag.None;
87
+ }
88
+ const defaultAccessRestriction = namespaceObject.getChildByName("defaultAccessRestriction");
89
+ if (defaultAccessRestriction) {
90
+ const dataValue = defaultAccessRestriction.readAttribute(null, node_opcua_data_model_1.AttributeIds.Value);
91
+ if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good) {
92
+ return dataValue.value.value;
93
+ }
94
+ }
95
+ return node_opcua_data_model_1.AccessRestrictionsFlag.None;
96
+ }
97
+ function getDefaultUserRolePermissionsOnNamespace(namespace, context) {
98
+ var _a, _b, _c;
99
+ // ignore permission when default context is provided
100
+ if (isDefaultContext(context)) {
101
+ return null;
102
+ }
103
+ const namespaces = (_c = (_b = (_a = namespace.addressSpace.rootFolder) === null || _a === void 0 ? void 0 : _a.objects) === null || _b === void 0 ? void 0 : _b.server) === null || _c === void 0 ? void 0 : _c.namespaces;
104
+ if (!namespaces) {
105
+ return null;
106
+ }
107
+ const uaNamespaceObject = namespaces.getChildByName(namespace.namespaceUri);
108
+ if (!uaNamespaceObject) {
109
+ return null;
110
+ }
111
+ const defaultUserRolePermissions = uaNamespaceObject.getChildByName("DefaultUserRolePermissions");
112
+ if (defaultUserRolePermissions) {
113
+ const dataValue = defaultUserRolePermissions.readValue();
114
+ if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good && dataValue.value.value && dataValue.value.value.length > 0) {
115
+ return dataValue.value.value;
116
+ }
117
+ }
118
+ const defaultRolePermissions = uaNamespaceObject.getChildByName("DefaultRolePermissions");
119
+ if (defaultRolePermissions) {
120
+ const dataValue = defaultRolePermissions.readValue();
121
+ if (dataValue && dataValue.statusCode === node_opcua_status_code_1.StatusCodes.Good) {
122
+ return dataValue.value.value;
123
+ }
124
+ }
125
+ return null;
126
+ }
127
+ function makeRoles(roleIds) {
128
+ if (typeof roleIds === "number") {
129
+ roleIds = [roleIds];
130
+ }
131
+ if (typeof roleIds === "string") {
132
+ roleIds = roleIds.split(";").map((r) => (0, node_opcua_nodeid_1.resolveNodeId)("WellKnownRole_" + r));
133
+ }
134
+ return roleIds.map((r) => (0, node_opcua_nodeid_1.resolveNodeId)(r));
135
+ }
136
+ exports.makeRoles = makeRoles;
137
+ class SessionContext {
138
+ constructor(options) {
139
+ this.continuationPoints = {};
140
+ options = options || {};
141
+ this.session = options.session;
142
+ this.object = options.object;
143
+ this.server = options.server;
144
+ this.currentTime = undefined;
145
+ }
146
+ /**
147
+ * getCurrentUserRoles
148
+ *
149
+ * guest => anonymous user (unauthenticated)
150
+ * default => default authenticated user
151
+ *
152
+ */
153
+ getCurrentUserRoles() {
154
+ if (!this.session) {
155
+ return []; // default context => no Session
156
+ }
157
+ (0, node_opcua_assert_1.assert)(this.session != null, "expecting a session");
158
+ const userIdentityToken = this.session.userIdentityToken;
159
+ if (!userIdentityToken) {
160
+ return [];
161
+ }
162
+ const anonymous = makeRoles([WellKnownRoles.Anonymous]);
163
+ const username = getUserName(userIdentityToken);
164
+ if (username === "anonymous") {
165
+ return anonymous;
166
+ }
167
+ if (!this.server || !this.server.userManager) {
168
+ return anonymous;
169
+ }
170
+ (0, node_opcua_assert_1.assert)(this.server != null, "expecting a server");
171
+ if (typeof this.server.userManager.getUserRoles !== "function") {
172
+ return anonymous;
173
+ }
174
+ const rolesNodeId = this.server.userManager.getUserRoles(username);
175
+ if (rolesNodeId.findIndex((r) => r.namespace === 0 && r.value === WellKnownRoles.AuthenticatedUser) < 0) {
176
+ rolesNodeId.push((0, node_opcua_nodeid_1.resolveNodeId)(WellKnownRoles.AuthenticatedUser));
177
+ }
178
+ return rolesNodeId;
179
+ }
180
+ getApplicableRolePermissions(node) {
181
+ if (!node.rolePermissions) {
182
+ const namespace = node.namespace;
183
+ const defaultUserRolePermissions = getDefaultUserRolePermissionsOnNamespace(namespace, this);
184
+ return defaultUserRolePermissions;
185
+ }
186
+ return node.rolePermissions;
187
+ }
188
+ getPermissions(node) {
189
+ const applicableRolePermissions = this.getApplicableRolePermissions(node);
190
+ const roles = this.getCurrentUserRoles();
191
+ if (roles.length === 0) {
192
+ return node_opcua_data_model_1.allPermissions;
193
+ }
194
+ let orFlags = 0;
195
+ for (const role of roles) {
196
+ orFlags = orFlags | getPermissionForRole(applicableRolePermissions, role);
197
+ }
198
+ return orFlags;
199
+ }
200
+ getAccessRestrictions(node) {
201
+ if (node.accessRestrictions === undefined) {
202
+ const namespace = node.namespace;
203
+ const accessRestrictions = getAccessRestrictionsOnNamespace(namespace, this);
204
+ return accessRestrictions;
205
+ }
206
+ return node.accessRestrictions;
207
+ }
208
+ /**
209
+ *
210
+ * @param node
211
+ * @returns true if the browse is denied (access is restricted)
212
+ */
213
+ isBrowseAccessRestricted(node) {
214
+ if (this.checkPermission(node, node_opcua_types_1.PermissionType.Browse)) {
215
+ return false; // can browse
216
+ }
217
+ return true; // browse restriction
218
+ }
219
+ /**
220
+ *
221
+ * @param node
222
+ * @returns true if the context is access restricted
223
+ */
224
+ isAccessRestricted(node) {
225
+ var _a, _b;
226
+ const accessRestrictions = this.getAccessRestrictions(node);
227
+ if (accessRestrictions === node_opcua_data_model_1.AccessRestrictionsFlag.None) {
228
+ return false;
229
+ }
230
+ if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.SessionRequired) {
231
+ if (!this.session) {
232
+ return true;
233
+ }
234
+ }
235
+ const securityMode = (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.channel) === null || _b === void 0 ? void 0 : _b.securityMode;
236
+ if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.SigningRequired) {
237
+ if (securityMode !== node_opcua_types_1.MessageSecurityMode.Sign && securityMode !== node_opcua_types_1.MessageSecurityMode.SignAndEncrypt) {
238
+ return true;
239
+ }
240
+ }
241
+ if (accessRestrictions & node_opcua_data_model_1.AccessRestrictionsFlag.EncryptionRequired) {
242
+ if (securityMode !== node_opcua_types_1.MessageSecurityMode.SignAndEncrypt) {
243
+ return true;
244
+ }
245
+ }
246
+ return false;
247
+ }
248
+ /**
249
+ * @method checkPermission
250
+ * @param node
251
+ * @param requestedPermission
252
+ * @return {Boolean} returns true of the current user is granted the requested Permission
253
+ */
254
+ checkPermission(node, requestedPermission) {
255
+ const permissions = this.getPermissions(node);
256
+ return (permissions & requestedPermission) === requestedPermission;
257
+ }
258
+ currentUserHasRole(role) {
259
+ const currentUserRole = this.getCurrentUserRoles();
260
+ const n = (0, node_opcua_nodeid_1.resolveNodeId)(role);
261
+ return currentUserRole.findIndex((r) => (0, node_opcua_nodeid_1.sameNodeId)(r, n)) >= 0;
262
+ }
263
+ }
264
+ exports.SessionContext = SessionContext;
265
+ SessionContext.defaultContext = new SessionContext({});
266
266
  //# sourceMappingURL=session_context.js.map
@@ -1,2 +1,2 @@
1
- import { INamespace } from "node-opcua-address-space-base";
2
- export declare function setNamespaceMetaData(namespace: INamespace): void;
1
+ import { INamespace } from "node-opcua-address-space-base";
2
+ export declare function setNamespaceMetaData(namespace: INamespace): void;