stimulus_reflex 3.4.0.pre2 → 3.4.0.pre7
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 +90 -3
- data/Gemfile.lock +18 -18
- data/README.md +6 -10
- data/Rakefile +5 -5
- data/app/channels/stimulus_reflex/channel.rb +20 -4
- data/bin/console +1 -0
- data/bin/standardize +1 -1
- 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 +13 -2
- data/lib/stimulus_reflex.rb +3 -0
- data/lib/stimulus_reflex/broadcasters/broadcaster.rb +11 -6
- data/lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb +4 -0
- data/lib/stimulus_reflex/broadcasters/page_broadcaster.rb +8 -2
- data/lib/stimulus_reflex/broadcasters/selector_broadcaster.rb +12 -2
- data/lib/stimulus_reflex/cable_ready_channels.rb +12 -0
- data/lib/stimulus_reflex/configuration.rb +5 -2
- data/lib/stimulus_reflex/logger.rb +106 -0
- data/lib/stimulus_reflex/reflex.rb +9 -5
- data/lib/stimulus_reflex/sanity_checker.rb +60 -11
- data/lib/stimulus_reflex/utils/colorize.rb +23 -0
- data/lib/stimulus_reflex/version.rb +1 -1
- data/lib/tasks/stimulus_reflex/install.rake +3 -3
- data/package.json +11 -17
- data/stimulus_reflex.gemspec +1 -1
- data/tags +82 -41
- data/test/broadcasters/broadcaster_test.rb +10 -0
- data/test/broadcasters/broadcaster_test_case.rb +13 -0
- data/test/broadcasters/nothing_broadcaster_test.rb +33 -0
- data/test/broadcasters/page_broadcaster_test.rb +73 -0
- data/test/broadcasters/selector_broadcaster_test.rb +55 -0
- data/test/test_helper.rb +37 -0
- data/test/tmp/app/reflexes/application_reflex.rb +2 -2
- data/test/tmp/app/reflexes/demo_reflex.rb +33 -0
- data/yarn.lock +248 -1798
- metadata +28 -15
- data/test/tmp/app/reflexes/user_reflex.rb +0 -33
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module StimulusReflex
|
4
|
+
module Utils
|
5
|
+
module Colorize
|
6
|
+
COLORS = {
|
7
|
+
red: "31",
|
8
|
+
green: "32",
|
9
|
+
yellow: "33",
|
10
|
+
blue: "34",
|
11
|
+
magenta: "35",
|
12
|
+
cyan: "36",
|
13
|
+
white: "37"
|
14
|
+
}
|
15
|
+
|
16
|
+
refine String do
|
17
|
+
COLORS.each do |name, code|
|
18
|
+
define_method(name) { "\e[#{code}m#{self}\e[0m" }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -6,10 +6,9 @@ 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 "bundle add cable_ready"
|
10
9
|
system "bundle exec rails webpacker:install:stimulus"
|
11
10
|
gem_version = StimulusReflex::VERSION.gsub(".pre", "-pre")
|
12
|
-
system "yarn add
|
11
|
+
system "yarn add stimulus_reflex@#{gem_version}"
|
13
12
|
main_folder = defined?(Webpacker) ? Webpacker.config.source_path.to_s.gsub("#{Rails.root}/", "") : "app/javascript"
|
14
13
|
|
15
14
|
FileUtils.mkdir_p Rails.root.join("#{main_folder}/controllers"), verbose: true
|
@@ -61,11 +60,12 @@ namespace :stimulus_reflex do
|
|
61
60
|
lines.delete_at 1
|
62
61
|
lines.insert 1, " adapter: redis\n"
|
63
62
|
lines.insert 2, " url: <%= ENV.fetch(\"REDIS_URL\") { \"redis://localhost:6379/1\" } %>\n"
|
64
|
-
lines.insert 3, " channel_prefix: " + Rails.
|
63
|
+
lines.insert 3, " channel_prefix: " + File.basename(Rails.root.to_s).underscore + "_development\n"
|
65
64
|
File.open(filepath, "w") { |f| f.write lines.join }
|
66
65
|
end
|
67
66
|
|
68
67
|
system "bundle exec rails generate stimulus_reflex example"
|
68
|
+
puts "Generating default StimulusReflex configuration file into your application config/initializers directory"
|
69
69
|
system "bundle exec rails generate stimulus_reflex:config"
|
70
70
|
system "rails dev:cache" unless Rails.root.join("tmp", "caching-dev.txt").exist?
|
71
71
|
end
|
data/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "stimulus_reflex",
|
3
|
-
"version": "3.
|
3
|
+
"version": "3.4.0-pre6",
|
4
4
|
"description": "Build reactive applications with the Rails tooling you already know and love.",
|
5
5
|
"keywords": [
|
6
6
|
"ruby",
|
@@ -28,34 +28,28 @@
|
|
28
28
|
},
|
29
29
|
"license": "MIT",
|
30
30
|
"author": "Nathan Hopkins <natehop@gmail.com>",
|
31
|
-
"
|
32
|
-
"
|
33
|
-
"module": "javascript/dist/stimulus_reflex.module.js",
|
34
|
-
"esmodule": "javascript/dist/stimulus_reflex.modern.js",
|
31
|
+
"main": "./javascript/stimulus_reflex.js",
|
32
|
+
"module": "./javascript/stimulus_reflex.js",
|
35
33
|
"scripts": {
|
36
|
-
"
|
37
|
-
"
|
38
|
-
"prettier-standard:
|
39
|
-
"
|
40
|
-
"test": "yarn run mocha --require @babel/register --require esm ./javascript/test",
|
41
|
-
"build": "microbundle --target browser --format modern,es,cjs --no-strict",
|
42
|
-
"dev": "microbundle watch --target browser --format modern,es,cjs --no-strict"
|
34
|
+
"postinstall": "node ./javascript/scripts/post_install.js",
|
35
|
+
"prettier-standard:check": "yarn run prettier-standard --check ./javascript/*.js ./javascript/**/*.js",
|
36
|
+
"prettier-standard:format": "yarn run prettier-standard ./javascript/*.js ./javascript/**/*.js",
|
37
|
+
"test": "yarn run mocha --require @babel/register --require esm ./javascript/test"
|
43
38
|
},
|
44
39
|
"peerDependencies": {
|
45
|
-
"@rails/actioncable": ">= 6.0",
|
46
|
-
"cable_ready": ">= 4.3.0",
|
47
40
|
"stimulus": ">= 1.1"
|
48
41
|
},
|
42
|
+
"dependencies": {
|
43
|
+
"@rails/actioncable": ">= 6.0",
|
44
|
+
"cable_ready": ">= 4.4"
|
45
|
+
},
|
49
46
|
"devDependencies": {
|
50
47
|
"@babel/core": "^7.6.2",
|
51
48
|
"@babel/preset-env": "^7.6.2",
|
52
49
|
"@babel/register": "^7.6.2",
|
53
|
-
"@rails/actioncable": "^6.0.3-3",
|
54
50
|
"assert": "^2.0.0",
|
55
|
-
"cable_ready": "^4.4.0-pre2",
|
56
51
|
"esm": "^3.2.25",
|
57
52
|
"jsdom": "^16.0.1",
|
58
|
-
"microbundle": "^0.12.3",
|
59
53
|
"mocha": "^8.0.1",
|
60
54
|
"prettier-standard": "^16.1.0",
|
61
55
|
"stimulus": "^1.1.1"
|
data/stimulus_reflex.gemspec
CHANGED
@@ -30,9 +30,9 @@ Gem::Specification.new do |gem|
|
|
30
30
|
gem.add_dependency "nokogiri"
|
31
31
|
gem.add_dependency "rails", ">= 5.2"
|
32
32
|
gem.add_dependency "redis"
|
33
|
+
gem.add_dependency "cable_ready", ">= 4.4"
|
33
34
|
|
34
35
|
gem.add_development_dependency "bundler", "~> 2.0"
|
35
|
-
gem.add_development_dependency "cable_ready", ">= 4.3.0"
|
36
36
|
gem.add_development_dependency "pry-nav"
|
37
37
|
gem.add_development_dependency "pry"
|
38
38
|
gem.add_development_dependency "rake"
|
data/tags
CHANGED
@@ -6,93 +6,134 @@
|
|
6
6
|
!_TAG_PROGRAM_VERSION 5.8 //
|
7
7
|
ApplicationReflex test/tmp/app/reflexes/application_reflex.rb /^class ApplicationReflex < StimulusReflex::Reflex$/;" c
|
8
8
|
Broadcaster lib/stimulus_reflex/broadcasters/broadcaster.rb /^ class Broadcaster$/;" c class:StimulusReflex
|
9
|
-
|
9
|
+
CableReadyChannels lib/stimulus_reflex/cable_ready_channels.rb /^ class CableReadyChannels$/;" c class:StimulusReflex
|
10
|
+
Colorize lib/stimulus_reflex/utils/colorize.rb /^ module Colorize$/;" m class:StimulusReflex.Utils
|
11
|
+
ConfigGenerator lib/generators/stimulus_reflex/config_generator.rb /^ class ConfigGenerator < Rails::Generators::Base$/;" c class:StimulusReflex
|
12
|
+
Configuration lib/stimulus_reflex/configuration.rb /^ class Configuration$/;" c
|
10
13
|
Engine lib/stimulus_reflex.rb /^ class Engine < Rails::Engine$/;" c class:StimulusReflex
|
14
|
+
Logger lib/stimulus_reflex/logger.rb /^ class Logger$/;" c class:StimulusReflex
|
11
15
|
NothingBroadcaster lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ class NothingBroadcaster < Broadcaster$/;" c class:StimulusReflex
|
12
16
|
PageBroadcaster lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ class PageBroadcaster < Broadcaster$/;" c class:StimulusReflex
|
17
|
+
PostsReflex test/tmp/app/reflexes/posts_reflex.rb /^class PostsReflex < ApplicationReflex$/;" c
|
13
18
|
SelectorBroadcaster lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ class SelectorBroadcaster < Broadcaster$/;" c class:StimulusReflex
|
19
|
+
StimulusReflex app/channels/stimulus_reflex/channel.rb /^class StimulusReflex::Channel < StimulusReflex.configuration.parent_channel.constantize$/;" c
|
20
|
+
StimulusReflex lib/generators/stimulus_reflex/config_generator.rb /^module StimulusReflex$/;" m
|
14
21
|
StimulusReflex lib/stimulus_reflex.rb /^module StimulusReflex$/;" m
|
15
22
|
StimulusReflex lib/stimulus_reflex/broadcasters/broadcaster.rb /^module StimulusReflex$/;" m
|
16
23
|
StimulusReflex lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^module StimulusReflex$/;" m
|
17
24
|
StimulusReflex lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^module StimulusReflex$/;" m
|
18
25
|
StimulusReflex lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^module StimulusReflex$/;" m
|
19
|
-
StimulusReflex lib/stimulus_reflex/
|
26
|
+
StimulusReflex lib/stimulus_reflex/cable_ready_channels.rb /^module StimulusReflex$/;" m
|
27
|
+
StimulusReflex lib/stimulus_reflex/configuration.rb /^module StimulusReflex$/;" m
|
20
28
|
StimulusReflex lib/stimulus_reflex/element.rb /^class StimulusReflex::Element < OpenStruct$/;" c
|
29
|
+
StimulusReflex lib/stimulus_reflex/logger.rb /^module StimulusReflex$/;" m
|
21
30
|
StimulusReflex lib/stimulus_reflex/reflex.rb /^class StimulusReflex::Reflex$/;" c
|
31
|
+
StimulusReflex lib/stimulus_reflex/sanity_checker.rb /^class StimulusReflex::SanityChecker$/;" c
|
32
|
+
StimulusReflex lib/stimulus_reflex/utils/colorize.rb /^module StimulusReflex$/;" m
|
22
33
|
StimulusReflex lib/stimulus_reflex/version.rb /^module StimulusReflex$/;" m
|
23
|
-
|
34
|
+
StimulusReflex test/broadcasters/broadcaster_test.rb /^class StimulusReflex::BroadcasterTest < ActiveSupport::TestCase$/;" c
|
35
|
+
StimulusReflex test/broadcasters/nothing_broadcaster_test.rb /^class StimulusReflex::NothingBroadcasterTest < ActiveSupport::TestCase$/;" c
|
36
|
+
StimulusReflex test/broadcasters/page_broadcaster_test.rb /^class StimulusReflex::PageBroadcasterTest < ActiveSupport::TestCase$/;" c
|
37
|
+
StimulusReflex test/broadcasters/selector_broadcaster_test.rb /^class StimulusReflex::SelectorBroadcasterTest < ActiveSupport::TestCase$/;" c
|
38
|
+
StimulusReflexGenerator lib/generators/stimulus_reflex/stimulus_reflex_generator.rb /^class StimulusReflexGenerator < Rails::Generators::NamedBase$/;" c
|
24
39
|
StimulusReflexGeneratorTest test/generators/stimulus_reflex_generator_test.rb /^class StimulusReflexGeneratorTest < Rails::Generators::TestCase$/;" c
|
25
|
-
|
26
|
-
addDifference lib/stimulus_reflex/compare_xml.rb /^ def addDifference(node1, node2, diff1, diff2, opts, differences)$/;" f class:CompareXML
|
40
|
+
Utils lib/stimulus_reflex/utils/colorize.rb /^ module Utils$/;" m class:StimulusReflex
|
27
41
|
add_callback lib/stimulus_reflex/reflex.rb /^ def add_callback(kind, *args, &block)$/;" f class:StimulusReflex
|
28
42
|
after_reflex lib/stimulus_reflex/reflex.rb /^ def after_reflex(*args, &block)$/;" f class:StimulusReflex
|
43
|
+
append_morph lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def append_morph(selectors, html)$/;" f class:StimulusReflex.SelectorBroadcaster
|
29
44
|
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
45
|
before_reflex lib/stimulus_reflex/reflex.rb /^ def before_reflex(*args, &block)$/;" f class:StimulusReflex
|
34
46
|
broadcast lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def broadcast(*args)$/;" f class:StimulusReflex.Broadcaster
|
35
47
|
broadcast lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ def broadcast(_, data)$/;" f class:StimulusReflex.NothingBroadcaster
|
36
48
|
broadcast lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ def broadcast(selectors, data)$/;" f class:StimulusReflex.PageBroadcaster
|
37
49
|
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
|
-
compareUnsortedAttributeSets lib/stimulus_reflex/compare_xml.rb /^ def compareUnsortedAttributeSets(n1, n2, a1_set, a2_set, opts, differences, status = EQUIVALENT)$/;" f class:CompareXML
|
50
|
+
broadcast_message lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def broadcast_message(subject:, body: nil, data: {}, error: nil)$/;" f class:StimulusReflex.Broadcaster
|
51
|
+
caching_enabled? lib/stimulus_reflex/sanity_checker.rb /^ def caching_enabled?$/;" f
|
52
|
+
called_by_generate_config? lib/stimulus_reflex/sanity_checker.rb /^ def called_by_generate_config?$/;" f class:StimulusReflex
|
53
|
+
check! lib/stimulus_reflex/sanity_checker.rb /^ def check!$/;" f class:StimulusReflex
|
54
|
+
check_caching_enabled lib/stimulus_reflex/sanity_checker.rb /^ def check_caching_enabled$/;" f
|
55
|
+
check_javascript_package_version lib/stimulus_reflex/sanity_checker.rb /^ def check_javascript_package_version$/;" f
|
56
|
+
commit_session app/channels/stimulus_reflex/channel.rb /^ def commit_session(reflex)$/;" f class:StimulusReflex
|
57
|
+
config_logging lib/stimulus_reflex/logger.rb /^ def config_logging$/;" f class:StimulusReflex.Logger
|
58
|
+
configuration lib/stimulus_reflex/configuration.rb /^ def configuration$/;" f class:StimulusReflex
|
59
|
+
configure lib/stimulus_reflex/configuration.rb /^ def configure$/;" f class:StimulusReflex
|
60
|
+
connection_id lib/stimulus_reflex/logger.rb /^ def connection_id$/;" f class:StimulusReflex.Logger
|
61
|
+
connection_id_full lib/stimulus_reflex/logger.rb /^ def connection_id_full$/;" f class:StimulusReflex.Logger
|
51
62
|
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
|
63
|
+
copy_application_files lib/generators/stimulus_reflex/stimulus_reflex_generator.rb /^ def copy_application_files$/;" f class:StimulusReflexGenerator
|
64
|
+
copy_config_file lib/generators/stimulus_reflex/config_generator.rb /^ def copy_config_file$/;" f class:StimulusReflex.ConfigGenerator
|
53
65
|
dataset lib/stimulus_reflex/element.rb /^ def dataset$/;" f class:StimulusReflex
|
54
66
|
default_reflex lib/stimulus_reflex/reflex.rb /^ def default_reflex$/;" f
|
55
|
-
delegate_call_to_reflex
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
equivalent? lib/stimulus_reflex/compare_xml.rb /^ def equivalent?(n1, n2, opts = {}, childopts = {}, diffchildren = false)$/;" f class:CompareXML
|
60
|
-
error javascript/log.js /^function error (response) {$/;" f
|
61
|
-
exception_message_with_backtrace lib/stimulus_reflex/channel.rb /^ def exception_message_with_backtrace(exception)$/;" f class:StimulusReflex
|
62
|
-
execute lib/generators/stimulus_reflex_generator.rb /^ def execute$/;" f class:StimulusReflexGenerator
|
67
|
+
delegate_call_to_reflex app/channels/stimulus_reflex/channel.rb /^ def delegate_call_to_reflex(reflex, method_name, arguments = [])$/;" f class:StimulusReflex
|
68
|
+
exception_message_with_backtrace app/channels/stimulus_reflex/channel.rb /^ def exception_message_with_backtrace(exception)$/;" f class:StimulusReflex
|
69
|
+
execute lib/generators/stimulus_reflex/stimulus_reflex_generator.rb /^ def execute$/;" f class:StimulusReflexGenerator
|
70
|
+
exit_with_info lib/stimulus_reflex/sanity_checker.rb /^ def exit_with_info$/;" f
|
63
71
|
export.reflexAttribute javascript/schema.js /^ reflexAttribute: 'data-reflex',$/;" p
|
64
72
|
export.reflexDatasetAttribute javascript/schema.js /^ reflexDatasetAttribute: 'data-reflex-dataset'$/;" p
|
65
73
|
export.reflexPermanentAttribute javascript/schema.js /^ reflexPermanentAttribute: 'data-reflex-permanent',$/;" p
|
66
74
|
export.reflexRootAttribute javascript/schema.js /^ reflexRootAttribute: 'data-reflex-root',$/;" p
|
67
75
|
findConsumer javascript/consumer.js /^function findConsumer (object, depth = 0) {$/;" f
|
68
|
-
|
76
|
+
find_javascript_package_version lib/stimulus_reflex/sanity_checker.rb /^ def find_javascript_package_version$/;" f
|
77
|
+
fix_environment! app/channels/stimulus_reflex/channel.rb /^ def fix_environment!$/;" f class:StimulusReflex
|
78
|
+
function.error javascript/log.js /^function error (event) {$/;" f
|
79
|
+
gem_version lib/stimulus_reflex/sanity_checker.rb /^ def gem_version$/;" f
|
69
80
|
halted? lib/stimulus_reflex/reflex.rb /^ def halted?$/;" f
|
70
81
|
initialize lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def initialize(reflex)$/;" f class:StimulusReflex.Broadcaster
|
82
|
+
initialize lib/stimulus_reflex/cable_ready_channels.rb /^ def initialize(stream_name)$/;" f class:StimulusReflex.CableReadyChannels
|
83
|
+
initialize lib/stimulus_reflex/configuration.rb /^ def initialize$/;" f class:Configuration
|
71
84
|
initialize lib/stimulus_reflex/element.rb /^ def initialize(data = {})$/;" f class:StimulusReflex
|
72
|
-
initialize lib/stimulus_reflex/
|
73
|
-
|
85
|
+
initialize lib/stimulus_reflex/logger.rb /^ def initialize(reflex)$/;" f class:StimulusReflex.Logger
|
86
|
+
initialize lib/stimulus_reflex/reflex.rb /^ def initialize(channel, url: nil, element: nil, selectors: [], method_name: nil, params: {}, client_attributes: {})$/;" f
|
87
|
+
initializer_path lib/stimulus_reflex/sanity_checker.rb /^ def initializer_path$/;" f
|
88
|
+
is_reflex? app/channels/stimulus_reflex/channel.rb /^ def is_reflex?(reflex_class)$/;" f class:StimulusReflex
|
89
|
+
javascript_package_version lib/stimulus_reflex/sanity_checker.rb /^ def javascript_package_version$/;" f
|
90
|
+
javascript_version_matches? lib/stimulus_reflex/sanity_checker.rb /^ def javascript_version_matches?$/;" f
|
91
|
+
method_missing lib/stimulus_reflex/cable_ready_channels.rb /^ def method_missing(name, *args)$/;" f class:StimulusReflex.CableReadyChannels
|
92
|
+
method_missing lib/stimulus_reflex/logger.rb /^ def method_missing method$/;" f class:StimulusReflex.Logger
|
93
|
+
mode lib/stimulus_reflex/logger.rb /^ def mode$/;" f class:StimulusReflex.Logger
|
74
94
|
morph lib/stimulus_reflex/reflex.rb /^ def morph(selectors, html = "")$/;" f
|
75
95
|
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
96
|
normalize_callback_option! lib/stimulus_reflex/reflex.rb /^ def normalize_callback_option!(options, from, to)$/;" f class:StimulusReflex
|
78
97
|
normalize_callback_options! lib/stimulus_reflex/reflex.rb /^ def normalize_callback_options!(options)$/;" f class:StimulusReflex
|
98
|
+
not_null_store? lib/stimulus_reflex/sanity_checker.rb /^ def not_null_store?$/;" f
|
79
99
|
nothing? lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def nothing?$/;" f class:StimulusReflex.Broadcaster
|
80
100
|
nothing? lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ def nothing?$/;" f class:StimulusReflex.NothingBroadcaster
|
81
|
-
object_with_indifferent_access
|
101
|
+
object_with_indifferent_access app/channels/stimulus_reflex/channel.rb /^ def object_with_indifferent_access(object)$/;" f class:StimulusReflex
|
102
|
+
operation lib/stimulus_reflex/logger.rb /^ def operation$/;" f class:StimulusReflex.Logger
|
103
|
+
operation_counter lib/stimulus_reflex/logger.rb /^ def operation_counter$/;" f class:StimulusReflex.Logger
|
104
|
+
package_json_path lib/stimulus_reflex/sanity_checker.rb /^ def package_json_path$/;" f
|
82
105
|
page? lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def page?$/;" f class:StimulusReflex.Broadcaster
|
83
106
|
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
107
|
params lib/stimulus_reflex/reflex.rb /^ def params$/;" f
|
108
|
+
print lib/stimulus_reflex/logger.rb /^ def print$/;" f class:StimulusReflex.Logger
|
109
|
+
private_instance_methods lib/stimulus_reflex/logger.rb /^ def private_instance_methods$/;" f class:StimulusReflex.Logger
|
86
110
|
process lib/stimulus_reflex/reflex.rb /^ def process(name, *args)$/;" f
|
87
|
-
receive
|
111
|
+
receive app/channels/stimulus_reflex/channel.rb /^ def receive(data)$/;" f class:StimulusReflex
|
112
|
+
reflex_id lib/stimulus_reflex/logger.rb /^ def reflex_id$/;" f class:StimulusReflex.Logger
|
113
|
+
reflex_id_full lib/stimulus_reflex/logger.rb /^ def reflex_id_full$/;" f class:StimulusReflex.Logger
|
114
|
+
reflex_info lib/stimulus_reflex/logger.rb /^ def reflex_info$/;" f class:StimulusReflex.Logger
|
115
|
+
request javascript/log.js /^function request (reflexId, target, args, controller, element) {$/;" f
|
88
116
|
request lib/stimulus_reflex/reflex.rb /^ def request$/;" f
|
117
|
+
request.success javascript/log.js /^function success (event) {$/;" f
|
118
|
+
respond_to_missing? lib/stimulus_reflex/cable_ready_channels.rb /^ def respond_to_missing?(name, include_all)$/;" f class:StimulusReflex.CableReadyChannels
|
119
|
+
respond_to_missing? lib/stimulus_reflex/logger.rb /^ def respond_to_missing? method$/;" f class:StimulusReflex.Logger
|
120
|
+
search_file lib/stimulus_reflex/sanity_checker.rb /^ def search_file(path, regex:)$/;" f
|
121
|
+
selector lib/stimulus_reflex/logger.rb /^ def selector$/;" f class:StimulusReflex.Logger
|
89
122
|
selector? lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def selector?$/;" f class:StimulusReflex.Broadcaster
|
90
123
|
selector? lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def selector?$/;" f class:StimulusReflex.SelectorBroadcaster
|
91
|
-
|
92
|
-
|
124
|
+
session_id lib/stimulus_reflex/logger.rb /^ def session_id$/;" f class:StimulusReflex.Logger
|
125
|
+
session_id_full lib/stimulus_reflex/logger.rb /^ def session_id_full$/;" f class:StimulusReflex.Logger
|
126
|
+
signed lib/stimulus_reflex/element.rb /^ def signed$/;" f class:StimulusReflex
|
127
|
+
stream_name app/channels/stimulus_reflex/channel.rb /^ def stream_name$/;" f class:StimulusReflex
|
128
|
+
subscribed app/channels/stimulus_reflex/channel.rb /^ def subscribed$/;" f class:StimulusReflex
|
129
|
+
timestamp lib/stimulus_reflex/logger.rb /^ def timestamp$/;" f class:StimulusReflex.Logger
|
130
|
+
to_s lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def to_s$/;" f class:StimulusReflex.Broadcaster
|
131
|
+
to_s lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ def to_s$/;" f class:StimulusReflex.NothingBroadcaster
|
132
|
+
to_s lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ def to_s$/;" f class:StimulusReflex.PageBroadcaster
|
133
|
+
to_s lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def to_s$/;" f class:StimulusReflex.SelectorBroadcaster
|
93
134
|
to_sym lib/stimulus_reflex/broadcasters/broadcaster.rb /^ def to_sym$/;" f class:StimulusReflex.Broadcaster
|
94
135
|
to_sym lib/stimulus_reflex/broadcasters/nothing_broadcaster.rb /^ def to_sym$/;" f class:StimulusReflex.NothingBroadcaster
|
95
136
|
to_sym lib/stimulus_reflex/broadcasters/page_broadcaster.rb /^ def to_sym$/;" f class:StimulusReflex.PageBroadcaster
|
96
137
|
to_sym lib/stimulus_reflex/broadcasters/selector_broadcaster.rb /^ def to_sym$/;" f class:StimulusReflex.SelectorBroadcaster
|
97
|
-
|
98
|
-
|
138
|
+
unsigned lib/stimulus_reflex/element.rb /^ def unsigned$/;" f class:StimulusReflex
|
139
|
+
warn_and_exit lib/stimulus_reflex/sanity_checker.rb /^ def warn_and_exit(text)$/;" f
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require_relative "broadcaster_test_case"
|
2
|
+
|
3
|
+
class StimulusReflex::BroadcasterTest < StimulusReflex::BroadcasterTestCase
|
4
|
+
test "raises a NotImplementedError if called directly" do
|
5
|
+
broadcaster = StimulusReflex::Broadcaster.new(@reflex)
|
6
|
+
|
7
|
+
assert_raises(NotImplementedError) { broadcaster.broadcast }
|
8
|
+
assert_raises(NotImplementedError) { broadcaster.broadcast_message(subject: "Test") }
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class StimulusReflex::BroadcasterTestCase < ActionCable::Channel::TestCase
|
4
|
+
tests StimulusReflex::Channel
|
5
|
+
|
6
|
+
setup do
|
7
|
+
stub_connection(session_id: SecureRandom.uuid)
|
8
|
+
def connection.env
|
9
|
+
@env ||= {}
|
10
|
+
end
|
11
|
+
@reflex = StimulusReflex::Reflex.new(subscribe, url: "https://test.stimulusreflex.com")
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative "broadcaster_test_case"
|
2
|
+
|
3
|
+
class StimulusReflex::NothingBroadcasterTest < StimulusReflex::BroadcasterTestCase
|
4
|
+
test "broadcasts a server message when called" do
|
5
|
+
broadcaster = StimulusReflex::NothingBroadcaster.new(@reflex)
|
6
|
+
|
7
|
+
expected = {
|
8
|
+
"cableReady" => true,
|
9
|
+
"operations" => {
|
10
|
+
"dispatchEvent" => [
|
11
|
+
{
|
12
|
+
"name" => "stimulus-reflex:server-message",
|
13
|
+
"detail" => {
|
14
|
+
"reflexId" => nil,
|
15
|
+
"stimulusReflex" => {
|
16
|
+
"some" => :data,
|
17
|
+
"morph" => :nothing,
|
18
|
+
"serverMessage" => {
|
19
|
+
"subject" => "nothing",
|
20
|
+
"body" => nil
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
]
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
assert_broadcast_on @reflex.stream_name, expected do
|
30
|
+
broadcaster.broadcast nil, some: :data
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require_relative "broadcaster_test_case"
|
2
|
+
|
3
|
+
class StimulusReflex::PageBroadcasterTest < StimulusReflex::BroadcasterTestCase
|
4
|
+
test "returns if the response html is empty" do
|
5
|
+
broadcaster = StimulusReflex::PageBroadcaster.new(@reflex)
|
6
|
+
broadcaster.broadcast(["#foo"], {some: :data})
|
7
|
+
# TODO: figure out how to refute_broadcast_on
|
8
|
+
end
|
9
|
+
|
10
|
+
test "performs a page morph on body" do
|
11
|
+
class << @reflex.controller.response
|
12
|
+
def body
|
13
|
+
"<html><head></head><body>New Content</body></html>"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
broadcaster = StimulusReflex::PageBroadcaster.new(@reflex)
|
18
|
+
|
19
|
+
expected = {
|
20
|
+
"cableReady" => true,
|
21
|
+
"operations" => {
|
22
|
+
"morph" => [
|
23
|
+
{
|
24
|
+
"selector" => "body",
|
25
|
+
"html" => "New Content",
|
26
|
+
"childrenOnly" => true,
|
27
|
+
"permanentAttributeName" => nil,
|
28
|
+
"stimulusReflex" => {
|
29
|
+
"some" => :data,
|
30
|
+
"morph" => :page
|
31
|
+
}
|
32
|
+
}
|
33
|
+
]
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
assert_broadcast_on @reflex.stream_name, expected do
|
38
|
+
broadcaster.broadcast(["body"], {some: :data})
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
test "performs a page morph given an array of reflex root selectors" do
|
43
|
+
class << @reflex.controller.response
|
44
|
+
def body
|
45
|
+
"<html><head></head><body><div id=\"foo\">New Content</div></body></html>"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
broadcaster = StimulusReflex::PageBroadcaster.new(@reflex)
|
50
|
+
|
51
|
+
expected = {
|
52
|
+
"cableReady" => true,
|
53
|
+
"operations" => {
|
54
|
+
"morph" => [
|
55
|
+
{
|
56
|
+
"selector" => "#foo",
|
57
|
+
"html" => "New Content",
|
58
|
+
"childrenOnly" => true,
|
59
|
+
"permanentAttributeName" => nil,
|
60
|
+
"stimulusReflex" => {
|
61
|
+
"some" => :data,
|
62
|
+
"morph" => :page
|
63
|
+
}
|
64
|
+
}
|
65
|
+
]
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
assert_broadcast_on @reflex.stream_name, expected do
|
70
|
+
broadcaster.broadcast(["#foo"], {some: :data})
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# require_relative "broadcaster_test_case"
|
2
|
+
|
3
|
+
# class StimulusReflex::SelectorBroadcasterTest < StimulusReflex::BroadcasterTestCase
|
4
|
+
# test "morphs the contents of an element if the selector(s) are present in both original and morphed html fragments" do
|
5
|
+
# broadcaster = StimulusReflex::SelectorBroadcaster.new(@reflex)
|
6
|
+
# broadcaster.append_morph("#foo", "<div id=\"foo\"><span>bar</span></div>")
|
7
|
+
|
8
|
+
# expected = {
|
9
|
+
# "cableReady" => true,
|
10
|
+
# "operations" => {
|
11
|
+
# "morph" => [
|
12
|
+
# {
|
13
|
+
# "selector" => "#foo",
|
14
|
+
# "html" => "<span>bar</span>",
|
15
|
+
# "childrenOnly" => true,
|
16
|
+
# "permanentAttributeName" => nil,
|
17
|
+
# "stimulusReflex" => {
|
18
|
+
# "some" => :data,
|
19
|
+
# "morph" => :selector
|
20
|
+
# }
|
21
|
+
# }
|
22
|
+
# ]
|
23
|
+
# }
|
24
|
+
# }
|
25
|
+
|
26
|
+
# assert_broadcast_on @reflex.stream_name, expected do
|
27
|
+
# broadcaster.broadcast nil, some: :data
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
|
31
|
+
# test "replaces the contents of an element and ignores permanent-attributes if the selector(s) aren't present in the replacing html fragment" do
|
32
|
+
# broadcaster = StimulusReflex::SelectorBroadcaster.new(@reflex)
|
33
|
+
# broadcaster.append_morph("#foo", "<div id=\"baz\"><span>bar</span></div>")
|
34
|
+
|
35
|
+
# expected = {
|
36
|
+
# "cableReady" => true,
|
37
|
+
# "operations" => {
|
38
|
+
# "innerHtml" => [
|
39
|
+
# {
|
40
|
+
# "selector" => "#foo",
|
41
|
+
# "html" => "<div id=\"baz\"><span>bar</span></div>",
|
42
|
+
# "stimulusReflex" => {
|
43
|
+
# "some" => :data,
|
44
|
+
# "morph" => :selector
|
45
|
+
# }
|
46
|
+
# }
|
47
|
+
# ]
|
48
|
+
# }
|
49
|
+
# }
|
50
|
+
|
51
|
+
# assert_broadcast_on @reflex.stream_name, expected do
|
52
|
+
# broadcaster.broadcast nil, some: :data
|
53
|
+
# end
|
54
|
+
# end
|
55
|
+
# end
|