stimulus_reflex 3.5.0.rc3 → 3.5.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cce31cfe35841f8e96b70fe52e22ee84cf6aa287562b3ab6d1d0ee318fa109ee
4
- data.tar.gz: 33e86551718a90441a3110e7daf72c110ecf42fcd73105d788ec508d92a30ca9
3
+ metadata.gz: de1231151ed33d07ced1d833af4ed33e44f65715fe9efa2b47a609839cb02772
4
+ data.tar.gz: a14a7c5e9d642aca0d64bcd240b4d8f0eea0c4cdd48a4588f452fcf538453b44
5
5
  SHA512:
6
- metadata.gz: a56cd9fcedd2859b3d9b828dbc0fc91c59e9b773ddb983a22ce23709bc443ab4cbd25270bfda366a4594767f08f9964af4fd30475307889eb6ab10ad187828f3
7
- data.tar.gz: a5f3a462fe156023852d2db3911040436034c3fe54e3716aeecad1fcf2aa0ef86484f04236f20fa75ae149a3530dad23d8935d71a8dd817da43084ce2d895c8a
6
+ metadata.gz: be8a19b025cb8d5b5ae75430b60386f9e2e3e0eb68e6549567aa6e2af99960bd659e51b2f9ba66d8daf324ce2ac7b1230e8efd1f3b52f69ecb7ecf6e49b9d077
7
+ data.tar.gz: b0eed2ce16618c6db978cafb7d12e4550a860c48343c7fd885fa68efe53bbe37c61f0d53755bbb3ff7715f536c5b131f2bdd0c68a782d5f67c990540dc6dd2f8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stimulus_reflex (3.5.0.rc3)
4
+ stimulus_reflex (3.5.0.rc4)
5
5
  actioncable (>= 5.2, < 8)
6
6
  actionpack (>= 5.2, < 8)
7
7
  actionview (>= 5.2, < 8)
@@ -123,15 +123,15 @@ GEM
123
123
  net-smtp (0.3.3)
124
124
  net-protocol
125
125
  nio4r (2.5.8)
126
- nokogiri (1.15.3-x86_64-darwin)
126
+ nokogiri (1.16.2-x86_64-darwin)
127
127
  racc (~> 1.4)
128
- nokogiri (1.15.3-x86_64-linux)
128
+ nokogiri (1.16.2-x86_64-linux)
129
129
  racc (~> 1.4)
130
130
  parallel (1.22.1)
131
131
  parser (3.2.1.0)
132
132
  ast (~> 2.4.1)
133
- racc (1.7.1)
134
- rack (2.2.7)
133
+ racc (1.7.3)
134
+ rack (2.2.8.1)
135
135
  rack-test (2.1.0)
136
136
  rack (>= 1.3)
137
137
  rails (7.0.4.2)
@@ -204,6 +204,7 @@ GEM
204
204
  PLATFORMS
205
205
  x86_64-darwin-19
206
206
  x86_64-darwin-22
207
+ x86_64-darwin-23
207
208
  x86_64-linux
208
209
 
209
210
  DEPENDENCIES
@@ -945,7 +945,7 @@ const extractDataAttributes = element => {
945
945
 
946
946
  var name = "stimulus_reflex";
947
947
 
948
- var version = "3.5.0-rc3";
948
+ var version = "3.5.0-rc4";
949
949
 
950
950
  var description = "Build reactive applications with the Rails tooling you already know and love.";
951
951
 
@@ -1260,7 +1260,7 @@ const findControllerByReflexName = (reflexName, controllers) => {
1260
1260
  const identifier = reflexNameToControllerIdentifier(extractReflexName(reflexName));
1261
1261
  return identifier === controller.identifier;
1262
1262
  }));
1263
- return controller || controllers[0];
1263
+ return controller;
1264
1264
  };
1265
1265
 
1266
1266
  const scanForReflexes = debounce((() => {
@@ -1281,7 +1281,8 @@ const scanForReflexesOnElement = (element, controller = null) => {
1281
1281
  const controllerName = controller ? controller.identifier : "stimulus-reflex";
1282
1282
  actions.push(`${reflexName.split("->")[0]}->${controllerName}#__perform`);
1283
1283
  const parentControllerElement = element.closest(`[data-controller~=${controllerName}]`);
1284
- if (!parentControllerElement) {
1284
+ const elementPreviouslyHadStimulusReflexController = element === parentControllerElement && controllerName === "stimulus-reflex";
1285
+ if (!parentControllerElement || elementPreviouslyHadStimulusReflexController) {
1285
1286
  controllers.push(controllerName);
1286
1287
  }
1287
1288
  }));
@@ -1440,6 +1441,7 @@ document.addEventListener("readystatechange", (() => {
1440
1441
 
1441
1442
  var StimulusReflex = Object.freeze({
1442
1443
  __proto__: null,
1444
+ StimulusReflexController: StimulusReflexController,
1443
1445
  initialize: initialize,
1444
1446
  reflexes: reflexes,
1445
1447
  register: register,
@@ -1467,4 +1469,4 @@ const global = {
1467
1469
 
1468
1470
  window.StimulusReflex = global;
1469
1471
 
1470
- export { global as default, initialize, reflexes, register, scanForReflexes, scanForReflexesOnElement, useReflex };
1472
+ export { StimulusReflexController, global as default, initialize, reflexes, register, scanForReflexes, scanForReflexesOnElement, useReflex };
@@ -869,7 +869,7 @@
869
869
  return attrs;
870
870
  };
871
871
  var name = "stimulus_reflex";
872
- var version = "3.5.0-rc3";
872
+ var version = "3.5.0-rc4";
873
873
  var description = "Build reactive applications with the Rails tooling you already know and love.";
874
874
  var keywords = [ "ruby", "rails", "websockets", "actioncable", "turbolinks", "reactive", "cable", "ujs", "ssr", "stimulus", "reflex", "stimulus_reflex", "dom", "morphdom" ];
875
875
  var homepage = "https://docs.stimulusreflex.com";
@@ -1152,7 +1152,7 @@
1152
1152
  const identifier = reflexNameToControllerIdentifier(extractReflexName(reflexName));
1153
1153
  return identifier === controller.identifier;
1154
1154
  }));
1155
- return controller || controllers[0];
1155
+ return controller;
1156
1156
  };
1157
1157
  const scanForReflexes = debounce((() => {
1158
1158
  const reflexElements = document.querySelectorAll(`[${Schema.reflex}]`);
@@ -1171,7 +1171,8 @@
1171
1171
  const controllerName = controller ? controller.identifier : "stimulus-reflex";
1172
1172
  actions.push(`${reflexName.split("->")[0]}->${controllerName}#__perform`);
1173
1173
  const parentControllerElement = element.closest(`[data-controller~=${controllerName}]`);
1174
- if (!parentControllerElement) {
1174
+ const elementPreviouslyHadStimulusReflexController = element === parentControllerElement && controllerName === "stimulus-reflex";
1175
+ if (!parentControllerElement || elementPreviouslyHadStimulusReflexController) {
1175
1176
  controllers.push(controllerName);
1176
1177
  }
1177
1178
  }));
@@ -1318,6 +1319,7 @@
1318
1319
  }));
1319
1320
  var StimulusReflex = Object.freeze({
1320
1321
  __proto__: null,
1322
+ StimulusReflexController: StimulusReflexController,
1321
1323
  initialize: initialize,
1322
1324
  reflexes: reflexes,
1323
1325
  register: register,
@@ -1342,6 +1344,7 @@
1342
1344
  }
1343
1345
  };
1344
1346
  window.StimulusReflex = global;
1347
+ exports.StimulusReflexController = StimulusReflexController;
1345
1348
  exports.default = global;
1346
1349
  exports.initialize = initialize;
1347
1350
  exports.reflexes = reflexes;
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class StimulusReflex::Channel < StimulusReflex.configuration.parent_channel.constantize
4
- attr_reader :reflex_data
5
-
6
4
  def stream_name
7
5
  [params[:channel], connection.connection_identifier].reject(&:blank?).join(":")
8
6
  end
@@ -13,76 +11,74 @@ class StimulusReflex::Channel < StimulusReflex.configuration.parent_channel.cons
13
11
  end
14
12
 
15
13
  def receive(data)
16
- @reflex_data = StimulusReflex::ReflexData.new(data)
17
14
  begin
18
- begin
19
- reflex = StimulusReflex::ReflexFactory.create_reflex_from_data(self, @reflex_data)
20
- delegate_call_to_reflex reflex
21
- rescue => exception
22
- error = exception_with_backtrace(exception)
23
- error_message = "\e[31mReflex #{reflex_data.target} failed: #{error[:message]} [#{reflex_data.url}]\e[0m\n#{error[:stack]}"
15
+ reflex = StimulusReflex::ReflexFactory.new(self, data).call
16
+ delegate_call_to_reflex reflex
17
+ rescue => exception
18
+ error = exception_with_backtrace(exception)
24
19
 
25
- if reflex
26
- reflex.rescue_with_handler(exception)
27
- reflex.logger&.error error_message
28
- reflex.broadcast_error data: data, error: "#{exception} #{exception.backtrace.first.split(":in ")[0] if Rails.env.development?}"
29
- else
30
- unless exception.is_a?(StimulusReflex::VersionMismatchError)
31
- StimulusReflex.config.logger.error error_message
32
- end
20
+ if reflex
21
+ error_message = "\e[31mReflex #{reflex.data.target} failed: #{error[:message]} [#{reflex.url}]\e[0m\n#{error[:stack]}"
22
+ reflex.rescue_with_handler(exception)
23
+ reflex.logger&.error error_message
24
+ reflex.broadcast_error data: data, error: "#{exception} #{exception.backtrace.first.split(":in ")[0] if Rails.env.development?}"
25
+ else
26
+ error_message = "\e[31mReflex failed: #{error[:message]} \e[0m\n#{error[:stack]}"
27
+ unless exception.is_a?(StimulusReflex::VersionMismatchError)
28
+ StimulusReflex.config.logger.error error_message
29
+ end
33
30
 
34
- if error_message.to_s.include? "No route matches"
35
- initializer_path = Rails.root.join("config", "initializers", "stimulus_reflex.rb")
31
+ if error_message.to_s.include? "No route matches"
32
+ initializer_path = Rails.root.join("config", "initializers", "stimulus_reflex.rb")
36
33
 
37
- StimulusReflex.config.logger.warn <<~NOTE
38
- \e[33mNOTE: StimulusReflex failed to locate a matching route and could not re-render the page.
34
+ StimulusReflex.config.logger.warn <<~NOTE
35
+ \e[33mNOTE: StimulusReflex failed to locate a matching route and could not re-render the page.
39
36
 
40
- If your app uses Rack middleware to rewrite part of the request path, you must enable those middleware modules in StimulusReflex.
41
- The StimulusReflex initializer should be located at #{initializer_path}, or you can generate it with:
37
+ If your app uses Rack middleware to rewrite part of the request path, you must enable those middleware modules in StimulusReflex.
38
+ The StimulusReflex initializer should be located at #{initializer_path}, or you can generate it with:
42
39
 
43
- $ bundle exec rails generate stimulus_reflex:config
40
+ $ bundle exec rails generate stimulus_reflex:config
44
41
 
45
- Configure any required middleware:
42
+ Configure any required middleware:
46
43
 
47
- StimulusReflex.configure do |config|
48
- config.middleware.use FirstRackMiddleware
49
- config.middleware.use SecondRackMiddleware
50
- end\e[0m
44
+ StimulusReflex.configure do |config|
45
+ config.middleware.use FirstRackMiddleware
46
+ config.middleware.use SecondRackMiddleware
47
+ end\e[0m
51
48
 
52
- NOTE
53
- end
49
+ NOTE
54
50
  end
55
- return
56
51
  end
52
+ return
53
+ end
57
54
 
58
- if reflex.halted?
59
- reflex.broadcast_halt data: data
60
- elsif reflex.forbidden?
61
- reflex.broadcast_forbid data: data
62
- else
63
- begin
64
- reflex.broadcast(reflex_data.selectors, data)
65
- rescue => exception
66
- reflex.rescue_with_handler(exception)
67
- error = exception_with_backtrace(exception)
68
- reflex.broadcast_error data: data, error: "#{exception} #{exception.backtrace.first.split(":in ")[0] if Rails.env.development?}"
69
- reflex.logger&.error "\e[31mReflex failed to re-render: #{error[:message]} [#{reflex_data.url}]\e[0m\n#{error[:stack]}"
70
- end
71
- end
72
- ensure
73
- if reflex
74
- commit_session(reflex)
75
- report_failed_basic_auth(reflex) if reflex.controller?
76
- reflex.logger&.log_all_operations
55
+ if reflex.halted?
56
+ reflex.broadcast_halt data: data
57
+ elsif reflex.forbidden?
58
+ reflex.broadcast_forbid data: data
59
+ else
60
+ begin
61
+ reflex.broadcast(reflex.selectors, data)
62
+ rescue => exception
63
+ reflex.rescue_with_handler(exception)
64
+ error = exception_with_backtrace(exception)
65
+ reflex.broadcast_error data: data, error: "#{exception} #{exception.backtrace.first.split(":in ")[0] if Rails.env.development?}"
66
+ reflex.logger&.error "\e[31mReflex failed to re-render: #{error[:message]} [#{reflex.url}]\e[0m\n#{error[:stack]}"
77
67
  end
78
68
  end
69
+ ensure
70
+ if reflex
71
+ commit_session(reflex)
72
+ report_failed_basic_auth(reflex) if reflex.controller?
73
+ reflex.logger&.log_all_operations
74
+ end
79
75
  end
80
76
 
81
77
  private
82
78
 
83
79
  def delegate_call_to_reflex(reflex)
84
- method_name = reflex_data.method_name
85
- arguments = reflex_data.arguments
80
+ method_name = reflex.method_name
81
+ arguments = reflex.data.arguments
86
82
  method = reflex.method(method_name)
87
83
 
88
84
  policy = StimulusReflex::ReflexMethodInvocationPolicy.new(method, arguments)
data/lib/install/yarn.rb CHANGED
@@ -13,7 +13,7 @@ add = package_list.exist? ? package_list.readlines.map(&:chomp) : []
13
13
  dev = dev_package_list.exist? ? dev_package_list.readlines.map(&:chomp) : []
14
14
  drop = drop_package_list.exist? ? drop_package_list.readlines.map(&:chomp) : []
15
15
 
16
- json = JSON.parse(package_json.read)
16
+ json = JSON.parse(package_json_path.read)
17
17
 
18
18
  if add.present? || dev.present? || drop.present?
19
19
 
@@ -3,20 +3,6 @@
3
3
  require "stimulus_reflex/cable_readiness"
4
4
  require "stimulus_reflex/version_checker"
5
5
 
6
- # TODO remove xpath_controller and xpath_element for v4
7
- ClientAttributes = Struct.new(
8
- :id,
9
- :tab_id,
10
- :reflex_controller,
11
- :xpath_controller,
12
- :xpath_element,
13
- :permanent_attribute_name,
14
- :version,
15
- :npm_version,
16
- :suppress_logging,
17
- keyword_init: true
18
- )
19
-
20
6
  class StimulusReflex::Reflex
21
7
  prepend StimulusReflex::CableReadiness
22
8
  include StimulusReflex::VersionChecker
@@ -26,32 +12,27 @@ class StimulusReflex::Reflex
26
12
  include CableReady::Identifiable
27
13
 
28
14
  attr_accessor :payload, :headers
29
- attr_reader :channel, :url, :element, :selectors, :method_name, :broadcaster, :client_attributes, :logger
30
-
31
- alias_method :action_name, :method_name # for compatibility with controller libraries like Pundit that expect an action name
15
+ attr_reader :channel, :reflex_data, :broadcaster
32
16
 
33
17
  delegate :connection, :stream_name, to: :channel
34
18
  delegate :controller_class, :flash, :session, to: :request
35
19
  delegate :broadcast, :broadcast_halt, :broadcast_forbid, :broadcast_error, to: :broadcaster
20
+
36
21
  # TODO remove xpath_controller and xpath_element for v4
37
- delegate :id, :tab_id, :reflex_controller, :xpath_controller, :xpath_element, :permanent_attribute_name, :version, :npm_version, :suppress_logging, to: :client_attributes
22
+ delegate :url, :element, :selectors, :method_name, :id, :tab_id, :reflex_controller, :xpath_controller, :xpath_element, :permanent_attribute_name, :version, :npm_version, :suppress_logging, to: :reflex_data
23
+ # END TODO: remove
38
24
 
39
- def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, params: {}, client_attributes: {})
25
+ alias_method :action_name, :method_name # for compatibility with controller libraries like Pundit that expect an action name
26
+ alias_method :data, :reflex_data
27
+
28
+ def initialize(channel, reflex_data:)
40
29
  @channel = channel
41
- @url = url
42
- @element = element
43
- @selectors = selectors
44
- @method_name = method_name
45
- @params = params
46
- @client_attributes = ClientAttributes.new(client_attributes)
30
+ @reflex_data = reflex_data
47
31
  @broadcaster = StimulusReflex::PageBroadcaster.new(self)
48
- @logger = suppress_logging ? nil : StimulusReflex::Logger.new(self)
49
32
  @payload = {}
50
33
  @headers = {}
51
34
 
52
35
  check_version!
53
-
54
- self.params
55
36
  end
56
37
 
57
38
  # TODO: remove this for v4
@@ -61,6 +42,10 @@ class StimulusReflex::Reflex
61
42
  end
62
43
  # END TODO: remove
63
44
 
45
+ def logger
46
+ @logger ||= StimulusReflex::Logger.new(self) unless suppress_logging
47
+ end
48
+
64
49
  def request
65
50
  @request ||= begin
66
51
  uri = URI.parse(url)
@@ -91,7 +76,7 @@ class StimulusReflex::Reflex
91
76
  req = ActionDispatch::Request.new(env)
92
77
 
93
78
  # fetch path params (controller, action, ...) and apply them
94
- request_params = StimulusReflex::RequestParameters.new(params: @params, req: req, url: url)
79
+ request_params = StimulusReflex::RequestParameters.new(params: reflex_data.params, req: req, url: url)
95
80
  req = request_params.apply!
96
81
 
97
82
  req
@@ -4,7 +4,7 @@ class StimulusReflex::ReflexData
4
4
  attr_reader :data
5
5
 
6
6
  def initialize(data)
7
- @data = data
7
+ @data = data.deep_merge(data.deep_transform_keys { |k| k.to_s.underscore }).with_indifferent_access
8
8
  end
9
9
 
10
10
  def reflex_name
@@ -14,13 +14,13 @@ class StimulusReflex::ReflexData
14
14
  end
15
15
 
16
16
  def selectors
17
- selectors = (data["selectors"] || []).select(&:present?)
18
- selectors = data["selectors"] = ["body"] if selectors.blank?
17
+ selectors = (data[:selectors] || []).select(&:present?)
18
+ selectors = data[:selectors] = ["body"] if selectors.blank?
19
19
  selectors
20
20
  end
21
21
 
22
22
  def target
23
- data["target"].to_s
23
+ data[:target].to_s
24
24
  end
25
25
 
26
26
  def method_name
@@ -28,11 +28,11 @@ class StimulusReflex::ReflexData
28
28
  end
29
29
 
30
30
  def arguments
31
- (data["args"] || []).map { |arg| object_with_indifferent_access arg } || []
31
+ (data[:args] || []).map { |arg| object_with_indifferent_access arg } || []
32
32
  end
33
33
 
34
34
  def url
35
- data["url"].to_s
35
+ data[:url].to_s
36
36
  end
37
37
 
38
38
  def element
@@ -40,15 +40,15 @@ class StimulusReflex::ReflexData
40
40
  end
41
41
 
42
42
  def permanent_attribute_name
43
- data["permanentAttributeName"]
43
+ data[:permanent_attribute_name]
44
44
  end
45
45
 
46
46
  def suppress_logging
47
- data["suppressLogging"]
47
+ data[:suppress_logging]
48
48
  end
49
49
 
50
50
  def form_data
51
- Rack::Utils.parse_nested_query(data["formData"])
51
+ Rack::Utils.parse_nested_query(data[:form_data])
52
52
  end
53
53
 
54
54
  def params
@@ -56,7 +56,7 @@ class StimulusReflex::ReflexData
56
56
  end
57
57
 
58
58
  def form_params
59
- form_data.deep_merge(data["params"] || {})
59
+ form_data.deep_merge(data[:params] || {})
60
60
  end
61
61
 
62
62
  def url_params
@@ -64,33 +64,33 @@ class StimulusReflex::ReflexData
64
64
  end
65
65
 
66
66
  def id
67
- data["id"]
67
+ data[:id]
68
68
  end
69
69
 
70
70
  def tab_id
71
- data["tabId"]
71
+ data[:tab_id]
72
72
  end
73
73
 
74
74
  # TODO: remove this in v4
75
75
  def xpath_controller
76
- data["xpathController"]
76
+ data[:xpath_controller]
77
77
  end
78
78
 
79
79
  def xpath_element
80
- data["xpathElement"]
80
+ data[:xpath_element]
81
81
  end
82
82
  # END TODO remove
83
83
 
84
84
  def reflex_controller
85
- data["reflexController"]
85
+ data[:reflex_controller]
86
86
  end
87
87
 
88
88
  def npm_version
89
- data["version"].to_s
89
+ data[:version].to_s
90
90
  end
91
91
 
92
92
  def version
93
- data["version"].to_s.gsub("-pre", ".pre").gsub("-rc", ".rc")
93
+ npm_version.gsub("-pre", ".pre").gsub("-rc", ".rc")
94
94
  end
95
95
 
96
96
  private
@@ -1,36 +1,59 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class StimulusReflex::ReflexFactory
4
- class << self
5
- attr_reader :reflex_data
6
-
7
- def create_reflex_from_data(channel, reflex_data)
8
- @reflex_data = reflex_data
9
- reflex_class.new(channel,
10
- url: reflex_data.url,
11
- element: reflex_data.element,
12
- selectors: reflex_data.selectors,
13
- method_name: reflex_data.method_name,
14
- params: reflex_data.params,
15
- client_attributes: {
16
- id: reflex_data.id,
17
- tab_id: reflex_data.tab_id,
18
- xpath_controller: reflex_data.xpath_controller,
19
- xpath_element: reflex_data.xpath_element,
20
- reflex_controller: reflex_data.reflex_controller,
21
- permanent_attribute_name: reflex_data.permanent_attribute_name,
22
- suppress_logging: reflex_data.suppress_logging,
23
- version: reflex_data.version,
24
- npm_version: reflex_data.npm_version
25
- })
4
+ attr_reader :channel, :data
5
+
6
+ delegate :reflex_name, :method_name, to: :data
7
+
8
+ def initialize(channel, data)
9
+ @channel = channel
10
+ @data = StimulusReflex::ReflexData.new(data)
11
+ end
12
+
13
+ def call
14
+ verify_method_name!
15
+ reflex_class.new(channel, reflex_data: data)
16
+ end
17
+
18
+ private
19
+
20
+ def verify_method_name!
21
+ return if default_reflex?
22
+
23
+ argument_error = ArgumentError.new("Reflex method '#{method_name}' is not defined on class '#{reflex_name}' or on any of its ancestors")
24
+
25
+ if reflex_method.nil?
26
+ raise argument_error
26
27
  end
27
28
 
28
- def reflex_class
29
- reflex_data.reflex_name.constantize.tap { |klass| raise ArgumentError.new("#{reflex_name} is not a StimulusReflex::Reflex") unless is_reflex?(klass) }
29
+ if !safe_ancestors.include?(reflex_method.owner)
30
+ raise argument_error
30
31
  end
32
+ end
31
33
 
32
- def is_reflex?(klass)
33
- klass.ancestors.include? StimulusReflex::Reflex
34
+ def reflex_class
35
+ @reflex_class ||= reflex_name.constantize.tap do |klass|
36
+ unless klass.ancestors.include?(StimulusReflex::Reflex)
37
+ raise ArgumentError.new("#{reflex_name} is not a StimulusReflex::Reflex")
38
+ end
34
39
  end
35
40
  end
41
+
42
+ def reflex_method
43
+ if reflex_class.public_instance_methods.include?(method_name.to_sym)
44
+ reflex_class.public_instance_method(method_name)
45
+ end
46
+ end
47
+
48
+ def default_reflex?
49
+ method_name == "default_reflex" && reflex_method.owner == ::StimulusReflex::Reflex
50
+ end
51
+
52
+ def safe_ancestors
53
+ # We want to include every class and module up to the `StimulusReflex::Reflex` class,
54
+ # but not the StimulusReflex::Reflex itself
55
+ reflex_class_index = reflex_class.ancestors.index(StimulusReflex::Reflex) - 1
56
+
57
+ reflex_class.ancestors.to(reflex_class_index)
58
+ end
36
59
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StimulusReflex
4
- VERSION = "3.5.0.rc3"
4
+ VERSION = "3.5.0.rc4"
5
5
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stimulus_reflex",
3
- "version": "3.5.0-rc3",
3
+ "version": "3.5.0-rc4",
4
4
  "description": "Build reactive applications with the Rails tooling you already know and love.",
5
5
  "keywords": [
6
6
  "ruby",
@@ -37,7 +37,7 @@ Gem::Specification.new do |gem|
37
37
  "[A-Z]*"
38
38
  ]
39
39
 
40
- gem.required_ruby_version = ">= 2.7.0"
40
+ gem.required_ruby_version = ">= 3.0.0"
41
41
 
42
42
  rails_version = [">= 5.2", "< 8"]
43
43
  gem.add_dependency "actioncable", *rails_version
data/yarn.lock CHANGED
@@ -200,120 +200,120 @@
200
200
  "@docsearch/css" "3.4.0"
201
201
  algoliasearch "^4.0.0"
202
202
 
203
- "@esbuild/android-arm64@0.17.19":
204
- version "0.17.19"
205
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
206
- integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==
207
-
208
- "@esbuild/android-arm@0.17.19":
209
- version "0.17.19"
210
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d"
211
- integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==
212
-
213
- "@esbuild/android-x64@0.17.19":
214
- version "0.17.19"
215
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1"
216
- integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==
217
-
218
- "@esbuild/darwin-arm64@0.17.19":
219
- version "0.17.19"
220
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276"
221
- integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==
222
-
223
- "@esbuild/darwin-x64@0.17.19":
224
- version "0.17.19"
225
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb"
226
- integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==
227
-
228
- "@esbuild/freebsd-arm64@0.17.19":
229
- version "0.17.19"
230
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2"
231
- integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==
232
-
233
- "@esbuild/freebsd-x64@0.17.19":
234
- version "0.17.19"
235
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4"
236
- integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==
237
-
238
- "@esbuild/linux-arm64@0.17.19":
239
- version "0.17.19"
240
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb"
241
- integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==
242
-
243
- "@esbuild/linux-arm@0.17.19":
244
- version "0.17.19"
245
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a"
246
- integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==
247
-
248
- "@esbuild/linux-ia32@0.17.19":
249
- version "0.17.19"
250
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a"
251
- integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==
203
+ "@esbuild/android-arm64@0.18.20":
204
+ version "0.18.20"
205
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
206
+ integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
207
+
208
+ "@esbuild/android-arm@0.18.20":
209
+ version "0.18.20"
210
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
211
+ integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
212
+
213
+ "@esbuild/android-x64@0.18.20":
214
+ version "0.18.20"
215
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
216
+ integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
217
+
218
+ "@esbuild/darwin-arm64@0.18.20":
219
+ version "0.18.20"
220
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
221
+ integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
222
+
223
+ "@esbuild/darwin-x64@0.18.20":
224
+ version "0.18.20"
225
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
226
+ integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
227
+
228
+ "@esbuild/freebsd-arm64@0.18.20":
229
+ version "0.18.20"
230
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
231
+ integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
232
+
233
+ "@esbuild/freebsd-x64@0.18.20":
234
+ version "0.18.20"
235
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
236
+ integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
237
+
238
+ "@esbuild/linux-arm64@0.18.20":
239
+ version "0.18.20"
240
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
241
+ integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
242
+
243
+ "@esbuild/linux-arm@0.18.20":
244
+ version "0.18.20"
245
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
246
+ integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
247
+
248
+ "@esbuild/linux-ia32@0.18.20":
249
+ version "0.18.20"
250
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
251
+ integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
252
252
 
253
253
  "@esbuild/linux-loong64@0.14.54":
254
254
  version "0.14.54"
255
255
  resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
256
256
  integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
257
257
 
258
- "@esbuild/linux-loong64@0.17.19":
259
- version "0.17.19"
260
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72"
261
- integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==
262
-
263
- "@esbuild/linux-mips64el@0.17.19":
264
- version "0.17.19"
265
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289"
266
- integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==
267
-
268
- "@esbuild/linux-ppc64@0.17.19":
269
- version "0.17.19"
270
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7"
271
- integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==
272
-
273
- "@esbuild/linux-riscv64@0.17.19":
274
- version "0.17.19"
275
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09"
276
- integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==
277
-
278
- "@esbuild/linux-s390x@0.17.19":
279
- version "0.17.19"
280
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829"
281
- integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==
282
-
283
- "@esbuild/linux-x64@0.17.19":
284
- version "0.17.19"
285
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4"
286
- integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==
287
-
288
- "@esbuild/netbsd-x64@0.17.19":
289
- version "0.17.19"
290
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462"
291
- integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==
292
-
293
- "@esbuild/openbsd-x64@0.17.19":
294
- version "0.17.19"
295
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691"
296
- integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==
297
-
298
- "@esbuild/sunos-x64@0.17.19":
299
- version "0.17.19"
300
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273"
301
- integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==
302
-
303
- "@esbuild/win32-arm64@0.17.19":
304
- version "0.17.19"
305
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f"
306
- integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==
307
-
308
- "@esbuild/win32-ia32@0.17.19":
309
- version "0.17.19"
310
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03"
311
- integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==
312
-
313
- "@esbuild/win32-x64@0.17.19":
314
- version "0.17.19"
315
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
316
- integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
258
+ "@esbuild/linux-loong64@0.18.20":
259
+ version "0.18.20"
260
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
261
+ integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
262
+
263
+ "@esbuild/linux-mips64el@0.18.20":
264
+ version "0.18.20"
265
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
266
+ integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
267
+
268
+ "@esbuild/linux-ppc64@0.18.20":
269
+ version "0.18.20"
270
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
271
+ integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
272
+
273
+ "@esbuild/linux-riscv64@0.18.20":
274
+ version "0.18.20"
275
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
276
+ integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
277
+
278
+ "@esbuild/linux-s390x@0.18.20":
279
+ version "0.18.20"
280
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
281
+ integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
282
+
283
+ "@esbuild/linux-x64@0.18.20":
284
+ version "0.18.20"
285
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
286
+ integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
287
+
288
+ "@esbuild/netbsd-x64@0.18.20":
289
+ version "0.18.20"
290
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
291
+ integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
292
+
293
+ "@esbuild/openbsd-x64@0.18.20":
294
+ version "0.18.20"
295
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
296
+ integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
297
+
298
+ "@esbuild/sunos-x64@0.18.20":
299
+ version "0.18.20"
300
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
301
+ integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
302
+
303
+ "@esbuild/win32-arm64@0.18.20":
304
+ version "0.18.20"
305
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
306
+ integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
307
+
308
+ "@esbuild/win32-ia32@0.18.20":
309
+ version "0.18.20"
310
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
311
+ integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
312
+
313
+ "@esbuild/win32-x64@0.18.20":
314
+ version "0.18.20"
315
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
316
+ integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
317
317
 
318
318
  "@esm-bundle/chai@^4.3.4-fix.0":
319
319
  version "4.3.4-fix.0"
@@ -2128,33 +2128,33 @@ esbuild-windows-arm64@0.14.54:
2128
2128
  esbuild-windows-64 "0.14.54"
2129
2129
  esbuild-windows-arm64 "0.14.54"
2130
2130
 
2131
- esbuild@^0.17.5:
2132
- version "0.17.19"
2133
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955"
2134
- integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==
2131
+ esbuild@^0.18.10:
2132
+ version "0.18.20"
2133
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
2134
+ integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
2135
2135
  optionalDependencies:
2136
- "@esbuild/android-arm" "0.17.19"
2137
- "@esbuild/android-arm64" "0.17.19"
2138
- "@esbuild/android-x64" "0.17.19"
2139
- "@esbuild/darwin-arm64" "0.17.19"
2140
- "@esbuild/darwin-x64" "0.17.19"
2141
- "@esbuild/freebsd-arm64" "0.17.19"
2142
- "@esbuild/freebsd-x64" "0.17.19"
2143
- "@esbuild/linux-arm" "0.17.19"
2144
- "@esbuild/linux-arm64" "0.17.19"
2145
- "@esbuild/linux-ia32" "0.17.19"
2146
- "@esbuild/linux-loong64" "0.17.19"
2147
- "@esbuild/linux-mips64el" "0.17.19"
2148
- "@esbuild/linux-ppc64" "0.17.19"
2149
- "@esbuild/linux-riscv64" "0.17.19"
2150
- "@esbuild/linux-s390x" "0.17.19"
2151
- "@esbuild/linux-x64" "0.17.19"
2152
- "@esbuild/netbsd-x64" "0.17.19"
2153
- "@esbuild/openbsd-x64" "0.17.19"
2154
- "@esbuild/sunos-x64" "0.17.19"
2155
- "@esbuild/win32-arm64" "0.17.19"
2156
- "@esbuild/win32-ia32" "0.17.19"
2157
- "@esbuild/win32-x64" "0.17.19"
2136
+ "@esbuild/android-arm" "0.18.20"
2137
+ "@esbuild/android-arm64" "0.18.20"
2138
+ "@esbuild/android-x64" "0.18.20"
2139
+ "@esbuild/darwin-arm64" "0.18.20"
2140
+ "@esbuild/darwin-x64" "0.18.20"
2141
+ "@esbuild/freebsd-arm64" "0.18.20"
2142
+ "@esbuild/freebsd-x64" "0.18.20"
2143
+ "@esbuild/linux-arm" "0.18.20"
2144
+ "@esbuild/linux-arm64" "0.18.20"
2145
+ "@esbuild/linux-ia32" "0.18.20"
2146
+ "@esbuild/linux-loong64" "0.18.20"
2147
+ "@esbuild/linux-mips64el" "0.18.20"
2148
+ "@esbuild/linux-ppc64" "0.18.20"
2149
+ "@esbuild/linux-riscv64" "0.18.20"
2150
+ "@esbuild/linux-s390x" "0.18.20"
2151
+ "@esbuild/linux-x64" "0.18.20"
2152
+ "@esbuild/netbsd-x64" "0.18.20"
2153
+ "@esbuild/openbsd-x64" "0.18.20"
2154
+ "@esbuild/sunos-x64" "0.18.20"
2155
+ "@esbuild/win32-arm64" "0.18.20"
2156
+ "@esbuild/win32-ia32" "0.18.20"
2157
+ "@esbuild/win32-x64" "0.18.20"
2158
2158
 
2159
2159
  escape-html@^1.0.3:
2160
2160
  version "1.0.3"
@@ -2839,9 +2839,9 @@ inquirer@^7.0.0:
2839
2839
  through "^2.3.6"
2840
2840
 
2841
2841
  ip@^1.1.5:
2842
- version "1.1.8"
2843
- resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48"
2844
- integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==
2842
+ version "1.1.9"
2843
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396"
2844
+ integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==
2845
2845
 
2846
2846
  is-alphabetical@^1.0.0:
2847
2847
  version "1.0.4"
@@ -3591,6 +3591,11 @@ nanoid@^3.3.6:
3591
3591
  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
3592
3592
  integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
3593
3593
 
3594
+ nanoid@^3.3.7:
3595
+ version "3.3.7"
3596
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
3597
+ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
3598
+
3594
3599
  natural-compare@^1.4.0:
3595
3600
  version "1.4.0"
3596
3601
  resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -3937,7 +3942,7 @@ postcss@^7.0.0:
3937
3942
  picocolors "^0.2.1"
3938
3943
  source-map "^0.6.1"
3939
3944
 
3940
- postcss@^8.1.10, postcss@^8.4.23:
3945
+ postcss@^8.1.10:
3941
3946
  version "8.4.23"
3942
3947
  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab"
3943
3948
  integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==
@@ -3946,6 +3951,15 @@ postcss@^8.1.10, postcss@^8.4.23:
3946
3951
  picocolors "^1.0.0"
3947
3952
  source-map-js "^1.0.2"
3948
3953
 
3954
+ postcss@^8.4.27:
3955
+ version "8.4.33"
3956
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742"
3957
+ integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==
3958
+ dependencies:
3959
+ nanoid "^3.3.7"
3960
+ picocolors "^1.0.0"
3961
+ source-map-js "^1.0.2"
3962
+
3949
3963
  preact@^10.0.0:
3950
3964
  version "10.15.0"
3951
3965
  resolved "https://registry.yarnpkg.com/preact/-/preact-10.15.0.tgz#14bae0afe3547ca9d45d22fda2a4266462d31cf3"
@@ -4276,10 +4290,10 @@ rollup@^3.19.1:
4276
4290
  optionalDependencies:
4277
4291
  fsevents "~2.3.2"
4278
4292
 
4279
- rollup@^3.21.0:
4280
- version "3.23.0"
4281
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.23.0.tgz#b8d6146dac4bf058ee817f92820988e9b358b564"
4282
- integrity sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==
4293
+ rollup@^3.27.1:
4294
+ version "3.29.4"
4295
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981"
4296
+ integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
4283
4297
  optionalDependencies:
4284
4298
  fsevents "~2.3.2"
4285
4299
 
@@ -4952,13 +4966,13 @@ vfile@^4.0.0:
4952
4966
  vfile-message "^2.0.0"
4953
4967
 
4954
4968
  vite@^4.3.8:
4955
- version "4.3.9"
4956
- resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d"
4957
- integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==
4969
+ version "4.5.2"
4970
+ resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.2.tgz#d6ea8610e099851dad8c7371599969e0f8b97e82"
4971
+ integrity sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==
4958
4972
  dependencies:
4959
- esbuild "^0.17.5"
4960
- postcss "^8.4.23"
4961
- rollup "^3.21.0"
4973
+ esbuild "^0.18.10"
4974
+ postcss "^8.4.27"
4975
+ rollup "^3.27.1"
4962
4976
  optionalDependencies:
4963
4977
  fsevents "~2.3.2"
4964
4978
 
@@ -5057,9 +5071,9 @@ which@^2.0.1:
5057
5071
  isexe "^2.0.0"
5058
5072
 
5059
5073
  word-wrap@~1.2.3:
5060
- version "1.2.3"
5061
- resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
5062
- integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
5074
+ version "1.2.4"
5075
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f"
5076
+ integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==
5063
5077
 
5064
5078
  wordwrap@^1.0.0:
5065
5079
  version "1.0.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stimulus_reflex
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0.rc3
4
+ version: 3.5.0.rc4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Hopkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-12 00:00:00.000000000 Z
11
+ date: 2024-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actioncable
@@ -396,14 +396,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
396
396
  requirements:
397
397
  - - ">="
398
398
  - !ruby/object:Gem::Version
399
- version: 2.7.0
399
+ version: 3.0.0
400
400
  required_rubygems_version: !ruby/object:Gem::Requirement
401
401
  requirements:
402
- - - ">"
402
+ - - ">="
403
403
  - !ruby/object:Gem::Version
404
- version: 1.3.1
404
+ version: '0'
405
405
  requirements: []
406
- rubygems_version: 3.4.10
406
+ rubygems_version: 3.5.5
407
407
  signing_key:
408
408
  specification_version: 4
409
409
  summary: Build reactive applications with the Rails tooling you already know and love.