require 'isomorfeus/core_ext/kernel' require 'isomorfeus/core_ext/object/duplicable' require 'isomorfeus/core_ext/object/deep_dup' require 'isomorfeus/core_ext/hash/deep_merge' require 'active_support/core_ext/string' require 'zeitwerk' if RUBY_ENGINE == 'opal' require 'native' require 'promise' require 'json' require 'isomorfeus/transport/version' require 'isomorfeus/transport/config' require 'isomorfeus/transport/request_agent' require 'isomorfeus/transport/client_processor' require 'isomorfeus/transport/websocket_client' require 'isomorfeus/transport' require 'lucid_channel' Isomorfeus.zeitwerk = Zeitwerk::Loader.new Isomorfeus.zeitwerk.push_dir('channels') Isomorfeus.add_client_init_class_name('Isomorfeus::Transport') else require 'base64' require 'digest' require 'bcrypt' require 'securerandom' require 'fileutils' require 'ostruct' require 'socket' require 'time' require 'brotli' require 'zlib' require 'oj' require 'rack' require 'rack/body_proxy' require 'rack/request' require 'rack/utils' require 'rackup' require 'active_support' require 'opal-activesupport' require 'opal-zeitwerk' require 'isomorfeus-asset-manager' opal_path = Gem::Specification.find_by_name('opal').full_gem_path promise_path = File.join(opal_path, 'stdlib', 'promise.rb') require promise_path require 'isomorfeus/transport/version' require 'isomorfeus/transport/response_agent' require 'isomorfeus/transport/config' require 'concurrent/atomic/atomic_fixnum' require 'concurrent/atomic/reentrant_read_write_lock' Isomorfeus.zeitwerk = Zeitwerk::Loader.new Isomorfeus.zeitwerk_lock = Concurrent::ReentrantReadWriteLock.new if Isomorfeus.development? require 'isomorfeus/transport/middlewares' require 'isomorfeus/transport/request_agent' require 'isomorfeus/transport/server_processor' require 'isomorfeus/transport/server_socket_processor' require 'isomorfeus/transport/websocket_client' require 'isomorfeus/transport' require 'isomorfeus/transport/rack_middleware' require 'isomorfeus/transport/compressor_rack' require 'isomorfeus/transport/middlewares' Isomorfeus.add_middleware(Isomorfeus::AssetManager::RackMiddleware) Isomorfeus.add_middleware(Isomorfeus::Transport::CompressorRack) Isomorfeus.add_middleware(Isomorfeus::Transport::RackMiddleware) require 'lucid_handler' require 'lucid_channel' require 'iso_opal' Opal.append_path(__dir__.untaint) unless IsoOpal.paths_include?(__dir__.untaint) %w[channels handlers server].each do |dir| path = File.expand_path(File.join('app', dir)) if Dir.exist?(path) Isomorfeus.zeitwerk.push_dir(path) end end end