@cratis/scene.components 4.2.0 → 4.3.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/bindings/resolveElementBinding.ts +17 -1
- package/cratisComponentsDescriptors.ts +48 -0
- package/cratisComponentsPackage.ts +2 -0
- package/dist/cjs/bindings/resolveElementBinding.js +13 -1
- package/dist/cjs/bindings/resolveElementBinding.js.map +1 -1
- package/dist/cjs/cratisComponentsDescriptors.js +83 -0
- package/dist/cjs/cratisComponentsDescriptors.js.map +1 -0
- package/dist/cjs/cratisComponentsPackage.js +3 -1
- package/dist/cjs/cratisComponentsPackage.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/bindings/resolveElementBinding.d.ts.map +1 -1
- package/dist/esm/bindings/resolveElementBinding.js +13 -1
- package/dist/esm/bindings/resolveElementBinding.js.map +1 -1
- package/dist/esm/cratisComponentsDescriptors.d.ts +3 -0
- package/dist/esm/cratisComponentsDescriptors.d.ts.map +1 -0
- package/dist/esm/cratisComponentsDescriptors.js +81 -0
- package/dist/esm/cratisComponentsDescriptors.js.map +1 -0
- package/dist/esm/cratisComponentsPackage.d.ts.map +1 -1
- package/dist/esm/cratisComponentsPackage.js +3 -1
- package/dist/esm/cratisComponentsPackage.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/index.ts +1 -0
- package/package.json +17 -16
- package/bindings/for_bindingRegistry/when_a_command_is_registered.ts +0 -30
- package/bindings/for_bindingRegistry/when_a_query_is_not_registered.ts +0 -17
- package/bindings/for_bindingRegistry/when_a_query_is_registered.ts +0 -30
- package/bindings/for_bindingRegistry/when_bindings_are_cleared.ts +0 -29
- package/bindings/for_bindingRegistry/when_registering_query_identities.ts +0 -81
- package/bindings/for_requireArcProxy/NativeProxies.ts +0 -28
- package/bindings/for_requireArcProxy/when_mounting_bound_adapters.tsx +0 -73
- package/bindings/for_requireArcProxy/when_previewing_without_arc.tsx +0 -37
- package/bindings/for_requireArcProxy/when_validating_a_proxy.ts +0 -44
- package/bindings/for_resolveElementBinding/when_resolving_a_command_binding.ts +0 -34
- package/bindings/for_resolveElementBinding/when_resolving_a_query_binding.ts +0 -45
- package/data/for_SceneDataTable/when_forwarding_query_arguments.tsx +0 -123
- package/data/for_SceneDataTable/when_the_query_binding_is_missing.tsx +0 -48
- package/data/for_SceneSingleResult/when_executing_a_native_query.tsx +0 -290
- package/data/for_SceneSingleResult/when_gating_the_lazy_runtime.tsx +0 -60
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts +0 -2
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js +0 -25
- package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts +0 -2
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js +0 -12
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts +0 -2
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js +0 -23
- package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts +0 -2
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js +0 -18
- package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.d.ts +0 -2
- package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.d.ts.map +0 -1
- package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.js +0 -73
- package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.js.map +0 -1
- package/dist/esm/bindings/for_requireArcProxy/NativeProxies.d.ts +0 -25
- package/dist/esm/bindings/for_requireArcProxy/NativeProxies.d.ts.map +0 -1
- package/dist/esm/bindings/for_requireArcProxy/NativeProxies.js +0 -23
- package/dist/esm/bindings/for_requireArcProxy/NativeProxies.js.map +0 -1
- package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.d.ts +0 -2
- package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.d.ts.map +0 -1
- package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.js +0 -56
- package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.js.map +0 -1
- package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.d.ts +0 -2
- package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.d.ts.map +0 -1
- package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.js +0 -32
- package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.js.map +0 -1
- package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.d.ts +0 -2
- package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.d.ts.map +0 -1
- package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.js +0 -45
- package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.js.map +0 -1
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts +0 -2
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts.map +0 -1
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js +0 -25
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js.map +0 -1
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts +0 -2
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts.map +0 -1
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js +0 -33
- package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js.map +0 -1
- package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.d.ts +0 -2
- package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.d.ts.map +0 -1
- package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.js +0 -107
- package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.js.map +0 -1
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts +0 -2
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts.map +0 -1
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js +0 -36
- package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js.map +0 -1
- package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.d.ts +0 -2
- package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.d.ts.map +0 -1
- package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.js +0 -255
- package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.js.map +0 -1
- package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.d.ts +0 -2
- package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.d.ts.map +0 -1
- package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.js +0 -54
- package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.js.map +0 -1
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts +0 -2
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts.map +0 -1
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js +0 -15
- package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js.map +0 -1
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts +0 -2
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts.map +0 -1
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js +0 -39
- package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js.map +0 -1
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts +0 -2
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts.map +0 -1
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js +0 -32
- package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js.map +0 -1
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts +0 -2
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts.map +0 -1
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js +0 -25
- package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts +0 -2
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js +0 -34
- package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.d.ts +0 -2
- package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.d.ts.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.js +0 -16
- package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.js.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_describing_query_arguments.d.ts +0 -2
- package/dist/esm/for_cratisComponentsPackage/when_describing_query_arguments.d.ts.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_describing_query_arguments.js +0 -11
- package/dist/esm/for_cratisComponentsPackage/when_describing_query_arguments.js.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.d.ts +0 -2
- package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.d.ts.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.js +0 -14
- package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.js.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.d.ts +0 -2
- package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.d.ts.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.js +0 -16
- package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.js.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts +0 -2
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js +0 -49
- package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts +0 -2
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts.map +0 -1
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js +0 -27
- package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js.map +0 -1
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts +0 -2
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts.map +0 -1
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js +0 -24
- package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js.map +0 -1
- package/dist/esm/for_properties/when_a_property_is_missing.d.ts +0 -2
- package/dist/esm/for_properties/when_a_property_is_missing.d.ts.map +0 -1
- package/dist/esm/for_properties/when_a_property_is_missing.js +0 -13
- package/dist/esm/for_properties/when_a_property_is_missing.js.map +0 -1
- package/dist/esm/for_properties/when_a_property_is_present.d.ts +0 -2
- package/dist/esm/for_properties/when_a_property_is_present.d.ts.map +0 -1
- package/dist/esm/for_properties/when_a_property_is_present.js +0 -21
- package/dist/esm/for_properties/when_a_property_is_present.js.map +0 -1
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts +0 -2
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts.map +0 -1
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js +0 -12
- package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js.map +0 -1
- package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.d.ts +0 -2
- package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.d.ts.map +0 -1
- package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.js +0 -38
- package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.js.map +0 -1
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts +0 -2
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts.map +0 -1
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js +0 -28
- package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.d.ts +0 -22
- package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.js +0 -30
- package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.js.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/given/StartProject.d.ts +0 -32
- package/dist/esm/forms/for_SceneCommandForm/given/StartProject.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/given/StartProject.js +0 -32
- package/dist/esm/forms/for_SceneCommandForm/given/StartProject.js.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.d.ts +0 -2
- package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.js +0 -66
- package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.js.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.d.ts +0 -2
- package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.js +0 -26
- package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.js.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.d.ts +0 -2
- package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.js +0 -44
- package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.js.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.d.ts +0 -2
- package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.js +0 -49
- package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.js.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.d.ts +0 -2
- package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.js +0 -176
- package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.js.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.d.ts +0 -2
- package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.js +0 -110
- package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.js.map +0 -1
- package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.d.ts +0 -26
- package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.js +0 -44
- package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.js.map +0 -1
- package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.d.ts +0 -2
- package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.js +0 -175
- package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.js.map +0 -1
- package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.d.ts +0 -2
- package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.d.ts.map +0 -1
- package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.js +0 -413
- package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.js.map +0 -1
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts +0 -2
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts.map +0 -1
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js +0 -31
- package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js.map +0 -1
- package/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.tsx +0 -24
- package/editors/for_filterDefinitions/when_reading_filter_definitions.ts +0 -49
- package/editors/for_timeMachineVersions/when_reading_versions.ts +0 -39
- package/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.tsx +0 -37
- package/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.ts +0 -49
- package/for_cratisComponentsPackage/when_declaring_command_form_peers.ts +0 -26
- package/for_cratisComponentsPackage/when_describing_query_arguments.ts +0 -15
- package/for_cratisComponentsPackage/when_describing_query_input_form.ts +0 -17
- package/for_cratisComponentsPackage/when_describing_single_result.ts +0 -20
- package/for_cratisComponentsPackage/when_resolving_its_dependencies.ts +0 -78
- package/for_cratisComponentsPackage/when_validating_the_bundle.ts +0 -39
- package/for_properties/when_a_property_has_the_wrong_type.ts +0 -41
- package/for_properties/when_a_property_is_missing.ts +0 -26
- package/for_properties/when_a_property_is_present.ts +0 -36
- package/forms/fields/for_CommandFormField/when_the_field_names_no_property.tsx +0 -16
- package/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.tsx +0 -45
- package/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.ts +0 -40
- package/forms/for_SceneCommandForm/given/RecordNote.ts +0 -37
- package/forms/for_SceneCommandForm/given/StartProject.ts +0 -41
- package/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.tsx +0 -69
- package/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.tsx +0 -33
- package/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.tsx +0 -50
- package/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.tsx +0 -56
- package/forms/for_SceneCommandForm/when_submitting_explicit_inputs.tsx +0 -189
- package/forms/for_SceneCommandForm/when_submitting_the_native_form.tsx +0 -120
- package/forms/for_SceneQueryInputForm/ProjectLookup.ts +0 -54
- package/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.tsx +0 -188
- package/forms/for_SceneQueryInputForm/when_submitting_native_queries.tsx +0 -423
- package/pages/for_ScenePage/when_rendering_a_page.tsx +0 -39
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
-
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
-
|
|
4
|
-
import { expect } from 'chai';
|
|
5
|
-
import { render, screen } from '@testing-library/react';
|
|
6
|
-
import { externalComponent } from '../../given';
|
|
7
|
-
import { clearBindings, registerQuery } from '../../bindings';
|
|
8
|
-
import { SceneDataTable } from '../SceneDataTable';
|
|
9
|
-
|
|
10
|
-
class AllInvoices {}
|
|
11
|
-
|
|
12
|
-
describe('when the query binding is missing', () => {
|
|
13
|
-
beforeEach(() => clearBindings());
|
|
14
|
-
afterEach(() => clearBindings());
|
|
15
|
-
|
|
16
|
-
describe('and the screen names a query nothing is registered under', () => {
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
const element = externalComponent('Cratis.Components:dataTable', { query: 'AllInvoices', emptyMessage: 'No invoices' });
|
|
19
|
-
render(<SceneDataTable element={element} slots={{}} />);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should render a placeholder naming the binding rather than throwing', () =>
|
|
23
|
-
expect(screen.getByText("Unresolved query binding 'AllInvoices' on Cratis.Components:dataTable")).to.exist);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe('and the screen names no query at all', () => {
|
|
27
|
-
beforeEach(() => {
|
|
28
|
-
const element = externalComponent('Cratis.Components:dataTable', { emptyMessage: 'No invoices' });
|
|
29
|
-
render(<SceneDataTable element={element} slots={{}} />);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('should render a placeholder saying the binding is missing', () =>
|
|
33
|
-
expect(screen.getByText('Missing query binding on Cratis.Components:dataTable')).to.exist);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
describe('and the named query is registered', () => {
|
|
37
|
-
beforeEach(() => {
|
|
38
|
-
registerQuery('AllInvoices', AllInvoices);
|
|
39
|
-
const element = externalComponent('Cratis.Components:dataTable', { query: 'AllInvoices', emptyMessage: 'No invoices' });
|
|
40
|
-
render(<SceneDataTable element={element} slots={{}} />);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('should render no placeholder', () => (screen.queryByText(/query binding/) === null).should.be.true);
|
|
44
|
-
|
|
45
|
-
it('should hand off to the lazily loaded Arc-bound table', () =>
|
|
46
|
-
expect(document.querySelector('[data-scene-arc-loading]')).to.exist);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
-
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
-
|
|
4
|
-
import { act, cleanup, render, screen, waitFor } from '@testing-library/react';
|
|
5
|
-
import { expect, vi } from 'vitest';
|
|
6
|
-
import { StrictMode } from 'react';
|
|
7
|
-
import { ArcContext, type ArcConfiguration } from '@cratis/arc.react';
|
|
8
|
-
import { QueryFor, QueryHttpMethod, QueryValidator } from '@cratis/arc/queries';
|
|
9
|
-
import { clearBindings, registerQuery } from '../../bindings';
|
|
10
|
-
import { externalComponent } from '../../given';
|
|
11
|
-
import { SceneSingleResult } from '../SceneSingleResult';
|
|
12
|
-
|
|
13
|
-
class ProjectName extends QueryFor<object | undefined, { projectId: string }> {
|
|
14
|
-
readonly route = '/projects/{projectId}/name';
|
|
15
|
-
readonly parameterDescriptors = [];
|
|
16
|
-
readonly requiredRequestParameters = ['projectId'];
|
|
17
|
-
defaultValue = undefined;
|
|
18
|
-
|
|
19
|
-
constructor() {
|
|
20
|
-
super(Object, false);
|
|
21
|
-
this.setHttpMethod(QueryHttpMethod.Get);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
class ProjectNames extends QueryFor<object[]> {
|
|
26
|
-
readonly route = '/projects';
|
|
27
|
-
readonly parameterDescriptors = [];
|
|
28
|
-
readonly requiredRequestParameters = [];
|
|
29
|
-
defaultValue = [];
|
|
30
|
-
|
|
31
|
-
constructor() { super(Object, true); }
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
class ProjectArgumentsValidator extends QueryValidator<{ projectId: string }> {
|
|
35
|
-
static received: unknown;
|
|
36
|
-
|
|
37
|
-
constructor() {
|
|
38
|
-
super();
|
|
39
|
-
this.ruleFor(args => {
|
|
40
|
-
ProjectArgumentsValidator.received = args;
|
|
41
|
-
return args.projectId;
|
|
42
|
-
}).minLength(2);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
class ValidatedProjectName extends ProjectName {
|
|
47
|
-
readonly validation = new ProjectArgumentsValidator();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function envelope(data: unknown, overrides: Record<string, unknown> = {}) {
|
|
51
|
-
return {
|
|
52
|
-
data, isSuccess: true, isAuthorized: true, isValid: true, hasExceptions: false,
|
|
53
|
-
validationResults: [], exceptionMessages: [], exceptionStackTrace: '',
|
|
54
|
-
paging: { page: 0, size: 0, totalItems: 0, totalPages: 0 }, ...overrides,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function response(data: unknown, overrides: Record<string, unknown> = {}) {
|
|
59
|
-
return { ok: true, status: 200, json: async () => envelope(data, overrides) } as Response;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function deferred() {
|
|
63
|
-
let resolve!: (value: Response) => void;
|
|
64
|
-
let reject!: (error: unknown) => void;
|
|
65
|
-
const promise = new Promise<Response>((yes, no) => { resolve = yes; reject = no; });
|
|
66
|
-
return { promise, resolve, reject };
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
describe('when executing an optional single result with native Arc 22.16.1', () => {
|
|
70
|
-
const headers = () => ({ 'x-host': 'one' });
|
|
71
|
-
const context: ArcConfiguration = { microservice: 'projects', origin: 'https://example.test', apiBasePath: '/backend', httpHeadersCallback: headers };
|
|
72
|
-
const fetch = vi.fn<typeof globalThis.fetch>();
|
|
73
|
-
|
|
74
|
-
function view(queryArguments: unknown = { projectId: 'A' }, arc = context, properties: Record<string, unknown> = {}) {
|
|
75
|
-
return <ArcContext.Provider value={arc}>
|
|
76
|
-
<SceneSingleResult element={externalComponent('Cratis.Components:singleResult', {
|
|
77
|
-
query: 'ProjectName', queryArguments, enabled: true, resultField: 'name', ...properties,
|
|
78
|
-
})} slots={{}} />
|
|
79
|
-
</ArcContext.Provider>;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
beforeEach(() => {
|
|
83
|
-
clearBindings();
|
|
84
|
-
registerQuery('ProjectName', ProjectName);
|
|
85
|
-
registerQuery('ProjectNames', ProjectNames);
|
|
86
|
-
registerQuery('ValidatedProjectName', ValidatedProjectName);
|
|
87
|
-
fetch.mockReset();
|
|
88
|
-
vi.stubGlobal('fetch', fetch);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
afterEach(() => {
|
|
92
|
-
cleanup();
|
|
93
|
-
clearBindings();
|
|
94
|
-
vi.unstubAllGlobals();
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it('uses the native URL, arguments and context headers without changing the host object', async () => {
|
|
98
|
-
const args = Object.freeze({ projectId: 'AA', locale: 'en' });
|
|
99
|
-
fetch.mockResolvedValue(response({ name: '<b>Project A</b>' }));
|
|
100
|
-
await act(async () => { render(view(args, context, { query: 'ValidatedProjectName' })); });
|
|
101
|
-
expect(await screen.findByText('<b>Project A</b>')).not.toBeNull();
|
|
102
|
-
expect(document.querySelector('b')).toBeNull();
|
|
103
|
-
expect(fetch).toHaveBeenCalledTimes(1);
|
|
104
|
-
const [url, init] = fetch.mock.calls[0];
|
|
105
|
-
expect(String(url)).toBe('https://example.test/backend/projects/AA/name?locale=en');
|
|
106
|
-
expect(ProjectArgumentsValidator.received).toBe(args);
|
|
107
|
-
expect(new Headers(init?.headers).get('x-host')).toBe('one');
|
|
108
|
-
expect(new Headers(init?.headers).get('x-cratis-microservice')).toBe('projects');
|
|
109
|
-
expect(args).toEqual({ projectId: 'AA', locale: 'en' });
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
for (const value of [false, 0, '']) {
|
|
113
|
-
it(`renders scalar own-field ${JSON.stringify(value)} as present`, async () => {
|
|
114
|
-
fetch.mockResolvedValue(response({ name: value }));
|
|
115
|
-
await act(async () => { render(view()); });
|
|
116
|
-
await waitFor(() => expect(screen.getByRole('status').getAttribute('data-scene-single-result')).toBe('success'));
|
|
117
|
-
expect(screen.getByRole('status').textContent).toBe(String(value));
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
for (const data of [null, undefined]) {
|
|
122
|
-
it(`shows not found for successful ${String(data)}`, async () => {
|
|
123
|
-
fetch.mockResolvedValue(response(data));
|
|
124
|
-
await act(async () => { render(view()); });
|
|
125
|
-
expect(await screen.findByText('Not found')).not.toBeNull();
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
for (const failure of [{ isSuccess: false }, { isAuthorized: false }, { isValid: false }, { hasExceptions: true }]) {
|
|
130
|
-
it(`prioritizes failure over missing data: ${JSON.stringify(failure)}`, async () => {
|
|
131
|
-
fetch.mockResolvedValue(response(null, { ...failure, exceptionMessages: ['secret'], exceptionStackTrace: 'server stack' }));
|
|
132
|
-
await act(async () => { render(view()); });
|
|
133
|
-
expect(await screen.findByRole('alert')).toHaveProperty('textContent', 'Unable to load result');
|
|
134
|
-
expect(screen.queryByText('Not found')).toBeNull();
|
|
135
|
-
expect(document.body.textContent).not.toMatch(/secret|server stack/);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
for (const args of [{}, { projectId: '' }, { projectId: null }, [], null, 'A', undefined]) {
|
|
140
|
-
it(`does not send invalid or missing arguments: ${JSON.stringify(args)}`, async () => {
|
|
141
|
-
await act(async () => { render(view(args, context, { queryArguments: args })); });
|
|
142
|
-
expect(await screen.findByRole('alert')).not.toBeNull();
|
|
143
|
-
expect(fetch).not.toHaveBeenCalled();
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
it('lets the native proxy validator reject arguments without HTTP', async () => {
|
|
148
|
-
await act(async () => { render(view({ projectId: 'A' }, context, { query: 'ValidatedProjectName' })); });
|
|
149
|
-
expect(await screen.findByRole('alert')).not.toBeNull();
|
|
150
|
-
expect(fetch).not.toHaveBeenCalled();
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
for (const enabled of [false, undefined, 'true']) {
|
|
154
|
-
it(`is idle unless explicitly enabled: ${String(enabled)}`, async () => {
|
|
155
|
-
await act(async () => { render(view({ projectId: 'A' }, context, { enabled })); });
|
|
156
|
-
expect(screen.getByText('Idle')).not.toBeNull();
|
|
157
|
-
expect(fetch).not.toHaveBeenCalled();
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
it('never chooses another query when the binding is missing', async () => {
|
|
162
|
-
await act(async () => { render(view({}, context, { query: 'Missing' })); });
|
|
163
|
-
expect(screen.getByText(/Unresolved query binding 'Missing'/)).not.toBeNull();
|
|
164
|
-
expect(fetch).not.toHaveBeenCalled();
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
it('aborts A and ignores reverse completion when the transport ignores abort', async () => {
|
|
168
|
-
const a = deferred();
|
|
169
|
-
const b = deferred();
|
|
170
|
-
fetch.mockReturnValueOnce(a.promise).mockReturnValueOnce(b.promise);
|
|
171
|
-
let mounted!: ReturnType<typeof render>;
|
|
172
|
-
await act(async () => { mounted = render(view()); });
|
|
173
|
-
expect(screen.getByText('Loading')).not.toBeNull();
|
|
174
|
-
const signal = fetch.mock.calls[0][1]?.signal;
|
|
175
|
-
await act(async () => { mounted.rerender(view({ projectId: 'B' })); });
|
|
176
|
-
expect(signal?.aborted).toBe(true);
|
|
177
|
-
await act(async () => { b.resolve(response({ name: 'B' })); });
|
|
178
|
-
expect(screen.getByText('B')).not.toBeNull();
|
|
179
|
-
await act(async () => { a.resolve(response({ name: 'A' })); });
|
|
180
|
-
expect(screen.queryByText('A')).toBeNull();
|
|
181
|
-
expect(screen.getByText('B')).not.toBeNull();
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
it('hides a settled A immediately on B and aborts B on disposal', async () => {
|
|
185
|
-
const b = deferred();
|
|
186
|
-
fetch.mockResolvedValueOnce(response({ name: 'A' })).mockReturnValueOnce(b.promise);
|
|
187
|
-
let mounted!: ReturnType<typeof render>;
|
|
188
|
-
await act(async () => { mounted = render(view()); });
|
|
189
|
-
expect(screen.getByText('A')).not.toBeNull();
|
|
190
|
-
await act(async () => { mounted.rerender(view({ projectId: 'B' })); });
|
|
191
|
-
expect(screen.queryByText('A')).toBeNull();
|
|
192
|
-
expect(screen.getByText('Loading')).not.toBeNull();
|
|
193
|
-
mounted.unmount();
|
|
194
|
-
expect(fetch.mock.calls[1][1]?.signal?.aborted).toBe(true);
|
|
195
|
-
await act(async () => { b.reject(new DOMException('Aborted', 'AbortError')); });
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
it('reexecutes for header-only context changes and ignores the old response', async () => {
|
|
199
|
-
const a = deferred();
|
|
200
|
-
const b = deferred();
|
|
201
|
-
const args = { projectId: 'A' };
|
|
202
|
-
fetch.mockReturnValueOnce(a.promise).mockReturnValueOnce(b.promise);
|
|
203
|
-
let mounted!: ReturnType<typeof render>;
|
|
204
|
-
await act(async () => { mounted = render(view(args)); });
|
|
205
|
-
await act(async () => { mounted.rerender(view(args, { ...context, httpHeadersCallback: () => ({ 'x-host': 'two' }) })); });
|
|
206
|
-
expect(fetch.mock.calls[0][1]?.signal?.aborted).toBe(true);
|
|
207
|
-
expect(new Headers(fetch.mock.calls[1][1]?.headers).get('x-host')).toBe('two');
|
|
208
|
-
await act(async () => { b.resolve(response({ name: 'New context' })); a.resolve(response({ name: 'Old context' })); });
|
|
209
|
-
expect(screen.getByText('New context')).not.toBeNull();
|
|
210
|
-
expect(screen.queryByText('Old context')).toBeNull();
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
it('rejects enumerable proxies before HTTP rather than adapting them to a single model', async () => {
|
|
214
|
-
await act(async () => { render(view({}, context, { query: 'ProjectNames' })); });
|
|
215
|
-
expect(await screen.findByRole('alert')).not.toBeNull();
|
|
216
|
-
expect(fetch).not.toHaveBeenCalled();
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
it('handles StrictMode disposal without an unhandled abort promise', async () => {
|
|
220
|
-
const a = deferred();
|
|
221
|
-
const b = deferred();
|
|
222
|
-
fetch.mockReturnValueOnce(a.promise).mockReturnValueOnce(b.promise);
|
|
223
|
-
await act(async () => { render(<StrictMode>{view()}</StrictMode>); });
|
|
224
|
-
expect(fetch).toHaveBeenCalledTimes(2);
|
|
225
|
-
expect(fetch.mock.calls[0][1]?.signal?.aborted).toBe(true);
|
|
226
|
-
await act(async () => {
|
|
227
|
-
a.reject(new DOMException('Aborted', 'AbortError'));
|
|
228
|
-
b.resolve(response({ name: 'Current generation' }));
|
|
229
|
-
});
|
|
230
|
-
expect(screen.getByText('Current generation')).not.toBeNull();
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
it('ignores successful completion after unmount even if HTTP ignores abort', async () => {
|
|
234
|
-
const pending = deferred();
|
|
235
|
-
fetch.mockReturnValueOnce(pending.promise);
|
|
236
|
-
let mounted!: ReturnType<typeof render>;
|
|
237
|
-
await act(async () => { mounted = render(view()); });
|
|
238
|
-
mounted.unmount();
|
|
239
|
-
expect(fetch.mock.calls[0][1]?.signal?.aborted).toBe(true);
|
|
240
|
-
await act(async () => { pending.resolve(response({ name: 'Disposed' })); });
|
|
241
|
-
expect(screen.queryByText('Disposed')).toBeNull();
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
it('turns transport rejection and malformed envelopes into safe failure', async () => {
|
|
245
|
-
fetch.mockRejectedValueOnce(new Error('private network detail'));
|
|
246
|
-
let mounted!: ReturnType<typeof render>;
|
|
247
|
-
await act(async () => { mounted = render(view()); });
|
|
248
|
-
expect(await screen.findByRole('alert')).toHaveProperty('textContent', 'Unable to load result');
|
|
249
|
-
fetch.mockResolvedValueOnce({ ok: false, status: 500, json: async () => ({}) } as Response);
|
|
250
|
-
await act(async () => { mounted.rerender(view({ projectId: 'B' })); });
|
|
251
|
-
expect(await screen.findByRole('alert')).toHaveProperty('textContent', 'Unable to load result');
|
|
252
|
-
expect(document.body.textContent).not.toContain('private network detail');
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
it('aborts and clears a pending request when disabled', async () => {
|
|
256
|
-
const pending = deferred();
|
|
257
|
-
fetch.mockReturnValueOnce(pending.promise);
|
|
258
|
-
let mounted!: ReturnType<typeof render>;
|
|
259
|
-
await act(async () => { mounted = render(view()); });
|
|
260
|
-
await act(async () => { mounted.rerender(view({ projectId: 'A' }, context, { enabled: false })); });
|
|
261
|
-
expect(fetch.mock.calls[0][1]?.signal?.aborted).toBe(true);
|
|
262
|
-
await act(async () => { pending.resolve(response({ name: 'Obsolete' })); });
|
|
263
|
-
expect(screen.getByText('Idle')).not.toBeNull();
|
|
264
|
-
expect(screen.queryByText('Obsolete')).toBeNull();
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
for (const change of [{ origin: 'https://other.test' }, { apiBasePath: '/v2' }, { microservice: 'other' }, { queryVersion: 1 }]) {
|
|
268
|
-
it(`invalidates a settled result after context changes: ${JSON.stringify(change)}`, async () => {
|
|
269
|
-
const pending = deferred();
|
|
270
|
-
const args = { projectId: 'A' };
|
|
271
|
-
fetch.mockResolvedValueOnce(response({ name: 'Old' })).mockReturnValueOnce(pending.promise);
|
|
272
|
-
let mounted!: ReturnType<typeof render>;
|
|
273
|
-
await act(async () => { mounted = render(view(args)); });
|
|
274
|
-
await act(async () => { mounted.rerender(view(args, { ...context, ...change })); });
|
|
275
|
-
expect(screen.queryByText('Old')).toBeNull();
|
|
276
|
-
expect(screen.getByText('Loading')).not.toBeNull();
|
|
277
|
-
expect(fetch).toHaveBeenCalledTimes(2);
|
|
278
|
-
await act(async () => { pending.resolve(response({ name: 'New' })); });
|
|
279
|
-
expect(screen.getByText('New')).not.toBeNull();
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
for (const data of [{ name: {} }, { name: [] }, {}, Object.create({ name: 'Inherited' }), [{ name: 'A' }]]) {
|
|
284
|
-
it(`rejects non-scalar or absent own fields: ${JSON.stringify(data)}`, async () => {
|
|
285
|
-
fetch.mockResolvedValue(response(data));
|
|
286
|
-
await act(async () => { render(view()); });
|
|
287
|
-
expect(await screen.findByRole('alert')).not.toBeNull();
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
-
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
-
|
|
4
|
-
import { act, cleanup, render, screen } from '@testing-library/react';
|
|
5
|
-
import { expect, vi } from 'vitest';
|
|
6
|
-
import { externalComponent } from '../../given';
|
|
7
|
-
|
|
8
|
-
class RegisteredQuery {}
|
|
9
|
-
|
|
10
|
-
describe('when gating the single result lazy runtime', () => {
|
|
11
|
-
const loaded = vi.fn();
|
|
12
|
-
let SceneSingleResult: typeof import('../SceneSingleResult').SceneSingleResult;
|
|
13
|
-
let bindings: typeof import('../../bindings');
|
|
14
|
-
|
|
15
|
-
beforeEach(async () => {
|
|
16
|
-
vi.resetModules();
|
|
17
|
-
loaded.mockClear();
|
|
18
|
-
vi.doMock('../SingleResultRuntime', () => {
|
|
19
|
-
loaded();
|
|
20
|
-
return { default: () => <span>Runtime mounted</span> };
|
|
21
|
-
});
|
|
22
|
-
bindings = await import('../../bindings');
|
|
23
|
-
bindings.clearBindings();
|
|
24
|
-
bindings.registerQuery('Registered', RegisteredQuery);
|
|
25
|
-
({ SceneSingleResult } = await import('../SceneSingleResult'));
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
afterEach(() => {
|
|
29
|
-
cleanup();
|
|
30
|
-
bindings.clearBindings();
|
|
31
|
-
vi.doUnmock('../SingleResultRuntime');
|
|
32
|
-
vi.resetModules();
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
for (const properties of [
|
|
36
|
-
{ query: 'Missing', enabled: true, queryArguments: {}, resultField: 'name' },
|
|
37
|
-
{ query: 'Registered', queryArguments: {}, resultField: 'name' },
|
|
38
|
-
{ query: 'Registered', enabled: true, queryArguments: [], resultField: 'name' },
|
|
39
|
-
{ query: 'Registered', enabled: true, queryArguments: {}, resultField: '' },
|
|
40
|
-
]) {
|
|
41
|
-
it(`does not import Arc-bound code for ${JSON.stringify(properties)}`, async () => {
|
|
42
|
-
await act(async () => {
|
|
43
|
-
render(<SceneSingleResult element={externalComponent('Cratis.Components:singleResult', properties)} slots={{}} />);
|
|
44
|
-
});
|
|
45
|
-
expect(loaded).not.toHaveBeenCalled();
|
|
46
|
-
expect(screen.queryByText('Runtime mounted')).toBeNull();
|
|
47
|
-
expect(document.body.textContent).toMatch(/Unresolved query binding|Idle|Unable to load result/);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
it('loads only the explicitly bound and enabled view', async () => {
|
|
52
|
-
await act(async () => {
|
|
53
|
-
render(<SceneSingleResult element={externalComponent('Cratis.Components:singleResult', {
|
|
54
|
-
query: 'Registered', enabled: true, queryArguments: {}, resultField: 'name',
|
|
55
|
-
})} slots={{}} />);
|
|
56
|
-
});
|
|
57
|
-
expect(await screen.findByText('Runtime mounted')).not.toBeNull();
|
|
58
|
-
expect(loaded).toHaveBeenCalledTimes(1);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_a_command_is_registered.d.ts","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_a_command_is_registered.ts"],"names":[],"mappings":""}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { clearBindings, registerCommand, registerCommands, registeredCommandNames, resolveCommand, resolveQuery } from '../bindingRegistry';
|
|
2
|
-
class RegisterInvoice {
|
|
3
|
-
}
|
|
4
|
-
class ApproveInvoice {
|
|
5
|
-
}
|
|
6
|
-
class RegisterInvoiceV2 {
|
|
7
|
-
}
|
|
8
|
-
describe('when a command is registered', () => {
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
clearBindings();
|
|
11
|
-
registerCommand('RegisterInvoice', RegisterInvoice);
|
|
12
|
-
registerCommands({ ApproveInvoice });
|
|
13
|
-
});
|
|
14
|
-
afterEach(() => clearBindings());
|
|
15
|
-
it('should resolve the class registered under the name', () => resolveCommand('RegisterInvoice').should.equal(RegisterInvoice));
|
|
16
|
-
it('should resolve every class registered in bulk', () => resolveCommand('ApproveInvoice').should.equal(ApproveInvoice));
|
|
17
|
-
it('should list every registered name in sorted order', () => registeredCommandNames().should.deep.equal(['ApproveInvoice', 'RegisterInvoice']));
|
|
18
|
-
it('should not resolve the same name as a query', () => (resolveQuery('RegisterInvoice') === undefined).should.be.true);
|
|
19
|
-
describe('and the same name is registered again', () => {
|
|
20
|
-
beforeEach(() => registerCommand('RegisterInvoice', RegisterInvoiceV2));
|
|
21
|
-
it('should resolve to the class registered last', () => resolveCommand('RegisterInvoice').should.equal(RegisterInvoiceV2));
|
|
22
|
-
it('should not list the name twice', () => registeredCommandNames().should.deep.equal(['ApproveInvoice', 'RegisterInvoice']));
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
//# sourceMappingURL=when_a_command_is_registered.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_a_command_is_registered.js","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_a_command_is_registered.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5I,MAAM,eAAe;CAAG;AACxB,MAAM,cAAc;CAAG;AACvB,MAAM,iBAAiB;CAAG;AAE1B,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC1C,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,EAAE,CAAC;QAChB,eAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;QACpD,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAEjC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IACjI,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1H,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACjJ,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAExH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACnD,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAExE,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5H,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAClI,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_a_query_is_not_registered.d.ts","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_a_query_is_not_registered.ts"],"names":[],"mappings":""}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { clearBindings, registerQuery, resolveQuery } from '../bindingRegistry';
|
|
2
|
-
class AllInvoices {
|
|
3
|
-
}
|
|
4
|
-
describe('when a query is not registered', () => {
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
clearBindings();
|
|
7
|
-
registerQuery('AllInvoices', AllInvoices);
|
|
8
|
-
});
|
|
9
|
-
afterEach(() => clearBindings());
|
|
10
|
-
it('should resolve to undefined rather than throwing', () => (resolveQuery('AllCustomers') === undefined).should.be.true);
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=when_a_query_is_not_registered.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_a_query_is_not_registered.js","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_a_query_is_not_registered.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhF,MAAM,WAAW;CAAG;AAEpB,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,EAAE,CAAC;QAChB,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAEjC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9H,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_a_query_is_registered.d.ts","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_a_query_is_registered.ts"],"names":[],"mappings":""}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { clearBindings, registerQueries, registerQuery, registeredQueryNames, resolveCommand, resolveQuery } from '../bindingRegistry';
|
|
2
|
-
class AllInvoices {
|
|
3
|
-
}
|
|
4
|
-
class InvoiceById {
|
|
5
|
-
}
|
|
6
|
-
class OverdueInvoices {
|
|
7
|
-
}
|
|
8
|
-
describe('when a query is registered', () => {
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
clearBindings();
|
|
11
|
-
registerQuery('AllInvoices', AllInvoices);
|
|
12
|
-
registerQueries({ InvoiceById, OverdueInvoices });
|
|
13
|
-
});
|
|
14
|
-
afterEach(() => clearBindings());
|
|
15
|
-
it('should resolve the class registered under the name', () => resolveQuery('AllInvoices').should.equal(AllInvoices));
|
|
16
|
-
it('should resolve every class registered in bulk', () => {
|
|
17
|
-
resolveQuery('InvoiceById').should.equal(InvoiceById);
|
|
18
|
-
resolveQuery('OverdueInvoices').should.equal(OverdueInvoices);
|
|
19
|
-
});
|
|
20
|
-
it('should list every registered name in sorted order', () => registeredQueryNames().should.deep.equal(['AllInvoices', 'InvoiceById', 'OverdueInvoices']));
|
|
21
|
-
it('should not resolve the same name as a command', () => (resolveCommand('AllInvoices') === undefined).should.be.true);
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=when_a_query_is_registered.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_a_query_is_registered.js","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_a_query_is_registered.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvI,MAAM,WAAW;CAAG;AACpB,MAAM,WAAW;CAAG;AACpB,MAAM,eAAe;CAAG;AAExB,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,EAAE,CAAC;QAChB,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC1C,eAAe,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAEjC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAEvH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,YAAY,CAAC,aAAa,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvD,YAAY,CAAC,iBAAiB,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE,CACzD,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAEjG,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5H,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_bindings_are_cleared.d.ts","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_bindings_are_cleared.ts"],"names":[],"mappings":""}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { clearBindings, registerCommand, registerQuery, registeredCommandNames, registeredQueryNames, resolveCommand, resolveQuery, } from '../bindingRegistry';
|
|
2
|
-
class AllInvoices {
|
|
3
|
-
}
|
|
4
|
-
class RegisterInvoice {
|
|
5
|
-
}
|
|
6
|
-
describe('when bindings are cleared', () => {
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
clearBindings();
|
|
9
|
-
registerQuery('AllInvoices', AllInvoices);
|
|
10
|
-
registerCommand('RegisterInvoice', RegisterInvoice);
|
|
11
|
-
clearBindings();
|
|
12
|
-
});
|
|
13
|
-
it('should no longer resolve the query', () => (resolveQuery('AllInvoices') === undefined).should.be.true);
|
|
14
|
-
it('should no longer resolve the command', () => (resolveCommand('RegisterInvoice') === undefined).should.be.true);
|
|
15
|
-
it('should list no query names', () => registeredQueryNames().should.be.empty);
|
|
16
|
-
it('should list no command names', () => registeredCommandNames().should.be.empty);
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=when_bindings_are_cleared.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_bindings_are_cleared.js","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_bindings_are_cleared.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,aAAa,EACb,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,YAAY,GACf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW;CAAG;AACpB,MAAM,eAAe;CAAG;AAExB,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACvC,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,EAAE,CAAC;QAChB,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC1C,eAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;QACpD,aAAa,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3G,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACnH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/E,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_registering_query_identities.d.ts","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_registering_query_identities.ts"],"names":[],"mappings":""}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { expect } from 'vitest';
|
|
2
|
-
import { clearBindings, registerQuery, registerQueryIdentity, registeredQueryNames, resolveExactQuery, resolveQuery, unregisterQueryIdentity } from '../bindingRegistry';
|
|
3
|
-
class First {
|
|
4
|
-
}
|
|
5
|
-
class Replacement {
|
|
6
|
-
}
|
|
7
|
-
describe('when opting into collision-aware query identities', () => {
|
|
8
|
-
beforeEach(() => clearBindings());
|
|
9
|
-
afterEach(() => clearBindings());
|
|
10
|
-
it('replaces the same source identity on hot reload', () => {
|
|
11
|
-
registerQueryIdentity('Lookup', 'source/Lookup', First);
|
|
12
|
-
registerQueryIdentity('Lookup', 'source/Lookup', Replacement);
|
|
13
|
-
expect(resolveExactQuery('Lookup')).toBe(Replacement);
|
|
14
|
-
expect(resolveQuery('Lookup')).toBe(Replacement);
|
|
15
|
-
expect(registeredQueryNames()).toEqual(['Lookup']);
|
|
16
|
-
});
|
|
17
|
-
it('counts different source identities even for the same constructor', () => {
|
|
18
|
-
registerQueryIdentity('Lookup', 'one/Lookup', First);
|
|
19
|
-
registerQueryIdentity('Lookup', 'two/Lookup', First);
|
|
20
|
-
expect(resolveExactQuery('Lookup')).toBe('ambiguous');
|
|
21
|
-
expect(resolveQuery('Lookup')).toBeUndefined();
|
|
22
|
-
expect(registeredQueryNames()).toEqual(['Lookup']);
|
|
23
|
-
unregisterQueryIdentity('Lookup', 'one/Lookup');
|
|
24
|
-
expect(resolveExactQuery('Lookup')).toBe(First);
|
|
25
|
-
expect(resolveQuery('Lookup')).toBe(First);
|
|
26
|
-
unregisterQueryIdentity('Lookup', 'two/Lookup');
|
|
27
|
-
expect(resolveExactQuery('Lookup')).toBeUndefined();
|
|
28
|
-
expect(resolveQuery('Lookup')).toBeUndefined();
|
|
29
|
-
expect(registeredQueryNames()).toEqual([]);
|
|
30
|
-
});
|
|
31
|
-
it('keeps legacy replacement authoritative while exact resolution counts mixed candidates', () => {
|
|
32
|
-
registerQuery('Lookup', First);
|
|
33
|
-
registerQuery('Lookup', Replacement);
|
|
34
|
-
expect(resolveQuery('Lookup')).toBe(Replacement);
|
|
35
|
-
expect(resolveExactQuery('Lookup')).toBe(Replacement);
|
|
36
|
-
registerQueryIdentity('Lookup', 'source/Lookup', First);
|
|
37
|
-
expect(resolveQuery('Lookup')).toBe(Replacement);
|
|
38
|
-
expect(resolveExactQuery('Lookup')).toBe('ambiguous');
|
|
39
|
-
});
|
|
40
|
-
it('bridges a unique identity to legacy consumers with exact case-sensitive names and clears both maps', () => {
|
|
41
|
-
registerQueryIdentity('Lookup', 'source/Lookup', First);
|
|
42
|
-
expect(resolveQuery('Lookup')).toBe(First);
|
|
43
|
-
expect(resolveQuery('lookup')).toBeUndefined();
|
|
44
|
-
expect(resolveExactQuery('lookup')).toBeUndefined();
|
|
45
|
-
clearBindings();
|
|
46
|
-
expect(resolveQuery('Lookup')).toBeUndefined();
|
|
47
|
-
expect(resolveExactQuery('Lookup')).toBeUndefined();
|
|
48
|
-
expect(registeredQueryNames()).toEqual([]);
|
|
49
|
-
});
|
|
50
|
-
it('lists the sorted union without duplicates, retaining legacy names after identity removal', () => {
|
|
51
|
-
registerQueryIdentity('Zed', 'source/Zed', First);
|
|
52
|
-
registerQueryIdentity('Lookup', 'source/Lookup', First);
|
|
53
|
-
registerQuery('Lookup', Replacement);
|
|
54
|
-
registerQuery('Alpha', First);
|
|
55
|
-
expect(registeredQueryNames()).toEqual(['Alpha', 'Lookup', 'Zed']);
|
|
56
|
-
unregisterQueryIdentity('Lookup', 'source/Lookup');
|
|
57
|
-
unregisterQueryIdentity('Zed', 'source/Zed');
|
|
58
|
-
unregisterQueryIdentity('Missing', 'source/Missing');
|
|
59
|
-
expect(registeredQueryNames()).toEqual(['Alpha', 'Lookup']);
|
|
60
|
-
expect(resolveQuery('Lookup')).toBe(Replacement);
|
|
61
|
-
expect(resolveExactQuery('Lookup')).toBe(Replacement);
|
|
62
|
-
});
|
|
63
|
-
it('gives an existing legacy registration precedence even over multiple identities and later replacements', () => {
|
|
64
|
-
registerQueryIdentity('Lookup', 'one/Lookup', First);
|
|
65
|
-
registerQueryIdentity('Lookup', 'two/Lookup', First);
|
|
66
|
-
registerQuery('Lookup', First);
|
|
67
|
-
registerQuery('Lookup', Replacement);
|
|
68
|
-
registerQueryIdentity('Lookup', 'one/Lookup', Replacement);
|
|
69
|
-
expect(resolveQuery('Lookup')).toBe(Replacement);
|
|
70
|
-
expect(resolveExactQuery('Lookup')).toBe('ambiguous');
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=when_registering_query_identities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when_registering_query_identities.js","sourceRoot":"","sources":["../../../../bindings/for_bindingRegistry/when_registering_query_identities.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEzK,MAAM,KAAK;CAAG;AACd,MAAM,WAAW;CAAG;AAEpB,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC/D,UAAU,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAEjC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACvD,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QACxD,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACxE,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACrD,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC7F,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oGAAoG,EAAE,GAAG,EAAE;QAC1G,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACpD,aAAa,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0FAA0F,EAAE,GAAG,EAAE;QAChG,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAClD,qBAAqB,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QACxD,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACnE,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACnD,uBAAuB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC7C,uBAAuB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACrD,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uGAAuG,EAAE,GAAG,EAAE;QAC7G,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACrD,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACrD,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|