module ReactOnRails

def self.configuration

def self.configuration
  @configuration ||= Configuration.new(
    node_modules_location: nil,
    generated_assets_dirs: nil,
    # generated_assets_dirs is deprecated
    generated_assets_dir: "",
    server_bundle_js_file: "",
    prerender: false,
    auto_load_bundle: false,
    replay_console: true,
    logging_on_server: true,
    raise_on_prerender_error: Rails.env.development?,
    trace: Rails.env.development?,
    development_mode: Rails.env.development?,
    server_renderer_pool_size: DEFAULT_SERVER_RENDERER_POOL_SIZE,
    server_renderer_timeout: DEFAULT_SERVER_RENDERER_TIMEOUT_SECONDS,
    skip_display_none: nil,
    # skip_display_none is deprecated
    webpack_generated_files: %w[manifest.json],
    rendering_extension: nil,
    rendering_props_extension: nil,
    server_render_method: nil,
    build_test_command: "",
    build_production_command: "",
    random_dom_id: true,
    same_bundle_for_client_and_server: false,
    i18n_output_format: nil,
    components_subdirectory: nil,
    stores_subdirectory: nil,
    make_generated_server_bundle_the_entrypoint: false,
    defer_generated_component_packs: false,
    # Maximum time in milliseconds to wait for client-side component registration after page load.
    # If exceeded, an error will be thrown for server-side rendered components not registered on the client.
    # Set to 0 to disable the timeout and wait indefinitely for component registration.
    component_registry_timeout: DEFAULT_COMPONENT_REGISTRY_TIMEOUT,
    generated_component_packs_loading_strategy: nil,
    server_bundle_output_path: DEFAULT_SERVER_BUNDLE_OUTPUT_PATH,
    enforce_private_server_bundles: false,
    # Whether to check database connectivity before starting bin/dev.
    # Set to false to disable (saves ~1-2 seconds startup time).
    # Can also be disabled via SKIP_DATABASE_CHECK=true or bin/dev --skip-database-check
    check_database_on_dev_start: true
  )
end

def self.configure

def self.configure
  yield(configuration)
  configuration.setup_config_values
end