stimulus_reflex 3.5.0.rc4 → 3.5.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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +19 -13
  3. data/app/assets/javascripts/stimulus_reflex.js +1 -1
  4. data/app/assets/javascripts/stimulus_reflex.umd.js +1 -1
  5. data/lib/generators/stimulus_reflex/stimulus_reflex_generator.rb +2 -2
  6. data/lib/generators/stimulus_reflex/templates/app/javascript/config/cable_ready.js.tt +1 -1
  7. data/lib/generators/stimulus_reflex/templates/app/javascript/config/index.js.tt +1 -1
  8. data/lib/generators/stimulus_reflex/templates/app/javascript/config/stimulus_reflex.js.tt +1 -1
  9. data/lib/generators/stimulus_reflex/templates/app/javascript/controllers/%file_name%_controller.js.tt +1 -1
  10. data/lib/generators/stimulus_reflex/templates/app/javascript/controllers/application.js.tt +1 -1
  11. data/lib/install/action_cable.rb +30 -30
  12. data/lib/install/broadcaster.rb +11 -11
  13. data/lib/install/bundle.rb +9 -9
  14. data/lib/install/compression.rb +5 -5
  15. data/lib/install/config.rb +22 -22
  16. data/lib/install/development.rb +19 -19
  17. data/lib/install/esbuild.rb +28 -28
  18. data/lib/install/example.rb +3 -3
  19. data/lib/install/importmap.rb +29 -29
  20. data/lib/install/initializers.rb +3 -3
  21. data/lib/install/mrujs.rb +25 -25
  22. data/lib/install/npm_packages.rb +7 -7
  23. data/lib/install/reflexes.rb +2 -2
  24. data/lib/install/shakapacker.rb +23 -23
  25. data/lib/install/spring.rb +7 -7
  26. data/lib/install/updatable.rb +7 -7
  27. data/lib/install/vite.rb +22 -22
  28. data/lib/install/webpacker.rb +27 -27
  29. data/lib/install/yarn.rb +9 -9
  30. data/lib/stimulus_reflex/html/document_fragment.rb +5 -3
  31. data/lib/stimulus_reflex/installer.rb +303 -277
  32. data/lib/stimulus_reflex/version.rb +1 -1
  33. data/lib/stimulus_reflex.rb +2 -0
  34. data/lib/tasks/stimulus_reflex/stimulus_reflex.rake +8 -8
  35. data/package.json +1 -1
  36. data/stimulus_reflex.gemspec +2 -0
  37. data/yarn.lock +7 -7
  38. metadata +30 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de1231151ed33d07ced1d833af4ed33e44f65715fe9efa2b47a609839cb02772
4
- data.tar.gz: a14a7c5e9d642aca0d64bcd240b4d8f0eea0c4cdd48a4588f452fcf538453b44
3
+ metadata.gz: b03ea1fc12e4b3f3367a8f8c1daa82d03d198604afb21cd625489ea15b5509b2
4
+ data.tar.gz: daf235d6803af70cc1ddbc5616e9b5c4bdf8eceb4b610a7fc124eabb4e1a5b1a
5
5
  SHA512:
6
- metadata.gz: be8a19b025cb8d5b5ae75430b60386f9e2e3e0eb68e6549567aa6e2af99960bd659e51b2f9ba66d8daf324ce2ac7b1230e8efd1f3b52f69ecb7ecf6e49b9d077
7
- data.tar.gz: b0eed2ce16618c6db978cafb7d12e4550a860c48343c7fd885fa68efe53bbe37c61f0d53755bbb3ff7715f536c5b131f2bdd0c68a782d5f67c990540dc6dd2f8
6
+ metadata.gz: 53cd791b9e756070eba8022fc360e6a05e268f75e5ff8f2d89d2627132a249ff3dc17ee602e706ff10110ae1b57241189cc97678fab2cd6c92af2372ddd20030
7
+ data.tar.gz: 5030553b6416e07ac2c4f6c6798d296333a85fda27e9d43503d28b821fa665f35f2ee4436cee7b259efcc56104752024161d94887d046e8503deaff3c8d83651
data/Gemfile.lock CHANGED
@@ -1,13 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stimulus_reflex (3.5.0.rc4)
4
+ stimulus_reflex (3.5.0)
5
5
  actioncable (>= 5.2, < 8)
6
6
  actionpack (>= 5.2, < 8)
7
7
  actionview (>= 5.2, < 8)
8
8
  activesupport (>= 5.2, < 8)
9
9
  cable_ready (~> 5.0)
10
10
  nokogiri (~> 1.0)
11
+ nokogiri-html5-inference (~> 0.3)
11
12
  rack (>= 2, < 4)
12
13
  railties (>= 5.2, < 8)
13
14
  redis (>= 4.0, < 6.0)
@@ -82,24 +83,25 @@ GEM
82
83
  tzinfo (~> 2.0)
83
84
  ast (2.4.2)
84
85
  builder (3.2.4)
85
- cable_ready (5.0.1)
86
+ cable_ready (5.0.4)
86
87
  actionpack (>= 5.2)
87
88
  actionview (>= 5.2)
88
89
  activesupport (>= 5.2)
90
+ observer (~> 0.1)
89
91
  railties (>= 5.2)
90
92
  thread-local (>= 1.1.0)
91
- concurrent-ruby (1.2.2)
93
+ concurrent-ruby (1.2.3)
92
94
  connection_pool (2.4.0)
93
95
  crass (1.0.6)
94
96
  date (3.3.3)
95
97
  erubi (1.12.0)
96
98
  globalid (1.1.0)
97
99
  activesupport (>= 5.0)
98
- i18n (1.14.1)
100
+ i18n (1.14.5)
99
101
  concurrent-ruby (~> 1.0)
100
102
  json (2.6.3)
101
103
  language_server-protocol (3.17.0.3)
102
- loofah (2.21.3)
104
+ loofah (2.22.0)
103
105
  crass (~> 1.0.2)
104
106
  nokogiri (>= 1.12.0)
105
107
  magic_frozen_string_literal (1.2.0)
@@ -109,7 +111,7 @@ GEM
109
111
  net-pop
110
112
  net-smtp
111
113
  marcel (1.0.2)
112
- method_source (1.0.0)
114
+ method_source (1.1.0)
113
115
  mini_mime (1.1.2)
114
116
  minitest (5.18.1)
115
117
  mocha (1.13.0)
@@ -123,15 +125,18 @@ GEM
123
125
  net-smtp (0.3.3)
124
126
  net-protocol
125
127
  nio4r (2.5.8)
126
- nokogiri (1.16.2-x86_64-darwin)
128
+ nokogiri (1.16.4-x86_64-darwin)
127
129
  racc (~> 1.4)
128
- nokogiri (1.16.2-x86_64-linux)
130
+ nokogiri (1.16.4-x86_64-linux)
129
131
  racc (~> 1.4)
132
+ nokogiri-html5-inference (0.3.0)
133
+ nokogiri (~> 1.14)
134
+ observer (0.1.2)
130
135
  parallel (1.22.1)
131
136
  parser (3.2.1.0)
132
137
  ast (~> 2.4.1)
133
138
  racc (1.7.3)
134
- rack (2.2.8.1)
139
+ rack (2.2.9)
135
140
  rack-test (2.1.0)
136
141
  rack (>= 1.3)
137
142
  rails (7.0.4.2)
@@ -148,7 +153,7 @@ GEM
148
153
  activesupport (= 7.0.4.2)
149
154
  bundler (>= 1.15.0)
150
155
  railties (= 7.0.4.2)
151
- rails-dom-testing (2.1.1)
156
+ rails-dom-testing (2.2.0)
152
157
  activesupport (>= 5.0.0)
153
158
  minitest
154
159
  nokogiri (>= 1.6)
@@ -163,7 +168,7 @@ GEM
163
168
  thor (~> 1.0)
164
169
  zeitwerk (~> 2.5)
165
170
  rainbow (3.1.1)
166
- rake (13.0.6)
171
+ rake (13.2.1)
167
172
  redis (5.0.6)
168
173
  redis-client (>= 0.9.0)
169
174
  redis-client (0.14.0)
@@ -190,7 +195,7 @@ GEM
190
195
  language_server-protocol (~> 3.17.0.2)
191
196
  rubocop (= 1.44.1)
192
197
  rubocop-performance (= 1.15.2)
193
- thor (1.2.2)
198
+ thor (1.3.1)
194
199
  thread-local (1.1.0)
195
200
  timeout (0.3.2)
196
201
  tzinfo (2.0.6)
@@ -199,7 +204,7 @@ GEM
199
204
  websocket-driver (0.7.5)
200
205
  websocket-extensions (>= 0.1.0)
201
206
  websocket-extensions (0.1.5)
202
- zeitwerk (2.6.8)
207
+ zeitwerk (2.6.13)
203
208
 
204
209
  PLATFORMS
205
210
  x86_64-darwin-19
@@ -210,6 +215,7 @@ PLATFORMS
210
215
  DEPENDENCIES
211
216
  bundler (~> 2.0)
212
217
  magic_frozen_string_literal (~> 1.2)
218
+ minitest (= 5.18.1)
213
219
  mocha (~> 1.13)
214
220
  rails (>= 5.2, < 8)
215
221
  rake (~> 13.0)
@@ -995,7 +995,7 @@ var peerDependencies = {
995
995
  var dependencies = {
996
996
  "@hotwired/stimulus": "^3",
997
997
  "@rails/actioncable": "^6 || ^7",
998
- cable_ready: "^5.0.0"
998
+ cable_ready: "^5.0.4"
999
999
  };
1000
1000
 
1001
1001
  var devDependencies = {
@@ -902,7 +902,7 @@
902
902
  var dependencies = {
903
903
  "@hotwired/stimulus": "^3",
904
904
  "@rails/actioncable": "^6 || ^7",
905
- cable_ready: "^5.0.0"
905
+ cable_ready: "^5.0.4"
906
906
  };
907
907
  var devDependencies = {
908
908
  "@open-wc/testing": "^3.1.7",
@@ -20,13 +20,13 @@ class StimulusReflexGenerator < Rails::Generators::NamedBase
20
20
 
21
21
  template(reflex_src, reflex_path) unless options[:skip_reflex]
22
22
 
23
- if !options[:skip_stimulus] && entrypoint.blank?
23
+ if !options[:skip_stimulus] && StimulusReflex::Installer.entrypoint.blank?
24
24
  puts "❌ You must specify a valid JavaScript entrypoint."
25
25
  exit
26
26
  end
27
27
 
28
28
  stimulus_controller_src = "app/javascript/controllers/%file_name%_controller.js.tt"
29
- stimulus_controller_path = Rails.root.join(entrypoint, "controllers/#{file_name}_controller.js")
29
+ stimulus_controller_path = Rails.root.join(StimulusReflex::Installer.entrypoint, "controllers/#{file_name}_controller.js")
30
30
 
31
31
  template(stimulus_controller_src, stimulus_controller_path) unless options[:skip_stimulus]
32
32
 
@@ -1,4 +1,4 @@
1
- <%- if bundler.importmap? -%>
1
+ <%- if StimulusReflex::Installer.bundler.importmap? -%>
2
2
  import consumer from "channels/consumer"
3
3
  <%- else -%>
4
4
  import consumer from "../channels/consumer"
@@ -1,4 +1,4 @@
1
- <%- if bundler.importmap? -%>
1
+ <%- if StimulusReflex::Installer.bundler.importmap? -%>
2
2
  import "config/cable_ready"
3
3
  import "config/stimulus_reflex"
4
4
  <%- else -%>
@@ -1,4 +1,4 @@
1
- <%- if bundler.importmap? -%>
1
+ <%- if StimulusReflex::Installer.bundler.importmap? -%>
2
2
  import { application } from "controllers/application"
3
3
  import controller from "controllers/application_controller"
4
4
  <%- else -%>
@@ -1,4 +1,4 @@
1
- <%- if bundler.importmap? -%>
1
+ <%- if StimulusReflex::Installer.bundler.importmap? -%>
2
2
  import ApplicationController from "controllers/application_controller"
3
3
  <%- else -%>
4
4
  import ApplicationController from "./application_controller"
@@ -1,5 +1,5 @@
1
1
  import { Application } from "@hotwired/stimulus"
2
- <%- if bundler.importmap? %>
2
+ <%- if StimulusReflex::Installer.bundler.importmap? %>
3
3
  import consumer from "channels/consumer"
4
4
  <%- else %>
5
5
  import consumer from "../channels/consumer"
@@ -6,11 +6,11 @@ require "stimulus_reflex/installer"
6
6
  if defined?(ActionCable::Engine)
7
7
  say "⏩ ActionCable::Engine is already loaded and in scope. Skipping"
8
8
  else
9
- halt "ActionCable::Engine is not loaded, please add or uncomment `require \"action_cable/engine\"` to your `config/application.rb`"
9
+ StimulusReflex::Installer.halt "ActionCable::Engine is not loaded, please add or uncomment `require \"action_cable/engine\"` to your `config/application.rb`"
10
10
  return
11
11
  end
12
12
 
13
- return if pack_path_missing?
13
+ return if StimulusReflex::Installer.pack_path_missing?
14
14
 
15
15
  # verify that the Action Cable pubsub config is created
16
16
  cable_config = Rails.root.join("config/cable.yml")
@@ -37,7 +37,7 @@ elsif yaml["development"]["adapter"] == "async"
37
37
  "url" => "<%= ENV.fetch(\"REDIS_URL\") { \"redis://localhost:6379/1\" } %>",
38
38
  "channel_prefix" => "#{app_name}_development"
39
39
  }
40
- backup(cable_config) do
40
+ StimulusReflex::Installer.backup(cable_config) do
41
41
  cable_config.write(yaml.to_yaml)
42
42
  end
43
43
  say "✅ config/cable.yml was updated to use the redis adapter in development"
@@ -45,29 +45,29 @@ else
45
45
  say "🤷 config/cable.yml should use the redis adapter - or something like it - in development. You have something else specified, and we trust that you know what you're doing."
46
46
  end
47
47
 
48
- if gemfile.match?(/gem ['"]redis['"]/)
48
+ if StimulusReflex::Installer.gemfile.match?(/gem ['"]redis['"]/)
49
49
  say "⏩ redis gem is already present in Gemfile. Skipping."
50
50
  elsif Rails::VERSION::MAJOR >= 7
51
- add_gem "redis@~> 5"
51
+ StimulusReflex::Installer.add_gem "redis@~> 5"
52
52
  else
53
- add_gem "redis@~> 4"
53
+ StimulusReflex::Installer.add_gem "redis@~> 4"
54
54
  end
55
55
 
56
56
  # install action-cable-redis-backport gem if using Action Cable < 7.1
57
57
  unless ActionCable::VERSION::MAJOR >= 7 && ActionCable::VERSION::MINOR >= 1
58
- if gemfile.match?(/gem ['"]action-cable-redis-backport['"]/)
58
+ if StimulusReflex::Installer.gemfile.match?(/gem ['"]action-cable-redis-backport['"]/)
59
59
  say "⏩ action-cable-redis-backport gem is already present in Gemfile. Skipping."
60
60
  else
61
- add_gem "action-cable-redis-backport@~> 1"
61
+ StimulusReflex::Installer.add_gem "action-cable-redis-backport@~> 1"
62
62
  end
63
63
  end
64
64
 
65
65
  # verify that the Action Cable channels folder and consumer class is available
66
66
  step_path = "/app/javascript/channels/"
67
- channels_path = Rails.root.join(entrypoint, "channels")
68
- consumer_src = fetch(step_path, "consumer.js.tt")
67
+ channels_path = Rails.root.join(StimulusReflex::Installer.entrypoint, "channels")
68
+ consumer_src = StimulusReflex::Installer.fetch(step_path, "consumer.js.tt")
69
69
  consumer_path = channels_path / "consumer.js"
70
- index_src = fetch(step_path, "index.js.#{bundler}.tt")
70
+ index_src = StimulusReflex::Installer.fetch(step_path, "index.js.#{StimulusReflex::Installer.bundler}.tt")
71
71
  index_path = channels_path / "index.js"
72
72
  friendly_index_path = index_path.relative_path_from(Rails.root).to_s
73
73
 
@@ -79,7 +79,7 @@ if index_path.exist?
79
79
  if index_path.read == index_src.read
80
80
  say "⏩ #{friendly_index_path} is already present. Skipping."
81
81
  else
82
- backup(index_path) do
82
+ StimulusReflex::Installer.backup(index_path) do
83
83
  copy_file(index_src, index_path, verbose: false)
84
84
  end
85
85
  say "✅ #{friendly_index_path} has been updated"
@@ -92,45 +92,45 @@ end
92
92
  # import Action Cable channels into application pack
93
93
  channels_pattern = /import ['"](\.\.\/|\.\/)?channels['"]/
94
94
  channels_commented_pattern = /\s*\/\/\s*#{channels_pattern}/
95
- channel_import = "import \"#{prefix}channels\"\n"
95
+ channel_import = "import \"#{StimulusReflex::Installer.prefix}channels\"\n"
96
96
 
97
- if pack.match?(channels_pattern)
98
- if pack.match?(channels_commented_pattern)
99
- proceed = if options.key? "uncomment"
100
- options["uncomment"]
97
+ if StimulusReflex::Installer.pack.match?(channels_pattern)
98
+ if StimulusReflex::Installer.pack.match?(channels_commented_pattern)
99
+ proceed = if StimulusReflex::Installer.options.key? "uncomment"
100
+ StimulusReflex::Installer.options["uncomment"]
101
101
  else
102
102
  !no?("✨ Action Cable seems to be commented out in your application.js. Do you want to uncomment it? (Y/n)")
103
103
  end
104
104
 
105
105
  if proceed
106
106
  # uncomment_lines only works with Ruby comments 🙄
107
- lines = pack_path.readlines
107
+ lines = StimulusReflex::Installer.pack_path.readlines
108
108
  matches = lines.select { |line| line =~ channels_commented_pattern }
109
109
  lines[lines.index(matches.last).to_i] = channel_import
110
- pack_path.write lines.join
111
- say "✅ Uncommented channels import in #{friendly_pack_path}"
110
+ StimulusReflex::Installer.pack_path.write lines.join
111
+ say "✅ Uncommented channels import in #{StimulusReflex::Installer.friendly_pack_path}"
112
112
  else
113
113
  say "🤷 your Action Cable channels are not being imported in your application.js. We trust that you have a reason for this."
114
114
  end
115
115
  else
116
- say "⏩ channels are already being imported in #{friendly_pack_path}. Skipping."
116
+ say "⏩ channels are already being imported in #{StimulusReflex::Installer.friendly_pack_path}. Skipping."
117
117
  end
118
118
  else
119
- lines = pack_path.readlines
119
+ lines = StimulusReflex::Installer.pack_path.readlines
120
120
  matches = lines.select { |line| line =~ /^import / }
121
121
  lines.insert lines.index(matches.last).to_i + 1, channel_import
122
- pack_path.write lines.join
123
- say "✅ channels imported in #{friendly_pack_path}"
122
+ StimulusReflex::Installer.pack_path.write lines.join
123
+ say "✅ channels imported in #{StimulusReflex::Installer.friendly_pack_path}"
124
124
  end
125
125
 
126
126
  # create working copy of Action Cable initializer in tmp
127
- if action_cable_initializer_path.exist?
128
- FileUtils.cp(action_cable_initializer_path, action_cable_initializer_working_path)
127
+ if StimulusReflex::Installer.action_cable_initializer_path.exist?
128
+ FileUtils.cp(StimulusReflex::Installer.action_cable_initializer_path, StimulusReflex::Installer.action_cable_initializer_working_path)
129
129
 
130
130
  say "⏩ Action Cable initializer already exists. Skipping"
131
131
  else
132
132
  # create Action Cable initializer if it doesn't already exist
133
- create_file(action_cable_initializer_working_path, verbose: false) do
133
+ create_file(StimulusReflex::Installer.action_cable_initializer_working_path, verbose: false) do
134
134
  <<~RUBY
135
135
  # frozen_string_literal: true
136
136
 
@@ -140,10 +140,10 @@ else
140
140
  end
141
141
 
142
142
  # silence notoriously chatty Action Cable logs
143
- if action_cable_initializer_working_path.read.match?(/^[^#]*ActionCable.server.config.logger/)
143
+ if StimulusReflex::Installer.action_cable_initializer_working_path.read.match?(/^[^#]*ActionCable.server.config.logger/)
144
144
  say "⏩ Action Cable logger is already being silenced. Skipping"
145
145
  else
146
- append_file(action_cable_initializer_working_path, verbose: false) do
146
+ append_file(StimulusReflex::Installer.action_cable_initializer_working_path, verbose: false) do
147
147
  <<~RUBY
148
148
  ActionCable.server.config.logger = Logger.new(nil)
149
149
 
@@ -152,4 +152,4 @@ else
152
152
  say "✅ Action Cable logger silenced for performance and legibility"
153
153
  end
154
154
 
155
- complete_step :action_cable
155
+ StimulusReflex::Installer.complete_step :action_cable
@@ -11,7 +11,7 @@ end
11
11
  channel_path = Rails.root.join("app/channels/application_cable/channel.rb")
12
12
  controller_path = Rails.root.join("app/controllers/application_controller.rb")
13
13
  job_path = Rails.root.join("app/jobs/application_job.rb")
14
- model_path = Rails.root.join(application_record_path)
14
+ model_path = Rails.root.join(StimulusReflex::Installer.application_record_path)
15
15
 
16
16
  include_in_channel = needs_broadcaster?(channel_path)
17
17
  include_in_controller = needs_broadcaster?(controller_path)
@@ -21,20 +21,20 @@ include_in_model = needs_broadcaster?(model_path)
21
21
  proceed = [include_in_channel, include_in_controller, include_in_job, include_in_model].reduce(:|)
22
22
 
23
23
  unless proceed
24
- complete_step :broadcaster
24
+ StimulusReflex::Installer.complete_step :broadcaster
25
25
 
26
26
  puts "⏩ CableReady::Broadcaster already included in all files. Skipping."
27
27
  return
28
28
  end
29
29
 
30
- proceed = if options.key? "broadcaster"
31
- options["broadcaster"]
30
+ proceed = if StimulusReflex::Installer.options.key? "broadcaster"
31
+ StimulusReflex::Installer.options["broadcaster"]
32
32
  else
33
33
  !no?("✨ Make CableReady::Broadcaster available to channels, controllers, jobs and models? (Y/n)")
34
34
  end
35
35
 
36
36
  unless proceed
37
- complete_step :broadcaster
37
+ StimulusReflex::Installer.complete_step :broadcaster
38
38
 
39
39
  puts "⏩ Skipping."
40
40
  return
@@ -44,7 +44,7 @@ broadcaster_include = "\n include CableReady::Broadcaster\n"
44
44
 
45
45
  # include CableReady::Broadcaster in Action Cable Channel classes
46
46
  if include_in_channel
47
- backup(channel_path) do
47
+ StimulusReflex::Installer.backup(channel_path) do
48
48
  inject_into_file channel_path, broadcaster_include, after: /class (ApplicationCable::)?Channel < ActionCable::Channel::Base/, verbose: false
49
49
  end
50
50
 
@@ -55,7 +55,7 @@ end
55
55
 
56
56
  # include CableReady::Broadcaster in Action Controller classes
57
57
  if include_in_controller
58
- backup(controller_path) do
58
+ StimulusReflex::Installer.backup(controller_path) do
59
59
  inject_into_class controller_path, "ApplicationController", broadcaster_include, verbose: false
60
60
  end
61
61
 
@@ -67,7 +67,7 @@ end
67
67
  # include CableReady::Broadcaster in Active Job classes, if present
68
68
 
69
69
  if include_in_job
70
- backup(job_path) do
70
+ StimulusReflex::Installer.backup(job_path) do
71
71
  inject_into_class job_path, "ApplicationJob", broadcaster_include, verbose: false
72
72
  end
73
73
 
@@ -78,8 +78,8 @@ end
78
78
 
79
79
  # include CableReady::Broadcaster in Active Record model classes
80
80
  if include_in_model
81
- backup(application_record_path) do
82
- inject_into_class application_record_path, "ApplicationRecord", broadcaster_include, verbose: false
81
+ StimulusReflex::Installer.backup(StimulusReflex::Installer.application_record_path) do
82
+ inject_into_class StimulusReflex::Installer.application_record_path, "ApplicationRecord", broadcaster_include, verbose: false
83
83
  end
84
84
 
85
85
  puts "✅ include CableReady::Broadcaster in ApplicationRecord"
@@ -87,4 +87,4 @@ else
87
87
  puts "⏩ Not including CableReady::Broadcaster in ApplicationRecord. Skipping"
88
88
  end
89
89
 
90
- complete_step :broadcaster
90
+ StimulusReflex::Installer.complete_step :broadcaster
@@ -2,14 +2,14 @@
2
2
 
3
3
  require "stimulus_reflex/installer"
4
4
 
5
- hash = gemfile_hash
5
+ hash = StimulusReflex::Installer.gemfile_hash
6
6
 
7
7
  # run bundle only when gems are waiting to be added or removed
8
- add = add_gem_list.exist? ? add_gem_list.readlines.map(&:chomp) : []
9
- remove = remove_gem_list.exist? ? remove_gem_list.readlines.map(&:chomp) : []
8
+ add = StimulusReflex::Installer.add_gem_list.exist? ? StimulusReflex::Installer.add_gem_list.readlines.map(&:chomp) : []
9
+ remove = StimulusReflex::Installer.remove_gem_list.exist? ? StimulusReflex::Installer.remove_gem_list.readlines.map(&:chomp) : []
10
10
 
11
11
  if add.present? || remove.present?
12
- lines = gemfile_path.readlines
12
+ lines = StimulusReflex::Installer.gemfile_path.readlines
13
13
 
14
14
  remove.each do |name|
15
15
  index = lines.index { |line| line =~ /gem ['"]#{name}['"]/ }
@@ -40,17 +40,17 @@ if add.present? || remove.present?
40
40
  end
41
41
  end
42
42
 
43
- gemfile_path.write lines.join
43
+ StimulusReflex::Installer.gemfile_path.write lines.join
44
44
 
45
- bundle_command("install --quiet", "BUNDLE_IGNORE_MESSAGES" => "1") if hash != gemfile_hash
45
+ bundle_command("install --quiet", "BUNDLE_IGNORE_MESSAGES" => "1") if hash != StimulusReflex::Installer.gemfile_hash
46
46
  else
47
47
  say "⏩ No rubygems depedencies to install. Skipping."
48
48
  end
49
49
 
50
- FileUtils.cp(development_working_path, development_path)
50
+ FileUtils.cp(StimulusReflex::Installer.development_working_path, StimulusReflex::Installer.development_path)
51
51
  say "✅ development environment configuration installed"
52
52
 
53
- FileUtils.cp(action_cable_initializer_working_path, action_cable_initializer_path)
53
+ FileUtils.cp(StimulusReflex::Installer.action_cable_initializer_working_path, StimulusReflex::Installer.action_cable_initializer_path)
54
54
  say "✅ Action Cable initializer installed"
55
55
 
56
- complete_step :bundle
56
+ StimulusReflex::Installer.complete_step :bundle
@@ -2,17 +2,17 @@
2
2
 
3
3
  require "stimulus_reflex/installer"
4
4
 
5
- initializer = action_cable_initializer_working_path.read
5
+ initializer = StimulusReflex::Installer.action_cable_initializer_working_path.read
6
6
 
7
- if gemfile.match?(/gem ['"]permessage_deflate['"]/)
7
+ if StimulusReflex::Installer.gemfile.match?(/gem ['"]permessage_deflate['"]/)
8
8
  say "⏩ permessage_deflate already present in Gemfile. Skipping."
9
9
  else
10
- add_gem "permessage_deflate@>= 0.1"
10
+ StimulusReflex::Installer.add_gem "permessage_deflate@>= 0.1"
11
11
  end
12
12
 
13
13
  # add permessage_deflate config to Action Cable initializer
14
14
  if initializer.exclude? "PermessageDeflate.configure"
15
- create_or_append(action_cable_initializer_working_path, verbose: false) do
15
+ StimulusReflex::Installer.create_or_append(StimulusReflex::Installer.action_cable_initializer_working_path, verbose: false) do
16
16
  <<~RUBY
17
17
  module ActionCable
18
18
  module Connection
@@ -38,4 +38,4 @@ else
38
38
  say "⏩ Action Cable initializer is already patched to deflate websocket traffic. Skipping."
39
39
  end
40
40
 
41
- complete_step :compression
41
+ StimulusReflex::Installer.complete_step :compression
@@ -2,24 +2,24 @@
2
2
 
3
3
  require "stimulus_reflex/installer"
4
4
 
5
- return if pack_path_missing?
5
+ return if StimulusReflex::Installer.pack_path_missing?
6
6
 
7
7
  step_path = "/app/javascript/config/"
8
- index_src = fetch(step_path, "index.js.tt")
9
- index_path = config_path / "index.js"
8
+ index_src = StimulusReflex::Installer.fetch(step_path, "index.js.tt")
9
+ index_path = StimulusReflex::Installer.config_path / "index.js"
10
10
  friendly_index_path = index_path.relative_path_from(Rails.root).to_s
11
- stimulus_reflex_src = fetch(step_path, "stimulus_reflex.js.tt")
12
- stimulus_reflex_path = config_path / "stimulus_reflex.js"
11
+ stimulus_reflex_src = StimulusReflex::Installer.fetch(step_path, "stimulus_reflex.js.tt")
12
+ stimulus_reflex_path = StimulusReflex::Installer.config_path / "stimulus_reflex.js"
13
13
  friendly_stimulus_reflex_path = stimulus_reflex_path.relative_path_from(Rails.root).to_s
14
- cable_ready_src = fetch(step_path, "cable_ready.js.tt")
15
- cable_ready_path = config_path / "cable_ready.js"
14
+ cable_ready_src = StimulusReflex::Installer.fetch(step_path, "cable_ready.js.tt")
15
+ cable_ready_path = StimulusReflex::Installer.config_path / "cable_ready.js"
16
16
 
17
- empty_directory config_path unless config_path.exist?
17
+ empty_directory StimulusReflex::Installer.config_path unless StimulusReflex::Installer.config_path.exist?
18
18
 
19
19
  if index_path.exist?
20
20
  say "⏩ #{friendly_index_path} already exists. Skipping"
21
21
  else
22
- backup(index_path, delete: true) do
22
+ StimulusReflex::Installer.backup(index_path, delete: true) do
23
23
  template(index_src, index_path)
24
24
  end
25
25
  say "✅ Created #{friendly_index_path}"
@@ -27,26 +27,26 @@ end
27
27
 
28
28
  index_pattern = /import ['"](\.\.\/|\.\/)?config['"]/
29
29
  index_commented_pattern = /\s*\/\/\s*#{index_pattern}/
30
- index_import = "import \"#{prefix}config\"\n"
30
+ index_import = "import \"#{StimulusReflex::Installer.prefix}config\"\n"
31
31
 
32
- if pack.match?(index_pattern)
33
- if pack.match?(index_commented_pattern)
34
- lines = pack_path.readlines
32
+ if StimulusReflex::Installer.pack.match?(index_pattern)
33
+ if StimulusReflex::Installer.pack.match?(index_commented_pattern)
34
+ lines = StimulusReflex::Installer.pack_path.readlines
35
35
  matches = lines.select { |line| line =~ index_commented_pattern }
36
36
  lines[lines.index(matches.last).to_i] = index_import
37
- pack_path.write lines.join
37
+ StimulusReflex::Installer.pack_path.write lines.join
38
38
 
39
- say "✅ Uncommented StimulusReflex and CableReady configs imports in #{friendly_pack_path}"
39
+ say "✅ Uncommented StimulusReflex and CableReady configs imports in #{StimulusReflex::Installer.friendly_pack_path}"
40
40
  else
41
- say "⏩ StimulusReflex and CableReady configs are already being imported in #{friendly_pack_path}. Skipping"
41
+ say "⏩ StimulusReflex and CableReady configs are already being imported in #{StimulusReflex::Installer.friendly_pack_path}. Skipping"
42
42
  end
43
43
  else
44
- lines = pack_path.readlines
44
+ lines = StimulusReflex::Installer.pack_path.readlines
45
45
  matches = lines.select { |line| line =~ /^import / }
46
46
  lines.insert lines.index(matches.last).to_i + 1, index_import
47
- pack_path.write lines.join
47
+ StimulusReflex::Installer.pack_path.write lines.join
48
48
 
49
- say "✅ StimulusReflex and CableReady configs will be imported in #{friendly_pack_path}"
49
+ say "✅ StimulusReflex and CableReady configs will be imported in #{StimulusReflex::Installer.friendly_pack_path}"
50
50
  end
51
51
 
52
52
  # create entrypoint/config/cable_ready.js and make sure it's imported in application.js
@@ -58,14 +58,14 @@ template(stimulus_reflex_src, stimulus_reflex_path) unless stimulus_reflex_path.
58
58
  if stimulus_reflex_path.read.include?("StimulusReflex.debug =")
59
59
  say "⏩ Development environment options are already set in #{friendly_stimulus_reflex_path}. Skipping"
60
60
  else
61
- if bundler.webpacker? || bundler.shakapacker?
61
+ if StimulusReflex::Installer.bundler.webpacker? || StimulusReflex::Installer.bundler.shakapacker?
62
62
  append_file(stimulus_reflex_path, <<~JS, verbose: false)
63
63
 
64
64
  if (process.env.RAILS_ENV === 'development') {
65
65
  StimulusReflex.debug = true
66
66
  }
67
67
  JS
68
- elsif bundler.vite?
68
+ elsif StimulusReflex::Installer.bundler.vite?
69
69
  append_file(stimulus_reflex_path, <<~JS, verbose: false) unless stimulus_reflex_path.read.include?("StimulusReflex.debug")
70
70
 
71
71
  if (import.meta.env.MODE === "development") {
@@ -84,4 +84,4 @@ else
84
84
  say "✅ Set useful development environment options in #{friendly_stimulus_reflex_path}"
85
85
  end
86
86
 
87
- complete_step :config
87
+ StimulusReflex::Installer.complete_step :config