Resolve circular dependencies in frontend imports

We have some circular dependencies in the frontend code. This code evaluates differently depending on the order files are imported. We should resolve them and introduce a check (https://www.npmjs.com/package/circular-dependency-plugin).

https://gitlab.com/gitlab-org/gitlab-ee/commits/winh-circular-dependencies-ee (https://gitlab.com/gitlab-org/gitlab-ee/-/jobs/212248597)

ERROR in Circular dependency detected:
app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_hint.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/available_dropdown_mappings.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/dropdown_ajax_filter.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_user.js -> app/assets/javascripts/filtered_search/dropdown_ajax_filter.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/dropdown_emoji.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_emoji.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/dropdown_hint.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_hint.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/dropdown_non_user.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_non_user.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/dropdown_user.js -> app/assets/javascripts/filtered_search/dropdown_ajax_filter.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_user.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_user.js -> app/assets/javascripts/filtered_search/dropdown_ajax_filter.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_user.js -> app/assets/javascripts/filtered_search/dropdown_ajax_filter.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_user.js -> app/assets/javascripts/filtered_search/dropdown_ajax_filter.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js -> ee/app/assets/javascripts/filtered_search/visual_token_value.js -> app/assets/javascripts/filtered_search/visual_token_value.js -> app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/null_dropdown.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/null_dropdown.js

ERROR in Circular dependency detected: app/assets/javascripts/filtered_search/visual_token_value.js -> app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js -> ee/app/assets/javascripts/filtered_search/visual_token_value.js -> app/assets/javascripts/filtered_search/visual_token_value.js

ERROR in Circular dependency detected: app/assets/javascripts/ide/ide_router.js -> app/assets/javascripts/ide/stores/index.js -> app/assets/javascripts/ide/stores/actions.js -> app/assets/javascripts/ide/stores/actions/file.js -> app/assets/javascripts/ide/ide_router.js

ERROR in Circular dependency detected: app/assets/javascripts/ide/stores/actions.js -> app/assets/javascripts/ide/stores/actions/file.js -> app/assets/javascripts/ide/ide_router.js -> app/assets/javascripts/ide/stores/index.js -> app/assets/javascripts/ide/stores/actions.js

ERROR in Circular dependency detected: app/assets/javascripts/ide/stores/actions/file.js -> app/assets/javascripts/ide/ide_router.js -> app/assets/javascripts/ide/stores/index.js -> app/assets/javascripts/ide/stores/actions.js -> app/assets/javascripts/ide/stores/actions/file.js

ERROR in Circular dependency detected: app/assets/javascripts/ide/stores/actions/project.js -> app/assets/javascripts/ide/ide_router.js -> app/assets/javascripts/ide/stores/index.js -> app/assets/javascripts/ide/stores/actions.js -> app/assets/javascripts/ide/stores/actions/project.js

ERROR in Circular dependency detected: app/assets/javascripts/ide/stores/index.js -> app/assets/javascripts/ide/stores/actions.js -> app/assets/javascripts/ide/stores/actions/file.js -> app/assets/javascripts/ide/ide_router.js -> app/assets/javascripts/ide/stores/index.js

ERROR in Circular dependency detected: app/assets/javascripts/ide/stores/modules/commit/actions.js -> app/assets/javascripts/ide/ide_router.js -> app/assets/javascripts/ide/stores/index.js -> app/assets/javascripts/ide/stores/modules/commit/index.js -> app/assets/javascripts/ide/stores/modules/commit/actions.js

ERROR in Circular dependency detected: app/assets/javascripts/ide/stores/modules/commit/index.js -> app/assets/javascripts/ide/stores/modules/commit/actions.js -> app/assets/javascripts/ide/ide_router.js -> app/assets/javascripts/ide/stores/index.js -> app/assets/javascripts/ide/stores/modules/commit/index.js

ERROR in Circular dependency detected: app/assets/javascripts/image_diff/helpers/index.js -> app/assets/javascripts/image_diff/helpers/utils_helper.js -> app/assets/javascripts/image_diff/image_badge.js -> app/assets/javascripts/image_diff/helpers/index.js

ERROR in Circular dependency detected: app/assets/javascripts/image_diff/helpers/utils_helper.js -> app/assets/javascripts/image_diff/image_badge.js -> app/assets/javascripts/image_diff/helpers/index.js -> app/assets/javascripts/image_diff/helpers/utils_helper.js

ERROR in Circular dependency detected: app/assets/javascripts/image_diff/image_badge.js -> app/assets/javascripts/image_diff/helpers/index.js -> app/assets/javascripts/image_diff/helpers/utils_helper.js -> app/assets/javascripts/image_diff/image_badge.js

ERROR in Circular dependency detected: app/assets/javascripts/image_diff/image_diff.js -> app/assets/javascripts/image_diff/helpers/index.js -> app/assets/javascripts/image_diff/helpers/utils_helper.js -> app/assets/javascripts/image_diff/image_diff.js

ERROR in Circular dependency detected: app/assets/javascripts/image_diff/replaced_image_diff.js -> app/assets/javascripts/image_diff/helpers/index.js -> app/assets/javascripts/image_diff/helpers/utils_helper.js -> app/assets/javascripts/image_diff/replaced_image_diff.js

ERROR in Circular dependency detected: ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> app/assets/javascripts/filtered_search/dropdown_user.js -> app/assets/javascripts/filtered_search/dropdown_ajax_filter.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js

ERROR in Circular dependency detected: ee/app/assets/javascripts/filtered_search/dropdown_weight.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown.js -> app/assets/javascripts/filtered_search/dropdown_utils.js -> app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js -> ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js -> ee/app/assets/javascripts/filtered_search/dropdown_weight.js

ERROR in Circular dependency detected: ee/app/assets/javascripts/filtered_search/visual_token_value.js -> app/assets/javascripts/filtered_search/visual_token_value.js -> app/assets/javascripts/filtered_search/filtered_search_visual_tokens.js -> ee/app/assets/javascripts/filtered_search/visual_token_value.js

Edited by Inactive Account