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,46 +1,34 @@
|
|
|
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
|
-
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
26
|
-
const node_opcua_types_1 = require("node-opcua-types");
|
|
27
|
-
const node_opcua_variant_1 = require("node-opcua-variant");
|
|
28
|
-
const dump_tools_js_1 = require("../api/helpers/dump_tools.js");
|
|
29
|
-
const session_context_js_1 = require("../api/session_context.js");
|
|
30
|
-
const address_space_change_event_tools_js_1 = require("./address_space_change_event_tools.js");
|
|
31
|
-
const base_node_private_js_1 = require("./base_node_private.js");
|
|
32
|
-
const child_accessors_js_1 = require("./child_accessors.js");
|
|
33
|
-
const reference_impl_js_1 = require("./reference_impl.js");
|
|
34
|
-
const reference_type_version_js_1 = require("./reference_type_version.js");
|
|
35
|
-
const role_permissions_js_1 = require("./role_permissions.js");
|
|
4
|
+
import { isDeepStrictEqual as isEqual } from "node:util";
|
|
5
|
+
import chalk from "chalk";
|
|
6
|
+
import { TypedEventEmitter } from "node-opcua-address-space-base";
|
|
7
|
+
import { assert } from "node-opcua-assert";
|
|
8
|
+
import { ObjectTypeIds, ReferenceTypeIds, VariableTypeIds } from "node-opcua-constants";
|
|
9
|
+
import { AccessRestrictionsFlag, AttributeIds, attributeNameById, BrowseDirection, coerceLocalizedText, coerceQualifiedName, LocalizedText, NodeClass, QualifiedName } from "node-opcua-data-model";
|
|
10
|
+
import { DataValue } from "node-opcua-data-value";
|
|
11
|
+
import { dumpIf, make_debugLog, make_errorLog, make_warningLog } from "node-opcua-debug";
|
|
12
|
+
import { coerceNodeId, makeNodeId, NodeId, NodeIdType, resolveNodeId, sameNodeId } from "node-opcua-nodeid";
|
|
13
|
+
import { StatusCodes } from "node-opcua-status-code";
|
|
14
|
+
import { PermissionType, RolePermissionType } from "node-opcua-types";
|
|
15
|
+
import { DataType, VariantArrayType } from "node-opcua-variant";
|
|
16
|
+
import { dumpReferenceDescriptions, dumpReferences } from "../api/helpers/dump_tools.js";
|
|
17
|
+
import { SessionContext, WellKnownRolesNodeId } from "../api/session_context.js";
|
|
18
|
+
import { _handle_add_reference_change_event } from "./address_space_change_event_tools.js";
|
|
19
|
+
import { _constructReferenceDescription, _get_HierarchicalReference, _handle_HierarchicalReference, _remove_HierarchicalReference, BaseNode_add_backward_reference, BaseNode_clearCache, BaseNode_getCache, BaseNode_getPrivate, BaseNode_initPrivate, BaseNode_remove_backward_reference, BaseNode_removePrivate, BaseNode_toString, noteReferenceTypeChange, ToStringBuilder } from "./base_node_private.js";
|
|
20
|
+
import { defineSharedChildAccessors as defineQueuedChildAccessors, hasSharedChildAccessor, isReservedChildAccessorName, registerChildName, reservedChildAccessorNames, resolveChildInIndex } from "./child_accessors.js";
|
|
21
|
+
import { isMassivelyUsedReferenceType, nodeIdKey, ReferenceImpl } from "./reference_impl.js";
|
|
22
|
+
import { referenceTypeVersion } from "./reference_type_version.js";
|
|
23
|
+
import { coerceRolePermissions } from "./role_permissions.js";
|
|
36
24
|
const doDebug = false;
|
|
37
|
-
const warningLog =
|
|
38
|
-
const errorLog =
|
|
39
|
-
const debugLog =
|
|
40
|
-
const HasEventSourceReferenceType =
|
|
41
|
-
const HasNotifierReferenceType =
|
|
42
|
-
const HierarchicalReferencesType =
|
|
43
|
-
const HasChildReferenceType =
|
|
25
|
+
const warningLog = make_warningLog("base_node_impl");
|
|
26
|
+
const errorLog = make_errorLog("base_node_impl");
|
|
27
|
+
const debugLog = make_debugLog("base_node_impl");
|
|
28
|
+
const HasEventSourceReferenceType = resolveNodeId("HasEventSource");
|
|
29
|
+
const HasNotifierReferenceType = resolveNodeId("HasNotifier");
|
|
30
|
+
const HierarchicalReferencesType = resolveNodeId("HierarchicalReferences");
|
|
31
|
+
const HasChildReferenceType = resolveNodeId("HasChild");
|
|
44
32
|
/** a node with more references than this keeps the result of its reference scans */
|
|
45
33
|
const referenceScanMemoThreshold = 8;
|
|
46
34
|
const wellKnownReferenceTypesByAddressSpace = new WeakMap();
|
|
@@ -63,22 +51,22 @@ function wellKnownReferenceTypes(addressSpace) {
|
|
|
63
51
|
wellKnownReferenceTypesByAddressSpace.set(addressSpace, resolved);
|
|
64
52
|
return resolved;
|
|
65
53
|
}
|
|
66
|
-
const HasComponentReferenceType =
|
|
67
|
-
const HasPropertyReferenceType =
|
|
68
|
-
const OrganizesReferenceType =
|
|
54
|
+
const HasComponentReferenceType = resolveNodeId("HasComponent");
|
|
55
|
+
const HasPropertyReferenceType = resolveNodeId("HasProperty");
|
|
56
|
+
const OrganizesReferenceType = resolveNodeId("Organizes");
|
|
69
57
|
function defaultBrowseFilterFunc(_context) {
|
|
70
58
|
return true;
|
|
71
59
|
}
|
|
72
60
|
function _get_QualifiedBrowseName(browseName) {
|
|
73
|
-
return
|
|
61
|
+
return coerceQualifiedName(browseName) || "";
|
|
74
62
|
}
|
|
75
63
|
function _is_valid_BrowseDirection(browseDirection) {
|
|
76
|
-
return (browseDirection ===
|
|
77
|
-
browseDirection ===
|
|
78
|
-
browseDirection ===
|
|
64
|
+
return (browseDirection === BrowseDirection.Forward ||
|
|
65
|
+
browseDirection === BrowseDirection.Inverse ||
|
|
66
|
+
browseDirection === BrowseDirection.Both);
|
|
79
67
|
}
|
|
80
|
-
function makeAttributeEventName(attributeId) {
|
|
81
|
-
const attributeName =
|
|
68
|
+
export function makeAttributeEventName(attributeId) {
|
|
69
|
+
const attributeName = attributeNameById[attributeId];
|
|
82
70
|
return `${attributeName}_changed`;
|
|
83
71
|
}
|
|
84
72
|
/**
|
|
@@ -98,7 +86,7 @@ function makeAttributeEventName(attributeId) {
|
|
|
98
86
|
*
|
|
99
87
|
*
|
|
100
88
|
*/
|
|
101
|
-
class BaseNodeImpl extends
|
|
89
|
+
export class BaseNodeImpl extends TypedEventEmitter {
|
|
102
90
|
static makeAttributeEventName(attributeId) {
|
|
103
91
|
return makeAttributeEventName(attributeId);
|
|
104
92
|
}
|
|
@@ -111,7 +99,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
111
99
|
_rolePermissions;
|
|
112
100
|
// public onFirstBrowseAction?: (this: BaseNode<T>) => Promise<void>;
|
|
113
101
|
get addressSpace() {
|
|
114
|
-
const _private =
|
|
102
|
+
const _private = BaseNode_getPrivate(this);
|
|
115
103
|
// c8 ignore next
|
|
116
104
|
if (!_private) {
|
|
117
105
|
throw new Error(`Internal error , cannot extract private data from ${this.browseName.toString()}`);
|
|
@@ -119,7 +107,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
119
107
|
return _private.__address_space;
|
|
120
108
|
}
|
|
121
109
|
get addressSpacePrivate() {
|
|
122
|
-
const _private =
|
|
110
|
+
const _private = BaseNode_getPrivate(this);
|
|
123
111
|
// c8 ignore next
|
|
124
112
|
if (!_private) {
|
|
125
113
|
throw new Error(`Internal error , cannot extract private data from ${this.browseName.toString()}`);
|
|
@@ -127,11 +115,11 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
127
115
|
return _private.__address_space;
|
|
128
116
|
}
|
|
129
117
|
get displayName() {
|
|
130
|
-
const _private =
|
|
118
|
+
const _private = BaseNode_getPrivate(this);
|
|
131
119
|
if (!_private._displayName) {
|
|
132
120
|
const raw = _private._displayNameRaw ?? "";
|
|
133
121
|
const displayNames = Array.isArray(raw) ? raw : [raw];
|
|
134
|
-
_private._displayName = displayNames.map(
|
|
122
|
+
_private._displayName = displayNames.map(coerceLocalizedText);
|
|
135
123
|
}
|
|
136
124
|
return _private._displayName;
|
|
137
125
|
}
|
|
@@ -146,12 +134,12 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
146
134
|
* @event DisplayName_changed
|
|
147
135
|
* @param dataValue {DataValue}
|
|
148
136
|
*/
|
|
149
|
-
this._notifyAttributeChange(
|
|
137
|
+
this._notifyAttributeChange(AttributeIds.DisplayName);
|
|
150
138
|
}
|
|
151
139
|
get description() {
|
|
152
|
-
const _private =
|
|
140
|
+
const _private = BaseNode_getPrivate(this);
|
|
153
141
|
if (!_private._description) {
|
|
154
|
-
_private._description =
|
|
142
|
+
_private._description = coerceLocalizedText(_private._descriptionRaw ?? null) || new LocalizedText({ text: "" });
|
|
155
143
|
}
|
|
156
144
|
return _private._description;
|
|
157
145
|
}
|
|
@@ -162,23 +150,23 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
162
150
|
* @event Description_changed
|
|
163
151
|
* @param dataValue {DataValue}
|
|
164
152
|
*/
|
|
165
|
-
this._notifyAttributeChange(
|
|
153
|
+
this._notifyAttributeChange(AttributeIds.Description);
|
|
166
154
|
}
|
|
167
155
|
/**
|
|
168
156
|
* returns the nodeId of this node's Type Definition
|
|
169
157
|
*/
|
|
170
158
|
get typeDefinition() {
|
|
171
|
-
const _cache =
|
|
159
|
+
const _cache = BaseNode_getCache(this);
|
|
172
160
|
if (!_cache.typeDefinition) {
|
|
173
161
|
const has_type_definition_ref = this.findReference("HasTypeDefinition", true);
|
|
174
162
|
let nodeId = has_type_definition_ref ? has_type_definition_ref.nodeId : null;
|
|
175
163
|
if (!nodeId) {
|
|
176
164
|
switch (this.nodeClass) {
|
|
177
|
-
case
|
|
178
|
-
nodeId =
|
|
165
|
+
case NodeClass.Object:
|
|
166
|
+
nodeId = coerceNodeId(ObjectTypeIds.BaseObjectType);
|
|
179
167
|
break;
|
|
180
|
-
case
|
|
181
|
-
nodeId =
|
|
168
|
+
case NodeClass.Variable:
|
|
169
|
+
nodeId = coerceNodeId(VariableTypeIds.BaseVariableType);
|
|
182
170
|
break;
|
|
183
171
|
default:
|
|
184
172
|
}
|
|
@@ -191,13 +179,13 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
191
179
|
* returns the nodeId of this node's Type Definition
|
|
192
180
|
*/
|
|
193
181
|
get typeDefinitionObj() {
|
|
194
|
-
const _cache =
|
|
182
|
+
const _cache = BaseNode_getCache(this);
|
|
195
183
|
if (undefined === _cache.typeDefinitionObj) {
|
|
196
184
|
const nodeId = this.typeDefinition;
|
|
197
185
|
_cache.typeDefinitionObj = nodeId ? this.addressSpace.findNode(nodeId) : null;
|
|
198
186
|
}
|
|
199
187
|
if (!_cache.typeDefinitionObj) {
|
|
200
|
-
warningLog(this.nodeClass, "cannot find typeDefinitionObj ", this.browseName.toString(), this.nodeId.toString(),
|
|
188
|
+
warningLog(this.nodeClass, "cannot find typeDefinitionObj ", this.browseName.toString(), this.nodeId.toString(), NodeClass[this.nodeClass]);
|
|
201
189
|
}
|
|
202
190
|
return _cache.typeDefinitionObj;
|
|
203
191
|
}
|
|
@@ -221,7 +209,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
221
209
|
* the parent node
|
|
222
210
|
*/
|
|
223
211
|
get parent() {
|
|
224
|
-
const _private =
|
|
212
|
+
const _private = BaseNode_getPrivate(this);
|
|
225
213
|
if (_private._parent === undefined) {
|
|
226
214
|
// never been set before
|
|
227
215
|
_private._parent = _setup_parent_item.call(this, _private._referenceIdx);
|
|
@@ -240,7 +228,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
240
228
|
const r0 = r[0];
|
|
241
229
|
return r0.browseName.toString();
|
|
242
230
|
}
|
|
243
|
-
nodeClass =
|
|
231
|
+
nodeClass = NodeClass.Unspecified;
|
|
244
232
|
nodeId;
|
|
245
233
|
browseName;
|
|
246
234
|
_postInstantiateFunc;
|
|
@@ -250,14 +238,14 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
250
238
|
*/
|
|
251
239
|
constructor(options) {
|
|
252
240
|
super();
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
241
|
+
assert(this.nodeClass === NodeClass.Unspecified, "must not be specify a nodeClass");
|
|
242
|
+
assert(options.addressSpace); // expecting an address space
|
|
243
|
+
assert(options.browseName instanceof QualifiedName, "Expecting a valid QualifiedName");
|
|
244
|
+
assert(options.nodeId instanceof NodeId, "Expecting a valid NodeId");
|
|
257
245
|
options.references = options.references || [];
|
|
258
|
-
const _private =
|
|
246
|
+
const _private = BaseNode_initPrivate(this);
|
|
259
247
|
_private.__address_space = options.addressSpace;
|
|
260
|
-
this.nodeId = options.nodeId instanceof
|
|
248
|
+
this.nodeId = options.nodeId instanceof NodeId ? options.nodeId : resolveNodeId(options.nodeId);
|
|
261
249
|
// QualifiedName
|
|
262
250
|
/**
|
|
263
251
|
* the node browseName
|
|
@@ -275,7 +263,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
275
263
|
this._setDescription(options.description);
|
|
276
264
|
// user defined filter function for browsing
|
|
277
265
|
const _browseFilter = options.browseFilter || defaultBrowseFilterFunc;
|
|
278
|
-
|
|
266
|
+
assert(typeof _browseFilter === "function");
|
|
279
267
|
_private._browseFilter = _browseFilter;
|
|
280
268
|
// normalize reference type
|
|
281
269
|
// this will convert any referenceType expressed with its inverseName into
|
|
@@ -287,17 +275,17 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
287
275
|
// the cache was empty to start with; one clear covers every reference just added
|
|
288
276
|
this._clear_caches();
|
|
289
277
|
this._accessRestrictions = options.accessRestrictions;
|
|
290
|
-
this._rolePermissions =
|
|
278
|
+
this._rolePermissions = coerceRolePermissions(options.rolePermissions);
|
|
291
279
|
if (options.releaseStatus) {
|
|
292
280
|
this.releaseStatus = options.releaseStatus;
|
|
293
281
|
}
|
|
294
282
|
if (options.parentNodeId) {
|
|
295
283
|
_private._declaredParentNodeId =
|
|
296
|
-
options.parentNodeId instanceof
|
|
284
|
+
options.parentNodeId instanceof NodeId
|
|
297
285
|
? options.parentNodeId
|
|
298
|
-
: options.parentNodeId.nodeId instanceof
|
|
286
|
+
: options.parentNodeId.nodeId instanceof NodeId
|
|
299
287
|
? options.parentNodeId.nodeId
|
|
300
|
-
:
|
|
288
|
+
: resolveNodeId(options.parentNodeId);
|
|
301
289
|
}
|
|
302
290
|
if (options.declaredAccessRestrictions !== undefined) {
|
|
303
291
|
this.declaredAccessRestrictions = options.declaredAccessRestrictions;
|
|
@@ -306,7 +294,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
306
294
|
// a nodeset is loading (defined in one batch by the loader, see flushSharedChildAccessors),
|
|
307
295
|
// through the own accessor installed by install_extra_properties otherwise
|
|
308
296
|
// (see child_accessors.ts for why the two paths exist)
|
|
309
|
-
_private._accessorName =
|
|
297
|
+
_private._accessorName = registerChildName(this.browseName.name, options.addressSpace.suspendBackReference);
|
|
310
298
|
}
|
|
311
299
|
getDisplayName(_locale) {
|
|
312
300
|
return this.displayName[0].text || "";
|
|
@@ -318,17 +306,17 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
318
306
|
// Finders
|
|
319
307
|
// ---------------------------------------------------------------------------------------------------
|
|
320
308
|
findReferencesEx(referenceType, browseDirection) {
|
|
321
|
-
browseDirection = browseDirection !== undefined ? browseDirection :
|
|
322
|
-
|
|
323
|
-
|
|
309
|
+
browseDirection = browseDirection !== undefined ? browseDirection : BrowseDirection.Forward;
|
|
310
|
+
assert(_is_valid_BrowseDirection(browseDirection));
|
|
311
|
+
assert(browseDirection !== BrowseDirection.Both);
|
|
324
312
|
const referenceTypeNode = this._coerceReferenceType(referenceType);
|
|
325
313
|
if (!referenceTypeNode) {
|
|
326
314
|
// note: when loading nodeset2.xml files, reference type may not exit yet
|
|
327
315
|
// throw new Error("expecting valid reference name " + strReference);
|
|
328
316
|
return [];
|
|
329
317
|
}
|
|
330
|
-
const isForward = browseDirection ===
|
|
331
|
-
const _private =
|
|
318
|
+
const isForward = browseDirection === BrowseDirection.Forward;
|
|
319
|
+
const _private = BaseNode_getPrivate(this);
|
|
332
320
|
// Memoized per reference type and direction, on the nodes where a scan is worth remembering:
|
|
333
321
|
// a scan touches every reference of the node and runs checkHasSubtype on each, and the same
|
|
334
322
|
// question is asked over and over (every child lookup, every browse) of folders, types and
|
|
@@ -340,10 +328,10 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
340
328
|
let entry;
|
|
341
329
|
const slot = isForward ? 0 : 1;
|
|
342
330
|
if (memoize) {
|
|
343
|
-
const _cache =
|
|
344
|
-
if (_cache._refExVersion !==
|
|
331
|
+
const _cache = BaseNode_getCache(this);
|
|
332
|
+
if (_cache._refExVersion !== referenceTypeVersion.count) {
|
|
345
333
|
_cache._refEx = undefined;
|
|
346
|
-
_cache._refExVersion =
|
|
334
|
+
_cache._refExVersion = referenceTypeVersion.count;
|
|
347
335
|
}
|
|
348
336
|
if (!_cache._refEx) {
|
|
349
337
|
_cache._refEx = new Map();
|
|
@@ -389,11 +377,11 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
389
377
|
return results;
|
|
390
378
|
}
|
|
391
379
|
findReferences_no_cache(referenceTypeNode, isForward = true) {
|
|
392
|
-
const _private =
|
|
380
|
+
const _private = BaseNode_getPrivate(this);
|
|
393
381
|
const result = [];
|
|
394
382
|
const addressSpace = this.addressSpace;
|
|
395
383
|
const keep = (ref) => {
|
|
396
|
-
if (ref.isForward === isForward &&
|
|
384
|
+
if (ref.isForward === isForward && sameNodeId(ref.referenceType, referenceTypeNode.nodeId)) {
|
|
397
385
|
if (!ref.node) {
|
|
398
386
|
resolveReferenceNode(addressSpace, ref);
|
|
399
387
|
}
|
|
@@ -409,7 +397,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
409
397
|
return result;
|
|
410
398
|
}
|
|
411
399
|
findReferences(referenceType, isForward = true) {
|
|
412
|
-
const _cache =
|
|
400
|
+
const _cache = BaseNode_getCache(this);
|
|
413
401
|
const referenceTypeNode = this._coerceReferenceType(referenceType);
|
|
414
402
|
if (!referenceTypeNode) {
|
|
415
403
|
// note: when loading nodeset2.xml files, reference type may not exit yet
|
|
@@ -448,26 +436,26 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
448
436
|
* return an array with the Aggregates of this object.
|
|
449
437
|
*/
|
|
450
438
|
getAggregates() {
|
|
451
|
-
return this.findReferencesExAsObject("Aggregates",
|
|
439
|
+
return this.findReferencesExAsObject("Aggregates", BrowseDirection.Forward);
|
|
452
440
|
}
|
|
453
441
|
/**
|
|
454
442
|
* return an array with the components of this object.
|
|
455
443
|
*/
|
|
456
444
|
getComponents() {
|
|
457
|
-
return this.findReferencesExAsObject("HasComponent",
|
|
445
|
+
return this.findReferencesExAsObject("HasComponent", BrowseDirection.Forward);
|
|
458
446
|
}
|
|
459
447
|
/**
|
|
460
448
|
* return a array with the properties of this object.
|
|
461
449
|
*/
|
|
462
450
|
getProperties() {
|
|
463
|
-
return this.findReferencesExAsObject("HasProperty",
|
|
451
|
+
return this.findReferencesExAsObject("HasProperty", BrowseDirection.Forward);
|
|
464
452
|
}
|
|
465
|
-
static _hasChild = new
|
|
453
|
+
static _hasChild = new NodeId(NodeIdType.NUMERIC, ReferenceTypeIds.HasChild);
|
|
466
454
|
getChildren() {
|
|
467
455
|
// return this.findReferencesExAsObject(BaseNodeImpl._hasChild, BrowseDirection.Forward);
|
|
468
|
-
const _cache =
|
|
456
|
+
const _cache = BaseNode_getCache(this);
|
|
469
457
|
if (!_cache._children) {
|
|
470
|
-
_cache._children = this.findReferencesExAsObject(BaseNodeImpl._hasChild,
|
|
458
|
+
_cache._children = this.findReferencesExAsObject(BaseNodeImpl._hasChild, BrowseDirection.Forward);
|
|
471
459
|
}
|
|
472
460
|
return _cache._children;
|
|
473
461
|
}
|
|
@@ -497,7 +485,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
497
485
|
* references of the node again
|
|
498
486
|
*/
|
|
499
487
|
_selectChildren(browseName, namespaceIndex, referenceType) {
|
|
500
|
-
const references = _select_by_browse_name(
|
|
488
|
+
const references = _select_by_browse_name(_get_HierarchicalReference(this), browseName, namespaceIndex);
|
|
501
489
|
if (references.length === 0) {
|
|
502
490
|
return [];
|
|
503
491
|
}
|
|
@@ -508,7 +496,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
508
496
|
const selected = [];
|
|
509
497
|
for (const reference of references) {
|
|
510
498
|
if (referenceTypeNode.checkHasSubtype(reference.referenceType)) {
|
|
511
|
-
const node =
|
|
499
|
+
const node = ReferenceImpl.resolveReferenceNode(this.addressSpace, reference);
|
|
512
500
|
if (node) {
|
|
513
501
|
selected.push(node);
|
|
514
502
|
}
|
|
@@ -521,14 +509,14 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
521
509
|
}
|
|
522
510
|
getComponentByName(browseName, namespaceIndex) {
|
|
523
511
|
const select = this._selectChildren(browseName, namespaceIndex, HasComponentReferenceType);
|
|
524
|
-
|
|
512
|
+
assert(select.length <= 1, "BaseNode#getComponentByName found duplicated reference");
|
|
525
513
|
if (select.length === 1) {
|
|
526
514
|
const component = select[0];
|
|
527
|
-
if (component.nodeClass ===
|
|
515
|
+
if (component.nodeClass === NodeClass.Method) {
|
|
528
516
|
warningLog("please use getMethodByName to retrieve a method");
|
|
529
517
|
return null;
|
|
530
518
|
}
|
|
531
|
-
|
|
519
|
+
assert(component.nodeClass === NodeClass.Variable || component.nodeClass === NodeClass.Object);
|
|
532
520
|
return component;
|
|
533
521
|
}
|
|
534
522
|
else {
|
|
@@ -537,8 +525,8 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
537
525
|
}
|
|
538
526
|
getPropertyByName(browseName, namespaceIndex) {
|
|
539
527
|
const select = this._selectChildren(browseName, namespaceIndex, HasPropertyReferenceType);
|
|
540
|
-
|
|
541
|
-
if (select.length === 1 && select[0].nodeClass !==
|
|
528
|
+
assert(select.length <= 1, "BaseNode#getPropertyByName found duplicated reference");
|
|
529
|
+
if (select.length === 1 && select[0].nodeClass !== NodeClass.Variable) {
|
|
542
530
|
throw new Error("Expecting a property to be of nodeClass==NodeClass.Variable");
|
|
543
531
|
}
|
|
544
532
|
return select.length === 1 ? select[0] : null;
|
|
@@ -551,7 +539,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
551
539
|
* returns the list of nodes that this folder object organizes
|
|
552
540
|
*/
|
|
553
541
|
getFolderElements() {
|
|
554
|
-
return this.findReferencesExAsObject("Organizes",
|
|
542
|
+
return this.findReferencesExAsObject("Organizes", BrowseDirection.Forward);
|
|
555
543
|
}
|
|
556
544
|
/**
|
|
557
545
|
* returns the list of methods that this object provides
|
|
@@ -562,7 +550,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
562
550
|
*/
|
|
563
551
|
getMethods() {
|
|
564
552
|
const components = this.getComponents();
|
|
565
|
-
return components.filter((obj) => obj.nodeClass ===
|
|
553
|
+
return components.filter((obj) => obj.nodeClass === NodeClass.Method);
|
|
566
554
|
}
|
|
567
555
|
/**
|
|
568
556
|
* returns the method exposed by this object and with the given nodeId
|
|
@@ -574,8 +562,8 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
574
562
|
}
|
|
575
563
|
getMethodByName(methodName, namespaceIndex) {
|
|
576
564
|
// methods are components of a special node class
|
|
577
|
-
const select = this._selectChildren(methodName, namespaceIndex, HasComponentReferenceType).filter((node) => node.nodeClass ===
|
|
578
|
-
|
|
565
|
+
const select = this._selectChildren(methodName, namespaceIndex, HasComponentReferenceType).filter((node) => node.nodeClass === NodeClass.Method);
|
|
566
|
+
assert(select.length <= 1, "BaseNode#getMethodByName found duplicated reference");
|
|
579
567
|
return select.length === 1 ? select[0] : null;
|
|
580
568
|
}
|
|
581
569
|
getWriteMask() {
|
|
@@ -587,64 +575,64 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
587
575
|
readAttribute(context, attributeId, indexRange, dataEncoding) {
|
|
588
576
|
indexRange;
|
|
589
577
|
dataEncoding;
|
|
590
|
-
|
|
578
|
+
assert(!context || context instanceof SessionContext);
|
|
591
579
|
const options = {};
|
|
592
|
-
options.statusCode =
|
|
580
|
+
options.statusCode = StatusCodes.Good;
|
|
593
581
|
switch (attributeId) {
|
|
594
|
-
case
|
|
595
|
-
options.value = { dataType:
|
|
582
|
+
case AttributeIds.NodeId: // NodeId
|
|
583
|
+
options.value = { dataType: DataType.NodeId, value: this.nodeId };
|
|
596
584
|
break;
|
|
597
|
-
case
|
|
598
|
-
|
|
599
|
-
options.value = { dataType:
|
|
585
|
+
case AttributeIds.NodeClass: // NodeClass
|
|
586
|
+
assert(Number.isFinite(this.nodeClass));
|
|
587
|
+
options.value = { dataType: DataType.Int32, value: this.nodeClass };
|
|
600
588
|
break;
|
|
601
|
-
case
|
|
602
|
-
|
|
603
|
-
options.value = { dataType:
|
|
589
|
+
case AttributeIds.BrowseName: // QualifiedName
|
|
590
|
+
assert(this.browseName instanceof QualifiedName);
|
|
591
|
+
options.value = { dataType: DataType.QualifiedName, value: this.browseName };
|
|
604
592
|
break;
|
|
605
|
-
case
|
|
606
|
-
options.value = { dataType:
|
|
593
|
+
case AttributeIds.DisplayName: // LocalizedText
|
|
594
|
+
options.value = { dataType: DataType.LocalizedText, value: this.displayName[0] };
|
|
607
595
|
break;
|
|
608
|
-
case
|
|
609
|
-
options.value = { dataType:
|
|
596
|
+
case AttributeIds.Description: // LocalizedText
|
|
597
|
+
options.value = { dataType: DataType.LocalizedText, value: this.description };
|
|
610
598
|
break;
|
|
611
|
-
case
|
|
612
|
-
options.value = { dataType:
|
|
599
|
+
case AttributeIds.WriteMask:
|
|
600
|
+
options.value = { dataType: DataType.UInt32, value: this.getWriteMask() };
|
|
613
601
|
break;
|
|
614
|
-
case
|
|
615
|
-
options.value = { dataType:
|
|
602
|
+
case AttributeIds.UserWriteMask:
|
|
603
|
+
options.value = { dataType: DataType.UInt32, value: this.getUserWriteMask() };
|
|
616
604
|
break;
|
|
617
|
-
case
|
|
605
|
+
case AttributeIds.AccessRestrictions:
|
|
618
606
|
return this._readAccessRestrictions(context);
|
|
619
|
-
case
|
|
607
|
+
case AttributeIds.RolePermissions:
|
|
620
608
|
return this._readRolePermissions(context);
|
|
621
|
-
case
|
|
609
|
+
case AttributeIds.UserRolePermissions:
|
|
622
610
|
return this._readUserRolePermissions(context);
|
|
623
611
|
default:
|
|
624
612
|
options.value = null;
|
|
625
|
-
options.statusCode =
|
|
613
|
+
options.statusCode = StatusCodes.BadAttributeIdInvalid;
|
|
626
614
|
break;
|
|
627
615
|
}
|
|
628
616
|
// xx options.serverTimestamp = new Date();
|
|
629
|
-
return new
|
|
617
|
+
return new DataValue(options);
|
|
630
618
|
}
|
|
631
619
|
writeAttribute(context, writeValue, callback) {
|
|
632
|
-
context = context ||
|
|
633
|
-
|
|
634
|
-
|
|
620
|
+
context = context || SessionContext.defaultContext;
|
|
621
|
+
assert(context instanceof SessionContext);
|
|
622
|
+
assert(typeof callback === "function");
|
|
635
623
|
if (writeValue.attributeId === undefined ||
|
|
636
624
|
writeValue.attributeId <= 0 ||
|
|
637
|
-
writeValue.attributeId >
|
|
638
|
-
callback(null,
|
|
625
|
+
writeValue.attributeId > AttributeIds.AccessLevelEx) {
|
|
626
|
+
callback(null, StatusCodes.BadAttributeIdInvalid);
|
|
639
627
|
return;
|
|
640
628
|
}
|
|
641
629
|
if (!this.canUserWriteAttribute(context, writeValue.attributeId)) {
|
|
642
|
-
callback(null,
|
|
630
|
+
callback(null, StatusCodes.BadUserAccessDenied);
|
|
643
631
|
return;
|
|
644
632
|
}
|
|
645
633
|
// by default Node is read-only,
|
|
646
634
|
// this method needs to be overridden to change the behavior
|
|
647
|
-
callback(null,
|
|
635
|
+
callback(null, StatusCodes.BadNotWritable);
|
|
648
636
|
}
|
|
649
637
|
fullName() {
|
|
650
638
|
if (this.parentNodeId) {
|
|
@@ -660,7 +648,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
660
648
|
return this.browseName.toString();
|
|
661
649
|
}
|
|
662
650
|
ownReferences() {
|
|
663
|
-
const _private =
|
|
651
|
+
const _private = BaseNode_getPrivate(this);
|
|
664
652
|
return [..._private._referenceIdx.values()];
|
|
665
653
|
}
|
|
666
654
|
/**
|
|
@@ -670,26 +658,26 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
670
658
|
* @return {NodeId[]}
|
|
671
659
|
*/
|
|
672
660
|
browseNodeByTargetName(relativePathElement, isLast) {
|
|
673
|
-
relativePathElement.targetName = relativePathElement.targetName || new
|
|
661
|
+
relativePathElement.targetName = relativePathElement.targetName || new QualifiedName({});
|
|
674
662
|
// part 4.0 v1.03 $7.26 RelativePath
|
|
675
663
|
// The BrowseName of the target node.
|
|
676
664
|
// The final element may have an empty targetName. In this situation all targets of the references identified by
|
|
677
665
|
// the referenceTypeId are the targets of the RelativePath.
|
|
678
666
|
// The targetName shall be specified for all other elements.
|
|
679
667
|
// The current path cannot be followed any further if no targets with the specified BrowseName exist.
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
668
|
+
assert(relativePathElement.targetName instanceof QualifiedName);
|
|
669
|
+
assert(relativePathElement.targetName.namespaceIndex >= 0);
|
|
670
|
+
assert((relativePathElement.targetName.name?.length || 0) > 0);
|
|
683
671
|
// The type of reference to follow from the current node.
|
|
684
672
|
// The current path cannot be followed any further if the referenceTypeId is not available on the Node instance.
|
|
685
673
|
// If not specified then all References are included and the parameter includeSubtypes is ignored.
|
|
686
|
-
|
|
674
|
+
assert(Object.hasOwn(relativePathElement, "referenceTypeId"));
|
|
687
675
|
// Indicates whether the inverse Reference should be followed.
|
|
688
676
|
// The inverse reference is followed if this value is TRUE.
|
|
689
|
-
|
|
677
|
+
assert(Object.hasOwn(relativePathElement, "isInverse"));
|
|
690
678
|
// Indicates whether subtypes of the ReferenceType should be followed.
|
|
691
679
|
// Subtypes are included if this value is TRUE.
|
|
692
|
-
|
|
680
|
+
assert(Object.hasOwn(relativePathElement, "includeSubtypes"));
|
|
693
681
|
// A forward step naming its target through a hierarchical reference type, the shape of
|
|
694
682
|
// almost every TranslateBrowsePath element, is a lookup in the child index rather than a
|
|
695
683
|
// scan of every reference of the node; the filter below still applies to what it finds.
|
|
@@ -698,15 +686,15 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
698
686
|
if (relativePathElement.referenceTypeId.isEmpty()) {
|
|
699
687
|
return true;
|
|
700
688
|
}
|
|
701
|
-
|
|
689
|
+
assert(relativePathElement.referenceTypeId instanceof NodeId);
|
|
702
690
|
if ((relativePathElement.isInverse && reference.isForward) ||
|
|
703
691
|
(!relativePathElement.isInverse && !reference.isForward)) {
|
|
704
692
|
return false;
|
|
705
693
|
}
|
|
706
|
-
|
|
694
|
+
assert(Object.hasOwn(reference, "isForward"));
|
|
707
695
|
const referenceType = resolveReferenceType(this.addressSpace, reference);
|
|
708
696
|
const referenceTypeId = referenceType.nodeId;
|
|
709
|
-
if (
|
|
697
|
+
if (sameNodeId(relativePathElement.referenceTypeId, referenceTypeId)) {
|
|
710
698
|
return true;
|
|
711
699
|
}
|
|
712
700
|
if (relativePathElement.includeSubtypes) {
|
|
@@ -728,7 +716,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
728
716
|
if (!obj) {
|
|
729
717
|
throw new Error(` cannot find node with id ${reference.nodeId.toString()}`);
|
|
730
718
|
}
|
|
731
|
-
if ((
|
|
719
|
+
if (isEqual(obj.browseName, relativePathElement.targetName)) {
|
|
732
720
|
// compare QualifiedName
|
|
733
721
|
const key = obj.nodeId.toString();
|
|
734
722
|
if (!Object.hasOwn(nodeIdsMap, key)) {
|
|
@@ -737,7 +725,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
737
725
|
}
|
|
738
726
|
}
|
|
739
727
|
}
|
|
740
|
-
if (nodeIds.length === 0 && (this.nodeClass ===
|
|
728
|
+
if (nodeIds.length === 0 && (this.nodeClass === NodeClass.ObjectType || this.nodeClass === NodeClass.VariableType)) {
|
|
741
729
|
const nodeType = this;
|
|
742
730
|
if (nodeType.subtypeOf) {
|
|
743
731
|
// browsing also InstanceDeclarations included in base type
|
|
@@ -766,7 +754,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
766
754
|
if (referenceType !== wellKnown.hierarchicalReferences && !referenceType.isSubtypeOf(wellKnown.hierarchicalReferences)) {
|
|
767
755
|
return null;
|
|
768
756
|
}
|
|
769
|
-
return _select_by_browse_name(
|
|
757
|
+
return _select_by_browse_name(_get_HierarchicalReference(this), targetName, targetName.namespaceIndex);
|
|
770
758
|
}
|
|
771
759
|
/**
|
|
772
760
|
* browse the node to extract information requested in browseDescription
|
|
@@ -776,20 +764,20 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
776
764
|
*
|
|
777
765
|
*/
|
|
778
766
|
browseNode(browseDescription, context) {
|
|
779
|
-
|
|
767
|
+
assert(Number.isFinite(browseDescription.nodeClassMask));
|
|
780
768
|
const do_debug = false;
|
|
781
|
-
const _private =
|
|
769
|
+
const _private = BaseNode_getPrivate(this);
|
|
782
770
|
const addressSpace = this.addressSpace;
|
|
783
771
|
const referenceTypeId = normalize_referenceTypeId(addressSpace, browseDescription.referenceTypeId);
|
|
784
|
-
|
|
785
|
-
const browseDirection = browseDescription.browseDirection !== undefined ? browseDescription.browseDirection :
|
|
772
|
+
assert(referenceTypeId instanceof NodeId);
|
|
773
|
+
const browseDirection = browseDescription.browseDirection !== undefined ? browseDescription.browseDirection : BrowseDirection.Both;
|
|
786
774
|
// get all possible references
|
|
787
775
|
let references = this.allReferences();
|
|
788
776
|
/* c8 ignore next */
|
|
789
777
|
if (do_debug) {
|
|
790
778
|
// c8 ignore next
|
|
791
779
|
doDebug && debugLog("all references :", this.nodeId.toString(), this.browseName.toString());
|
|
792
|
-
|
|
780
|
+
dumpReferences(addressSpace, _private._referenceIdx.values());
|
|
793
781
|
}
|
|
794
782
|
// filter out references not matching referenceType
|
|
795
783
|
references = _filter_by_referenceType.call(this, browseDescription, references, referenceTypeId);
|
|
@@ -799,15 +787,15 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
799
787
|
if (context) {
|
|
800
788
|
references = _filter_by_context(this, references, context);
|
|
801
789
|
}
|
|
802
|
-
const referenceDescriptions =
|
|
790
|
+
const referenceDescriptions = _constructReferenceDescription(addressSpace, references, browseDescription.resultMask);
|
|
803
791
|
/* c8 ignore next */
|
|
804
792
|
if (do_debug) {
|
|
805
|
-
|
|
793
|
+
dumpReferenceDescriptions(this.addressSpace, referenceDescriptions);
|
|
806
794
|
}
|
|
807
795
|
return referenceDescriptions;
|
|
808
796
|
}
|
|
809
797
|
allReferences() {
|
|
810
|
-
const _private =
|
|
798
|
+
const _private = BaseNode_getPrivate(this);
|
|
811
799
|
const references = [..._private._referenceIdx.values(), ..._private._back_referenceIdx.values()];
|
|
812
800
|
const addressSpace = this.addressSpace;
|
|
813
801
|
for (const ref of references) {
|
|
@@ -839,13 +827,13 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
839
827
|
}
|
|
840
828
|
_propagate_ref.call(this, addressSpace, referenceNode);
|
|
841
829
|
this.install_extra_properties();
|
|
842
|
-
|
|
830
|
+
_handle_add_reference_change_event(this, referenceNode.nodeId);
|
|
843
831
|
}
|
|
844
832
|
removeReference(referenceOpts) {
|
|
845
|
-
const _private =
|
|
846
|
-
|
|
833
|
+
const _private = BaseNode_getPrivate(this);
|
|
834
|
+
assert(Object.hasOwn(referenceOpts, "referenceType"));
|
|
847
835
|
// xx isForward is optional : assert(Object.prototype.hasOwnProperty.call(reference,"isForward"));
|
|
848
|
-
|
|
836
|
+
assert(Object.hasOwn(referenceOpts, "nodeId"));
|
|
849
837
|
const addressSpace = this.addressSpace;
|
|
850
838
|
const reference = addressSpace.normalizeReferenceTypes([referenceOpts])?.[0];
|
|
851
839
|
const h = reference.key(addressSpace);
|
|
@@ -854,18 +842,18 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
854
842
|
if (!relatedNode) {
|
|
855
843
|
return;
|
|
856
844
|
}
|
|
857
|
-
const backwardReference = new
|
|
845
|
+
const backwardReference = new ReferenceImpl({
|
|
858
846
|
isForward: !reference.isForward,
|
|
859
847
|
nodeId: this.nodeId,
|
|
860
848
|
referenceType: reference.referenceType
|
|
861
849
|
});
|
|
862
850
|
if (_private._referenceIdx.has(h)) {
|
|
863
851
|
_private._referenceIdx.delete(h);
|
|
864
|
-
|
|
865
|
-
|
|
852
|
+
BaseNode_remove_backward_reference.call(relatedNode, backwardReference);
|
|
853
|
+
_remove_HierarchicalReference(this, reference);
|
|
866
854
|
this.uninstall_extra_properties(reference);
|
|
867
855
|
this._clear_caches();
|
|
868
|
-
|
|
856
|
+
noteReferenceTypeChange(this, reference);
|
|
869
857
|
}
|
|
870
858
|
else if (_private._back_referenceIdx.has(h)) {
|
|
871
859
|
relatedNode.removeReference(backwardReference);
|
|
@@ -878,7 +866,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
878
866
|
// "Cannot find reference to remove: ns=0;i=40" lines per run came from. The
|
|
879
867
|
// absence is the designed state, not a fault worth reporting.
|
|
880
868
|
const referenceType = resolveReferenceType(addressSpace, reference);
|
|
881
|
-
if (!reference.isForward && referenceType &&
|
|
869
|
+
if (!reference.isForward && referenceType && isMassivelyUsedReferenceType(referenceType.nodeId)) {
|
|
882
870
|
return;
|
|
883
871
|
}
|
|
884
872
|
warningLog(`Cannot find reference to remove: ${reference.toString()}`);
|
|
@@ -924,7 +912,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
924
912
|
install_child_as_object_property(resolveReferenceNode(addressSpace, reference), self);
|
|
925
913
|
}
|
|
926
914
|
};
|
|
927
|
-
const _private =
|
|
915
|
+
const _private = BaseNode_getPrivate(this);
|
|
928
916
|
for (const reference of _private._referenceIdx.values()) {
|
|
929
917
|
visit(reference);
|
|
930
918
|
}
|
|
@@ -956,14 +944,14 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
956
944
|
}
|
|
957
945
|
}
|
|
958
946
|
toString() {
|
|
959
|
-
const options = new
|
|
960
|
-
|
|
947
|
+
const options = new ToStringBuilder();
|
|
948
|
+
BaseNode_toString.call(this, options);
|
|
961
949
|
return options.toString();
|
|
962
950
|
}
|
|
963
951
|
toJSON() {
|
|
964
952
|
return {
|
|
965
953
|
nodeId: this.nodeId.toString(),
|
|
966
|
-
nodeClass:
|
|
954
|
+
nodeClass: NodeClass[this.nodeClass],
|
|
967
955
|
browseName: this.browseName.toString(),
|
|
968
956
|
displayName: this.displayName.length ? this.displayName[0].text : ""
|
|
969
957
|
};
|
|
@@ -980,7 +968,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
980
968
|
if (!r || r.length === 0) {
|
|
981
969
|
return null;
|
|
982
970
|
}
|
|
983
|
-
|
|
971
|
+
assert(r.length === 1);
|
|
984
972
|
return r[0];
|
|
985
973
|
}
|
|
986
974
|
/**
|
|
@@ -992,7 +980,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
992
980
|
if (!r || r.length === 0) {
|
|
993
981
|
return null;
|
|
994
982
|
}
|
|
995
|
-
|
|
983
|
+
assert(r.length === 1);
|
|
996
984
|
return r[0];
|
|
997
985
|
}
|
|
998
986
|
/**
|
|
@@ -1009,11 +997,11 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1009
997
|
return this.findReferencesAsObject("HasTrueSubState");
|
|
1010
998
|
}
|
|
1011
999
|
findHierarchicalReferences() {
|
|
1012
|
-
return this.findReferencesEx("HierarchicalReferences",
|
|
1000
|
+
return this.findReferencesEx("HierarchicalReferences", BrowseDirection.Forward);
|
|
1013
1001
|
}
|
|
1014
1002
|
//
|
|
1015
1003
|
getChildByName(browseName, namespaceIndex) {
|
|
1016
|
-
var childrenMap =
|
|
1004
|
+
var childrenMap = _get_HierarchicalReference(this);
|
|
1017
1005
|
const select = _select_by_browse_name(childrenMap, browseName, namespaceIndex);
|
|
1018
1006
|
if (select.length === 0) {
|
|
1019
1007
|
return null;
|
|
@@ -1045,16 +1033,16 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1045
1033
|
return this.getNodeVersion() || undefined;
|
|
1046
1034
|
}
|
|
1047
1035
|
set nodeVersion(_n) {
|
|
1048
|
-
|
|
1036
|
+
assert(false);
|
|
1049
1037
|
}
|
|
1050
1038
|
get toStateNode() {
|
|
1051
1039
|
const nodes = this.findReferencesAsObject("ToState", true);
|
|
1052
|
-
|
|
1040
|
+
assert(nodes.length <= 1);
|
|
1053
1041
|
return nodes.length === 1 ? nodes[0] : null;
|
|
1054
1042
|
}
|
|
1055
1043
|
get fromStateNode() {
|
|
1056
1044
|
const nodes = this.findReferencesAsObject("FromState", true);
|
|
1057
|
-
|
|
1045
|
+
assert(nodes.length <= 1);
|
|
1058
1046
|
return nodes.length === 1 ? nodes[0] : null;
|
|
1059
1047
|
}
|
|
1060
1048
|
/**
|
|
@@ -1070,17 +1058,17 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1070
1058
|
* by their target as well, so each is looked up there before a back reference is built
|
|
1071
1059
|
*/
|
|
1072
1060
|
propagate_back_references_declared_from_both_ends() {
|
|
1073
|
-
this._propagate_back_references(
|
|
1061
|
+
this._propagate_back_references(nodeIdKey(this.nodeId));
|
|
1074
1062
|
}
|
|
1075
1063
|
/** one reference of a node a NodeSet2 file declared, see propagate_back_references_declared_from_both_ends */
|
|
1076
1064
|
propagate_back_reference_declared_from_both_ends(reference) {
|
|
1077
1065
|
if (this.addressSpace.suspendBackReference) {
|
|
1078
1066
|
return;
|
|
1079
1067
|
}
|
|
1080
|
-
_propagate_ref.call(this, this.addressSpace, reference,
|
|
1068
|
+
_propagate_ref.call(this, this.addressSpace, reference, nodeIdKey(this.nodeId));
|
|
1081
1069
|
}
|
|
1082
1070
|
_propagate_back_references(sourceNodeKey) {
|
|
1083
|
-
const _private =
|
|
1071
|
+
const _private = BaseNode_getPrivate(this);
|
|
1084
1072
|
if (this.addressSpace.suspendBackReference) {
|
|
1085
1073
|
// this indicates that the base node is constructed from an xml definition
|
|
1086
1074
|
// propagate_back_references will be called later once the file has been completely processed.
|
|
@@ -1101,41 +1089,41 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1101
1089
|
this.emit("dispose");
|
|
1102
1090
|
this.removeAllListeners();
|
|
1103
1091
|
this._clear_caches();
|
|
1104
|
-
const _private =
|
|
1092
|
+
const _private = BaseNode_getPrivate(this);
|
|
1105
1093
|
for (const ref of _private._back_referenceIdx.values()) {
|
|
1106
1094
|
ref.dispose();
|
|
1107
1095
|
}
|
|
1108
1096
|
for (const ref of _private._referenceIdx.values()) {
|
|
1109
1097
|
ref.dispose();
|
|
1110
1098
|
}
|
|
1111
|
-
|
|
1099
|
+
BaseNode_removePrivate(this);
|
|
1112
1100
|
}
|
|
1113
1101
|
isDisposed() {
|
|
1114
1102
|
return !this.addressSpacePrivate;
|
|
1115
1103
|
}
|
|
1116
1104
|
// c8 ignore next
|
|
1117
1105
|
dumpXML(xmlWriter) {
|
|
1118
|
-
console.error(" This ",
|
|
1119
|
-
|
|
1120
|
-
|
|
1106
|
+
console.error(" This ", NodeClass[this.nodeClass]);
|
|
1107
|
+
assert(false, "BaseNode#dumpXML NOT IMPLEMENTED !");
|
|
1108
|
+
assert(xmlWriter);
|
|
1121
1109
|
}
|
|
1122
1110
|
/**
|
|
1123
1111
|
* Undo the effect of propagate_back_references
|
|
1124
1112
|
*/
|
|
1125
1113
|
unpropagate_back_references() {
|
|
1126
|
-
const _private =
|
|
1114
|
+
const _private = BaseNode_getPrivate(this);
|
|
1127
1115
|
const addressSpace = this.addressSpace;
|
|
1128
1116
|
for (const reference of _private._referenceIdx.values()) {
|
|
1129
1117
|
// filter out non Hierarchical References
|
|
1130
1118
|
const referenceType = resolveReferenceType(addressSpace, reference);
|
|
1131
1119
|
// c8 ignore next
|
|
1132
1120
|
if (!referenceType) {
|
|
1133
|
-
console.error(
|
|
1121
|
+
console.error(chalk.red(" ERROR"), " cannot find reference ", reference.referenceType, reference.toString());
|
|
1134
1122
|
}
|
|
1135
1123
|
const related_node = resolveReferenceNode(addressSpace, reference);
|
|
1136
1124
|
if (related_node) {
|
|
1137
|
-
|
|
1138
|
-
|
|
1125
|
+
assert(reference.nodeId.toString() !== this.nodeId.toString());
|
|
1126
|
+
BaseNode_remove_backward_reference.call(related_node, new ReferenceImpl({
|
|
1139
1127
|
isForward: !reference.isForward,
|
|
1140
1128
|
nodeId: this.nodeId,
|
|
1141
1129
|
referenceType: reference.referenceType
|
|
@@ -1163,11 +1151,11 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1163
1151
|
_on_child_added(childNode) {
|
|
1164
1152
|
// this._clear_caches();
|
|
1165
1153
|
// return;
|
|
1166
|
-
const cache =
|
|
1154
|
+
const cache = BaseNode_getCache(this);
|
|
1167
1155
|
const tmpV = cache._versionNode;
|
|
1168
1156
|
const tmpC = cache._children;
|
|
1169
1157
|
this._clear_caches();
|
|
1170
|
-
const newCache =
|
|
1158
|
+
const newCache = BaseNode_getCache(this);
|
|
1171
1159
|
newCache._versionNode = tmpV;
|
|
1172
1160
|
newCache._children = tmpC;
|
|
1173
1161
|
if (newCache._children) {
|
|
@@ -1183,7 +1171,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1183
1171
|
* @param reference
|
|
1184
1172
|
*/
|
|
1185
1173
|
_add_backward_reference(reference) {
|
|
1186
|
-
|
|
1174
|
+
BaseNode_add_backward_reference.call(this, reference);
|
|
1187
1175
|
}
|
|
1188
1176
|
_coerceReferenceType(referenceType) {
|
|
1189
1177
|
let result = null;
|
|
@@ -1195,7 +1183,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1195
1183
|
throw new Error(`Cannot coerce reference with name ${referenceType}`);
|
|
1196
1184
|
}
|
|
1197
1185
|
}
|
|
1198
|
-
else if (referenceType instanceof
|
|
1186
|
+
else if (referenceType instanceof NodeId) {
|
|
1199
1187
|
result = this.addressSpace.findNode(referenceType);
|
|
1200
1188
|
if (!result) {
|
|
1201
1189
|
return null;
|
|
@@ -1204,72 +1192,72 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1204
1192
|
else {
|
|
1205
1193
|
result = referenceType;
|
|
1206
1194
|
}
|
|
1207
|
-
|
|
1208
|
-
|
|
1195
|
+
assert(result, "reference must exists");
|
|
1196
|
+
assert(result.nodeClass === NodeClass.ReferenceType);
|
|
1209
1197
|
return result;
|
|
1210
1198
|
}
|
|
1211
1199
|
__addReference(referenceOpts, clearCaches = true) {
|
|
1212
1200
|
const addressSpace = this.addressSpace;
|
|
1213
|
-
const _private =
|
|
1214
|
-
|
|
1201
|
+
const _private = BaseNode_getPrivate(this);
|
|
1202
|
+
assert(Object.hasOwn(referenceOpts, "referenceType"));
|
|
1215
1203
|
// xx isForward is optional : assert(Object.prototype.hasOwnProperty.call(reference,"isForward"));
|
|
1216
|
-
|
|
1204
|
+
assert(Object.hasOwn(referenceOpts, "nodeId"));
|
|
1217
1205
|
const reference = addressSpace.normalizeReferenceType(referenceOpts);
|
|
1218
|
-
|
|
1206
|
+
assert(reference instanceof ReferenceImpl);
|
|
1219
1207
|
const h = reference.key(addressSpace);
|
|
1220
|
-
|
|
1221
|
-
|
|
1208
|
+
assert(!_private._back_referenceIdx.has(h), "reference exists already in _back_references");
|
|
1209
|
+
assert(!_private._referenceIdx.has(h), "reference exists already in _references");
|
|
1222
1210
|
_private._referenceIdx.set(h, reference);
|
|
1223
|
-
|
|
1211
|
+
_handle_HierarchicalReference(this, reference);
|
|
1224
1212
|
if (clearCaches) {
|
|
1225
1213
|
this._clear_caches();
|
|
1226
|
-
|
|
1214
|
+
noteReferenceTypeChange(this, reference);
|
|
1227
1215
|
}
|
|
1228
1216
|
return reference;
|
|
1229
1217
|
}
|
|
1230
1218
|
/** kept as given; the LocalizedText objects are built on first read (most nodes are never asked) */
|
|
1231
1219
|
_setDisplayName(displayName) {
|
|
1232
|
-
const _private =
|
|
1220
|
+
const _private = BaseNode_getPrivate(this);
|
|
1233
1221
|
_private._displayNameRaw = displayName;
|
|
1234
1222
|
_private._displayName = undefined;
|
|
1235
1223
|
}
|
|
1236
1224
|
_setDescription(description) {
|
|
1237
|
-
const _private =
|
|
1225
|
+
const _private = BaseNode_getPrivate(this);
|
|
1238
1226
|
_private._descriptionRaw = description;
|
|
1239
1227
|
_private._description = undefined;
|
|
1240
1228
|
}
|
|
1241
1229
|
_notifyAttributeChange(attributeId) {
|
|
1242
1230
|
const event_name = BaseNodeImpl.makeAttributeEventName(attributeId);
|
|
1243
|
-
this.emit(event_name, this.readAttribute(
|
|
1231
|
+
this.emit(event_name, this.readAttribute(SessionContext.defaultContext, attributeId));
|
|
1244
1232
|
}
|
|
1245
1233
|
_clear_caches() {
|
|
1246
|
-
|
|
1234
|
+
BaseNode_clearCache(this);
|
|
1247
1235
|
}
|
|
1248
1236
|
canUserWriteAttribute(context, attributeId) {
|
|
1249
1237
|
// the Client is allowed to write to Attributes other than the Value,
|
|
1250
1238
|
// Historizing or RolePermissions Attribute
|
|
1251
1239
|
if (!context)
|
|
1252
1240
|
return true;
|
|
1253
|
-
if (attributeId ===
|
|
1254
|
-
return context.checkPermission(this,
|
|
1241
|
+
if (attributeId === AttributeIds.Historizing) {
|
|
1242
|
+
return context.checkPermission(this, PermissionType.WriteHistorizing);
|
|
1255
1243
|
}
|
|
1256
|
-
if (attributeId ===
|
|
1257
|
-
return context.checkPermission(this,
|
|
1244
|
+
if (attributeId === AttributeIds.RolePermissions) {
|
|
1245
|
+
return context.checkPermission(this, PermissionType.WriteRolePermissions);
|
|
1258
1246
|
}
|
|
1259
|
-
if (attributeId ===
|
|
1260
|
-
return context.checkPermission(this,
|
|
1247
|
+
if (attributeId === AttributeIds.Value) {
|
|
1248
|
+
return context.checkPermission(this, PermissionType.Write);
|
|
1261
1249
|
}
|
|
1262
|
-
return context.checkPermission(this,
|
|
1250
|
+
return context.checkPermission(this, PermissionType.WriteAttribute);
|
|
1263
1251
|
}
|
|
1264
1252
|
_readAccessRestrictions(_context) {
|
|
1265
1253
|
// https://reference.opcfoundation.org/v104/Core/docs/Part3/8.56/
|
|
1266
1254
|
if (this.accessRestrictions === undefined) {
|
|
1267
|
-
return new
|
|
1255
|
+
return new DataValue({ statusCode: StatusCodes.BadAttributeIdInvalid });
|
|
1268
1256
|
}
|
|
1269
|
-
return new
|
|
1270
|
-
statusCode:
|
|
1257
|
+
return new DataValue({
|
|
1258
|
+
statusCode: StatusCodes.Good,
|
|
1271
1259
|
value: {
|
|
1272
|
-
dataType:
|
|
1260
|
+
dataType: DataType.UInt16,
|
|
1273
1261
|
value: this.accessRestrictions
|
|
1274
1262
|
}
|
|
1275
1263
|
});
|
|
@@ -1277,29 +1265,29 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1277
1265
|
_readRolePermissions(context) {
|
|
1278
1266
|
// https://reference.opcfoundation.org/v104/Core/docs/Part3/4.8.3/
|
|
1279
1267
|
// to do check that current user can read permission
|
|
1280
|
-
if (context && !context.checkPermission(this,
|
|
1281
|
-
return new
|
|
1282
|
-
statusCode:
|
|
1268
|
+
if (context && !context.checkPermission(this, PermissionType.ReadRolePermissions)) {
|
|
1269
|
+
return new DataValue({
|
|
1270
|
+
statusCode: StatusCodes.BadSecurityModeInsufficient
|
|
1283
1271
|
});
|
|
1284
1272
|
}
|
|
1285
1273
|
if (this.rolePermissions === undefined) {
|
|
1286
1274
|
// to do : If not specified, the value of DefaultUserRolePermissions Property from
|
|
1287
1275
|
// the Namespace Metadata Object associated with the Node is used instead.
|
|
1288
|
-
return new
|
|
1289
|
-
statusCode:
|
|
1276
|
+
return new DataValue({
|
|
1277
|
+
statusCode: StatusCodes.BadAttributeIdInvalid
|
|
1290
1278
|
});
|
|
1291
1279
|
}
|
|
1292
1280
|
const rolePermissions = this.rolePermissions.map(({ roleId, permissions }) => {
|
|
1293
|
-
return new
|
|
1281
|
+
return new RolePermissionType({
|
|
1294
1282
|
roleId: toRoleNodeId(roleId),
|
|
1295
1283
|
permissions
|
|
1296
1284
|
});
|
|
1297
1285
|
});
|
|
1298
|
-
return new
|
|
1299
|
-
statusCode:
|
|
1286
|
+
return new DataValue({
|
|
1287
|
+
statusCode: StatusCodes.Good,
|
|
1300
1288
|
value: {
|
|
1301
|
-
dataType:
|
|
1302
|
-
arrayType:
|
|
1289
|
+
dataType: DataType.ExtensionObject,
|
|
1290
|
+
arrayType: VariantArrayType.Array,
|
|
1303
1291
|
value: rolePermissions
|
|
1304
1292
|
}
|
|
1305
1293
|
});
|
|
@@ -1308,34 +1296,34 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1308
1296
|
const allUserCanSeeTheirOwnRolePermissions = true;
|
|
1309
1297
|
if (!allUserCanSeeTheirOwnRolePermissions) {
|
|
1310
1298
|
// to do check that current user can read permission
|
|
1311
|
-
if (context && !context.checkPermission(this,
|
|
1312
|
-
return new
|
|
1313
|
-
statusCode:
|
|
1299
|
+
if (context && !context.checkPermission(this, PermissionType.ReadRolePermissions)) {
|
|
1300
|
+
return new DataValue({
|
|
1301
|
+
statusCode: StatusCodes.BadSecurityModeInsufficient
|
|
1314
1302
|
});
|
|
1315
1303
|
}
|
|
1316
1304
|
}
|
|
1317
1305
|
if (this.rolePermissions === undefined) {
|
|
1318
1306
|
// to do : If not specified, the value of DefaultUserRolePermissions Property from
|
|
1319
1307
|
// the Namespace Metadata Object associated with the Node is used instead.
|
|
1320
|
-
return new
|
|
1321
|
-
statusCode:
|
|
1308
|
+
return new DataValue({
|
|
1309
|
+
statusCode: StatusCodes.BadAttributeIdInvalid
|
|
1322
1310
|
});
|
|
1323
1311
|
}
|
|
1324
|
-
const context1 = context === null ?
|
|
1312
|
+
const context1 = context === null ? SessionContext.defaultContext : context;
|
|
1325
1313
|
// for the time being get user Permission
|
|
1326
1314
|
const rolePermissions = this.rolePermissions
|
|
1327
1315
|
.map(({ roleId, permissions }) => {
|
|
1328
|
-
return new
|
|
1316
|
+
return new RolePermissionType({
|
|
1329
1317
|
roleId: toRoleNodeId(roleId),
|
|
1330
1318
|
permissions
|
|
1331
1319
|
});
|
|
1332
1320
|
})
|
|
1333
1321
|
.filter(({ roleId }) => context1.currentUserHasRole(roleId));
|
|
1334
|
-
return new
|
|
1335
|
-
statusCode:
|
|
1322
|
+
return new DataValue({
|
|
1323
|
+
statusCode: StatusCodes.Good,
|
|
1336
1324
|
value: {
|
|
1337
|
-
dataType:
|
|
1338
|
-
arrayType:
|
|
1325
|
+
dataType: DataType.ExtensionObject,
|
|
1326
|
+
arrayType: VariantArrayType.Array,
|
|
1339
1327
|
value: rolePermissions
|
|
1340
1328
|
}
|
|
1341
1329
|
});
|
|
@@ -1345,7 +1333,7 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1345
1333
|
* @param rolePermissions
|
|
1346
1334
|
*/
|
|
1347
1335
|
setRolePermissions(rolePermissions) {
|
|
1348
|
-
this._rolePermissions =
|
|
1336
|
+
this._rolePermissions = coerceRolePermissions(rolePermissions);
|
|
1349
1337
|
}
|
|
1350
1338
|
getRolePermissions(inherited) {
|
|
1351
1339
|
if (this.rolePermissions === undefined && inherited) {
|
|
@@ -1366,15 +1354,14 @@ class BaseNodeImpl extends node_opcua_address_space_base_1.TypedEventEmitter {
|
|
|
1366
1354
|
if (this._accessRestrictions === undefined && inherited) {
|
|
1367
1355
|
return this.namespace.getDefaultAccessRestrictions();
|
|
1368
1356
|
}
|
|
1369
|
-
return this._accessRestrictions ||
|
|
1357
|
+
return this._accessRestrictions || AccessRestrictionsFlag.None;
|
|
1370
1358
|
}
|
|
1371
1359
|
}
|
|
1372
|
-
exports.BaseNodeImpl = BaseNodeImpl;
|
|
1373
1360
|
function toRoleNodeId(s) {
|
|
1374
1361
|
if (typeof s === "string") {
|
|
1375
|
-
return
|
|
1362
|
+
return resolveNodeId(WellKnownRolesNodeId[s]);
|
|
1376
1363
|
}
|
|
1377
|
-
return
|
|
1364
|
+
return coerceNodeId(s);
|
|
1378
1365
|
}
|
|
1379
1366
|
let displayWarning = true;
|
|
1380
1367
|
function toString_ReferenceDescription(ref, options) {
|
|
@@ -1383,7 +1370,7 @@ function toString_ReferenceDescription(ref, options) {
|
|
|
1383
1370
|
if (!refNode) {
|
|
1384
1371
|
return `Unknown Ref : ${ref}`;
|
|
1385
1372
|
}
|
|
1386
|
-
const r = new
|
|
1373
|
+
const r = new ReferenceImpl({
|
|
1387
1374
|
isForward: ref.isForward,
|
|
1388
1375
|
nodeId: ref.nodeId,
|
|
1389
1376
|
referenceType: refNode.nodeId
|
|
@@ -1394,8 +1381,8 @@ function toString_ReferenceDescription(ref, options) {
|
|
|
1394
1381
|
}
|
|
1395
1382
|
function _setup_parent_item(referencesMap) {
|
|
1396
1383
|
let references = referencesMap.values();
|
|
1397
|
-
const _private =
|
|
1398
|
-
|
|
1384
|
+
const _private = BaseNode_getPrivate(this);
|
|
1385
|
+
assert(!_private._parent, "_setup_parent_item has been already called");
|
|
1399
1386
|
const addressSpace = this.addressSpace;
|
|
1400
1387
|
if (referencesMap.size > 0) {
|
|
1401
1388
|
// the document declared a parent (ParentNodeId): it wins when it is one of the
|
|
@@ -1405,10 +1392,10 @@ function _setup_parent_item(referencesMap) {
|
|
|
1405
1392
|
// from a folder) and for a folder a type organizes, and name ids after it.
|
|
1406
1393
|
const declared = _private._declaredParentNodeId;
|
|
1407
1394
|
if (declared) {
|
|
1408
|
-
const hierarchical = this.findReferencesEx("HierarchicalReferences",
|
|
1409
|
-
const match = hierarchical.find((r) =>
|
|
1395
|
+
const hierarchical = this.findReferencesEx("HierarchicalReferences", BrowseDirection.Inverse);
|
|
1396
|
+
const match = hierarchical.find((r) => sameNodeId(r.nodeId, declared));
|
|
1410
1397
|
if (match) {
|
|
1411
|
-
return
|
|
1398
|
+
return ReferenceImpl.resolveReferenceNode(addressSpace, match);
|
|
1412
1399
|
}
|
|
1413
1400
|
// the parent may be asked for while the document is still being loaded, before
|
|
1414
1401
|
// the other end of the reference has been declared: the document still says
|
|
@@ -1418,14 +1405,14 @@ function _setup_parent_item(referencesMap) {
|
|
|
1418
1405
|
return declaredNode;
|
|
1419
1406
|
}
|
|
1420
1407
|
}
|
|
1421
|
-
references = this.findReferencesEx("Aggregates",
|
|
1408
|
+
references = this.findReferencesEx("Aggregates", BrowseDirection.Inverse);
|
|
1422
1409
|
if (references.length >= 1) {
|
|
1423
1410
|
// c8 ignore next
|
|
1424
1411
|
if (references.length > 1) {
|
|
1425
1412
|
if (displayWarning) {
|
|
1426
1413
|
const options = { addressSpace };
|
|
1427
1414
|
warningLog(" More than one Aggregates reference have been found for parent of object");
|
|
1428
|
-
warningLog(" object node id:", this.nodeId.toString(),
|
|
1415
|
+
warningLog(" object node id:", this.nodeId.toString(), chalk.cyan(this.browseName.toString()));
|
|
1429
1416
|
warningLog(" browseResults:");
|
|
1430
1417
|
warningLog(references.map((f) => toString_ReferenceDescription(f, options)).join("\n"));
|
|
1431
1418
|
warningLog(" first one will be used as parent");
|
|
@@ -1433,7 +1420,7 @@ function _setup_parent_item(referencesMap) {
|
|
|
1433
1420
|
displayWarning = false;
|
|
1434
1421
|
}
|
|
1435
1422
|
}
|
|
1436
|
-
return
|
|
1423
|
+
return ReferenceImpl.resolveReferenceNode(addressSpace, references[0]);
|
|
1437
1424
|
}
|
|
1438
1425
|
}
|
|
1439
1426
|
return null;
|
|
@@ -1444,9 +1431,9 @@ function toObject(addressSpace, reference) {
|
|
|
1444
1431
|
if (doDebug && !obj) {
|
|
1445
1432
|
// c8 ignore next
|
|
1446
1433
|
doDebug &&
|
|
1447
|
-
debugLog(
|
|
1448
|
-
|
|
1449
|
-
|
|
1434
|
+
debugLog(chalk.red(" Warning : object with nodeId ") +
|
|
1435
|
+
chalk.cyan(reference.nodeId.toString()) +
|
|
1436
|
+
chalk.red(" cannot be found in the address space !"));
|
|
1450
1437
|
}
|
|
1451
1438
|
return obj;
|
|
1452
1439
|
}
|
|
@@ -1465,7 +1452,7 @@ function _select_by_browse_name(map, browseName, namespaceIndex) {
|
|
|
1465
1452
|
}
|
|
1466
1453
|
}
|
|
1467
1454
|
else {
|
|
1468
|
-
const _browseName =
|
|
1455
|
+
const _browseName = coerceQualifiedName(typeof browseName === "string" ? { name: browseName, namespaceIndex } : browseName);
|
|
1469
1456
|
// c8 ignore next
|
|
1470
1457
|
if (!_browseName) {
|
|
1471
1458
|
return [];
|
|
@@ -1489,10 +1476,10 @@ function _select_by_browse_name(map, browseName, namespaceIndex) {
|
|
|
1489
1476
|
let displayWarningReferencePointingToItSelf = true;
|
|
1490
1477
|
function _propagate_ref(addressSpace, reference, sourceNodeKey) {
|
|
1491
1478
|
// filter out non Hierarchical References
|
|
1492
|
-
const referenceType =
|
|
1479
|
+
const referenceType = ReferenceImpl.resolveReferenceType(addressSpace, reference);
|
|
1493
1480
|
// c8 ignore next
|
|
1494
1481
|
if (!referenceType) {
|
|
1495
|
-
errorLog(
|
|
1482
|
+
errorLog(chalk.red(" ERROR"), " cannot find reference ", reference.referenceType, reference.toString());
|
|
1496
1483
|
}
|
|
1497
1484
|
// ------------------------------- Filter out back reference when reference type
|
|
1498
1485
|
// is HasTypeDefinition, HasModellingRule, etc ...
|
|
@@ -1500,13 +1487,13 @@ function _propagate_ref(addressSpace, reference, sourceNodeKey) {
|
|
|
1500
1487
|
// var referenceNode = Reference.resolveReferenceNode(addressSpace,reference);
|
|
1501
1488
|
// ignore propagation on back reference to UAVariableType or UAObject Type reference
|
|
1502
1489
|
// because there are too many !
|
|
1503
|
-
if (!referenceType ||
|
|
1490
|
+
if (!referenceType || isMassivelyUsedReferenceType(referenceType.nodeId)) {
|
|
1504
1491
|
return;
|
|
1505
1492
|
}
|
|
1506
1493
|
const related_node = resolveReferenceNode(addressSpace, reference);
|
|
1507
1494
|
if (related_node) {
|
|
1508
1495
|
// verify that reference doesn't point to object it this (see mantis 3099)
|
|
1509
|
-
if (
|
|
1496
|
+
if (sameNodeId(reference.nodeId, this.nodeId)) {
|
|
1510
1497
|
// c8 ignore next
|
|
1511
1498
|
if (displayWarningReferencePointingToItSelf) {
|
|
1512
1499
|
// this could happen with method
|
|
@@ -1519,7 +1506,7 @@ function _propagate_ref(addressSpace, reference, sourceNodeKey) {
|
|
|
1519
1506
|
// ReferenceImpl to build for BaseNode_add_backward_reference to throw away. A node
|
|
1520
1507
|
// created at runtime rarely is, and BaseNode_add_backward_reference copes when it is.
|
|
1521
1508
|
if (sourceNodeKey !== undefined) {
|
|
1522
|
-
const inverse =
|
|
1509
|
+
const inverse = BaseNode_getPrivate(related_node)._referenceIdx.get(reference.inverseKey(addressSpace, sourceNodeKey));
|
|
1523
1510
|
if (inverse) {
|
|
1524
1511
|
if (!inverse.node) {
|
|
1525
1512
|
inverse.node = this;
|
|
@@ -1527,7 +1514,7 @@ function _propagate_ref(addressSpace, reference, sourceNodeKey) {
|
|
|
1527
1514
|
return;
|
|
1528
1515
|
}
|
|
1529
1516
|
}
|
|
1530
|
-
related_node._add_backward_reference(new
|
|
1517
|
+
related_node._add_backward_reference(new ReferenceImpl({
|
|
1531
1518
|
_referenceType: getReferenceType(reference),
|
|
1532
1519
|
isForward: !reference.isForward,
|
|
1533
1520
|
node: this,
|
|
@@ -1557,7 +1544,7 @@ function nodeid_is_nothing(nodeid) {
|
|
|
1557
1544
|
*/
|
|
1558
1545
|
function normalize_referenceTypeId(addressSpace, referenceTypeId) {
|
|
1559
1546
|
if (!referenceTypeId) {
|
|
1560
|
-
return
|
|
1547
|
+
return makeNodeId(0);
|
|
1561
1548
|
}
|
|
1562
1549
|
if (typeof referenceTypeId === "string") {
|
|
1563
1550
|
const ref = addressSpace.findReferenceType(referenceTypeId);
|
|
@@ -1573,19 +1560,19 @@ function normalize_referenceTypeId(addressSpace, referenceTypeId) {
|
|
|
1573
1560
|
errorLog("cannot normalize_referenceTypeId", referenceTypeId);
|
|
1574
1561
|
throw err;
|
|
1575
1562
|
}
|
|
1576
|
-
|
|
1563
|
+
assert(nodeId);
|
|
1577
1564
|
return nodeId;
|
|
1578
1565
|
}
|
|
1579
|
-
const resolveReferenceNode =
|
|
1580
|
-
const resolveReferenceType =
|
|
1566
|
+
const resolveReferenceNode = ReferenceImpl.resolveReferenceNode;
|
|
1567
|
+
const resolveReferenceType = ReferenceImpl.resolveReferenceType;
|
|
1581
1568
|
function _filter_by_referenceType(browseDescription, references, referenceTypeId) {
|
|
1582
1569
|
// make sure we have a valid referenceTypeId if not null
|
|
1583
1570
|
if (!nodeid_is_nothing(referenceTypeId)) {
|
|
1584
|
-
|
|
1571
|
+
assert(referenceTypeId instanceof NodeId);
|
|
1585
1572
|
const referenceType = this.addressSpace.findNode(referenceTypeId);
|
|
1586
|
-
|
|
1573
|
+
dumpIf(!referenceType, referenceTypeId);
|
|
1587
1574
|
// c8 ignore next
|
|
1588
|
-
if (!referenceType || referenceType.nodeClass !==
|
|
1575
|
+
if (!referenceType || referenceType.nodeClass !== NodeClass.ReferenceType) {
|
|
1589
1576
|
throw new Error("Cannot find reference type");
|
|
1590
1577
|
}
|
|
1591
1578
|
if (!browseDescription.includeSubtypes && referenceType.isAbstract) {
|
|
@@ -1598,8 +1585,8 @@ function _filter_by_referenceType(browseDescription, references, referenceTypeId
|
|
|
1598
1585
|
throw new Error(`Cannot find reference type ${reference.toString()}`);
|
|
1599
1586
|
}
|
|
1600
1587
|
// unknown type ... this may happen when the address space is not fully build
|
|
1601
|
-
|
|
1602
|
-
const isSameType =
|
|
1588
|
+
assert(ref.nodeClass === NodeClass.ReferenceType);
|
|
1589
|
+
const isSameType = sameNodeId(ref.nodeId, referenceType.nodeId);
|
|
1603
1590
|
if (isSameType) {
|
|
1604
1591
|
return true;
|
|
1605
1592
|
}
|
|
@@ -1620,10 +1607,10 @@ function reverseOnly(reference) {
|
|
|
1620
1607
|
return !reference.isForward;
|
|
1621
1608
|
}
|
|
1622
1609
|
function _filter_by_direction(references, browseDirection) {
|
|
1623
|
-
if (browseDirection ===
|
|
1610
|
+
if (browseDirection === BrowseDirection.Both) {
|
|
1624
1611
|
return references;
|
|
1625
1612
|
}
|
|
1626
|
-
if (browseDirection ===
|
|
1613
|
+
if (browseDirection === BrowseDirection.Forward) {
|
|
1627
1614
|
return references.filter(forwardOnly);
|
|
1628
1615
|
}
|
|
1629
1616
|
else {
|
|
@@ -1644,7 +1631,7 @@ function _filter_by_context(node, references, context) {
|
|
|
1644
1631
|
return references.filter((reference) => !context.isBrowseAccessRestricted(resolveReferenceNode(addressSpace, reference)));
|
|
1645
1632
|
}
|
|
1646
1633
|
function _filter_by_nodeClass(references, nodeClassMask) {
|
|
1647
|
-
|
|
1634
|
+
assert(Number.isFinite(nodeClassMask));
|
|
1648
1635
|
if (nodeClassMask === 0) {
|
|
1649
1636
|
return references;
|
|
1650
1637
|
}
|
|
@@ -1666,7 +1653,7 @@ function _filter_by_userFilter(references, context) {
|
|
|
1666
1653
|
if (!obj) {
|
|
1667
1654
|
return false;
|
|
1668
1655
|
}
|
|
1669
|
-
const _private =
|
|
1656
|
+
const _private = BaseNode_getPrivate(obj);
|
|
1670
1657
|
// c8 ignore next
|
|
1671
1658
|
if (!_private._browseFilter) {
|
|
1672
1659
|
throw Error("Internal error : cannot find browseFilter");
|
|
@@ -1680,8 +1667,8 @@ function _filter_by_userFilter(references, context) {
|
|
|
1680
1667
|
* code that walks dotted paths by name (`_getCompositeKey`); works under `isFrugal` too, where no
|
|
1681
1668
|
* own accessor is ever installed
|
|
1682
1669
|
*/
|
|
1683
|
-
function resolveChildAccessor(node, accessorName) {
|
|
1684
|
-
const _private =
|
|
1670
|
+
export function resolveChildAccessor(node, accessorName) {
|
|
1671
|
+
const _private = BaseNode_getPrivate(node);
|
|
1685
1672
|
// the prototype itself, or a disposed node
|
|
1686
1673
|
if (!_private?.__address_space) {
|
|
1687
1674
|
return undefined;
|
|
@@ -1694,7 +1681,7 @@ function resolveChildAccessor(node, accessorName) {
|
|
|
1694
1681
|
return undefined; // namespace 0 is still loading
|
|
1695
1682
|
}
|
|
1696
1683
|
const { hasChild, organizes } = wellKnown;
|
|
1697
|
-
return
|
|
1684
|
+
return resolveChildInIndex(_get_HierarchicalReference(node), accessorName, (reference) => hasChild.checkHasSubtype(reference.referenceType) || organizes.checkHasSubtype(reference.referenceType));
|
|
1698
1685
|
}
|
|
1699
1686
|
/**
|
|
1700
1687
|
* The accessor names under which a child of `node` can never be reached: the reserved names, the
|
|
@@ -1706,8 +1693,8 @@ function resolveChildAccessor(node, accessorName) {
|
|
|
1706
1693
|
*
|
|
1707
1694
|
* @internal
|
|
1708
1695
|
*/
|
|
1709
|
-
function childAccessorNamesShadowedBy(node) {
|
|
1710
|
-
const names = new Set(
|
|
1696
|
+
export function childAccessorNamesShadowedBy(node) {
|
|
1697
|
+
const names = new Set(reservedChildAccessorNames());
|
|
1711
1698
|
// a member of the class that resolves the child of that name itself, the way the shared
|
|
1712
1699
|
// accessors do: BaseNode.nodeVersion is the NodeVersion property, and declared as such
|
|
1713
1700
|
const membersExposingTheChild = new Set(["nodeVersion"]);
|
|
@@ -1722,7 +1709,7 @@ function childAccessorNamesShadowedBy(node) {
|
|
|
1722
1709
|
// does expose; the same name on a subclass prototype is a real member that wins over them
|
|
1723
1710
|
const sharedAccessorsLiveHere = proto === BaseNodeImpl.prototype;
|
|
1724
1711
|
for (const member of Object.getOwnPropertyNames(proto)) {
|
|
1725
|
-
if (membersExposingTheChild.has(member) || (sharedAccessorsLiveHere &&
|
|
1712
|
+
if (membersExposingTheChild.has(member) || (sharedAccessorsLiveHere && hasSharedChildAccessor(member))) {
|
|
1726
1713
|
continue;
|
|
1727
1714
|
}
|
|
1728
1715
|
names.add(member);
|
|
@@ -1738,16 +1725,16 @@ function resolveSharedChildAccessor(node, accessorName) {
|
|
|
1738
1725
|
* it once a load is complete, so that the prototype changes in one batch rather than once per
|
|
1739
1726
|
* new name in the middle of node creation.
|
|
1740
1727
|
*/
|
|
1741
|
-
function flushSharedChildAccessors() {
|
|
1742
|
-
return (
|
|
1728
|
+
export function flushSharedChildAccessors() {
|
|
1729
|
+
return defineQueuedChildAccessors(BaseNodeImpl.prototype, resolveSharedChildAccessor);
|
|
1743
1730
|
}
|
|
1744
1731
|
/**
|
|
1745
1732
|
* Give browse names created at runtime a shared accessor, for an application that builds its
|
|
1746
1733
|
* model through the namespace API and wants `parent.<child>` without an accessor on every parent.
|
|
1747
1734
|
*/
|
|
1748
|
-
function defineSharedChildAccessors(browseNames) {
|
|
1735
|
+
export function defineSharedChildAccessors(browseNames) {
|
|
1749
1736
|
for (const browseName of browseNames) {
|
|
1750
|
-
|
|
1737
|
+
registerChildName(browseName, true);
|
|
1751
1738
|
}
|
|
1752
1739
|
flushSharedChildAccessors();
|
|
1753
1740
|
}
|
|
@@ -1765,8 +1752,8 @@ function install_child_as_object_property(parentObj, child) {
|
|
|
1765
1752
|
if (!parentObj || !child) {
|
|
1766
1753
|
return;
|
|
1767
1754
|
}
|
|
1768
|
-
const name =
|
|
1769
|
-
if (!name ||
|
|
1755
|
+
const name = BaseNode_getPrivate(child)?._accessorName;
|
|
1756
|
+
if (!name || isReservedChildAccessorName(name) || hasSharedChildAccessor(name) || name in parentObj) {
|
|
1770
1757
|
return;
|
|
1771
1758
|
}
|
|
1772
1759
|
doDebug && debugLog(`Installing property ${name}`, " on ", parentObj.browseName.toString());
|
|
@@ -1774,7 +1761,7 @@ function install_child_as_object_property(parentObj, child) {
|
|
|
1774
1761
|
// an own property wins over the prototype: should the name get a shared getter later
|
|
1775
1762
|
// (a nodeset loaded afterwards declares it), this accessor answers what the getter
|
|
1776
1763
|
// would, through the child index, rather than the child it was installed for
|
|
1777
|
-
|
|
1764
|
+
hasSharedChildAccessor(name) ? resolveChildAccessor(parentObj, name) : child;
|
|
1778
1765
|
get[installedFor] = child;
|
|
1779
1766
|
Object.defineProperty(parentObj, name, {
|
|
1780
1767
|
configurable: true, // so that uninstall_child_object_property can remove it
|
|
@@ -1783,7 +1770,7 @@ function install_child_as_object_property(parentObj, child) {
|
|
|
1783
1770
|
});
|
|
1784
1771
|
}
|
|
1785
1772
|
function uninstall_child_object_property(parentObj, child) {
|
|
1786
|
-
const name =
|
|
1773
|
+
const name = BaseNode_getPrivate(child)?._accessorName;
|
|
1787
1774
|
if (!name) {
|
|
1788
1775
|
return;
|
|
1789
1776
|
}
|
|
@@ -1796,7 +1783,7 @@ function uninstall_child_object_property(parentObj, child) {
|
|
|
1796
1783
|
}
|
|
1797
1784
|
delete parentObj[name];
|
|
1798
1785
|
}
|
|
1799
|
-
function getReferenceType(reference) {
|
|
1786
|
+
export function getReferenceType(reference) {
|
|
1800
1787
|
const r = reference._referenceType;
|
|
1801
1788
|
// c8 ignore next
|
|
1802
1789
|
if (!r) {
|