Sha256: 042c98a04415fb173024a7afbb2be9029ac462b980b836c1bdb9f7fb930a4084

Contents?: true

Size: 1.61 KB

Versions: 5

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

module StimulusReflex
  class VersionMismatchError < StandardError
  end

  module VersionChecker
    def check_version!
      return if StimulusReflex.config.on_failed_sanity_checks == :ignore
      return if version == StimulusReflex::VERSION

      level = (StimulusReflex.config.on_failed_sanity_checks == :exit) ? "error" : "warn"
      reason = (level == "error") ? "failed to execute your reflex action due to" : "noticed"

      mismatch = "StimulusReflex #{reason} a version mismatch between your gem and JavaScript version. Package versions must match exactly.\n\nstimulus_reflex gem: #{StimulusReflex::VERSION}\nstimulus_reflex npm: #{npm_version}"

      StimulusReflex.config.logger.error("\n\e[31m#{mismatch}\e[0m")

      log = {
        message: mismatch,
        level: level,
        reflexId: id
      }

      event = {
        name: "stimulus-reflex:version-mismatch",
        reflexId: id,
        detail: {
          message: mismatch,
          gem: StimulusReflex::VERSION,
          npm: npm_version,
          level: level
        }
      }

      toast = {
        text: mismatch.to_s,
        destination: "https://docs.stimulusreflex.com/hello-world/setup#upgrading-package-versions-and-sanity",
        reflexId: id,
        level: level
      }

      CableReady::Channels.instance[@channel.stream_name].tap { |channel|
        channel.console_log(log)
        channel.dispatch_event(event)
        channel.stimulus_reflex_version_mismatch(toast) if Rails.env.development?
      }.broadcast

      return if level == "warn"

      raise VersionMismatchError.new(mismatch)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stimulus_reflex-3.5.3 lib/stimulus_reflex/version_checker.rb
stimulus_reflex-3.5.0.rc4 lib/stimulus_reflex/version_checker.rb
stimulus_reflex-3.5.0.rc3 lib/stimulus_reflex/version_checker.rb
stimulus_reflex-3.5.0.rc2 lib/stimulus_reflex/version_checker.rb
stimulus_reflex-3.5.0.rc1 lib/stimulus_reflex/version_checker.rb