stimulus_reflex 3.4.0.pre5 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
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
|