module SvelteOnRails::Installer::Utils

def self.create_javascript_initializer

def self.create_javascript_initializer
  config_path = Rails.root.join("app", "frontend", "initializers", "svelte.js")
  if File.exist?(config_path)
    puts "Initializer already exists: file://#{config_path}"
  else
    File.write(config_path, <<~JAVASCRIPT)
      import { initializeSvelteComponents, cleanupSvelteComponents } from '@csedl/svelte-on-rails';
      const components = import.meta.glob('/javascript/components/**/*.svelte', { eager: true });
      const componentsRoot = '/javascript/components';
      // Initialize Svelte components
      initializeSvelteComponents(componentsRoot, components, true);
      // Turbo event listener for page load
      document.addEventListener('turbo:load', () => {
          initializeSvelteComponents(componentsRoot, components, true);
      });
      // Turbo event listener for cleanup before page cache
      document.addEventListener('turbo:before-cache', () => {
          cleanupSvelteComponents(false);
      });
    JAVASCRIPT
    puts "Created initializer file at file://#{config_path}"
  end
end