stimulus_reflex 3.5.0.rc3 → 3.5.0.rc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.