node-opcua-address-space 2.183.0 → 2.184.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/api/helpers/adjust_browse_direction.ts +1 -1
- package/api/helpers/argument_list.ts +9 -9
- package/api/helpers/coerce_enum_value.ts +1 -0
- package/api/helpers/dump_tools.ts +1 -1
- package/api/index.ts +2 -1
- package/api/interfaces/alarms_and_conditions/deviation_stuff.ts +30 -0
- package/api/interfaces/data_access/ua_multistate_discrete_ex.ts +1 -1
- package/api/interfaces/nodeset_loader_options.ts +17 -0
- package/api/loader/decode_xml_extension_object.ts +1 -1
- package/api/loader/ensure_datatype_extracted.ts +73 -37
- package/api/loader/generateAddressSpaceRaw.ts +32 -22
- package/api/loader/load_nodeset2.ts +2 -2
- package/api/loader/namespace_post_step.ts +1 -1
- package/api/loader/narrow_instance_datatypes.ts +22 -9
- package/api/loader/nodeset_image_codec.ts +26 -12
- package/api/loader/nodeset_record_applier.ts +1 -1
- package/api/loader/nodeset_xml_producer.ts +8 -6
- package/api/loader/parsers/extension_object_parser.ts +3 -3
- package/api/loader/register_node_promoter.ts +10 -2
- package/api/pseudo_session.ts +1 -1
- package/bin/{nodeset_equivalence.js → nodeset_equivalence.cjs} +1 -1
- package/bin/{opcua-nodeset-image.js → opcua-nodeset-image.cjs} +1 -1
- package/bin/{opcua-nodeset-live.js → opcua-nodeset-live.cjs} +2 -2
- package/dist/api/address_space_public.d.ts +1 -0
- package/dist/api/address_space_public.d.ts.map +1 -0
- package/dist/api/address_space_public.js +2 -5
- package/dist/api/address_space_public.js.map +1 -1
- package/dist/api/address_space_ts.d.ts +1 -0
- package/dist/api/address_space_ts.d.ts.map +1 -0
- package/dist/api/address_space_ts.js +2 -5
- package/dist/api/address_space_ts.js.map +1 -1
- package/dist/api/continuation_points/continuation_point_manager.d.ts +1 -0
- package/dist/api/continuation_points/continuation_point_manager.d.ts.map +1 -0
- package/dist/api/continuation_points/continuation_point_manager.js +13 -17
- package/dist/api/continuation_points/continuation_point_manager.js.map +1 -1
- package/dist/api/helpers/adjust_browse_direction.d.ts +1 -0
- package/dist/api/helpers/adjust_browse_direction.d.ts.map +1 -0
- package/dist/api/helpers/adjust_browse_direction.js +2 -5
- package/dist/api/helpers/adjust_browse_direction.js.map +1 -1
- package/dist/api/helpers/argument_list.d.ts +1 -0
- package/dist/api/helpers/argument_list.d.ts.map +1 -0
- package/dist/api/helpers/argument_list.js +61 -69
- package/dist/api/helpers/argument_list.js.map +1 -1
- package/dist/api/helpers/call_helpers.d.ts +1 -0
- package/dist/api/helpers/call_helpers.d.ts.map +1 -0
- package/dist/api/helpers/call_helpers.js +25 -28
- package/dist/api/helpers/call_helpers.js.map +1 -1
- package/dist/api/helpers/coerce_enum_value.d.ts +1 -0
- package/dist/api/helpers/coerce_enum_value.d.ts.map +1 -0
- package/dist/api/helpers/coerce_enum_value.js +15 -17
- package/dist/api/helpers/coerce_enum_value.js.map +1 -1
- package/dist/api/helpers/dump_tools.d.ts +1 -0
- package/dist/api/helpers/dump_tools.d.ts.map +1 -0
- package/dist/api/helpers/dump_tools.js +19 -29
- package/dist/api/helpers/dump_tools.js.map +1 -1
- package/dist/api/helpers/ensure_secure_access.d.ts +1 -0
- package/dist/api/helpers/ensure_secure_access.d.ts.map +1 -0
- package/dist/api/helpers/ensure_secure_access.js +24 -28
- package/dist/api/helpers/ensure_secure_access.js.map +1 -1
- package/dist/api/helpers/make_optionals_map.d.ts +1 -0
- package/dist/api/helpers/make_optionals_map.d.ts.map +1 -0
- package/dist/api/helpers/make_optionals_map.js +1 -4
- package/dist/api/helpers/make_optionals_map.js.map +1 -1
- package/dist/api/helpers/multiform_func.d.ts +1 -0
- package/dist/api/helpers/multiform_func.d.ts.map +1 -0
- package/dist/api/helpers/multiform_func.js +4 -8
- package/dist/api/helpers/multiform_func.js.map +1 -1
- package/dist/api/helpers/resolve_opaque_on_address_space.d.ts +1 -0
- package/dist/api/helpers/resolve_opaque_on_address_space.d.ts.map +1 -0
- package/dist/api/helpers/resolve_opaque_on_address_space.js +10 -13
- package/dist/api/helpers/resolve_opaque_on_address_space.js.map +1 -1
- package/dist/api/index.d.ts +3 -1
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +93 -218
- package/dist/api/index.js.map +1 -1
- package/dist/api/interfaces/alarms_and_conditions/condition_info_i.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/condition_info_i.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/condition_info_i.js +2 -5
- package/dist/api/interfaces/alarms_and_conditions/condition_info_i.js.map +1 -1
- package/dist/api/interfaces/alarms_and_conditions/condition_snapshot.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/condition_snapshot.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/condition_snapshot.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/deviation_stuff.d.ts +29 -0
- package/dist/api/interfaces/alarms_and_conditions/deviation_stuff.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/deviation_stuff.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/install_setpoint_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/install_setpoint_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/install_setpoint_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_alarm_condition_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/instantiate_condition_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_condition_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_condition_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_exclusive_deviation_alarm_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_exclusive_limit_alarm_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_limit_alarm_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_non_exclusive_deviation_alarm_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_non_exclusive_limit_alarm_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/instantiate_off_normal_alarm_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/promote_to_alarm_options.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/promote_to_alarm_options.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/promote_to_alarm_options.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_acknowledgeable_condition_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_alarm_condition_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_alarm_condition_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_alarm_condition_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_base_event_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_base_event_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_base_event_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_certificate_expiration_alarm_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_condition_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_condition_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_condition_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_discrete_alarm_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_exclusive_deviation_alarm_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_exclusive_limit_alarm_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_limit_alarm_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_limit_alarm_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_limit_alarm_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_non_exclusive_deviation_alarm_ex.js +1 -2
- package/dist/api/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.d.ts +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.d.ts.map +1 -0
- package/dist/api/interfaces/alarms_and_conditions/ua_non_exclusive_limit_alarm_ex.js +1 -2
- package/dist/api/interfaces/data_access/ua_multistate_discrete_ex.d.ts +2 -1
- package/dist/api/interfaces/data_access/ua_multistate_discrete_ex.d.ts.map +1 -0
- package/dist/api/interfaces/data_access/ua_multistate_discrete_ex.js +1 -2
- package/dist/api/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts +1 -0
- package/dist/api/interfaces/data_access/ua_multistate_value_discrete_ex.d.ts.map +1 -0
- package/dist/api/interfaces/data_access/ua_multistate_value_discrete_ex.js +1 -2
- package/dist/api/interfaces/data_access/ua_two_state_discrete_ex.d.ts +1 -0
- package/dist/api/interfaces/data_access/ua_two_state_discrete_ex.d.ts.map +1 -0
- package/dist/api/interfaces/data_access/ua_two_state_discrete_ex.js +1 -2
- package/dist/api/interfaces/data_access/ua_y_array_item_ex.d.ts +1 -0
- package/dist/api/interfaces/data_access/ua_y_array_item_ex.d.ts.map +1 -0
- package/dist/api/interfaces/data_access/ua_y_array_item_ex.js +1 -2
- package/dist/api/interfaces/extension_object_constructor.d.ts +1 -0
- package/dist/api/interfaces/extension_object_constructor.d.ts.map +1 -0
- package/dist/api/interfaces/extension_object_constructor.js +1 -2
- package/dist/api/interfaces/i_condition_variable_type_setter_options.d.ts +1 -0
- package/dist/api/interfaces/i_condition_variable_type_setter_options.d.ts.map +1 -0
- package/dist/api/interfaces/i_condition_variable_type_setter_options.js +1 -2
- package/dist/api/interfaces/i_set_state_options.d.ts +1 -0
- package/dist/api/interfaces/i_set_state_options.d.ts.map +1 -0
- package/dist/api/interfaces/i_set_state_options.js +1 -2
- package/dist/api/interfaces/nodeset_loader_options.d.ts +18 -0
- package/dist/api/interfaces/nodeset_loader_options.d.ts.map +1 -0
- package/dist/api/interfaces/nodeset_loader_options.js +1 -2
- package/dist/api/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts +1 -0
- package/dist/api/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.d.ts.map +1 -0
- package/dist/api/interfaces/state_machine/ua_exclusive_limit_state_machine_type_ex.js +1 -2
- package/dist/api/interfaces/state_machine/ua_finite_state_machine_type.d.ts +1 -0
- package/dist/api/interfaces/state_machine/ua_finite_state_machine_type.d.ts.map +1 -0
- package/dist/api/interfaces/state_machine/ua_finite_state_machine_type.js +1 -2
- package/dist/api/interfaces/state_machine/ua_program_state_machine_type.d.ts +1 -0
- package/dist/api/interfaces/state_machine/ua_program_state_machine_type.d.ts.map +1 -0
- package/dist/api/interfaces/state_machine/ua_program_state_machine_type.js +1 -2
- package/dist/api/interfaces/state_machine/ua_shelved_state_machine_ex.d.ts +1 -0
- package/dist/api/interfaces/state_machine/ua_shelved_state_machine_ex.d.ts.map +1 -0
- package/dist/api/interfaces/state_machine/ua_shelved_state_machine_ex.js +1 -2
- package/dist/api/interfaces/state_machine/ua_state_machine_type.d.ts +1 -0
- package/dist/api/interfaces/state_machine/ua_state_machine_type.d.ts.map +1 -0
- package/dist/api/interfaces/state_machine/ua_state_machine_type.js +1 -2
- package/dist/api/interfaces/state_machine/ua_state_machine_type.js.map +1 -1
- package/dist/api/interfaces/state_machine/ua_transition_ex.d.ts +1 -0
- package/dist/api/interfaces/state_machine/ua_transition_ex.d.ts.map +1 -0
- package/dist/api/interfaces/state_machine/ua_transition_ex.js +1 -2
- package/dist/api/interfaces/ua_subscription_diagnostics_variable_ex.d.ts +1 -0
- package/dist/api/interfaces/ua_subscription_diagnostics_variable_ex.d.ts.map +1 -0
- package/dist/api/interfaces/ua_subscription_diagnostics_variable_ex.js +1 -2
- package/dist/api/interfaces/ua_subscription_diagnostics_variable_ex.js.map +1 -1
- package/dist/api/loader/decode_xml_extension_object.d.ts +1 -0
- package/dist/api/loader/decode_xml_extension_object.d.ts.map +1 -0
- package/dist/api/loader/decode_xml_extension_object.js +13 -17
- package/dist/api/loader/decode_xml_extension_object.js.map +1 -1
- package/dist/api/loader/ensure_datatype_extracted.d.ts +1 -0
- package/dist/api/loader/ensure_datatype_extracted.d.ts.map +1 -0
- package/dist/api/loader/ensure_datatype_extracted.js +83 -52
- package/dist/api/loader/ensure_datatype_extracted.js.map +1 -1
- package/dist/api/loader/generateAddressSpaceRaw.d.ts +1 -0
- package/dist/api/loader/generateAddressSpaceRaw.d.ts.map +1 -0
- package/dist/api/loader/generateAddressSpaceRaw.js +76 -74
- package/dist/api/loader/generateAddressSpaceRaw.js.map +1 -1
- package/dist/api/loader/load_nodeset2.d.ts +1 -0
- package/dist/api/loader/load_nodeset2.d.ts.map +1 -0
- package/dist/api/loader/load_nodeset2.js +44 -51
- package/dist/api/loader/load_nodeset2.js.map +1 -1
- package/dist/api/loader/make_semver_compatible.d.ts +1 -0
- package/dist/api/loader/make_semver_compatible.d.ts.map +1 -0
- package/dist/api/loader/make_semver_compatible.js +1 -4
- package/dist/api/loader/make_semver_compatible.js.map +1 -1
- package/dist/api/loader/make_xml_extension_object_parser.d.ts +1 -0
- package/dist/api/loader/make_xml_extension_object_parser.d.ts.map +1 -0
- package/dist/api/loader/make_xml_extension_object_parser.js +37 -40
- package/dist/api/loader/make_xml_extension_object_parser.js.map +1 -1
- package/dist/api/loader/namespace_post_step.d.ts +1 -0
- package/dist/api/loader/namespace_post_step.d.ts.map +1 -0
- package/dist/api/loader/namespace_post_step.js +12 -17
- package/dist/api/loader/namespace_post_step.js.map +1 -1
- package/dist/api/loader/narrow_instance_datatypes.d.ts +1 -0
- package/dist/api/loader/narrow_instance_datatypes.d.ts.map +1 -0
- package/dist/api/loader/narrow_instance_datatypes.js +38 -28
- package/dist/api/loader/narrow_instance_datatypes.js.map +1 -1
- package/dist/api/loader/nodeset_builtin_formats.d.ts +1 -0
- package/dist/api/loader/nodeset_builtin_formats.d.ts.map +1 -0
- package/dist/api/loader/nodeset_builtin_formats.js +20 -25
- package/dist/api/loader/nodeset_builtin_formats.js.map +1 -1
- package/dist/api/loader/nodeset_format.d.ts +1 -0
- package/dist/api/loader/nodeset_format.d.ts.map +1 -0
- package/dist/api/loader/nodeset_format.js +4 -10
- package/dist/api/loader/nodeset_format.js.map +1 -1
- package/dist/api/loader/nodeset_image.d.ts +1 -0
- package/dist/api/loader/nodeset_image.d.ts.map +1 -0
- package/dist/api/loader/nodeset_image.js +38 -54
- package/dist/api/loader/nodeset_image.js.map +1 -1
- package/dist/api/loader/nodeset_image_codec.d.ts +1 -0
- package/dist/api/loader/nodeset_image_codec.d.ts.map +1 -0
- package/dist/api/loader/nodeset_image_codec.js +118 -116
- package/dist/api/loader/nodeset_image_codec.js.map +1 -1
- package/dist/api/loader/nodeset_image_store.d.ts +1 -0
- package/dist/api/loader/nodeset_image_store.d.ts.map +1 -0
- package/dist/api/loader/nodeset_image_store.js +5 -11
- package/dist/api/loader/nodeset_image_store.js.map +1 -1
- package/dist/api/loader/nodeset_record.d.ts +1 -0
- package/dist/api/loader/nodeset_record.d.ts.map +1 -0
- package/dist/api/loader/nodeset_record.js +3 -7
- package/dist/api/loader/nodeset_record.js.map +1 -1
- package/dist/api/loader/nodeset_record_applier.d.ts +1 -0
- package/dist/api/loader/nodeset_record_applier.d.ts.map +1 -0
- package/dist/api/loader/nodeset_record_applier.js +89 -97
- package/dist/api/loader/nodeset_record_applier.js.map +1 -1
- package/dist/api/loader/nodeset_records_to_xml.d.ts +1 -0
- package/dist/api/loader/nodeset_records_to_xml.d.ts.map +1 -0
- package/dist/api/loader/nodeset_records_to_xml.js +82 -88
- package/dist/api/loader/nodeset_records_to_xml.js.map +1 -1
- package/dist/api/loader/nodeset_source.d.ts +1 -0
- package/dist/api/loader/nodeset_source.d.ts.map +1 -0
- package/dist/api/loader/nodeset_source.js +14 -21
- package/dist/api/loader/nodeset_source.js.map +1 -1
- package/dist/api/loader/nodeset_source_helpers.d.ts +1 -0
- package/dist/api/loader/nodeset_source_helpers.d.ts.map +1 -0
- package/dist/api/loader/nodeset_source_helpers.js +2 -6
- package/dist/api/loader/nodeset_source_helpers.js.map +1 -1
- package/dist/api/loader/nodeset_to_image.d.ts +1 -0
- package/dist/api/loader/nodeset_to_image.d.ts.map +1 -0
- package/dist/api/loader/nodeset_to_image.js +12 -15
- package/dist/api/loader/nodeset_to_image.js.map +1 -1
- package/dist/api/loader/nodeset_xml_header.d.ts +1 -0
- package/dist/api/loader/nodeset_xml_header.d.ts.map +1 -0
- package/dist/api/loader/nodeset_xml_header.js +9 -14
- package/dist/api/loader/nodeset_xml_header.js.map +1 -1
- package/dist/api/loader/nodeset_xml_primitives.d.ts +1 -0
- package/dist/api/loader/nodeset_xml_primitives.d.ts.map +1 -0
- package/dist/api/loader/nodeset_xml_primitives.js +32 -53
- package/dist/api/loader/nodeset_xml_primitives.js.map +1 -1
- package/dist/api/loader/nodeset_xml_producer.d.ts +1 -0
- package/dist/api/loader/nodeset_xml_producer.d.ts.map +1 -0
- package/dist/api/loader/nodeset_xml_producer.js +49 -51
- package/dist/api/loader/nodeset_xml_producer.js.map +1 -1
- package/dist/api/loader/parsers/extension_object_parser.d.ts +1 -0
- package/dist/api/loader/parsers/extension_object_parser.d.ts.map +1 -0
- package/dist/api/loader/parsers/extension_object_parser.js +49 -57
- package/dist/api/loader/parsers/extension_object_parser.js.map +1 -1
- package/dist/api/loader/parsers/localized_text_parser.d.ts +1 -0
- package/dist/api/loader/parsers/localized_text_parser.d.ts.map +1 -0
- package/dist/api/loader/parsers/localized_text_parser.js +3 -6
- package/dist/api/loader/parsers/localized_text_parser.js.map +1 -1
- package/dist/api/loader/parsers/nodeid_parser.d.ts +1 -0
- package/dist/api/loader/parsers/nodeid_parser.d.ts.map +1 -0
- package/dist/api/loader/parsers/nodeid_parser.js +3 -7
- package/dist/api/loader/parsers/nodeid_parser.js.map +1 -1
- package/dist/api/loader/parsers/qualified_name_parser.d.ts +1 -0
- package/dist/api/loader/parsers/qualified_name_parser.d.ts.map +1 -0
- package/dist/api/loader/parsers/qualified_name_parser.js +5 -9
- package/dist/api/loader/parsers/qualified_name_parser.js.map +1 -1
- package/dist/api/loader/parsers/variant_parser.d.ts +1 -0
- package/dist/api/loader/parsers/variant_parser.d.ts.map +1 -0
- package/dist/api/loader/parsers/variant_parser.js +59 -63
- package/dist/api/loader/parsers/variant_parser.js.map +1 -1
- package/dist/api/loader/register_node_promoter.d.ts +10 -1
- package/dist/api/loader/register_node_promoter.d.ts.map +1 -0
- package/dist/api/loader/register_node_promoter.js +11 -7
- package/dist/api/loader/register_node_promoter.js.map +1 -1
- package/dist/api/namespace.d.ts +1 -0
- package/dist/api/namespace.d.ts.map +1 -0
- package/dist/api/namespace.js +1 -2
- package/dist/api/namespace_alarm_and_condition.d.ts +1 -0
- package/dist/api/namespace_alarm_and_condition.d.ts.map +1 -0
- package/dist/api/namespace_alarm_and_condition.js +1 -2
- package/dist/api/namespace_data_access.d.ts +1 -0
- package/dist/api/namespace_data_access.d.ts.map +1 -0
- package/dist/api/namespace_data_access.js +1 -2
- package/dist/api/namespace_machine_state.d.ts +1 -0
- package/dist/api/namespace_machine_state.d.ts.map +1 -0
- package/dist/api/namespace_machine_state.js +1 -2
- package/dist/api/namespace_of.d.ts +1 -0
- package/dist/api/namespace_of.d.ts.map +1 -0
- package/dist/api/namespace_of.js +1 -4
- package/dist/api/namespace_of.js.map +1 -1
- package/dist/api/pseudo_session.d.ts +1 -0
- package/dist/api/pseudo_session.d.ts.map +1 -0
- package/dist/api/pseudo_session.js +56 -62
- package/dist/api/pseudo_session.js.map +1 -1
- package/dist/api/session_context.d.ts +1 -0
- package/dist/api/session_context.d.ts.map +1 -0
- package/dist/api/session_context.js +60 -68
- package/dist/api/session_context.js.map +1 -1
- package/dist/api/set_namespace_meta_data.d.ts +1 -0
- package/dist/api/set_namespace_meta_data.d.ts.map +1 -0
- package/dist/api/set_namespace_meta_data.js +10 -13
- package/dist/api/set_namespace_meta_data.js.map +1 -1
- package/dist/api/ua_addin.d.ts +1 -0
- package/dist/api/ua_addin.d.ts.map +1 -0
- package/dist/api/ua_addin.js +9 -13
- package/dist/api/ua_addin.js.map +1 -1
- package/dist/api/ua_interface.d.ts +1 -0
- package/dist/api/ua_interface.d.ts.map +1 -0
- package/dist/api/ua_interface.js +5 -8
- package/dist/api/ua_interface.js.map +1 -1
- package/dist/api/ua_root_folder.d.ts +1 -0
- package/dist/api/ua_root_folder.d.ts.map +1 -0
- package/dist/api/ua_root_folder.js +1 -2
- package/dist/api/ua_two_state_variable_ex.d.ts +1 -0
- package/dist/api/ua_two_state_variable_ex.d.ts.map +1 -0
- package/dist/api/ua_two_state_variable_ex.js +1 -2
- package/dist/api/xml_writer.d.ts +1 -0
- package/dist/api/xml_writer.d.ts.map +1 -0
- package/dist/api/xml_writer.js +1 -2
- package/dist/impl/_instantiate_helpers.d.ts +1 -0
- package/dist/impl/_instantiate_helpers.d.ts.map +1 -0
- package/dist/impl/_instantiate_helpers.js +25 -31
- package/dist/impl/_instantiate_helpers.js.map +1 -1
- package/dist/impl/_mandatory_child_or_requested_optional_filter.d.ts +1 -0
- package/dist/impl/_mandatory_child_or_requested_optional_filter.d.ts.map +1 -0
- package/dist/impl/_mandatory_child_or_requested_optional_filter.js +16 -20
- package/dist/impl/_mandatory_child_or_requested_optional_filter.js.map +1 -1
- package/dist/impl/address_space.d.ts +40 -0
- package/dist/impl/address_space.d.ts.map +1 -0
- package/dist/impl/address_space.js +246 -189
- package/dist/impl/address_space.js.map +1 -1
- package/dist/impl/address_space_change_event_tools.d.ts +1 -0
- package/dist/impl/address_space_change_event_tools.d.ts.map +1 -0
- package/dist/impl/address_space_change_event_tools.js +31 -29
- package/dist/impl/address_space_change_event_tools.js.map +1 -1
- package/dist/impl/address_space_private.d.ts +2 -0
- package/dist/impl/address_space_private.d.ts.map +1 -0
- package/dist/impl/address_space_private.js +1 -2
- package/dist/impl/address_space_private.js.map +1 -1
- package/dist/impl/alarms_and_conditions/condition.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/condition.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/condition.js +1 -2
- package/dist/impl/alarms_and_conditions/condition.js.map +1 -1
- package/dist/impl/alarms_and_conditions/condition_info_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/condition_info_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/condition_info_impl.js +3 -7
- package/dist/impl/alarms_and_conditions/condition_info_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/condition_snapshot_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/condition_snapshot_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/condition_snapshot_impl.js +77 -81
- package/dist/impl/alarms_and_conditions/condition_snapshot_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/deviation_alarm_helper.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/deviation_alarm_helper.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/deviation_alarm_helper.js +17 -20
- package/dist/impl/alarms_and_conditions/deviation_alarm_helper.js.map +1 -1
- package/dist/impl/alarms_and_conditions/index.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/index.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/index.js +13 -29
- package/dist/impl/alarms_and_conditions/index.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_acknowledgeable_condition_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_acknowledgeable_condition_impl.js +60 -65
- package/dist/impl/alarms_and_conditions/ua_acknowledgeable_condition_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_alarm_condition_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_alarm_condition_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_alarm_condition_impl.js +53 -59
- package/dist/impl/alarms_and_conditions/ua_alarm_condition_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_base_event_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_base_event_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_base_event_impl.js +12 -16
- package/dist/impl/alarms_and_conditions/ua_base_event_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_certificate_expiration_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js +34 -39
- package/dist/impl/alarms_and_conditions/ua_certificate_expiration_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_condition_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_condition_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_condition_impl.js +140 -148
- package/dist/impl/alarms_and_conditions/ua_condition_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_discrete_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_discrete_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_discrete_alarm_impl.js +6 -10
- package/dist/impl/alarms_and_conditions/ua_discrete_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts +9 -0
- package/dist/impl/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js +28 -22
- package/dist/impl/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_exclusive_level_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_exclusive_level_alarm_impl.js +3 -7
- package/dist/impl/alarms_and_conditions/ua_exclusive_level_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_exclusive_limit_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js +14 -18
- package/dist/impl/alarms_and_conditions/ua_exclusive_limit_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js +2 -6
- package/dist/impl/alarms_and_conditions/ua_exclusive_rate_of_change_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_limit_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_limit_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_limit_alarm_impl.js +35 -39
- package/dist/impl/alarms_and_conditions/ua_limit_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts +9 -0
- package/dist/impl/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js +27 -21
- package/dist/impl/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js +27 -31
- package/dist/impl/alarms_and_conditions/ua_non_exclusive_limit_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_off_normal_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_off_normal_alarm_impl.js +18 -22
- package/dist/impl/alarms_and_conditions/ua_off_normal_alarm_impl.js.map +1 -1
- package/dist/impl/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts +1 -0
- package/dist/impl/alarms_and_conditions/ua_system_off_normal_alarm_impl.d.ts.map +1 -0
- package/dist/impl/alarms_and_conditions/ua_system_off_normal_alarm_impl.js +3 -7
- package/dist/impl/alarms_and_conditions/ua_system_off_normal_alarm_impl.js.map +1 -1
- package/dist/impl/apply_condition_refresh.d.ts +1 -0
- package/dist/impl/apply_condition_refresh.d.ts.map +1 -0
- package/dist/impl/apply_condition_refresh.js +1 -4
- package/dist/impl/apply_condition_refresh.js.map +1 -1
- package/dist/impl/base_node_impl.d.ts +1 -0
- package/dist/impl/base_node_impl.d.ts.map +1 -0
- package/dist/impl/base_node_impl.js +279 -292
- package/dist/impl/base_node_impl.js.map +1 -1
- package/dist/impl/base_node_private.d.ts +1 -0
- package/dist/impl/base_node_private.d.ts.map +1 -0
- package/dist/impl/base_node_private.js +168 -199
- package/dist/impl/base_node_private.js.map +1 -1
- package/dist/impl/bulk_load_clock.d.ts +35 -0
- package/dist/impl/bulk_load_clock.d.ts.map +1 -0
- package/dist/impl/bulk_load_clock.js +58 -0
- package/dist/impl/bulk_load_clock.js.map +1 -0
- package/dist/impl/check_value_rank_compatibility.d.ts +1 -0
- package/dist/impl/check_value_rank_compatibility.d.ts.map +1 -0
- package/dist/impl/check_value_rank_compatibility.js +1 -4
- package/dist/impl/check_value_rank_compatibility.js.map +1 -1
- package/dist/impl/child_accessors.d.ts +1 -0
- package/dist/impl/child_accessors.d.ts.map +1 -0
- package/dist/impl/child_accessors.js +10 -20
- package/dist/impl/child_accessors.js.map +1 -1
- package/dist/impl/data_access/add_dataItem_stuff.d.ts +1 -0
- package/dist/impl/data_access/add_dataItem_stuff.d.ts.map +1 -0
- package/dist/impl/data_access/add_dataItem_stuff.js +6 -9
- package/dist/impl/data_access/add_dataItem_stuff.js.map +1 -1
- package/dist/impl/data_access/adjust_datavalue_status_code.d.ts +1 -0
- package/dist/impl/data_access/adjust_datavalue_status_code.d.ts.map +1 -0
- package/dist/impl/data_access/adjust_datavalue_status_code.js +9 -12
- package/dist/impl/data_access/adjust_datavalue_status_code.js.map +1 -1
- package/dist/impl/data_access/semantics_changed.d.ts +12 -0
- package/dist/impl/data_access/semantics_changed.d.ts.map +1 -0
- package/dist/impl/data_access/semantics_changed.js +44 -10
- package/dist/impl/data_access/semantics_changed.js.map +1 -1
- package/dist/impl/data_access/ua_multistate_discrete_impl.d.ts +2 -1
- package/dist/impl/data_access/ua_multistate_discrete_impl.d.ts.map +1 -0
- package/dist/impl/data_access/ua_multistate_discrete_impl.js +35 -41
- package/dist/impl/data_access/ua_multistate_discrete_impl.js.map +1 -1
- package/dist/impl/data_access/ua_multistate_value_discrete_impl.d.ts +1 -0
- package/dist/impl/data_access/ua_multistate_value_discrete_impl.d.ts.map +1 -0
- package/dist/impl/data_access/ua_multistate_value_discrete_impl.js +71 -78
- package/dist/impl/data_access/ua_multistate_value_discrete_impl.js.map +1 -1
- package/dist/impl/data_access/ua_two_state_discrete_impl.d.ts +1 -0
- package/dist/impl/data_access/ua_two_state_discrete_impl.d.ts.map +1 -0
- package/dist/impl/data_access/ua_two_state_discrete_impl.js +27 -36
- package/dist/impl/data_access/ua_two_state_discrete_impl.js.map +1 -1
- package/dist/impl/event_data.d.ts +1 -0
- package/dist/impl/event_data.d.ts.map +1 -0
- package/dist/impl/event_data.js +15 -19
- package/dist/impl/event_data.js.map +1 -1
- package/dist/impl/event_layout.d.ts +1 -0
- package/dist/impl/event_layout.d.ts.map +1 -0
- package/dist/impl/event_layout.js +12 -16
- package/dist/impl/event_layout.js.map +1 -1
- package/dist/impl/extension_object_array_node.d.ts +1 -0
- package/dist/impl/extension_object_array_node.d.ts.map +1 -0
- package/dist/impl/extension_object_array_node.js +47 -53
- package/dist/impl/extension_object_array_node.js.map +1 -1
- package/dist/impl/get_basic_datatype.d.ts +1 -0
- package/dist/impl/get_basic_datatype.d.ts.map +1 -0
- package/dist/impl/get_basic_datatype.js +6 -10
- package/dist/impl/get_basic_datatype.js.map +1 -1
- package/dist/impl/handle_hierarchy_parent.d.ts +1 -0
- package/dist/impl/handle_hierarchy_parent.d.ts.map +1 -0
- package/dist/impl/handle_hierarchy_parent.js +26 -30
- package/dist/impl/handle_hierarchy_parent.js.map +1 -1
- package/dist/impl/historical_access/address_space_historical_data_node.d.ts +1 -0
- package/dist/impl/historical_access/address_space_historical_data_node.d.ts.map +1 -0
- package/dist/impl/historical_access/address_space_historical_data_node.js +76 -84
- package/dist/impl/historical_access/address_space_historical_data_node.js.map +1 -1
- package/dist/impl/historical_access/read_processed_details_hook.d.ts +1 -0
- package/dist/impl/historical_access/read_processed_details_hook.d.ts.map +1 -0
- package/dist/impl/historical_access/read_processed_details_hook.js +1 -4
- package/dist/impl/historical_access/read_processed_details_hook.js.map +1 -1
- package/dist/impl/historizer_factory.d.ts +1 -0
- package/dist/impl/historizer_factory.d.ts.map +1 -0
- package/dist/impl/historizer_factory.js +1 -4
- package/dist/impl/historizer_factory.js.map +1 -1
- package/dist/impl/idx_iterator.d.ts +1 -0
- package/dist/impl/idx_iterator.d.ts.map +1 -0
- package/dist/impl/idx_iterator.js +1 -5
- package/dist/impl/idx_iterator.js.map +1 -1
- package/dist/impl/namespace_impl.d.ts +32 -0
- package/dist/impl/namespace_impl.d.ts.map +1 -0
- package/dist/impl/namespace_impl.js +418 -318
- package/dist/impl/namespace_impl.js.map +1 -1
- package/dist/impl/namespace_private.d.ts +3 -0
- package/dist/impl/namespace_private.d.ts.map +1 -0
- package/dist/impl/namespace_private.js +3 -6
- package/dist/impl/namespace_private.js.map +1 -1
- package/dist/impl/nodeid_manager.d.ts +16 -0
- package/dist/impl/nodeid_manager.d.ts.map +1 -0
- package/dist/impl/nodeid_manager.js +70 -46
- package/dist/impl/nodeid_manager.js.map +1 -1
- package/dist/impl/nodeset_tools/adjust_namespace_array.d.ts +1 -0
- package/dist/impl/nodeset_tools/adjust_namespace_array.d.ts.map +1 -0
- package/dist/impl/nodeset_tools/adjust_namespace_array.js +1 -4
- package/dist/impl/nodeset_tools/adjust_namespace_array.js.map +1 -1
- package/dist/impl/nodeset_tools/construct_namespace_dependency.d.ts +1 -0
- package/dist/impl/nodeset_tools/construct_namespace_dependency.d.ts.map +1 -0
- package/dist/impl/nodeset_tools/construct_namespace_dependency.js +28 -39
- package/dist/impl/nodeset_tools/construct_namespace_dependency.js.map +1 -1
- package/dist/impl/nodeset_tools/dump_to_bsd.d.ts +1 -0
- package/dist/impl/nodeset_tools/dump_to_bsd.d.ts.map +1 -0
- package/dist/impl/nodeset_tools/dump_to_bsd.js +14 -20
- package/dist/impl/nodeset_tools/dump_to_bsd.js.map +1 -1
- package/dist/impl/nodeset_tools/nodeset_to_records.d.ts +1 -0
- package/dist/impl/nodeset_tools/nodeset_to_records.d.ts.map +1 -0
- package/dist/impl/nodeset_tools/nodeset_to_records.js +125 -139
- package/dist/impl/nodeset_tools/nodeset_to_records.js.map +1 -1
- package/dist/impl/nodeset_tools/nodeset_to_xml.d.ts +1 -0
- package/dist/impl/nodeset_tools/nodeset_to_xml.d.ts.map +1 -0
- package/dist/impl/nodeset_tools/nodeset_to_xml.js +190 -202
- package/dist/impl/nodeset_tools/nodeset_to_xml.js.map +1 -1
- package/dist/impl/private_namespace.d.ts +1 -0
- package/dist/impl/private_namespace.d.ts.map +1 -0
- package/dist/impl/private_namespace.js +3 -8
- package/dist/impl/private_namespace.js.map +1 -1
- package/dist/impl/reference_impl.d.ts +1 -0
- package/dist/impl/reference_impl.d.ts.map +1 -0
- package/dist/impl/reference_impl.js +24 -37
- package/dist/impl/reference_impl.js.map +1 -1
- package/dist/impl/reference_type_version.d.ts +1 -0
- package/dist/impl/reference_type_version.d.ts.map +1 -0
- package/dist/impl/reference_type_version.js +2 -5
- package/dist/impl/reference_type_version.js.map +1 -1
- package/dist/impl/role_permissions.d.ts +1 -0
- package/dist/impl/role_permissions.d.ts.map +1 -0
- package/dist/impl/role_permissions.js +3 -6
- package/dist/impl/role_permissions.js.map +1 -1
- package/dist/impl/state_machine/finite_state_machine.d.ts +1 -0
- package/dist/impl/state_machine/finite_state_machine.d.ts.map +1 -0
- package/dist/impl/state_machine/finite_state_machine.js +123 -97
- package/dist/impl/state_machine/finite_state_machine.js.map +1 -1
- package/dist/impl/state_machine/ua_shelving_state_machine_ex.d.ts +1 -0
- package/dist/impl/state_machine/ua_shelving_state_machine_ex.d.ts.map +1 -0
- package/dist/impl/state_machine/ua_shelving_state_machine_ex.js +57 -62
- package/dist/impl/state_machine/ua_shelving_state_machine_ex.js.map +1 -1
- package/dist/impl/state_machine/ua_two_state_variable.d.ts +1 -0
- package/dist/impl/state_machine/ua_two_state_variable.d.ts.map +1 -0
- package/dist/impl/state_machine/ua_two_state_variable.js +56 -63
- package/dist/impl/state_machine/ua_two_state_variable.js.map +1 -1
- package/dist/impl/tool_isSubtypeOf.d.ts +1 -0
- package/dist/impl/tool_isSubtypeOf.d.ts.map +1 -0
- package/dist/impl/tool_isSubtypeOf.js +27 -34
- package/dist/impl/tool_isSubtypeOf.js.map +1 -1
- package/dist/impl/ua_condition_type.d.ts +1 -0
- package/dist/impl/ua_condition_type.d.ts.map +1 -0
- package/dist/impl/ua_condition_type.js +1 -2
- package/dist/impl/ua_data_type_impl.d.ts +1 -0
- package/dist/impl/ua_data_type_impl.d.ts.map +1 -0
- package/dist/impl/ua_data_type_impl.js +99 -83
- package/dist/impl/ua_data_type_impl.js.map +1 -1
- package/dist/impl/ua_method_impl.d.ts +3 -2
- package/dist/impl/ua_method_impl.d.ts.map +1 -0
- package/dist/impl/ua_method_impl.js +74 -78
- package/dist/impl/ua_method_impl.js.map +1 -1
- package/dist/impl/ua_object_impl.d.ts +1 -0
- package/dist/impl/ua_object_impl.d.ts.map +1 -0
- package/dist/impl/ua_object_impl.js +48 -51
- package/dist/impl/ua_object_impl.js.map +1 -1
- package/dist/impl/ua_object_type_impl.d.ts +1 -0
- package/dist/impl/ua_object_type_impl.d.ts.map +1 -0
- package/dist/impl/ua_object_type_impl.js +36 -39
- package/dist/impl/ua_object_type_impl.js.map +1 -1
- package/dist/impl/ua_reference_type_impl.d.ts +2 -1
- package/dist/impl/ua_reference_type_impl.d.ts.map +1 -0
- package/dist/impl/ua_reference_type_impl.js +41 -45
- package/dist/impl/ua_reference_type_impl.js.map +1 -1
- package/dist/impl/ua_variable_impl.d.ts +1 -0
- package/dist/impl/ua_variable_impl.d.ts.map +1 -0
- package/dist/impl/ua_variable_impl.js +373 -376
- package/dist/impl/ua_variable_impl.js.map +1 -1
- package/dist/impl/ua_variable_impl_ext_obj.d.ts +1 -0
- package/dist/impl/ua_variable_impl_ext_obj.d.ts.map +1 -0
- package/dist/impl/ua_variable_impl_ext_obj.js +79 -97
- package/dist/impl/ua_variable_impl_ext_obj.js.map +1 -1
- package/dist/impl/ua_variable_type_impl.d.ts +1 -0
- package/dist/impl/ua_variable_type_impl.d.ts.map +1 -0
- package/dist/impl/ua_variable_type_impl.js +78 -84
- package/dist/impl/ua_variable_type_impl.js.map +1 -1
- package/dist/impl/ua_view_impl.d.ts +1 -0
- package/dist/impl/ua_view_impl.d.ts.map +1 -0
- package/dist/impl/ua_view_impl.js +18 -22
- package/dist/impl/ua_view_impl.js.map +1 -1
- package/dist/impl/validate_data_type_correctness.d.ts +1 -0
- package/dist/impl/validate_data_type_correctness.d.ts.map +1 -0
- package/dist/impl/validate_data_type_correctness.js +24 -30
- package/dist/impl/validate_data_type_correctness.js.map +1 -1
- package/dist/tsconfig_base.tsbuildinfo +1 -1
- package/distHelpers/add_event_generator_object.d.ts +1 -0
- package/distHelpers/add_event_generator_object.d.ts.map +1 -0
- package/distHelpers/add_event_generator_object.js +8 -11
- package/distHelpers/add_event_generator_object.js.map +1 -1
- package/distHelpers/address_space_digest.d.ts +1 -0
- package/distHelpers/address_space_digest.d.ts.map +1 -0
- package/distHelpers/address_space_digest.js +1 -5
- package/distHelpers/address_space_digest.js.map +1 -1
- package/distHelpers/alarms_and_conditions_demo.d.ts +1 -0
- package/distHelpers/alarms_and_conditions_demo.d.ts.map +1 -0
- package/distHelpers/alarms_and_conditions_demo.js +8 -11
- package/distHelpers/alarms_and_conditions_demo.js.map +1 -1
- package/distHelpers/assertHasMatchingReference.d.ts +1 -0
- package/distHelpers/assertHasMatchingReference.d.ts.map +1 -0
- package/distHelpers/assertHasMatchingReference.js +6 -9
- package/distHelpers/assertHasMatchingReference.js.map +1 -1
- package/distHelpers/boiler_system.d.ts +1 -0
- package/distHelpers/boiler_system.d.ts.map +1 -0
- package/distHelpers/boiler_system.js +36 -40
- package/distHelpers/boiler_system.js.map +1 -1
- package/distHelpers/create_minimalist_address_space_nodeset.d.ts +1 -0
- package/distHelpers/create_minimalist_address_space_nodeset.d.ts.map +1 -0
- package/distHelpers/create_minimalist_address_space_nodeset.js +29 -35
- package/distHelpers/create_minimalist_address_space_nodeset.js.map +1 -1
- package/distHelpers/date_utils.d.ts +1 -0
- package/distHelpers/date_utils.d.ts.map +1 -0
- package/distHelpers/date_utils.js +1 -4
- package/distHelpers/date_utils.js.map +1 -1
- package/distHelpers/dump_statemachine.d.ts +1 -0
- package/distHelpers/dump_statemachine.d.ts.map +1 -0
- package/distHelpers/dump_statemachine.js +1 -2
- package/distHelpers/dump_statemachine.js.map +1 -1
- package/distHelpers/get_address_space_fixture.d.ts +1 -0
- package/distHelpers/get_address_space_fixture.d.ts.map +1 -0
- package/distHelpers/get_address_space_fixture.js +12 -18
- package/distHelpers/get_address_space_fixture.js.map +1 -1
- package/distHelpers/get_mini_address_space.d.ts +1 -0
- package/distHelpers/get_mini_address_space.d.ts.map +1 -0
- package/distHelpers/get_mini_address_space.js +12 -18
- package/distHelpers/get_mini_address_space.js.map +1 -1
- package/distHelpers/index.d.ts +1 -0
- package/distHelpers/index.d.ts.map +1 -0
- package/distHelpers/index.js +10 -26
- package/distHelpers/index.js.map +1 -1
- package/distHelpers/mock_session.d.ts +1 -0
- package/distHelpers/mock_session.d.ts.map +1 -0
- package/distHelpers/mock_session.js +11 -16
- package/distHelpers/mock_session.js.map +1 -1
- package/distNodeJS/address_space_digest.d.ts +1 -0
- package/distNodeJS/address_space_digest.d.ts.map +1 -0
- package/distNodeJS/address_space_digest.js +3 -6
- package/distNodeJS/address_space_digest.js.map +1 -1
- package/distNodeJS/generate_address_space.d.ts +1 -0
- package/distNodeJS/generate_address_space.d.ts.map +1 -0
- package/distNodeJS/generate_address_space.js +67 -97
- package/distNodeJS/generate_address_space.js.map +1 -1
- package/distNodeJS/index.d.ts +1 -0
- package/distNodeJS/index.d.ts.map +1 -0
- package/distNodeJS/index.js +3 -19
- package/distNodeJS/index.js.map +1 -1
- package/distNodeJS/nodeset_image_file_store.d.ts +1 -0
- package/distNodeJS/nodeset_image_file_store.d.ts.map +1 -0
- package/distNodeJS/nodeset_image_file_store.js +20 -28
- package/distNodeJS/nodeset_image_file_store.js.map +1 -1
- package/impl/_mandatory_child_or_requested_optional_filter.ts +3 -3
- package/impl/address_space.ts +75 -6
- package/impl/address_space_change_event_tools.ts +7 -0
- package/impl/address_space_private.ts +1 -0
- package/impl/alarms_and_conditions/condition_snapshot_impl.ts +1 -1
- package/impl/alarms_and_conditions/deviation_alarm_helper.ts +3 -0
- package/impl/alarms_and_conditions/ua_acknowledgeable_condition_impl.ts +1 -1
- package/impl/alarms_and_conditions/ua_alarm_condition_impl.ts +1 -1
- package/impl/alarms_and_conditions/ua_condition_impl.ts +1 -1
- package/impl/alarms_and_conditions/ua_exclusive_deviation_alarm_impl.ts +12 -1
- package/impl/alarms_and_conditions/ua_non_exclusive_deviation_alarm_impl.ts +12 -1
- package/impl/bulk_load_clock.ts +65 -0
- package/impl/data_access/semantics_changed.ts +39 -1
- package/impl/data_access/ua_multistate_discrete_impl.ts +1 -1
- package/impl/extension_object_array_node.ts +5 -5
- package/impl/historical_access/address_space_historical_data_node.ts +2 -2
- package/impl/namespace_impl.ts +119 -2
- package/impl/namespace_private.ts +3 -0
- package/impl/nodeid_manager.ts +40 -5
- package/impl/nodeset_tools/construct_namespace_dependency.ts +4 -4
- package/impl/nodeset_tools/dump_to_bsd.ts +1 -1
- package/impl/nodeset_tools/nodeset_to_xml.ts +1 -1
- package/impl/state_machine/finite_state_machine.ts +56 -10
- package/impl/state_machine/ua_shelving_state_machine_ex.ts +1 -1
- package/impl/state_machine/ua_two_state_variable.ts +1 -1
- package/impl/tool_isSubtypeOf.ts +1 -1
- package/impl/ua_data_type_impl.ts +26 -5
- package/impl/ua_method_impl.ts +10 -6
- package/impl/ua_object_impl.ts +6 -2
- package/impl/ua_object_type_impl.ts +1 -0
- package/impl/ua_variable_impl.ts +15 -8
- package/impl/ua_variable_type_impl.ts +4 -3
- package/nodeJS.d.ts +1 -1
- package/nodeJS.js +1 -1
- package/package.json +42 -41
- package/source_nodejs/generate_address_space.ts +31 -14
- package/testHelpers.d.ts +1 -1
- package/testHelpers.js +1 -1
- /package/bin/{nodeset_tool_common.js → nodeset_tool_common.cjs} +0 -0
|
@@ -1,44 +1,38 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @module node-opcua-address-space
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const reference_impl_js_1 = require("./reference_impl.js");
|
|
31
|
-
const ua_data_type_impl_js_1 = require("./ua_data_type_impl.js");
|
|
32
|
-
const ua_object_impl_js_1 = require("./ua_object_impl.js");
|
|
33
|
-
const ua_object_type_impl_js_1 = require("./ua_object_type_impl.js");
|
|
34
|
-
const ua_reference_type_impl_js_1 = require("./ua_reference_type_impl.js");
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { assert } from "node-opcua-assert";
|
|
6
|
+
import { DataTypeIds, VariableTypeIds } from "node-opcua-constants";
|
|
7
|
+
import { BrowseDirection, NodeClass, QualifiedName } from "node-opcua-data-model";
|
|
8
|
+
import { make_debugLog, make_errorLog, make_warningLog } from "node-opcua-debug";
|
|
9
|
+
import { coerceExpandedNodeId, coerceNodeId, makeNodeId, NodeId, NodeIdType, resolveNodeId, sameNodeId } from "node-opcua-nodeid";
|
|
10
|
+
import { ObjectRegistry } from "node-opcua-object-registry";
|
|
11
|
+
import { BrowseResult } from "node-opcua-service-browse";
|
|
12
|
+
import { StatusCodes } from "node-opcua-status-code";
|
|
13
|
+
import { BrowsePath, BrowsePathResult } from "node-opcua-types";
|
|
14
|
+
import { isNullOrUndefined, randomBytes } from "node-opcua-utils";
|
|
15
|
+
import { DataType, Variant, VariantArrayType } from "node-opcua-variant";
|
|
16
|
+
import { adjustBrowseDirection } from "../api/helpers/adjust_browse_direction.js";
|
|
17
|
+
import { UAAcknowledgeableConditionImplBase, UAConditionImplBase } from "./alarms_and_conditions/index.js";
|
|
18
|
+
import { BaseNodeImpl, defineSharedChildAccessors } from "./base_node_impl.js";
|
|
19
|
+
import { EventData } from "./event_data.js";
|
|
20
|
+
import { getEventLayout } from "./event_layout.js";
|
|
21
|
+
import { AddressSpace_installHistoricalDataNode } from "./historical_access/address_space_historical_data_node.js";
|
|
22
|
+
import { historizerFactoryHolder } from "./historizer_factory.js";
|
|
23
|
+
import { isNonEmptyQualifiedName, NamespaceImpl } from "./namespace_impl.js";
|
|
24
|
+
import { nodeIdKey, ReferenceImpl } from "./reference_impl.js";
|
|
25
|
+
import { UADataTypeImpl } from "./ua_data_type_impl.js";
|
|
26
|
+
import { UAObjectImpl } from "./ua_object_impl.js";
|
|
27
|
+
import { UAObjectTypeImpl } from "./ua_object_type_impl.js";
|
|
28
|
+
import { UAReferenceTypeImpl } from "./ua_reference_type_impl.js";
|
|
35
29
|
const doDebug = false;
|
|
36
|
-
const errorLog =
|
|
37
|
-
const debugLog =
|
|
38
|
-
const warningLog =
|
|
39
|
-
|
|
30
|
+
const errorLog = make_errorLog("address_space");
|
|
31
|
+
const debugLog = make_debugLog("address_space");
|
|
32
|
+
const warningLog = make_warningLog("address_space");
|
|
33
|
+
import Dequeue from "dequeue";
|
|
40
34
|
const regexNumberColumnString = /^([0-9]+):(.*)/;
|
|
41
|
-
const enumerationTypeNodeId =
|
|
35
|
+
const enumerationTypeNodeId = coerceNodeId(DataTypeIds.Enumeration);
|
|
42
36
|
/**
|
|
43
37
|
* Extracts the namespace and browse name as a string from the given input.
|
|
44
38
|
*
|
|
@@ -48,10 +42,10 @@ const enumerationTypeNodeId = (0, node_opcua_nodeid_1.coerceNodeId)(node_opcua_c
|
|
|
48
42
|
* @returns A tuple containing the NamespacePrivate and the browse name as a string.
|
|
49
43
|
*/
|
|
50
44
|
function _extract_namespace_and_browse_name_as_string(addressSpace, browseNameOrNodeId, namespaceIndex) {
|
|
51
|
-
|
|
45
|
+
assert(!namespaceIndex || namespaceIndex >= 0);
|
|
52
46
|
let result;
|
|
53
47
|
if (namespaceIndex !== undefined && namespaceIndex > 0) {
|
|
54
|
-
|
|
48
|
+
assert(typeof browseNameOrNodeId === "string", "expecting a string when namespaceIndex is specified");
|
|
55
49
|
result = [addressSpace.getNamespace(namespaceIndex), browseNameOrNodeId.toString()];
|
|
56
50
|
}
|
|
57
51
|
else if (typeof browseNameOrNodeId === "string") {
|
|
@@ -67,14 +61,14 @@ function _extract_namespace_and_browse_name_as_string(addressSpace, browseNameOr
|
|
|
67
61
|
}
|
|
68
62
|
result = [addressSpace.getNamespace(namespaceIndex || 0), browseNameOrNodeId];
|
|
69
63
|
}
|
|
70
|
-
else if (browseNameOrNodeId instanceof
|
|
64
|
+
else if (browseNameOrNodeId instanceof QualifiedName) {
|
|
71
65
|
namespaceIndex = browseNameOrNodeId.namespaceIndex;
|
|
72
66
|
result = [addressSpace.getNamespace(namespaceIndex), browseNameOrNodeId.name || ""];
|
|
73
67
|
}
|
|
74
68
|
else if (typeof browseNameOrNodeId === "number") {
|
|
75
|
-
result = [addressSpace.getDefaultNamespace(),
|
|
69
|
+
result = [addressSpace.getDefaultNamespace(), DataType[browseNameOrNodeId]];
|
|
76
70
|
}
|
|
77
|
-
else if (browseNameOrNodeId instanceof
|
|
71
|
+
else if (browseNameOrNodeId instanceof NodeId) {
|
|
78
72
|
// we have a nodeId
|
|
79
73
|
const nodeId = browseNameOrNodeId;
|
|
80
74
|
namespaceIndex = nodeId.namespace;
|
|
@@ -105,7 +99,7 @@ function isNodeIdString(str) {
|
|
|
105
99
|
*
|
|
106
100
|
* @internal
|
|
107
101
|
*/
|
|
108
|
-
class AddressSpaceImpl {
|
|
102
|
+
export class AddressSpaceImpl {
|
|
109
103
|
get rootFolder() {
|
|
110
104
|
const rootFolder = this.findNode(this.resolveNodeId("RootFolder"));
|
|
111
105
|
if (!rootFolder) {
|
|
@@ -114,36 +108,49 @@ class AddressSpaceImpl {
|
|
|
114
108
|
}
|
|
115
109
|
return rootFolder;
|
|
116
110
|
}
|
|
117
|
-
static isNonEmptyQualifiedName =
|
|
111
|
+
static isNonEmptyQualifiedName = isNonEmptyQualifiedName;
|
|
118
112
|
/**
|
|
119
113
|
* Reads and writes reach the module that the historical-access code also reads, so
|
|
120
114
|
* assigning here actually takes effect. It used to be a plain static, while the code that
|
|
121
115
|
* consumed it read the static of a different AddressSpace class altogether.
|
|
122
116
|
*/
|
|
123
117
|
static get historizerFactory() {
|
|
124
|
-
return
|
|
118
|
+
return historizerFactoryHolder.factory;
|
|
125
119
|
}
|
|
126
120
|
static set historizerFactory(factory) {
|
|
127
|
-
|
|
121
|
+
historizerFactoryHolder.factory = factory;
|
|
128
122
|
}
|
|
129
123
|
static create() {
|
|
130
124
|
return new AddressSpaceImpl();
|
|
131
125
|
}
|
|
132
|
-
static registry = new
|
|
126
|
+
static registry = new ObjectRegistry();
|
|
133
127
|
/***
|
|
134
128
|
* @internal
|
|
135
129
|
* @private
|
|
136
130
|
*/
|
|
137
131
|
suspendBackReference = false;
|
|
138
132
|
isFrugal = false;
|
|
133
|
+
/**
|
|
134
|
+
* Stop collecting GeneralModelChangeEventType material.
|
|
135
|
+
*
|
|
136
|
+
* Every node added, deleted or re-referenced pays a probe - an inverse reference scan and a
|
|
137
|
+
* `getNodeVersion` per hierarchical parent - before the bookkeeping can conclude that no node
|
|
138
|
+
* involved carries a NodeVersion and there is nothing to report. A loader, a compiler or a
|
|
139
|
+
* test fixture has no subscriber for those events, so the probe is pure cost.
|
|
140
|
+
*
|
|
141
|
+
* Defaults to `false`, which is the behaviour every existing caller has. While it is `true`
|
|
142
|
+
* no ModelChangeStructure is collected and no NodeVersion is bumped, so set it only when
|
|
143
|
+
* nothing is listening - typically around a bulk load or a bulk delete.
|
|
144
|
+
*/
|
|
145
|
+
suspendModelChangeEvents = false;
|
|
139
146
|
registerChildAccessorNames(browseNames) {
|
|
140
|
-
|
|
147
|
+
defineSharedChildAccessors(browseNames);
|
|
141
148
|
}
|
|
142
149
|
// reference keys pack a reference type as a small ordinal (see reference_impl.ts); one is
|
|
143
150
|
// handed out per distinct reference type NodeId, whether or not the type exists yet
|
|
144
151
|
_referenceTypeOrdinals = new Map();
|
|
145
152
|
referenceTypeOrdinal(referenceType) {
|
|
146
|
-
const key =
|
|
153
|
+
const key = nodeIdKey(referenceType);
|
|
147
154
|
let ordinal = this._referenceTypeOrdinals.get(key);
|
|
148
155
|
if (ordinal === undefined) {
|
|
149
156
|
ordinal = this._referenceTypeOrdinals.size;
|
|
@@ -156,6 +163,8 @@ class AddressSpaceImpl {
|
|
|
156
163
|
isNodeIdString = isNodeIdString;
|
|
157
164
|
_private_namespaceIndex;
|
|
158
165
|
_namespaceArray;
|
|
166
|
+
/** uri -> index into `_namespaceArray`; registering and resolving a uri were linear scans */
|
|
167
|
+
_namespaceIndexByUri = new Map();
|
|
159
168
|
_shutdownTask;
|
|
160
169
|
_eventIdCounter;
|
|
161
170
|
$$extraDataTypeManager;
|
|
@@ -190,7 +199,7 @@ class AddressSpaceImpl {
|
|
|
190
199
|
return this.$$extraDataTypeManager;
|
|
191
200
|
}
|
|
192
201
|
getNamespaceUri(namespaceIndex) {
|
|
193
|
-
|
|
202
|
+
assert(namespaceIndex >= 0 && namespaceIndex < this._namespaceArray.length);
|
|
194
203
|
return this._namespaceArray[namespaceIndex].namespaceUri;
|
|
195
204
|
}
|
|
196
205
|
/***
|
|
@@ -198,12 +207,12 @@ class AddressSpaceImpl {
|
|
|
198
207
|
getNamespace(namespaceIndexOrName) {
|
|
199
208
|
if (typeof namespaceIndexOrName === "number") {
|
|
200
209
|
const namespaceIndex = namespaceIndexOrName;
|
|
201
|
-
|
|
210
|
+
assert(namespaceIndex >= 0 && namespaceIndex < this._namespaceArray.length, "invalid namespace index ( out of bound)");
|
|
202
211
|
return this._namespaceArray[namespaceIndex];
|
|
203
212
|
}
|
|
204
213
|
else {
|
|
205
214
|
const namespaceUri = namespaceIndexOrName;
|
|
206
|
-
|
|
215
|
+
assert(typeof namespaceUri === "string");
|
|
207
216
|
const index = this.getNamespaceIndex(namespaceUri);
|
|
208
217
|
return this._namespaceArray[index];
|
|
209
218
|
}
|
|
@@ -232,8 +241,9 @@ class AddressSpaceImpl {
|
|
|
232
241
|
*
|
|
233
242
|
*/
|
|
234
243
|
getNamespaceIndex(namespaceUri) {
|
|
235
|
-
|
|
236
|
-
|
|
244
|
+
assert(typeof namespaceUri === "string");
|
|
245
|
+
const index = this._namespaceIndexByUri.get(namespaceUri);
|
|
246
|
+
return index === undefined ? -1 : index;
|
|
237
247
|
}
|
|
238
248
|
/**
|
|
239
249
|
*
|
|
@@ -245,21 +255,69 @@ class AddressSpaceImpl {
|
|
|
245
255
|
* @returns {Namespace}
|
|
246
256
|
*/
|
|
247
257
|
registerNamespace(namespaceUri) {
|
|
248
|
-
|
|
249
|
-
if (
|
|
250
|
-
|
|
251
|
-
return this._namespaceArray[
|
|
258
|
+
const existing = this._namespaceIndexByUri.get(namespaceUri);
|
|
259
|
+
if (existing !== undefined) {
|
|
260
|
+
assert(this._namespaceArray[existing].addressSpace === this);
|
|
261
|
+
return this._namespaceArray[existing];
|
|
252
262
|
}
|
|
253
|
-
index = this._namespaceArray.length;
|
|
254
|
-
this._namespaceArray.push(new
|
|
263
|
+
const index = this._namespaceArray.length;
|
|
264
|
+
this._namespaceArray.push(new NamespaceImpl({
|
|
255
265
|
addressSpace: this,
|
|
256
266
|
index,
|
|
257
267
|
namespaceUri,
|
|
258
268
|
publicationDate: new Date(),
|
|
259
269
|
version: "undefined"
|
|
260
270
|
}));
|
|
271
|
+
this._namespaceIndexByUri.set(namespaceUri, index);
|
|
261
272
|
return this._namespaceArray[index];
|
|
262
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Empty a namespace, leaving the rest of the address space as it was before that namespace
|
|
276
|
+
* was ever populated, and the namespace itself registered under the same index and uri and
|
|
277
|
+
* ready to be populated again.
|
|
278
|
+
*
|
|
279
|
+
* This is the recycle that lets a compiler keep its loaded base nodesets across an edit:
|
|
280
|
+
* rebuilding the model's own namespace costs a fraction of rebuilding the whole address
|
|
281
|
+
* space. Everything goes in one model-change transaction, and only the references that cross
|
|
282
|
+
* the namespace boundary are severed - the ones inside it die with their nodes.
|
|
283
|
+
*
|
|
284
|
+
* It lives here rather than on Namespace because most of what it touches is not the
|
|
285
|
+
* namespace's: references held by nodes of other namespaces, the DataType factory this
|
|
286
|
+
* namespace registered with the address space's DataType manager, the address space's set of
|
|
287
|
+
* historizing nodes.
|
|
288
|
+
*
|
|
289
|
+
* Namespace 0 cannot be deleted: it is the standard namespace every other node resolves
|
|
290
|
+
* against.
|
|
291
|
+
*
|
|
292
|
+
* A structure DataType of the namespace also registered an ExtensionObject constructor with
|
|
293
|
+
* the address space's DataType manager; the factory holding those is dropped here, so that
|
|
294
|
+
* a later `ensureDatatypeExtracted` builds a fresh one for the repopulated namespace rather
|
|
295
|
+
* than colliding with the leftovers of the previous one.
|
|
296
|
+
*/
|
|
297
|
+
deleteNamespace(namespaceIndexOrUri) {
|
|
298
|
+
const namespace = this.getNamespace(namespaceIndexOrUri);
|
|
299
|
+
/* c8 ignore next */
|
|
300
|
+
if (!namespace) {
|
|
301
|
+
throw new Error(`deleteNamespace: no namespace ${namespaceIndexOrUri.toString()} in this address space`);
|
|
302
|
+
}
|
|
303
|
+
const index = namespace.index;
|
|
304
|
+
if (index === 0) {
|
|
305
|
+
throw new Error("deleteNamespace: the standard namespace (index 0) cannot be deleted");
|
|
306
|
+
}
|
|
307
|
+
this.modelChangeTransaction(() => {
|
|
308
|
+
namespace._deleteAllNodes();
|
|
309
|
+
});
|
|
310
|
+
// a historized variable of the namespace is gone; the address space must stop listing it
|
|
311
|
+
if (this.historizingNodes.size) {
|
|
312
|
+
for (const node of [...this.historizingNodes]) {
|
|
313
|
+
if (node.nodeId.namespace === index) {
|
|
314
|
+
this.historizingNodes.delete(node);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// the structures and enumerations this namespace registered go with their factory
|
|
319
|
+
this.$$extraDataTypeManager?.unregisterDataTypeFactory(index);
|
|
320
|
+
}
|
|
263
321
|
/***
|
|
264
322
|
* @return {Namespace[]} the namespace array
|
|
265
323
|
*/
|
|
@@ -273,8 +331,8 @@ class AddressSpaceImpl {
|
|
|
273
331
|
* @internal
|
|
274
332
|
*/
|
|
275
333
|
addAlias(alias, nodeId) {
|
|
276
|
-
|
|
277
|
-
|
|
334
|
+
assert(typeof alias === "string");
|
|
335
|
+
assert(nodeId instanceof NodeId);
|
|
278
336
|
this.getNamespace(nodeId.namespace).addAlias(alias, nodeId);
|
|
279
337
|
}
|
|
280
338
|
/**
|
|
@@ -283,7 +341,7 @@ class AddressSpaceImpl {
|
|
|
283
341
|
* @return {BaseNode|null}
|
|
284
342
|
*/
|
|
285
343
|
findNode(nodeId) {
|
|
286
|
-
if (!(nodeId instanceof
|
|
344
|
+
if (!(nodeId instanceof NodeId)) {
|
|
287
345
|
nodeId = this.resolveNodeId(nodeId);
|
|
288
346
|
}
|
|
289
347
|
if (nodeId.namespace < 0 || nodeId.namespace >= this._namespaceArray.length) {
|
|
@@ -295,7 +353,7 @@ class AddressSpaceImpl {
|
|
|
295
353
|
}
|
|
296
354
|
findMethod(nodeId) {
|
|
297
355
|
const node = this.findNode(nodeId);
|
|
298
|
-
if (!node || node.nodeClass !==
|
|
356
|
+
if (!node || node.nodeClass !== NodeClass.Method) {
|
|
299
357
|
return null;
|
|
300
358
|
}
|
|
301
359
|
return node;
|
|
@@ -318,7 +376,7 @@ class AddressSpaceImpl {
|
|
|
318
376
|
}
|
|
319
377
|
}
|
|
320
378
|
const namespaceArray = this.getNamespaceArray().map((a) => a.namespaceUri);
|
|
321
|
-
return
|
|
379
|
+
return resolveNodeId(nodeId, { namespaceArray });
|
|
322
380
|
}
|
|
323
381
|
/**
|
|
324
382
|
*
|
|
@@ -348,7 +406,7 @@ class AddressSpaceImpl {
|
|
|
348
406
|
* ```
|
|
349
407
|
*/
|
|
350
408
|
findObjectType(objectType, namespaceIndex) {
|
|
351
|
-
if (objectType instanceof
|
|
409
|
+
if (objectType instanceof NodeId) {
|
|
352
410
|
return _find_by_node_id(this, objectType, namespaceIndex);
|
|
353
411
|
}
|
|
354
412
|
const [namespace, browseName] = _extract_namespace_and_browse_name_as_string(this, objectType, namespaceIndex);
|
|
@@ -373,7 +431,7 @@ class AddressSpaceImpl {
|
|
|
373
431
|
* ```
|
|
374
432
|
*/
|
|
375
433
|
findVariableType(variableType, namespaceIndex) {
|
|
376
|
-
if (variableType instanceof
|
|
434
|
+
if (variableType instanceof NodeId) {
|
|
377
435
|
return _find_by_node_id(this, variableType, namespaceIndex);
|
|
378
436
|
}
|
|
379
437
|
const [namespace, browseName] = _extract_namespace_and_browse_name_as_string(this, variableType, namespaceIndex);
|
|
@@ -404,18 +462,18 @@ class AddressSpaceImpl {
|
|
|
404
462
|
// +-> Structure
|
|
405
463
|
// +-> Node
|
|
406
464
|
// +-> ObjectNode
|
|
407
|
-
if (dataType instanceof
|
|
465
|
+
if (dataType instanceof UADataTypeImpl) {
|
|
408
466
|
return this.findDataType(dataType.nodeId);
|
|
409
467
|
}
|
|
410
|
-
else if (dataType instanceof
|
|
468
|
+
else if (dataType instanceof NodeId) {
|
|
411
469
|
return _find_by_node_id(this, dataType, namespaceIndex);
|
|
412
470
|
}
|
|
413
471
|
if (typeof dataType === "number") {
|
|
414
|
-
if (
|
|
415
|
-
return this.findDataType(
|
|
472
|
+
if (DataType[dataType] !== undefined) {
|
|
473
|
+
return this.findDataType(makeNodeId(dataType, 0));
|
|
416
474
|
}
|
|
417
475
|
else {
|
|
418
|
-
return this.findDataType(
|
|
476
|
+
return this.findDataType(resolveNodeId(dataType));
|
|
419
477
|
}
|
|
420
478
|
}
|
|
421
479
|
const res = _extract_namespace_and_browse_name_as_string(this, dataType, namespaceIndex);
|
|
@@ -444,7 +502,7 @@ class AddressSpaceImpl {
|
|
|
444
502
|
}
|
|
445
503
|
dataTypeNode = resolvedDataType;
|
|
446
504
|
}
|
|
447
|
-
if (dataTypeNode instanceof
|
|
505
|
+
if (dataTypeNode instanceof NodeId) {
|
|
448
506
|
const foundDataTypeNode = this.findDataType(dataTypeNode);
|
|
449
507
|
/* c8 ignore next */
|
|
450
508
|
if (!foundDataTypeNode) {
|
|
@@ -453,24 +511,24 @@ class AddressSpaceImpl {
|
|
|
453
511
|
dataTypeNode = foundDataTypeNode;
|
|
454
512
|
}
|
|
455
513
|
/* c8 ignore next */
|
|
456
|
-
if (!(dataTypeNode instanceof
|
|
514
|
+
if (!(dataTypeNode instanceof UADataTypeImpl)) {
|
|
457
515
|
throw new Error("we are expecting an UADataType here : " +
|
|
458
516
|
_orig_dataTypeNode.toString() +
|
|
459
517
|
" should not refer to a " +
|
|
460
518
|
dataTypeNode.browseName.name);
|
|
461
519
|
}
|
|
462
|
-
if (
|
|
463
|
-
return
|
|
520
|
+
if (sameNodeId(enumerationTypeNodeId, dataTypeNode?.nodeId)) {
|
|
521
|
+
return DataType.Int32;
|
|
464
522
|
}
|
|
465
523
|
const n = dataTypeNode.nodeId;
|
|
466
524
|
if (n.namespace === 0 && n.value === 29) {
|
|
467
525
|
// Number
|
|
468
|
-
return
|
|
526
|
+
return DataType.Null; //which one ?
|
|
469
527
|
}
|
|
470
528
|
if (n.namespace === 0 && n.value === 0) {
|
|
471
|
-
return
|
|
529
|
+
return DataType.Null;
|
|
472
530
|
}
|
|
473
|
-
if (n.identifierType ===
|
|
531
|
+
if (n.identifierType === NodeIdType.NUMERIC && n.namespace === 0 && n.value <= 25) {
|
|
474
532
|
return n.value;
|
|
475
533
|
}
|
|
476
534
|
const result = this.findCorrespondingBasicDataType(dataTypeNode.subtypeOfObj);
|
|
@@ -510,19 +568,19 @@ class AddressSpaceImpl {
|
|
|
510
568
|
// +->(hasSubtype) Organizes/OrganizedBy
|
|
511
569
|
// +->(hasSubtype) HasEventSource/EventSourceOf
|
|
512
570
|
let node;
|
|
513
|
-
if ((!(refType instanceof
|
|
514
|
-
refType =
|
|
571
|
+
if ((!(refType instanceof NodeId) && isNodeIdString(refType)) || typeof refType === "number") {
|
|
572
|
+
refType = resolveNodeId(refType);
|
|
515
573
|
}
|
|
516
|
-
if (refType instanceof
|
|
574
|
+
if (refType instanceof NodeId) {
|
|
517
575
|
node = this.findNode(refType);
|
|
518
576
|
/* c8 ignore next */
|
|
519
|
-
if (!(node && node.nodeClass ===
|
|
577
|
+
if (!(node && node.nodeClass === NodeClass.ReferenceType)) {
|
|
520
578
|
// throw new Error("cannot resolve referenceId "+ refType.toString());
|
|
521
579
|
return null;
|
|
522
580
|
}
|
|
523
581
|
}
|
|
524
582
|
else {
|
|
525
|
-
|
|
583
|
+
assert(typeof refType === "string");
|
|
526
584
|
node = this._findReferenceType(refType, namespaceIndex);
|
|
527
585
|
}
|
|
528
586
|
return node;
|
|
@@ -542,7 +600,7 @@ class AddressSpaceImpl {
|
|
|
542
600
|
*
|
|
543
601
|
*/
|
|
544
602
|
inverseReferenceType(referenceType) {
|
|
545
|
-
|
|
603
|
+
assert(typeof referenceType === "string");
|
|
546
604
|
const n1 = this.findReferenceType(referenceType);
|
|
547
605
|
if (n1) {
|
|
548
606
|
return n1.inverseName?.text;
|
|
@@ -569,7 +627,7 @@ class AddressSpaceImpl {
|
|
|
569
627
|
*/
|
|
570
628
|
findEventType(eventTypeId, namespaceIndex) {
|
|
571
629
|
let eventType;
|
|
572
|
-
if (eventTypeId instanceof
|
|
630
|
+
if (eventTypeId instanceof BaseNodeImpl) {
|
|
573
631
|
eventType = eventTypeId;
|
|
574
632
|
}
|
|
575
633
|
else {
|
|
@@ -583,7 +641,7 @@ class AddressSpaceImpl {
|
|
|
583
641
|
if (!baseEventType) {
|
|
584
642
|
throw new Error("expecting BaseEventType - please check you nodeset xml file!");
|
|
585
643
|
}
|
|
586
|
-
if (
|
|
644
|
+
if (sameNodeId(eventType.nodeId, baseEventType.nodeId)) {
|
|
587
645
|
return eventType;
|
|
588
646
|
}
|
|
589
647
|
/* eventTypeNode should be a sub type of "BaseEventType" */
|
|
@@ -609,12 +667,12 @@ class AddressSpaceImpl {
|
|
|
609
667
|
*/
|
|
610
668
|
const offset = 16;
|
|
611
669
|
if (!this._eventIdCounter) {
|
|
612
|
-
this._eventIdCounter =
|
|
670
|
+
this._eventIdCounter = randomBytes(20);
|
|
613
671
|
this._eventIdCounter.writeInt32BE(0, offset);
|
|
614
672
|
}
|
|
615
673
|
this._eventIdCounter.writeInt32BE(this._eventIdCounter.readInt32BE(offset) + 1, offset);
|
|
616
|
-
return new
|
|
617
|
-
dataType:
|
|
674
|
+
return new Variant({
|
|
675
|
+
dataType: DataType.ByteString,
|
|
618
676
|
value: Buffer.from(this._eventIdCounter)
|
|
619
677
|
});
|
|
620
678
|
}
|
|
@@ -631,45 +689,45 @@ class AddressSpaceImpl {
|
|
|
631
689
|
// construct the reference dataStructure to store event Data
|
|
632
690
|
let eventTypeNode = eventTypeId;
|
|
633
691
|
// make sure that eventType is really a object that derived from EventType
|
|
634
|
-
if (eventTypeId instanceof
|
|
692
|
+
if (eventTypeId instanceof UAObjectTypeImpl) {
|
|
635
693
|
eventTypeNode = this.findEventType(eventTypeId);
|
|
636
694
|
}
|
|
637
695
|
/* c8 ignore next */
|
|
638
696
|
if (!eventTypeNode)
|
|
639
697
|
throw new Error(` cannot find EventType for ${eventTypeId}`);
|
|
640
|
-
|
|
698
|
+
assert(eventTypeNode instanceof UAObjectTypeImpl, "eventTypeId must represent a UAObjectType");
|
|
641
699
|
// eventId
|
|
642
|
-
|
|
700
|
+
assert(!Object.hasOwn(data, "eventId"), "eventId constructEventData : options object should not have eventId property");
|
|
643
701
|
data.eventId = data.eventId || this.generateEventId();
|
|
644
702
|
// eventType
|
|
645
|
-
data.eventType = { dataType:
|
|
703
|
+
data.eventType = { dataType: DataType.NodeId, value: eventTypeNode.nodeId };
|
|
646
704
|
// sourceNode
|
|
647
|
-
|
|
648
|
-
data.sourceNode = new
|
|
649
|
-
|
|
705
|
+
assert(Object.hasOwn(data, "sourceNode"), "expecting a source node to be defined");
|
|
706
|
+
data.sourceNode = new Variant(data.sourceNode);
|
|
707
|
+
assert(data.sourceNode.dataType === DataType.NodeId);
|
|
650
708
|
// sourceName
|
|
651
709
|
const sourceNode = this.findNode(data.sourceNode.value);
|
|
652
710
|
if (!sourceNode) {
|
|
653
711
|
warningLog(`constructEventData: cannot find sourceNode ${data.sourceNode.value?.toString()} for event ${eventTypeNode.browseName.toString()}`);
|
|
654
712
|
}
|
|
655
713
|
data.sourceName = data.sourceName || {
|
|
656
|
-
dataType:
|
|
714
|
+
dataType: DataType.String,
|
|
657
715
|
value: sourceNode?.getDisplayName("en") || ""
|
|
658
716
|
};
|
|
659
717
|
const nowUTC = new Date();
|
|
660
718
|
// time (UtcTime)
|
|
661
719
|
// TODO
|
|
662
|
-
data.time = data.time || { dataType:
|
|
720
|
+
data.time = data.time || { dataType: DataType.DateTime, value: nowUTC };
|
|
663
721
|
// receivedTime (UtcTime)
|
|
664
722
|
// TODO
|
|
665
|
-
data.receiveTime = data.receiveTime || { dataType:
|
|
723
|
+
data.receiveTime = data.receiveTime || { dataType: DataType.DateTime, value: nowUTC };
|
|
666
724
|
// localTime (UtcTime)
|
|
667
725
|
// TODO
|
|
668
|
-
data.localTime = data.localTime || { dataType:
|
|
726
|
+
data.localTime = data.localTime || { dataType: DataType.DateTime, value: nowUTC };
|
|
669
727
|
// message (LocalizedText)
|
|
670
|
-
data.message = data.message || { dataType:
|
|
728
|
+
data.message = data.message || { dataType: DataType.LocalizedText, value: { text: "" } };
|
|
671
729
|
// severity (UInt16)
|
|
672
|
-
data.severity = data.severity || { dataType:
|
|
730
|
+
data.severity = data.severity || { dataType: DataType.UInt16, value: 0 };
|
|
673
731
|
// xx // reminder : event type cannot be instantiated directly !
|
|
674
732
|
// xx assert(eventTypeNode.isAbstract);
|
|
675
733
|
const baseObjectType = this.findObjectType("BaseObjectType"); // i=58
|
|
@@ -677,23 +735,23 @@ class AddressSpaceImpl {
|
|
|
677
735
|
if (!baseObjectType) {
|
|
678
736
|
throw new Error("BaseObjectType must be defined in the address space");
|
|
679
737
|
}
|
|
680
|
-
const layout =
|
|
681
|
-
const eventData = new
|
|
738
|
+
const layout = getEventLayout(this, eventTypeNode, baseObjectType);
|
|
739
|
+
const eventData = new EventData(eventTypeNode, layout.pathToNodeId);
|
|
682
740
|
for (const field of layout.fields) {
|
|
683
741
|
if (Object.hasOwn(data, field.lowerName)) {
|
|
684
742
|
eventData._setField(field, data[field.lowerName]);
|
|
685
743
|
continue;
|
|
686
744
|
}
|
|
687
745
|
// add a property , but with a null variant
|
|
688
|
-
eventData._setField(field, { dataType:
|
|
746
|
+
eventData._setField(field, { dataType: DataType.Null });
|
|
689
747
|
// c8 ignore next
|
|
690
748
|
if (doDebug) {
|
|
691
749
|
errorLog((field.mandatory
|
|
692
|
-
?
|
|
693
|
-
:
|
|
750
|
+
? chalk.red("ERROR : AddressSpace#constructEventData(eventType,options) cannot find property ")
|
|
751
|
+
: chalk.yellow("Warning : AddressSpace#constructEventData(eventType,options) cannot find property ")) +
|
|
694
752
|
eventTypeNode.browseName.toString() +
|
|
695
753
|
" => " +
|
|
696
|
-
|
|
754
|
+
chalk.cyan(field.lowerName));
|
|
697
755
|
}
|
|
698
756
|
}
|
|
699
757
|
// verify that all elements of data are valid
|
|
@@ -732,14 +790,14 @@ class AddressSpaceImpl {
|
|
|
732
790
|
*
|
|
733
791
|
*/
|
|
734
792
|
browsePath(browsePath) {
|
|
735
|
-
|
|
793
|
+
assert(browsePath instanceof BrowsePath);
|
|
736
794
|
const startingNode = this.findNode(browsePath.startingNode);
|
|
737
795
|
if (!startingNode) {
|
|
738
|
-
return new
|
|
796
|
+
return new BrowsePathResult({ statusCode: StatusCodes.BadNodeIdUnknown });
|
|
739
797
|
}
|
|
740
798
|
if (!browsePath.relativePath.elements || browsePath.relativePath.elements.length === 0) {
|
|
741
|
-
return new
|
|
742
|
-
statusCode:
|
|
799
|
+
return new BrowsePathResult({
|
|
800
|
+
statusCode: StatusCodes.BadNothingToDo,
|
|
743
801
|
targets: []
|
|
744
802
|
});
|
|
745
803
|
}
|
|
@@ -761,14 +819,14 @@ class AddressSpaceImpl {
|
|
|
761
819
|
return prev + (isBad ? 1 : 0);
|
|
762
820
|
}, 0);
|
|
763
821
|
if (empty_targetName_not_in_lastPos) {
|
|
764
|
-
return new
|
|
822
|
+
return new BrowsePathResult({ statusCode: StatusCodes.BadBrowseNameInvalid });
|
|
765
823
|
}
|
|
766
824
|
// from OPCUA 1.03 - PArt 3 - 5.8.4 TranslateBrowsePathToNodeIds
|
|
767
825
|
// TranslateBrowsePathToNodeIds further restrict RelativePath targetName rules:
|
|
768
826
|
// The last element in the relativePath shall always have a targetName specified.
|
|
769
827
|
const last_el = browsePath.relativePath.elements[elements_length - 1];
|
|
770
828
|
if (!last_el.targetName?.name || last_el.targetName.name.length === 0) {
|
|
771
|
-
return new
|
|
829
|
+
return new BrowsePathResult({ statusCode: StatusCodes.BadBrowseNameInvalid });
|
|
772
830
|
}
|
|
773
831
|
const res = [];
|
|
774
832
|
const explore_element = (curNodeObject, elements, index) => {
|
|
@@ -795,24 +853,24 @@ class AddressSpaceImpl {
|
|
|
795
853
|
for (const target of targets) {
|
|
796
854
|
res.push({
|
|
797
855
|
remainingPathIndex: 0xffffffff,
|
|
798
|
-
targetId:
|
|
856
|
+
targetId: coerceExpandedNodeId(target.targetId)
|
|
799
857
|
});
|
|
800
858
|
}
|
|
801
859
|
}
|
|
802
860
|
};
|
|
803
861
|
explore_element(startingNode, browsePath.relativePath.elements, 0);
|
|
804
862
|
if (res.length === 0) {
|
|
805
|
-
return new
|
|
863
|
+
return new BrowsePathResult({ statusCode: StatusCodes.BadNoMatch });
|
|
806
864
|
}
|
|
807
|
-
return new
|
|
808
|
-
statusCode:
|
|
865
|
+
return new BrowsePathResult({
|
|
866
|
+
statusCode: StatusCodes.Good,
|
|
809
867
|
targets: res
|
|
810
868
|
});
|
|
811
869
|
}
|
|
812
870
|
// - Extension Object ----------------------------------------------------------------------------------------------
|
|
813
871
|
getExtensionObjectConstructor(dataType) {
|
|
814
|
-
|
|
815
|
-
if (dataType instanceof
|
|
872
|
+
assert(dataType, "expecting a dataType");
|
|
873
|
+
if (dataType instanceof NodeId) {
|
|
816
874
|
const tmp = this.findNode(dataType);
|
|
817
875
|
/* c8 ignore next */
|
|
818
876
|
if (!tmp) {
|
|
@@ -821,7 +879,7 @@ class AddressSpaceImpl {
|
|
|
821
879
|
dataType = tmp;
|
|
822
880
|
}
|
|
823
881
|
/* c8 ignore next */
|
|
824
|
-
if (!(dataType instanceof
|
|
882
|
+
if (!(dataType instanceof UADataTypeImpl)) {
|
|
825
883
|
// may be dataType was the NodeId of the "Binary Encoding" node
|
|
826
884
|
throw new Error(`getExtensionObjectConstructor: dataType has unexpected type${dataType}`);
|
|
827
885
|
}
|
|
@@ -837,7 +895,7 @@ class AddressSpaceImpl {
|
|
|
837
895
|
// c8 ignore next
|
|
838
896
|
doDebug && debugLog(_dataType.toString());
|
|
839
897
|
}
|
|
840
|
-
|
|
898
|
+
assert(_dataType.isSubtypeOf(structureDataType));
|
|
841
899
|
if (!_dataType._extensionObjectConstructor) {
|
|
842
900
|
if (!this.$$extraDataTypeManager) {
|
|
843
901
|
throw new Error(`getExtensionObjectConstructor: cannot build a constructor for ${_dataType.browseName.toString()} (${_dataType.nodeId.toString()}): ` +
|
|
@@ -847,7 +905,7 @@ class AddressSpaceImpl {
|
|
|
847
905
|
const dataTypeManager = this.$$extraDataTypeManager;
|
|
848
906
|
_dataType._extensionObjectConstructor = dataTypeManager.getExtensionObjectConstructorFromDataType(_dataType.nodeId);
|
|
849
907
|
}
|
|
850
|
-
|
|
908
|
+
assert(_dataType._extensionObjectConstructor, "dataType must have a constructor");
|
|
851
909
|
const Constructor = _dataType._extensionObjectConstructor;
|
|
852
910
|
return Constructor;
|
|
853
911
|
}
|
|
@@ -888,7 +946,7 @@ class AddressSpaceImpl {
|
|
|
888
946
|
*/
|
|
889
947
|
registerShutdownTask(task) {
|
|
890
948
|
this._shutdownTask = this._shutdownTask || [];
|
|
891
|
-
|
|
949
|
+
assert(typeof task === "function");
|
|
892
950
|
this._shutdownTask.push(task);
|
|
893
951
|
}
|
|
894
952
|
/**
|
|
@@ -898,7 +956,7 @@ class AddressSpaceImpl {
|
|
|
898
956
|
* is rejected and subsequent interceptors are skipped.
|
|
899
957
|
*/
|
|
900
958
|
addMethodCallInterceptor(interceptor) {
|
|
901
|
-
|
|
959
|
+
assert(typeof interceptor === "function");
|
|
902
960
|
this._methodCallInterceptors.push(interceptor);
|
|
903
961
|
}
|
|
904
962
|
/**
|
|
@@ -927,13 +985,13 @@ class AddressSpaceImpl {
|
|
|
927
985
|
const browseResult = {
|
|
928
986
|
continuationPoint: undefined,
|
|
929
987
|
references: null,
|
|
930
|
-
statusCode:
|
|
988
|
+
statusCode: StatusCodes.Good
|
|
931
989
|
};
|
|
932
|
-
if (!browseDescription || browseDescription.browseDirection ===
|
|
933
|
-
browseResult.statusCode =
|
|
934
|
-
return new
|
|
990
|
+
if (!browseDescription || browseDescription.browseDirection === BrowseDirection.Invalid) {
|
|
991
|
+
browseResult.statusCode = StatusCodes.BadBrowseDirectionInvalid;
|
|
992
|
+
return new BrowseResult(browseResult);
|
|
935
993
|
}
|
|
936
|
-
browseDescription.browseDirection =
|
|
994
|
+
browseDescription.browseDirection = adjustBrowseDirection(browseDescription.browseDirection, BrowseDirection.Forward);
|
|
937
995
|
/* c8 ignore next */
|
|
938
996
|
if (typeof nodeId === "number") {
|
|
939
997
|
throw new Error("Not Implemented");
|
|
@@ -945,28 +1003,28 @@ class AddressSpaceImpl {
|
|
|
945
1003
|
}
|
|
946
1004
|
}
|
|
947
1005
|
// check if referenceTypeId is correct
|
|
948
|
-
if (browseDescription.referenceTypeId instanceof
|
|
1006
|
+
if (browseDescription.referenceTypeId instanceof NodeId) {
|
|
949
1007
|
if (browseDescription.referenceTypeId.value === 0) {
|
|
950
1008
|
browseDescription.referenceTypeId = null;
|
|
951
1009
|
}
|
|
952
1010
|
else {
|
|
953
1011
|
const rf = this.findNode(browseDescription.referenceTypeId);
|
|
954
|
-
if (!rf || !(rf instanceof
|
|
955
|
-
browseResult.statusCode =
|
|
956
|
-
return new
|
|
1012
|
+
if (!rf || !(rf instanceof UAReferenceTypeImpl)) {
|
|
1013
|
+
browseResult.statusCode = StatusCodes.BadReferenceTypeIdInvalid;
|
|
1014
|
+
return new BrowseResult(browseResult);
|
|
957
1015
|
}
|
|
958
1016
|
}
|
|
959
1017
|
}
|
|
960
1018
|
const obj = this.findNode(nodeId);
|
|
961
1019
|
if (!obj) {
|
|
962
1020
|
// Object Not Found
|
|
963
|
-
browseResult.statusCode =
|
|
1021
|
+
browseResult.statusCode = StatusCodes.BadNodeIdUnknown;
|
|
964
1022
|
}
|
|
965
1023
|
else {
|
|
966
|
-
browseResult.statusCode =
|
|
1024
|
+
browseResult.statusCode = StatusCodes.Good;
|
|
967
1025
|
browseResult.references = obj.browseNode(browseDescription, context);
|
|
968
1026
|
}
|
|
969
|
-
return new
|
|
1027
|
+
return new BrowseResult(browseResult);
|
|
970
1028
|
}
|
|
971
1029
|
/**
|
|
972
1030
|
* @param folder
|
|
@@ -1003,22 +1061,22 @@ class AddressSpaceImpl {
|
|
|
1003
1061
|
* @private
|
|
1004
1062
|
*/
|
|
1005
1063
|
extractRootViews(node) {
|
|
1006
|
-
|
|
1064
|
+
assert(node.nodeClass === NodeClass.Object || node.nodeClass === NodeClass.Variable);
|
|
1007
1065
|
const visitedMap = {};
|
|
1008
|
-
const q = new
|
|
1066
|
+
const q = new Dequeue();
|
|
1009
1067
|
q.push(node);
|
|
1010
1068
|
const objectsFolder = this.rootFolder.objects;
|
|
1011
|
-
|
|
1069
|
+
assert(objectsFolder instanceof UAObjectImpl);
|
|
1012
1070
|
const results = [];
|
|
1013
1071
|
while (q.length) {
|
|
1014
1072
|
node = q.shift();
|
|
1015
|
-
const references = node.findReferencesEx("HierarchicalReferences",
|
|
1016
|
-
const parentNodes = references.map((r) =>
|
|
1073
|
+
const references = node.findReferencesEx("HierarchicalReferences", BrowseDirection.Inverse);
|
|
1074
|
+
const parentNodes = references.map((r) => ReferenceImpl.resolveReferenceNode(this, r));
|
|
1017
1075
|
for (const parent of parentNodes) {
|
|
1018
|
-
if (
|
|
1076
|
+
if (sameNodeId(parent.nodeId, objectsFolder.nodeId)) {
|
|
1019
1077
|
continue; // nothing to do
|
|
1020
1078
|
}
|
|
1021
|
-
if (parent.nodeClass ===
|
|
1079
|
+
if (parent.nodeClass === NodeClass.View) {
|
|
1022
1080
|
results.push(parent);
|
|
1023
1081
|
}
|
|
1024
1082
|
else {
|
|
@@ -1042,7 +1100,7 @@ class AddressSpaceImpl {
|
|
|
1042
1100
|
this._modelChangeTransactionCounter = this._modelChangeTransactionCounter || 0;
|
|
1043
1101
|
function beginModelChange() {
|
|
1044
1102
|
this._modelChanges = this._modelChanges || [];
|
|
1045
|
-
|
|
1103
|
+
assert(this._modelChangeTransactionCounter >= 0);
|
|
1046
1104
|
this._modelChangeTransactionCounter += 1;
|
|
1047
1105
|
}
|
|
1048
1106
|
function endModelChange() {
|
|
@@ -1064,8 +1122,8 @@ class AddressSpaceImpl {
|
|
|
1064
1122
|
this.rootFolder.objects.server.raiseEvent(eventTypeNode, {
|
|
1065
1123
|
// Part 5 - 6.4.32 GeneralModelChangeEventType
|
|
1066
1124
|
changes: {
|
|
1067
|
-
dataType:
|
|
1068
|
-
arrayType:
|
|
1125
|
+
dataType: DataType.ExtensionObject,
|
|
1126
|
+
arrayType: VariantArrayType.Array,
|
|
1069
1127
|
value: this._modelChanges
|
|
1070
1128
|
}
|
|
1071
1129
|
});
|
|
@@ -1094,19 +1152,19 @@ class AddressSpaceImpl {
|
|
|
1094
1152
|
* @return {Object} a new reference object with the normalized name { referenceType: <value>, isForward: <flag>}
|
|
1095
1153
|
*/
|
|
1096
1154
|
normalizeReferenceType(params) {
|
|
1097
|
-
if (params instanceof
|
|
1155
|
+
if (params instanceof ReferenceImpl) {
|
|
1098
1156
|
// a reference has already been normalized
|
|
1099
1157
|
return params;
|
|
1100
1158
|
}
|
|
1101
1159
|
// ----------------------------------------------- handle is forward
|
|
1102
|
-
|
|
1103
|
-
params.isForward =
|
|
1160
|
+
assert(params.isForward === undefined || typeof params.isForward === "boolean");
|
|
1161
|
+
params.isForward = isNullOrUndefined(params.isForward) ? true : !!params.isForward;
|
|
1104
1162
|
// referenceType = Organizes , isForward = true => referenceType = Organizes , isForward = true
|
|
1105
1163
|
// referenceType = Organizes , isForward = false => referenceType = Organizes , isForward = false
|
|
1106
1164
|
// referenceType = OrganizedBy , isForward = true => referenceType = Organizes , isForward = **false**
|
|
1107
1165
|
// referenceType = OrganizedBy , isForward = false => referenceType = Organizes , isForward = **true**
|
|
1108
1166
|
// ----------------------------------------------- handle referenceType
|
|
1109
|
-
if (params.referenceType instanceof
|
|
1167
|
+
if (params.referenceType instanceof UAReferenceTypeImpl) {
|
|
1110
1168
|
params.referenceType = params.referenceType;
|
|
1111
1169
|
params.referenceType = params.referenceType.nodeId;
|
|
1112
1170
|
}
|
|
@@ -1125,31 +1183,31 @@ class AddressSpaceImpl {
|
|
|
1125
1183
|
params.isForward = !params.isForward;
|
|
1126
1184
|
}
|
|
1127
1185
|
else {
|
|
1128
|
-
params.referenceType =
|
|
1186
|
+
params.referenceType = resolveNodeId(params.referenceType);
|
|
1129
1187
|
const refType = this.findReferenceType(params.referenceType);
|
|
1130
1188
|
if (refType) {
|
|
1131
1189
|
params._referenceType = refType;
|
|
1132
1190
|
}
|
|
1133
1191
|
}
|
|
1134
1192
|
}
|
|
1135
|
-
|
|
1193
|
+
assert(params.referenceType instanceof NodeId);
|
|
1136
1194
|
// ----------- now resolve target NodeId;
|
|
1137
|
-
if (params.nodeId instanceof
|
|
1138
|
-
|
|
1195
|
+
if (params.nodeId instanceof BaseNodeImpl) {
|
|
1196
|
+
assert(!Object.hasOwn(params, "node"));
|
|
1139
1197
|
params.node = params.nodeId;
|
|
1140
1198
|
params.nodeId = params.node.nodeId;
|
|
1141
1199
|
}
|
|
1142
1200
|
else {
|
|
1143
1201
|
let _nodeId = params.nodeId;
|
|
1144
|
-
|
|
1202
|
+
assert(!!_nodeId, "missing 'nodeId' in reference");
|
|
1145
1203
|
const _nodeIdWithNodeId = _nodeId;
|
|
1146
1204
|
if (_nodeId && _nodeIdWithNodeId.nodeId) {
|
|
1147
1205
|
_nodeId = _nodeIdWithNodeId.nodeId;
|
|
1148
1206
|
}
|
|
1149
|
-
_nodeId =
|
|
1207
|
+
_nodeId = resolveNodeId(_nodeId);
|
|
1150
1208
|
params.nodeId = _nodeId;
|
|
1151
1209
|
}
|
|
1152
|
-
return new
|
|
1210
|
+
return new ReferenceImpl(params);
|
|
1153
1211
|
}
|
|
1154
1212
|
normalizeReferenceTypes(references) {
|
|
1155
1213
|
if (!references || references.length === 0) {
|
|
@@ -1164,25 +1222,25 @@ class AddressSpaceImpl {
|
|
|
1164
1222
|
* @param options
|
|
1165
1223
|
*/
|
|
1166
1224
|
installHistoricalDataNode(node, options) {
|
|
1167
|
-
|
|
1225
|
+
AddressSpace_installHistoricalDataNode.call(this, node, options);
|
|
1168
1226
|
}
|
|
1169
1227
|
// -- Alarms & Conditions -----------------------------------------------------------------------------------------
|
|
1170
1228
|
/**
|
|
1171
1229
|
*
|
|
1172
1230
|
*/
|
|
1173
1231
|
installAlarmsAndConditionsService() {
|
|
1174
|
-
|
|
1175
|
-
|
|
1232
|
+
UAConditionImplBase.install_condition_refresh_handle(this);
|
|
1233
|
+
UAAcknowledgeableConditionImplBase.install_method_handle_on_type(this);
|
|
1176
1234
|
}
|
|
1177
1235
|
// -- internal stuff -----------------------------------------------------------------------------------------------
|
|
1178
1236
|
_coerceNode(node) {
|
|
1179
1237
|
// coerce to BaseNode object
|
|
1180
|
-
if (node instanceof
|
|
1238
|
+
if (node instanceof BaseNodeImpl) {
|
|
1181
1239
|
return node;
|
|
1182
1240
|
}
|
|
1183
1241
|
// it's a node id like
|
|
1184
1242
|
// coerce parent folder to an object
|
|
1185
|
-
const returnValue = this.findNode(
|
|
1243
|
+
const returnValue = this.findNode(resolveNodeId(node));
|
|
1186
1244
|
/*
|
|
1187
1245
|
if (!hasTypeDefinition(node as BaseNode)) {
|
|
1188
1246
|
node = this.findNode(node.nodeId) || node;
|
|
@@ -1194,14 +1252,14 @@ class AddressSpaceImpl {
|
|
|
1194
1252
|
return returnValue;
|
|
1195
1253
|
}
|
|
1196
1254
|
_coerce_DataType(dataType) {
|
|
1197
|
-
if (dataType instanceof
|
|
1255
|
+
if (dataType instanceof NodeId) {
|
|
1198
1256
|
// xx assert(self.findDataType(dataType));
|
|
1199
1257
|
return dataType;
|
|
1200
1258
|
}
|
|
1201
1259
|
if (dataType === 0) {
|
|
1202
|
-
return
|
|
1260
|
+
return NodeId.nullNodeId;
|
|
1203
1261
|
}
|
|
1204
|
-
return this._coerce_Type(dataType,
|
|
1262
|
+
return this._coerce_Type(dataType, DataTypeIds, "DataTypeIds", AddressSpaceImpl.prototype.findDataType);
|
|
1205
1263
|
}
|
|
1206
1264
|
_coerceTypeDefinition(typeDefinition) {
|
|
1207
1265
|
if (typeof typeDefinition === "string") {
|
|
@@ -1213,24 +1271,24 @@ class AddressSpaceImpl {
|
|
|
1213
1271
|
}
|
|
1214
1272
|
typeDefinition = typeDefinitionNode.nodeId;
|
|
1215
1273
|
}
|
|
1216
|
-
|
|
1274
|
+
assert(typeDefinition instanceof NodeId);
|
|
1217
1275
|
return typeDefinition;
|
|
1218
1276
|
}
|
|
1219
1277
|
_coerceType(baseType, topMostBaseType, nodeClass) {
|
|
1220
|
-
|
|
1278
|
+
assert(typeof topMostBaseType === "string");
|
|
1221
1279
|
const topMostBaseTypeNode = this.findNode(topMostBaseType);
|
|
1222
1280
|
/* c8 ignore next */
|
|
1223
1281
|
if (!topMostBaseTypeNode) {
|
|
1224
1282
|
throw new Error(`Cannot find topMostBaseTypeNode ${topMostBaseType.toString()}`);
|
|
1225
1283
|
}
|
|
1226
|
-
|
|
1227
|
-
|
|
1284
|
+
assert(topMostBaseTypeNode instanceof BaseNodeImpl);
|
|
1285
|
+
assert(topMostBaseTypeNode.nodeClass === nodeClass);
|
|
1228
1286
|
if (!baseType) {
|
|
1229
1287
|
return topMostBaseTypeNode;
|
|
1230
1288
|
}
|
|
1231
|
-
|
|
1289
|
+
assert(typeof baseType === "string" || baseType instanceof BaseNodeImpl || baseType instanceof NodeId);
|
|
1232
1290
|
let baseTypeNode;
|
|
1233
|
-
if (baseType instanceof
|
|
1291
|
+
if (baseType instanceof BaseNodeImpl) {
|
|
1234
1292
|
baseTypeNode = baseType;
|
|
1235
1293
|
}
|
|
1236
1294
|
else {
|
|
@@ -1252,10 +1310,10 @@ class AddressSpaceImpl {
|
|
|
1252
1310
|
return baseTypeNode;
|
|
1253
1311
|
}
|
|
1254
1312
|
_coerce_VariableTypeIds(dataType) {
|
|
1255
|
-
return this._coerce_Type(dataType,
|
|
1313
|
+
return this._coerce_Type(dataType, VariableTypeIds, "VariableTypeIds", AddressSpaceImpl.prototype.findVariableType);
|
|
1256
1314
|
}
|
|
1257
1315
|
_register(node) {
|
|
1258
|
-
|
|
1316
|
+
assert(node.nodeId instanceof NodeId);
|
|
1259
1317
|
const namespace = this.getNamespace(node.nodeId.namespace);
|
|
1260
1318
|
namespace._register(node);
|
|
1261
1319
|
}
|
|
@@ -1276,19 +1334,19 @@ class AddressSpaceImpl {
|
|
|
1276
1334
|
}
|
|
1277
1335
|
_coerce_Type(dataType, typeMap, typeMapName, finderMethod) {
|
|
1278
1336
|
if (typeof dataType === "number") {
|
|
1279
|
-
return this._coerce_Type(
|
|
1337
|
+
return this._coerce_Type(coerceNodeId(dataType), typeMap, typeMapName, finderMethod);
|
|
1280
1338
|
}
|
|
1281
|
-
if (dataType instanceof
|
|
1339
|
+
if (dataType instanceof BaseNodeImpl) {
|
|
1282
1340
|
dataType = dataType.nodeId;
|
|
1283
1341
|
}
|
|
1284
|
-
|
|
1342
|
+
assert(typeMap !== null && typeof typeMap === "object");
|
|
1285
1343
|
let nodeId;
|
|
1286
1344
|
if (typeof dataType === "string") {
|
|
1287
1345
|
if (isNodeIdString(dataType)) {
|
|
1288
1346
|
const nodeId = this.resolveNodeId(dataType);
|
|
1289
1347
|
if (nodeId.isEmpty()) {
|
|
1290
1348
|
// this is a valid dataType NodeId, but it has no definition in the address space
|
|
1291
|
-
return
|
|
1349
|
+
return NodeId.nullNodeId;
|
|
1292
1350
|
}
|
|
1293
1351
|
const node = this.findNode(nodeId);
|
|
1294
1352
|
if (node) {
|
|
@@ -1306,22 +1364,22 @@ class AddressSpaceImpl {
|
|
|
1306
1364
|
if (!nodeId) {
|
|
1307
1365
|
// dataType was not found in the aliases database
|
|
1308
1366
|
if (typeMap[dataType]) {
|
|
1309
|
-
nodeId =
|
|
1367
|
+
nodeId = makeNodeId(typeMap[dataType], 0);
|
|
1310
1368
|
return nodeId;
|
|
1311
1369
|
}
|
|
1312
1370
|
else {
|
|
1313
|
-
nodeId =
|
|
1371
|
+
nodeId = resolveNodeId(dataType);
|
|
1314
1372
|
}
|
|
1315
1373
|
}
|
|
1316
1374
|
}
|
|
1317
1375
|
else if (typeof dataType === "number") {
|
|
1318
|
-
nodeId =
|
|
1376
|
+
nodeId = makeNodeId(dataType, 0);
|
|
1319
1377
|
}
|
|
1320
1378
|
else {
|
|
1321
|
-
nodeId =
|
|
1379
|
+
nodeId = resolveNodeId(dataType);
|
|
1322
1380
|
}
|
|
1323
1381
|
/* c8 ignore next */
|
|
1324
|
-
if (nodeId == null || !(nodeId instanceof
|
|
1382
|
+
if (nodeId == null || !(nodeId instanceof NodeId)) {
|
|
1325
1383
|
throw new Error("Expecting valid nodeId ");
|
|
1326
1384
|
}
|
|
1327
1385
|
const el = finderMethod.call(this, nodeId);
|
|
@@ -1336,16 +1394,15 @@ class AddressSpaceImpl {
|
|
|
1336
1394
|
return nodeId;
|
|
1337
1395
|
}
|
|
1338
1396
|
_findReferenceType(refType, namespaceIndex) {
|
|
1339
|
-
if (refType instanceof
|
|
1397
|
+
if (refType instanceof NodeId) {
|
|
1340
1398
|
return _find_by_node_id(this, refType, namespaceIndex);
|
|
1341
1399
|
}
|
|
1342
1400
|
const [namespace, browseName] = _extract_namespace_and_browse_name_as_string(this, refType, namespaceIndex);
|
|
1343
1401
|
return namespace.findReferenceType(browseName);
|
|
1344
1402
|
}
|
|
1345
1403
|
}
|
|
1346
|
-
exports.AddressSpaceImpl = AddressSpaceImpl;
|
|
1347
1404
|
function _getNamespace(addressSpace, nodeOrNodId) {
|
|
1348
|
-
const nodeId = nodeOrNodId instanceof
|
|
1405
|
+
const nodeId = nodeOrNodId instanceof BaseNodeImpl ? nodeOrNodId.nodeId : nodeOrNodId;
|
|
1349
1406
|
return addressSpace.getNamespace(nodeId.namespace);
|
|
1350
1407
|
}
|
|
1351
1408
|
function _find_by_node_id(addressSpace, nodeId, _namespaceIndex) {
|
|
@@ -1361,8 +1418,8 @@ function _find_by_node_id(addressSpace, nodeId, _namespaceIndex) {
|
|
|
1361
1418
|
*/
|
|
1362
1419
|
function _isFolder(addressSpace, folder) {
|
|
1363
1420
|
const folderType = addressSpace.findObjectType("FolderType");
|
|
1364
|
-
|
|
1365
|
-
|
|
1421
|
+
assert(folder instanceof BaseNodeImpl);
|
|
1422
|
+
assert(folder.typeDefinitionObj);
|
|
1366
1423
|
return folder.typeDefinitionObj.isSubtypeOf(folderType);
|
|
1367
1424
|
}
|
|
1368
1425
|
function _increase_version_number(node) {
|
|
@@ -1375,7 +1432,7 @@ function _increase_version_number(node) {
|
|
|
1375
1432
|
previousValue = 0;
|
|
1376
1433
|
}
|
|
1377
1434
|
uaNodeVersion.setValueFromSource({
|
|
1378
|
-
dataType:
|
|
1435
|
+
dataType: DataType.String,
|
|
1379
1436
|
value: (previousValue + 1).toString()
|
|
1380
1437
|
});
|
|
1381
1438
|
}
|