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