stimulus_reflex 3.4.0.pre5 → 3.4.0
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.
Potentially problematic release.
This version of stimulus_reflex might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +78 -2
- data/Gemfile.lock +76 -73
- data/README.md +5 -8
- data/Rakefile +5 -5
- data/app/channels/stimulus_reflex/channel.rb +22 -0
- data/bin/console +1 -0
- data/lib/generators/stimulus_reflex/templates/app/javascript/controllers/%file_name%_controller.js.tt +14 -2
- data/lib/generators/stimulus_reflex/templates/app/javascript/controllers/application_controller.js.tt +10 -2
- data/lib/generators/stimulus_reflex/templates/app/reflexes/%file_name%_reflex.rb.tt +19 -9
- data/lib/generators/stimulus_reflex/templates/app/reflexes/application_reflex.rb.tt +2 -2
- data/lib/generators/stimulus_reflex/templates/config/initializers/stimulus_reflex.rb +10 -1
- data/lib/stimulus_reflex.rb +2 -1
- data/lib/stimulus_reflex/broadcasters/broadcaster.rb +2 -4
- data/lib/stimulus_reflex/broadcasters/page_broadcaster.rb +2 -1
- data/lib/stimulus_reflex/broadcasters/selector_broadcaster.rb +2 -2
- data/lib/stimulus_reflex/cable_ready_channels.rb +21 -0
- data/lib/stimulus_reflex/configuration.rb +2 -1
- data/lib/stimulus_reflex/reflex.rb +16 -6
- data/lib/stimulus_reflex/sanity_checker.rb +18 -4
- data/lib/stimulus_reflex/version.rb +1 -1
- data/lib/tasks/stimulus_reflex/install.rake +8 -3
- data/package.json +3 -3
- data/stimulus_reflex.gemspec +3 -1
- data/tags +95 -37
- data/test/broadcasters/broadcaster_test.rb +3 -6
- data/test/broadcasters/broadcaster_test_case.rb +15 -0
- data/test/broadcasters/nothing_broadcaster_test.rb +27 -26
- data/test/broadcasters/page_broadcaster_test.rb +56 -50
- data/test/broadcasters/selector_broadcaster_test.rb +57 -83
- data/test/reflex_test.rb +32 -0
- data/test/test_helper.rb +43 -2
- data/test/tmp/app/reflexes/application_reflex.rb +2 -2
- data/test/tmp/app/reflexes/demo_reflex.rb +34 -0
- data/yarn.lock +199 -226
- metadata +13 -8
- data/test/tmp/app/reflexes/posts_reflex.rb +0 -24
@@ -39,14 +39,22 @@ export default class extends Controller {
|
|
39
39
|
}
|
40
40
|
|
41
41
|
reflexSuccess (element, reflex, noop, reflexId) {
|
42
|
-
// show success message
|
42
|
+
// show success message
|
43
43
|
}
|
44
44
|
|
45
45
|
reflexError (element, reflex, error, reflexId) {
|
46
|
-
// show error message
|
46
|
+
// show error message
|
47
|
+
}
|
48
|
+
|
49
|
+
reflexHalted (element, reflex, error, reflexId) {
|
50
|
+
// handle aborted Reflex action
|
47
51
|
}
|
48
52
|
|
49
53
|
afterReflex (element, reflex, noop, reflexId) {
|
50
54
|
// document.body.classList.remove('wait')
|
51
55
|
}
|
56
|
+
|
57
|
+
finalizeReflex (element, reflex, noop, reflexId) {
|
58
|
+
// all operations have completed, animation etc is now safe
|
59
|
+
}
|
52
60
|
}
|
@@ -3,24 +3,34 @@
|
|
3
3
|
class <%= class_name %>Reflex < ApplicationReflex
|
4
4
|
# Add Reflex methods in this file.
|
5
5
|
#
|
6
|
-
# All Reflex instances expose the following properties:
|
6
|
+
# All Reflex instances include CableReady::Broadcaster and expose the following properties:
|
7
7
|
#
|
8
|
-
# - connection
|
9
|
-
# - channel
|
10
|
-
# - request
|
11
|
-
# - session
|
12
|
-
# -
|
13
|
-
# -
|
14
|
-
# - params
|
8
|
+
# - connection - the ActionCable connection
|
9
|
+
# - channel - the ActionCable channel
|
10
|
+
# - request - an ActionDispatch::Request proxy for the socket connection
|
11
|
+
# - session - the ActionDispatch::Session store for the current visitor
|
12
|
+
# - flash - the ActionDispatch::Flash::FlashHash for the current request
|
13
|
+
# - url - the URL of the page that triggered the reflex
|
14
|
+
# - params - parameters from the element's closest form (if any)
|
15
|
+
# - element - a Hash like object that represents the HTML element that triggered the reflex
|
16
|
+
# - signed - use a signed Global ID to map dataset attribute to a model eg. element.signed[:foo]
|
17
|
+
# - unsigned - use an unsigned Global ID to map dataset attribute to a model eg. element.unsigned[:foo]
|
18
|
+
# - cable_ready - a special cable_ready that can broadcast to the current visitor (no brackets needed)
|
19
|
+
# - reflex_id - a UUIDv4 that uniquely identies each Reflex
|
15
20
|
#
|
16
21
|
# Example:
|
17
22
|
#
|
23
|
+
# before_reflex do
|
24
|
+
# # throw :abort # this will prevent the Reflex from continuing
|
25
|
+
# # learn more about callbacks at https://docs.stimulusreflex.com/lifecycle
|
26
|
+
# end
|
27
|
+
#
|
18
28
|
# def example(argument=true)
|
19
29
|
# # Your logic here...
|
20
30
|
# # Any declared instance variables will be made available to the Rails controller and view.
|
21
31
|
# end
|
22
32
|
#
|
23
|
-
# Learn more at: https://docs.stimulusreflex.com
|
33
|
+
# Learn more at: https://docs.stimulusreflex.com/reflexes#reflex-classes
|
24
34
|
|
25
35
|
<% actions.each do |action| -%>
|
26
36
|
def <%= action %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class ApplicationReflex < StimulusReflex::Reflex
|
4
|
-
# Put application
|
4
|
+
# Put application-wide Reflex behavior and callbacks in this file.
|
5
5
|
#
|
6
6
|
# Example:
|
7
7
|
#
|
8
8
|
# # If your ActionCable connection is: `identified_by :current_user`
|
9
9
|
# delegate :current_user, to: :connection
|
10
10
|
#
|
11
|
-
# Learn more at: https://docs.stimulusreflex.com
|
11
|
+
# Learn more at: https://docs.stimulusreflex.com/reflexes#reflex-classes
|
12
12
|
end
|
@@ -12,9 +12,18 @@ StimulusReflex.configure do |config|
|
|
12
12
|
|
13
13
|
# Customize server-side Reflex logging format, with optional colorization:
|
14
14
|
# Available tokens: session_id, session_id_full, reflex_info, operation, reflex_id, reflex_id_full, mode, selector, operation_counter, connection_id, connection_id_full, timestamp
|
15
|
-
# Available colors: green, yellow, blue, magenta, cyan, white
|
15
|
+
# Available colors: red, green, yellow, blue, magenta, cyan, white
|
16
16
|
# You can also use attributes from your ActionCable Connection's identifiers that resolve to valid ActiveRecord models
|
17
17
|
# eg. if your connection is `identified_by :current_user` and your User model has an email attribute, you can access r.email (it will display `-` if the user isn't logged in)
|
18
|
+
# Learn more at: https://docs.stimulusreflex.com/troubleshooting#stimulusreflex-logging
|
18
19
|
|
19
20
|
# config.logging = proc { "[#{session_id}] #{operation_counter.magenta} #{reflex_info.green} -> #{selector.cyan} via #{mode} Morph (#{operation.yellow})" }
|
21
|
+
|
22
|
+
# Optimized for speed, StimulusReflex doesn't enable Rack middleware by default.
|
23
|
+
# If you are using Page Morphs and your app uses Rack middleware to rewrite part of the request path, you must enable those middleware modules in StimulusReflex.
|
24
|
+
#
|
25
|
+
# Learn more about registering Rack middleware in Rails here: https://guides.rubyonrails.org/rails_on_rack.html#configuring-middleware-stack
|
26
|
+
|
27
|
+
# config.middleware.use FirstRackMiddleware
|
28
|
+
# config.middleware.use SecondRackMiddleware
|
20
29
|
end
|
data/lib/stimulus_reflex.rb
CHANGED
@@ -9,6 +9,7 @@ require "action_cable"
|
|
9
9
|
require "nokogiri"
|
10
10
|
require "cable_ready"
|
11
11
|
require "stimulus_reflex/version"
|
12
|
+
require "stimulus_reflex/cable_ready_channels"
|
12
13
|
require "stimulus_reflex/configuration"
|
13
14
|
require "stimulus_reflex/reflex"
|
14
15
|
require "stimulus_reflex/element"
|
@@ -23,7 +24,7 @@ require "stimulus_reflex/logger"
|
|
23
24
|
module StimulusReflex
|
24
25
|
class Engine < Rails::Engine
|
25
26
|
initializer "stimulus_reflex.sanity_check" do
|
26
|
-
SanityChecker.check!
|
27
|
+
SanityChecker.check! unless Rails.env.production?
|
27
28
|
end
|
28
29
|
end
|
29
30
|
end
|
@@ -2,10 +2,8 @@
|
|
2
2
|
|
3
3
|
module StimulusReflex
|
4
4
|
class Broadcaster
|
5
|
-
include CableReady::Broadcaster
|
6
|
-
|
7
5
|
attr_reader :reflex, :logger, :operations
|
8
|
-
delegate :
|
6
|
+
delegate :cable_ready, :permanent_attribute_name, to: :reflex
|
9
7
|
|
10
8
|
def initialize(reflex)
|
11
9
|
@reflex = reflex
|
@@ -28,7 +26,7 @@ module StimulusReflex
|
|
28
26
|
def broadcast_message(subject:, body: nil, data: {}, error: nil)
|
29
27
|
logger.error "\e[31m#{body}\e[0m" if subject == "error"
|
30
28
|
operations << ["document", :dispatch_event]
|
31
|
-
cable_ready
|
29
|
+
cable_ready.dispatch_event(
|
32
30
|
name: "stimulus-reflex:server-message",
|
33
31
|
detail: {
|
34
32
|
reflexId: data["reflexId"],
|
@@ -13,7 +13,7 @@ module StimulusReflex
|
|
13
13
|
selectors.each do |selector|
|
14
14
|
operations << [selector, :morph]
|
15
15
|
html = document.css(selector).inner_html
|
16
|
-
cable_ready
|
16
|
+
cable_ready.morph(
|
17
17
|
selector: selector,
|
18
18
|
html: html,
|
19
19
|
children_only: true,
|
@@ -23,6 +23,7 @@ module StimulusReflex
|
|
23
23
|
})
|
24
24
|
)
|
25
25
|
end
|
26
|
+
|
26
27
|
cable_ready.broadcast
|
27
28
|
end
|
28
29
|
|
@@ -12,7 +12,7 @@ module StimulusReflex
|
|
12
12
|
match = fragment.at_css(selector)
|
13
13
|
if match.present?
|
14
14
|
operations << [selector, :morph]
|
15
|
-
cable_ready
|
15
|
+
cable_ready.morph(
|
16
16
|
selector: selector,
|
17
17
|
html: match.inner_html,
|
18
18
|
children_only: true,
|
@@ -23,7 +23,7 @@ module StimulusReflex
|
|
23
23
|
)
|
24
24
|
else
|
25
25
|
operations << [selector, :inner_html]
|
26
|
-
cable_ready
|
26
|
+
cable_ready.inner_html(
|
27
27
|
selector: selector,
|
28
28
|
html: fragment.to_html,
|
29
29
|
stimulus_reflex: data.merge({
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module StimulusReflex
|
4
|
+
class CableReadyChannels
|
5
|
+
stimulus_reflex_channel_methods = CableReady::Channels.instance.operations.keys + [:broadcast, :broadcast_to]
|
6
|
+
delegate(*stimulus_reflex_channel_methods, to: "stimulus_reflex_channel")
|
7
|
+
delegate :[], to: "cable_ready_channels"
|
8
|
+
|
9
|
+
def initialize(stream_name)
|
10
|
+
@stream_name = stream_name
|
11
|
+
end
|
12
|
+
|
13
|
+
def cable_ready_channels
|
14
|
+
CableReady::Channels.instance
|
15
|
+
end
|
16
|
+
|
17
|
+
def stimulus_reflex_channel
|
18
|
+
CableReady::Channels.instance[@stream_name]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -14,7 +14,7 @@ module StimulusReflex
|
|
14
14
|
end
|
15
15
|
|
16
16
|
class Configuration
|
17
|
-
attr_accessor :on_failed_sanity_checks, :parent_channel, :logging
|
17
|
+
attr_accessor :on_failed_sanity_checks, :parent_channel, :logging, :middleware
|
18
18
|
|
19
19
|
DEFAULT_LOGGING = proc { "[#{session_id}] #{operation_counter.magenta} #{reflex_info.green} -> #{selector.cyan} via #{mode} Morph (#{operation.yellow})" }
|
20
20
|
|
@@ -22,6 +22,7 @@ module StimulusReflex
|
|
22
22
|
@on_failed_sanity_checks = :exit
|
23
23
|
@parent_channel = "ApplicationCable::Channel"
|
24
24
|
@logging = DEFAULT_LOGGING
|
25
|
+
@middleware = ActionDispatch::MiddlewareStack.new
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -5,7 +5,6 @@ ClientAttributes = Struct.new(:reflex_id, :reflex_controller, :xpath, :c_xpath,
|
|
5
5
|
class StimulusReflex::Reflex
|
6
6
|
include ActiveSupport::Rescuable
|
7
7
|
include ActiveSupport::Callbacks
|
8
|
-
include CableReady::Broadcaster
|
9
8
|
|
10
9
|
define_callbacks :process, skip_after_callbacks_if_terminated: true
|
11
10
|
|
@@ -45,14 +44,16 @@ class StimulusReflex::Reflex
|
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
48
|
-
attr_reader :channel, :url, :element, :selectors, :method_name, :broadcaster, :client_attributes, :logger
|
47
|
+
attr_reader :cable_ready, :channel, :url, :element, :selectors, :method_name, :broadcaster, :client_attributes, :logger
|
49
48
|
|
50
49
|
alias_method :action_name, :method_name # for compatibility with controller libraries like Pundit that expect an action name
|
51
50
|
|
52
51
|
delegate :connection, :stream_name, to: :channel
|
53
|
-
delegate :flash, :session, to: :request
|
52
|
+
delegate :controller_class, :flash, :session, to: :request
|
54
53
|
delegate :broadcast, :broadcast_message, to: :broadcaster
|
55
54
|
delegate :reflex_id, :reflex_controller, :xpath, :c_xpath, :permanent_attribute_name, to: :client_attributes
|
55
|
+
delegate :render, to: :controller_class
|
56
|
+
delegate :dom_id, to: "ActionView::RecordIdentifier"
|
56
57
|
|
57
58
|
def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, params: {}, client_attributes: {})
|
58
59
|
@channel = channel
|
@@ -64,6 +65,7 @@ class StimulusReflex::Reflex
|
|
64
65
|
@broadcaster = StimulusReflex::PageBroadcaster.new(self)
|
65
66
|
@logger = StimulusReflex::Logger.new(self)
|
66
67
|
@client_attributes = ClientAttributes.new(client_attributes)
|
68
|
+
@cable_ready = StimulusReflex::CableReadyChannels.new(stream_name)
|
67
69
|
self.params
|
68
70
|
end
|
69
71
|
|
@@ -86,6 +88,14 @@ class StimulusReflex::Reflex
|
|
86
88
|
)
|
87
89
|
|
88
90
|
env = connection.env.merge(mock_env)
|
91
|
+
|
92
|
+
middleware = StimulusReflex.config.middleware
|
93
|
+
|
94
|
+
if middleware.any?
|
95
|
+
stack = middleware.build(Rails.application.routes)
|
96
|
+
stack.call(env)
|
97
|
+
end
|
98
|
+
|
89
99
|
req = ActionDispatch::Request.new(env)
|
90
100
|
|
91
101
|
path_params = Rails.application.routes.recognize_path_with_request(req, url, req.env[:extras] || {})
|
@@ -114,11 +124,11 @@ class StimulusReflex::Reflex
|
|
114
124
|
|
115
125
|
def controller
|
116
126
|
@controller ||= begin
|
117
|
-
|
127
|
+
controller_class.new.tap do |c|
|
118
128
|
c.instance_variable_set :"@stimulus_reflex", true
|
119
129
|
instance_variables.each { |name| c.instance_variable_set name, instance_variable_get(name) }
|
120
|
-
c.
|
121
|
-
c.
|
130
|
+
c.set_request! request
|
131
|
+
c.set_response! controller_class.make_response!(request)
|
122
132
|
end
|
123
133
|
end
|
124
134
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class StimulusReflex::SanityChecker
|
4
|
+
NODE_VERSION_FORMAT = /(\d+\.\d+\.\d+.*):/
|
4
5
|
JSON_VERSION_FORMAT = /(\d+\.\d+\.\d+.*)"/
|
5
6
|
|
6
7
|
class << self
|
7
8
|
def check!
|
8
9
|
return if StimulusReflex.config.on_failed_sanity_checks == :ignore
|
10
|
+
return if called_by_installer?
|
9
11
|
return if called_by_generate_config?
|
10
12
|
|
11
13
|
instance = new
|
@@ -15,6 +17,12 @@ class StimulusReflex::SanityChecker
|
|
15
17
|
|
16
18
|
private
|
17
19
|
|
20
|
+
def called_by_installer?
|
21
|
+
Rake.application.top_level_tasks.include? "stimulus_reflex:install"
|
22
|
+
rescue
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
18
26
|
def called_by_generate_config?
|
19
27
|
ARGV.include? "stimulus_reflex:config"
|
20
28
|
end
|
@@ -79,6 +87,8 @@ class StimulusReflex::SanityChecker
|
|
79
87
|
def find_javascript_package_version
|
80
88
|
if (match = search_file(package_json_path, regex: /version/))
|
81
89
|
match[JSON_VERSION_FORMAT, 1]
|
90
|
+
elsif (match = search_file(yarn_lock_path, regex: /^stimulus_reflex/))
|
91
|
+
match[NODE_VERSION_FORMAT, 1]
|
82
92
|
end
|
83
93
|
end
|
84
94
|
|
@@ -91,6 +101,10 @@ class StimulusReflex::SanityChecker
|
|
91
101
|
Rails.root.join("node_modules", "stimulus_reflex", "package.json")
|
92
102
|
end
|
93
103
|
|
104
|
+
def yarn_lock_path
|
105
|
+
Rails.root.join("yarn.lock")
|
106
|
+
end
|
107
|
+
|
94
108
|
def initializer_path
|
95
109
|
@_initializer_path ||= Rails.root.join("config", "initializers", "stimulus_reflex.rb")
|
96
110
|
end
|
@@ -120,13 +134,13 @@ class StimulusReflex::SanityChecker
|
|
120
134
|
puts <<~INFO
|
121
135
|
If you know what you are doing and you want to start the application anyway,
|
122
136
|
you can create a StimulusReflex initializer with the command:
|
123
|
-
|
137
|
+
|
124
138
|
bundle exec rails generate stimulus_reflex:config
|
125
|
-
|
139
|
+
|
126
140
|
Then open your initializer at
|
127
|
-
|
141
|
+
|
128
142
|
<RAILS_ROOT>/config/initializers/stimulus_reflex.rb
|
129
|
-
|
143
|
+
|
130
144
|
and then add the following directive:
|
131
145
|
|
132
146
|
StimulusReflex.configure do |config|
|
@@ -6,9 +6,10 @@ require "stimulus_reflex/version"
|
|
6
6
|
namespace :stimulus_reflex do
|
7
7
|
desc "Install StimulusReflex in this application"
|
8
8
|
task install: :environment do
|
9
|
-
system "
|
9
|
+
system "rails dev:cache" unless Rails.root.join("tmp", "caching-dev.txt").exist?
|
10
10
|
gem_version = StimulusReflex::VERSION.gsub(".pre", "-pre")
|
11
11
|
system "yarn add stimulus_reflex@#{gem_version}"
|
12
|
+
system "bundle exec rails webpacker:install:stimulus"
|
12
13
|
main_folder = defined?(Webpacker) ? Webpacker.config.source_path.to_s.gsub("#{Rails.root}/", "") : "app/javascript"
|
13
14
|
|
14
15
|
FileUtils.mkdir_p Rails.root.join("#{main_folder}/controllers"), verbose: true
|
@@ -39,7 +40,7 @@ namespace :stimulus_reflex do
|
|
39
40
|
|
40
41
|
unless lines.find { |line| line.start_with?("import controller") }
|
41
42
|
matches = lines.select { |line| line =~ /\A(require|import)/ }
|
42
|
-
lines.insert lines.index(matches.last).to_i + 1, "import controller from '
|
43
|
+
lines.insert lines.index(matches.last).to_i + 1, "import controller from '../controllers/application_controller'\n"
|
43
44
|
end
|
44
45
|
|
45
46
|
initialize_line = lines.find { |line| line.start_with?("StimulusReflex.initialize") }
|
@@ -67,6 +68,10 @@ namespace :stimulus_reflex do
|
|
67
68
|
system "bundle exec rails generate stimulus_reflex example"
|
68
69
|
puts "Generating default StimulusReflex configuration file into your application config/initializers directory"
|
69
70
|
system "bundle exec rails generate stimulus_reflex:config"
|
70
|
-
|
71
|
+
|
72
|
+
puts
|
73
|
+
puts "StimulusReflex and CableReady have been successfully installed!"
|
74
|
+
puts "Go to https://docs.stimulusreflex.com/quickstart if you need help getting started."
|
75
|
+
puts
|
71
76
|
end
|
72
77
|
end
|
data/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "stimulus_reflex",
|
3
|
-
"version": "3.4.0-
|
3
|
+
"version": "3.4.0-pre9",
|
4
4
|
"description": "Build reactive applications with the Rails tooling you already know and love.",
|
5
5
|
"keywords": [
|
6
6
|
"ruby",
|
@@ -41,7 +41,7 @@
|
|
41
41
|
},
|
42
42
|
"dependencies": {
|
43
43
|
"@rails/actioncable": ">= 6.0",
|
44
|
-
"cable_ready": ">= 4.
|
44
|
+
"cable_ready": ">= 4.4"
|
45
45
|
},
|
46
46
|
"devDependencies": {
|
47
47
|
"@babel/core": "^7.6.2",
|
@@ -52,6 +52,6 @@
|
|
52
52
|
"jsdom": "^16.0.1",
|
53
53
|
"mocha": "^8.0.1",
|
54
54
|
"prettier-standard": "^16.1.0",
|
55
|
-
"stimulus": "
|
55
|
+
"stimulus": ">= 1.1"
|
56
56
|
}
|
57
57
|
}
|
data/stimulus_reflex.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require File.expand_path("../lib/stimulus_reflex/version", __FILE__)
|
2
4
|
|
3
5
|
Gem::Specification.new do |gem|
|
@@ -30,7 +32,7 @@ Gem::Specification.new do |gem|
|
|
30
32
|
gem.add_dependency "nokogiri"
|
31
33
|
gem.add_dependency "rails", ">= 5.2"
|
32
34
|
gem.add_dependency "redis"
|
33
|
-
gem.add_dependency "cable_ready", ">= 4.
|
35
|
+
gem.add_dependency "cable_ready", ">= 4.4"
|
34
36
|
|
35
37
|
gem.add_development_dependency "bundler", "~> 2.0"
|
36
38
|
gem.add_development_dependency "pry-nav"
|
data/tags
CHANGED
@@ -4,95 +4,153 @@
|
|
4
4
|
!_TAG_PROGRAM_NAME Exuberant Ctags //
|
5
5
|
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
|
6
6
|
!_TAG_PROGRAM_VERSION 5.8 //
|
7
|
+
ActionDispatch test/test_helper.rb /^class ActionDispatch::Request$/;" c
|
8
|
+
ApplicationController test/test_helper.rb /^class ApplicationController < ActionController::Base; end$/;" c
|
7
9
|
ApplicationReflex test/tmp/app/reflexes/application_reflex.rb /^class ApplicationReflex < StimulusReflex::Reflex$/;" c
|
8
10
|
Broadcaster lib/stimulus_reflex/broadcasters/broadcaster.rb /^ class Broadcaster$/;" c class:StimulusReflex
|
9
|
-
|
11
|
+
CableReadyChannels lib/stimulus_reflex/cable_ready_channels.rb /^ class CableReadyChannels$/;" c class:StimulusReflex
|
12
|
+
Colorize lib/stimulus_reflex/utils/colorize.rb /^ module Colorize$/;" m class:StimulusReflex.Utils
|
13
|
+
ConfigGenerator lib/generators/stimulus_reflex/config_generator.rb /^ class ConfigGenerator < Rails::Generators::Base$/;" c class:StimulusReflex
|
14
|
+
Configuration lib/stimulus_reflex/configuration.rb /^ class Configuration$/;" c
|
10
15
|
Engine lib/stimulus_reflex.rb /^ class Engine < Rails::Engine$/;" c class:StimulusReflex
|
16
|
+
Logger lib/stimulus_reflex/logger.rb /^ class Logger$/;" c class:StimulusReflex
|
11
17
|
NothingBroadcaster lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ class NothingBroadcaster < Broadcaster$/;" c class:StimulusReflex
|
12
18
|
PageBroadcaster lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ class PageBroadcaster < Broadcaster$/;" c class:StimulusReflex
|
13
19
|
SelectorBroadcaster lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ class SelectorBroadcaster < Broadcaster$/;" c class:StimulusReflex
|
20
|
+
SessionMock test/test_helper.rb /^class SessionMock$/;" c
|
21
|
+
StimulusReflex app/channels/stimulus_reflex/channel.rb /^class StimulusReflex::Channel < StimulusReflex.configuration.parent_channel.constantize$/;" c
|
22
|
+
StimulusReflex lib/generators/stimulus_reflex/config_generator.rb /^module StimulusReflex$/;" m
|
14
23
|
StimulusReflex lib/stimulus_reflex.rb /^module StimulusReflex$/;" m
|
15
24
|
StimulusReflex lib/stimulus_reflex/broadcasters/broadcaster.rb /^module StimulusReflex$/;" m
|
16
25
|
StimulusReflex lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^module StimulusReflex$/;" m
|
17
26
|
StimulusReflex lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^module StimulusReflex$/;" m
|
18
27
|
StimulusReflex lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^module StimulusReflex$/;" m
|
19
|
-
StimulusReflex lib/stimulus_reflex/
|
28
|
+
StimulusReflex lib/stimulus_reflex/cable_ready_channels.rb /^module StimulusReflex$/;" m
|
29
|
+
StimulusReflex lib/stimulus_reflex/configuration.rb /^module StimulusReflex$/;" m
|
20
30
|
StimulusReflex lib/stimulus_reflex/element.rb /^class StimulusReflex::Element < OpenStruct$/;" c
|
31
|
+
StimulusReflex lib/stimulus_reflex/logger.rb /^module StimulusReflex$/;" m
|
21
32
|
StimulusReflex lib/stimulus_reflex/reflex.rb /^class StimulusReflex::Reflex$/;" c
|
33
|
+
StimulusReflex lib/stimulus_reflex/sanity_checker.rb /^class StimulusReflex::SanityChecker$/;" c
|
34
|
+
StimulusReflex lib/stimulus_reflex/utils/colorize.rb /^module StimulusReflex$/;" m
|
22
35
|
StimulusReflex lib/stimulus_reflex/version.rb /^module StimulusReflex$/;" m
|
23
|
-
|
36
|
+
StimulusReflex test/broadcasters/broadcaster_test.rb /^class StimulusReflex::BroadcasterTest < StimulusReflex::BroadcasterTestCase$/;" c
|
37
|
+
StimulusReflex test/broadcasters/broadcaster_test_case.rb /^class StimulusReflex::BroadcasterTestCase < ActionCable::Channel::TestCase$/;" c
|
38
|
+
StimulusReflex test/broadcasters/nothing_broadcaster_test.rb /^class StimulusReflex::NothingBroadcasterTest < StimulusReflex::BroadcasterTestCase$/;" c
|
39
|
+
StimulusReflex test/broadcasters/page_broadcaster_test.rb /^class StimulusReflex::PageBroadcasterTest < StimulusReflex::BroadcasterTestCase$/;" c
|
40
|
+
StimulusReflex test/reflex_test.rb /^class StimulusReflex::ReflexTest < ActionCable::Channel::TestCase$/;" c
|
41
|
+
StimulusReflexGenerator lib/generators/stimulus_reflex/stimulus_reflex_generator.rb /^class StimulusReflexGenerator < Rails::Generators::NamedBase$/;" c
|
24
42
|
StimulusReflexGeneratorTest test/generators/stimulus_reflex_generator_test.rb /^class StimulusReflexGeneratorTest < Rails::Generators::TestCase$/;" c
|
43
|
+
TestApp test/test_helper.rb /^class TestApp < Rails::Application$/;" c
|
44
|
+
TestController test/test_helper.rb /^class TestController < ApplicationController$/;" c
|
25
45
|
UserReflex test/tmp/app/reflexes/user_reflex.rb /^class UserReflex < ApplicationReflex$/;" c
|
26
|
-
|
46
|
+
Utils lib/stimulus_reflex/utils/colorize.rb /^ module Utils$/;" m class:StimulusReflex
|
27
47
|
add_callback lib/stimulus_reflex/reflex.rb /^ def add_callback(kind, *args, &block)$/;" f class:StimulusReflex
|
28
48
|
after_reflex lib/stimulus_reflex/reflex.rb /^ def after_reflex(*args, &block)$/;" f class:StimulusReflex
|
49
|
+
append_morph lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def append_morph(selectors, html)$/;" f class:StimulusReflex.SelectorBroadcaster
|
29
50
|
around_reflex lib/stimulus_reflex/reflex.rb /^ def around_reflex(*args, &block)$/;" f class:StimulusReflex
|
30
|
-
attrContentExcluded? lib/stimulus_reflex/compare_xml.rb /^ def attrContentExcluded?(a1, a2, opts)$/;" f class:CompareXML
|
31
|
-
attrNameExcluded? lib/stimulus_reflex/compare_xml.rb /^ def attrNameExcluded?(a1, a2, opts)$/;" f class:CompareXML
|
32
|
-
attrsExcluded? lib/stimulus_reflex/compare_xml.rb /^ def attrsExcluded?(a1, a2, opts)$/;" f class:CompareXML
|
33
51
|
before_reflex lib/stimulus_reflex/reflex.rb /^ def before_reflex(*args, &block)$/;" f class:StimulusReflex
|
52
|
+
body test/broadcasters/page_broadcaster_test.rb /^ def body$/;" f
|
34
53
|
broadcast lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def broadcast(*args)$/;" f class:StimulusReflex.Broadcaster
|
35
54
|
broadcast lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ def broadcast(_, data)$/;" f class:StimulusReflex.NothingBroadcaster
|
36
55
|
broadcast lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ def broadcast(selectors, data)$/;" f class:StimulusReflex.PageBroadcaster
|
37
56
|
broadcast lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def broadcast(_, data = {})$/;" f class:StimulusReflex.SelectorBroadcaster
|
38
|
-
broadcast_message lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def broadcast_message(subject:, body: nil, data: {})$/;" f class:StimulusReflex.Broadcaster
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
57
|
+
broadcast_message lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def broadcast_message(subject:, body: nil, data: {}, error: nil)$/;" f class:StimulusReflex.Broadcaster
|
58
|
+
cable_ready_channels lib/stimulus_reflex/cable_ready_channels.rb /^ def cable_ready_channels$/;" f class:StimulusReflex.CableReadyChannels
|
59
|
+
caching_enabled? lib/stimulus_reflex/sanity_checker.rb /^ def caching_enabled?$/;" f
|
60
|
+
called_by_generate_config? lib/stimulus_reflex/sanity_checker.rb /^ def called_by_generate_config?$/;" f class:StimulusReflex
|
61
|
+
called_by_installer? lib/stimulus_reflex/sanity_checker.rb /^ def called_by_installer?$/;" f class:StimulusReflex
|
62
|
+
check! lib/stimulus_reflex/sanity_checker.rb /^ def check!$/;" f class:StimulusReflex
|
63
|
+
check_caching_enabled lib/stimulus_reflex/sanity_checker.rb /^ def check_caching_enabled$/;" f
|
64
|
+
check_javascript_package_version lib/stimulus_reflex/sanity_checker.rb /^ def check_javascript_package_version$/;" f
|
65
|
+
commit_session app/channels/stimulus_reflex/channel.rb /^ def commit_session(reflex)$/;" f class:StimulusReflex
|
66
|
+
config_logging lib/stimulus_reflex/logger.rb /^ def config_logging$/;" f class:StimulusReflex.Logger
|
67
|
+
configuration lib/stimulus_reflex/configuration.rb /^ def configuration$/;" f class:StimulusReflex
|
68
|
+
configure lib/stimulus_reflex/configuration.rb /^ def configure$/;" f class:StimulusReflex
|
69
|
+
connection_id lib/stimulus_reflex/logger.rb /^ def connection_id$/;" f class:StimulusReflex.Logger
|
70
|
+
connection_id_full lib/stimulus_reflex/logger.rb /^ def connection_id_full$/;" f class:StimulusReflex.Logger
|
51
71
|
controller lib/stimulus_reflex/reflex.rb /^ def controller$/;" f
|
52
|
-
copy_application_files lib/generators/stimulus_reflex_generator.rb /^ def copy_application_files$/;" f class:StimulusReflexGenerator
|
72
|
+
copy_application_files lib/generators/stimulus_reflex/stimulus_reflex_generator.rb /^ def copy_application_files$/;" f class:StimulusReflexGenerator
|
73
|
+
copy_config_file lib/generators/stimulus_reflex/config_generator.rb /^ def copy_config_file$/;" f class:StimulusReflex.ConfigGenerator
|
53
74
|
dataset lib/stimulus_reflex/element.rb /^ def dataset$/;" f class:StimulusReflex
|
54
75
|
default_reflex lib/stimulus_reflex/reflex.rb /^ def default_reflex$/;" f
|
55
|
-
delegate_call_to_reflex
|
76
|
+
delegate_call_to_reflex app/channels/stimulus_reflex/channel.rb /^ def delegate_call_to_reflex(reflex, method_name, arguments = [])$/;" f class:StimulusReflex
|
56
77
|
do_more_stuff test/tmp/app/reflexes/user_reflex.rb /^ def do_more_stuff$/;" f class:UserReflex
|
57
78
|
do_stuff test/tmp/app/reflexes/user_reflex.rb /^ def do_stuff$/;" f class:UserReflex
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
79
|
+
env test/broadcasters/broadcaster_test_case.rb /^ def connection.env$/;" F class:StimulusReflex
|
80
|
+
env test/reflex_test.rb /^ def connection.env$/;" F class:StimulusReflex
|
81
|
+
exception_message_with_backtrace app/channels/stimulus_reflex/channel.rb /^ def exception_message_with_backtrace(exception)$/;" f class:StimulusReflex
|
82
|
+
execute lib/generators/stimulus_reflex/stimulus_reflex_generator.rb /^ def execute$/;" f class:StimulusReflexGenerator
|
83
|
+
exit_with_info lib/stimulus_reflex/sanity_checker.rb /^ def exit_with_info$/;" f
|
63
84
|
export.reflexAttribute javascript/schema.js /^ reflexAttribute: 'data-reflex',$/;" p
|
64
85
|
export.reflexDatasetAttribute javascript/schema.js /^ reflexDatasetAttribute: 'data-reflex-dataset'$/;" p
|
65
86
|
export.reflexPermanentAttribute javascript/schema.js /^ reflexPermanentAttribute: 'data-reflex-permanent',$/;" p
|
66
87
|
export.reflexRootAttribute javascript/schema.js /^ reflexRootAttribute: 'data-reflex-root',$/;" p
|
67
88
|
findConsumer javascript/consumer.js /^function findConsumer (object, depth = 0) {$/;" f
|
68
|
-
|
89
|
+
find_javascript_package_version lib/stimulus_reflex/sanity_checker.rb /^ def find_javascript_package_version$/;" f
|
90
|
+
fix_environment! app/channels/stimulus_reflex/channel.rb /^ def fix_environment!$/;" f class:StimulusReflex
|
91
|
+
function.error javascript/log.js /^function error (event) {$/;" f
|
92
|
+
gem_version lib/stimulus_reflex/sanity_checker.rb /^ def gem_version$/;" f
|
69
93
|
halted? lib/stimulus_reflex/reflex.rb /^ def halted?$/;" f
|
94
|
+
index test/test_helper.rb /^ def index$/;" f class:TestController
|
70
95
|
initialize lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def initialize(reflex)$/;" f class:StimulusReflex.Broadcaster
|
96
|
+
initialize lib/stimulus_reflex/cable_ready_channels.rb /^ def initialize(stream_name)$/;" f class:StimulusReflex.CableReadyChannels
|
97
|
+
initialize lib/stimulus_reflex/configuration.rb /^ def initialize$/;" f class:Configuration
|
71
98
|
initialize lib/stimulus_reflex/element.rb /^ def initialize(data = {})$/;" f class:StimulusReflex
|
72
|
-
initialize lib/stimulus_reflex/
|
73
|
-
|
99
|
+
initialize lib/stimulus_reflex/logger.rb /^ def initialize(reflex)$/;" f class:StimulusReflex.Logger
|
100
|
+
initialize lib/stimulus_reflex/reflex.rb /^ def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, params: {}, client_attributes: {})$/;" f
|
101
|
+
initializer_path lib/stimulus_reflex/sanity_checker.rb /^ def initializer_path$/;" f
|
102
|
+
is_reflex? app/channels/stimulus_reflex/channel.rb /^ def is_reflex?(reflex_class)$/;" f class:StimulusReflex
|
103
|
+
javascript_package_version lib/stimulus_reflex/sanity_checker.rb /^ def javascript_package_version$/;" f
|
104
|
+
javascript_version_matches? lib/stimulus_reflex/sanity_checker.rb /^ def javascript_version_matches?$/;" f
|
105
|
+
load! test/test_helper.rb /^ def load!$/;" f class:SessionMock
|
106
|
+
method_missing lib/stimulus_reflex/logger.rb /^ def method_missing method$/;" f class:StimulusReflex.Logger
|
107
|
+
mode lib/stimulus_reflex/logger.rb /^ def mode$/;" f class:StimulusReflex.Logger
|
74
108
|
morph lib/stimulus_reflex/reflex.rb /^ def morph(selectors, html = "")$/;" f
|
75
109
|
morphs lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def morphs$/;" f class:StimulusReflex.SelectorBroadcaster
|
76
|
-
nodeExcluded? lib/stimulus_reflex/compare_xml.rb /^ def nodeExcluded?(n, opts)$/;" f class:CompareXML
|
77
110
|
normalize_callback_option! lib/stimulus_reflex/reflex.rb /^ def normalize_callback_option!(options, from, to)$/;" f class:StimulusReflex
|
78
111
|
normalize_callback_options! lib/stimulus_reflex/reflex.rb /^ def normalize_callback_options!(options)$/;" f class:StimulusReflex
|
112
|
+
not_null_store? lib/stimulus_reflex/sanity_checker.rb /^ def not_null_store?$/;" f
|
79
113
|
nothing? lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def nothing?$/;" f class:StimulusReflex.Broadcaster
|
80
114
|
nothing? lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ def nothing?$/;" f class:StimulusReflex.NothingBroadcaster
|
81
|
-
object_with_indifferent_access
|
115
|
+
object_with_indifferent_access app/channels/stimulus_reflex/channel.rb /^ def object_with_indifferent_access(object)$/;" f class:StimulusReflex
|
116
|
+
operation lib/stimulus_reflex/logger.rb /^ def operation$/;" f class:StimulusReflex.Logger
|
117
|
+
operation_counter lib/stimulus_reflex/logger.rb /^ def operation_counter$/;" f class:StimulusReflex.Logger
|
118
|
+
package_json_path lib/stimulus_reflex/sanity_checker.rb /^ def package_json_path$/;" f
|
82
119
|
page? lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def page?$/;" f class:StimulusReflex.Broadcaster
|
83
120
|
page? lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ def page?$/;" f class:StimulusReflex.PageBroadcaster
|
84
|
-
page_cache lib/stimulus_reflex/channel.rb /^ def page_cache$/;" f class:StimulusReflex
|
85
121
|
params lib/stimulus_reflex/reflex.rb /^ def params$/;" f
|
122
|
+
print lib/stimulus_reflex/logger.rb /^ def print$/;" f class:StimulusReflex.Logger
|
123
|
+
private_instance_methods lib/stimulus_reflex/logger.rb /^ def private_instance_methods$/;" f class:StimulusReflex.Logger
|
86
124
|
process lib/stimulus_reflex/reflex.rb /^ def process(name, *args)$/;" f
|
87
|
-
receive
|
125
|
+
receive app/channels/stimulus_reflex/channel.rb /^ def receive(data)$/;" f class:StimulusReflex
|
126
|
+
reflex javascript/lifecycle.js /^ const detail = { reflex: target, controller, reflexId }$/;" p
|
127
|
+
reflex_id lib/stimulus_reflex/logger.rb /^ def reflex_id$/;" f class:StimulusReflex.Logger
|
128
|
+
reflex_id_full lib/stimulus_reflex/logger.rb /^ def reflex_id_full$/;" f class:StimulusReflex.Logger
|
129
|
+
reflex_info lib/stimulus_reflex/logger.rb /^ def reflex_info$/;" f class:StimulusReflex.Logger
|
130
|
+
request javascript/log.js /^function request (reflexId, target, args, controller, element) {$/;" f
|
88
131
|
request lib/stimulus_reflex/reflex.rb /^ def request$/;" f
|
132
|
+
request.success javascript/log.js /^function success (event) {$/;" f
|
133
|
+
respond_to_missing? lib/stimulus_reflex/logger.rb /^ def respond_to_missing? method$/;" f class:StimulusReflex.Logger
|
134
|
+
search_file lib/stimulus_reflex/sanity_checker.rb /^ def search_file(path, regex:)$/;" f
|
135
|
+
selector lib/stimulus_reflex/logger.rb /^ def selector$/;" f class:StimulusReflex.Logger
|
89
136
|
selector? lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def selector?$/;" f class:StimulusReflex.Broadcaster
|
90
137
|
selector? lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def selector?$/;" f class:StimulusReflex.SelectorBroadcaster
|
91
|
-
|
92
|
-
|
138
|
+
session test/test_helper.rb /^ def session$/;" f class:ActionDispatch
|
139
|
+
session_id lib/stimulus_reflex/logger.rb /^ def session_id$/;" f class:StimulusReflex.Logger
|
140
|
+
session_id_full lib/stimulus_reflex/logger.rb /^ def session_id_full$/;" f class:StimulusReflex.Logger
|
141
|
+
signed lib/stimulus_reflex/element.rb /^ def signed$/;" f class:StimulusReflex
|
142
|
+
stimulus_reflex_channel lib/stimulus_reflex/cable_ready_channels.rb /^ def stimulus_reflex_channel$/;" f class:StimulusReflex.CableReadyChannels
|
143
|
+
stream_name app/channels/stimulus_reflex/channel.rb /^ def stream_name$/;" f class:StimulusReflex
|
144
|
+
subscribed app/channels/stimulus_reflex/channel.rb /^ def subscribed$/;" f class:StimulusReflex
|
145
|
+
timestamp lib/stimulus_reflex/logger.rb /^ def timestamp$/;" f class:StimulusReflex.Logger
|
146
|
+
to_s lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def to_s$/;" f class:StimulusReflex.Broadcaster
|
147
|
+
to_s lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ def to_s$/;" f class:StimulusReflex.NothingBroadcaster
|
148
|
+
to_s lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ def to_s$/;" f class:StimulusReflex.PageBroadcaster
|
149
|
+
to_s lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def to_s$/;" f class:StimulusReflex.SelectorBroadcaster
|
93
150
|
to_sym lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def to_sym$/;" f class:StimulusReflex.Broadcaster
|
94
151
|
to_sym lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ def to_sym$/;" f class:StimulusReflex.NothingBroadcaster
|
95
152
|
to_sym lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ def to_sym$/;" f class:StimulusReflex.PageBroadcaster
|
96
153
|
to_sym lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def to_sym$/;" f class:StimulusReflex.SelectorBroadcaster
|
154
|
+
unsigned lib/stimulus_reflex/element.rb /^ def unsigned$/;" f class:StimulusReflex
|
97
155
|
update test/tmp/app/reflexes/user_reflex.rb /^ def update$/;" f class:UserReflex
|
98
|
-
|
156
|
+
warn_and_exit lib/stimulus_reflex/sanity_checker.rb /^ def warn_and_exit(text)$/;" f
|