module Isomorfeus

Attributes

component_cache_init_block[R]
current_user_sid[RW]
env[R]
initial_state_fetched[RW]
initialized[R]
server_side_rendering[RW]
ssr_hot_asset_url[RW]
ssr_response_status[RW]
top_component[RW]
zeitwerk[RW]
zeitwerk_lock[RW]

Public Class Methods

add_client_init_after_store_class_name(init_class_name) click to toggle source
# File lib/isomorfeus/preact/config.rb, line 32
def add_client_init_after_store_class_name(init_class_name)
  client_init_after_store_class_names << init_class_name
end
add_client_init_class_name(init_class_name) click to toggle source
# File lib/isomorfeus/preact/config.rb, line 28
def add_client_init_class_name(init_class_name)
  client_init_class_names << init_class_name
end
add_client_option(key, value = nil) click to toggle source
# File lib/isomorfeus/preact/config.rb, line 36
def add_client_option(key, value = nil)
  self.class.attr_accessor(key)
  self.send("#{key}=", value)
end
cached_component_class(class_name) click to toggle source

only used for SSR

# File lib/isomorfeus/preact/config.rb, line 47
def cached_component_class(class_name)
  return cached_component_classes[class_name] if cached_component_classes.key?(class_name)
  cached_component_classes[class_name] = "::#{class_name}".constantize
end
cached_component_classes() click to toggle source

only used for SSR

# File lib/isomorfeus/preact/config.rb, line 42
def cached_component_classes
  @cached_component_classes ||= {}
end
component_cache_init(&block) click to toggle source
# File lib/isomorfeus/preact/config.rb, line 108
def component_cache_init(&block)
  @component_cache_init_block = block
end
configuration(&block) click to toggle source
# File lib/isomorfeus/preact/config.rb, line 112
def configuration(&block)
  block.call(self)
end
development?() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 72
def development?
  @development
end
env=(env_string) click to toggle source

server side env is set in isomorfeus-asset-manager

# File lib/isomorfeus/preact/config.rb, line 65
def env=(env_string)
  @env = env_string ? env_string : 'development'
  @development = (@env == 'development') ? true : false
  @production = (@env == 'production') ? true : false
  @test = (@env == 'test') ? true : false
end
execute_init_after_store_classes() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 58
def execute_init_after_store_classes
  client_init_after_store_class_names.each do |constant|
    constant.constantize.send(:init)
  end
end
execute_init_classes() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 52
def execute_init_classes
  client_init_class_names.each do |constant|
    constant.constantize.send(:init)
  end
end
force_init!() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 19
def force_init!
  unless Isomorfeus.initial_state_fetched
    Isomorfeus.initial_state_fetched = true
    Redux::Store.preloaded_state = Isomorfeus.store.get_state
  end
  Isomorfeus.force_init_store!
  execute_init_classes
end
force_render() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 89
def force_render
  `Opal.Preact.deep_force_update(#{Isomorfeus.top_component})`
  nil
rescue Exception => e
  `console.error("force_render failed'! Error: " + #{e.message} + "! Reloading page.")`
  `location.reload()` if on_browser?
end
init() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 12
def init
  return if initialized
  @initialized = true
  Isomorfeus.init_store
  execute_init_classes
end
load_configuration(directory) click to toggle source
# File lib/isomorfeus/preact/config.rb, line 124
def load_configuration(directory)
  Dir.glob(File.join(directory, '*.rb')).sort.each do |file|
    require File.expand_path(file)
  end
end
production?() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 76
def production?
  @production
end
raise_error(error: nil, error_class: nil, message: nil, stack: nil) click to toggle source
# File lib/isomorfeus/preact/config.rb, line 133
def raise_error(error: nil, error_class: nil, message: nil, stack: nil)
  error_class = error.class if error
    
  error_class = RuntimeError unless error_class
  execution_environment = if on_browser? then 'on Browser'
                          elsif on_ssr? then 'in Server Side Rendering'
                          elsif on_server? then 'on Server'
                          else
                            'on Client'
                          end
  if error
    message = error.message
    stack = error.backtrace
  else
    error = error_class.new("Isomorfeus in #{env} #{execution_environment}:\n#{message}")
    error.set_backtrace(stack) if stack
  end

  ecn = error_class ? error_class.name : ''
  m = message ? message : ''
  s = stack ? stack : ''
  if RUBY_ENGINE == 'opal'
    `console.error(ecn, m, s)` if Isomorfeus.development?
  else
    STDERR.puts "#{ecn}: #{m}\n #{s.is_a?(Array) ? s.join("\n") : s}"
  end
  raise error
end
ssr_contexts() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 116
def ssr_contexts
  @ssr_contexts ||= {}
end
start_app!() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 84
def start_app!
  Isomorfeus.zeitwerk.setup
  Isomorfeus::TopLevel.mount!
end
test?() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 80
def test?
  @test
end
version() click to toggle source
# File lib/isomorfeus/preact/config.rb, line 120
def version
  Isomorfeus::VERSION
end