hotwire-spark 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/hotwire_spark.js +4 -2132
- data/app/assets/javascripts/hotwire_spark.min.js +1 -1
- data/app/assets/javascripts/hotwire_spark.min.js.map +1 -1
- data/app/javascript/hotwire/spark/channels/consumer.js +1 -1
- data/app/javascript/hotwire/spark/reloaders/stimulus_reloader.js +1 -2
- data/lib/hotwire/spark/action_cable/server.rb +7 -0
- data/lib/hotwire/spark/engine.rb +6 -2
- data/lib/hotwire/spark/installer.rb +12 -10
- data/lib/hotwire/spark/version.rb +1 -1
- data/lib/hotwire-spark.rb +5 -1
- metadata +7 -8
- data/lib/hotwire/spark/action_cable/persistent_cable_middleware.rb +0 -43
- data/lib/hotwire/spark/action_cable/persistent_cable_server.rb +0 -25
@@ -1,4 +1,3 @@
|
|
1
|
-
import { Application } from "@hotwired/stimulus"
|
2
1
|
import { log } from "../logger.js"
|
3
2
|
import { cacheBustedUrl, reloadHtmlDocument } from "../helpers.js"
|
4
3
|
|
@@ -11,7 +10,7 @@ export class StimulusReloader {
|
|
11
10
|
constructor(document, filePattern = /./) {
|
12
11
|
this.document = document
|
13
12
|
this.filePattern = filePattern
|
14
|
-
this.application = window.Stimulus
|
13
|
+
this.application = window.Stimulus
|
15
14
|
}
|
16
15
|
|
17
16
|
async reload() {
|
data/lib/hotwire/spark/engine.rb
CHANGED
@@ -7,17 +7,21 @@ module Hotwire::Spark
|
|
7
7
|
config.hotwire = ActiveSupport::OrderedOptions.new unless config.respond_to?(:hotwire)
|
8
8
|
config.hotwire.spark = ActiveSupport::OrderedOptions.new
|
9
9
|
config.hotwire.spark.merge! \
|
10
|
-
enabled: Rails.env.development
|
10
|
+
enabled: Rails.env.development?,
|
11
11
|
css_paths: File.directory?("app/assets/builds") ? %w[ app/assets/builds ] : %w[ app/assets/stylesheets ],
|
12
12
|
html_paths: %w[ app/controllers app/helpers app/models app/views ],
|
13
13
|
stimulus_paths: %w[ app/javascript/controllers ]
|
14
14
|
|
15
|
-
initializer "hotwire_spark.config" do |
|
15
|
+
initializer "hotwire_spark.config" do |application|
|
16
16
|
config.hotwire.spark.each do |key, value|
|
17
17
|
Hotwire::Spark.send("#{key}=", value)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
initializer "hotwire_spark.assets" do |application|
|
22
|
+
application.config.assets.precompile << "hotwire_spark.js"
|
23
|
+
end
|
24
|
+
|
21
25
|
initializer "hotwire_spark.install" do |application|
|
22
26
|
Hotwire::Spark.install_into application if Hotwire::Spark.enabled?
|
23
27
|
end
|
@@ -1,26 +1,28 @@
|
|
1
1
|
class Hotwire::Spark::Installer
|
2
|
-
attr_reader :file_watcher
|
3
|
-
|
4
2
|
def initialize(application)
|
5
3
|
@application = application
|
6
4
|
end
|
7
5
|
|
8
6
|
def install
|
7
|
+
configure_cable_server
|
9
8
|
configure_middleware
|
10
9
|
monitor_paths
|
11
10
|
end
|
12
11
|
|
13
|
-
def configure_middleware
|
14
|
-
::ActionCable::Server::Base.prepend(Hotwire::Spark::ActionCable::PersistentCableServer)
|
15
|
-
|
16
|
-
middleware.insert_before ActionDispatch::Executor, Hotwire::Spark::ActionCable::PersistentCableMiddleware
|
17
|
-
middleware.use Hotwire::Spark::Middleware
|
18
|
-
end
|
19
|
-
|
20
12
|
private
|
21
13
|
attr_reader :application
|
22
14
|
delegate :middleware, to: :application
|
23
15
|
|
16
|
+
def configure_cable_server
|
17
|
+
application.routes.prepend do
|
18
|
+
mount Hotwire::Spark.cable_server => "/hotwire-spark", internal: true, anchor: true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def configure_middleware
|
23
|
+
middleware.use Hotwire::Spark::Middleware
|
24
|
+
end
|
25
|
+
|
24
26
|
def monitor_paths
|
25
27
|
register_monitored_paths
|
26
28
|
file_watcher.start
|
@@ -39,7 +41,7 @@ class Hotwire::Spark::Installer
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def broadcast_reload_action(action, file_path)
|
42
|
-
|
44
|
+
Hotwire::Spark.cable_server.broadcast "hotwire_spark", reload_message_for(action, file_path)
|
43
45
|
end
|
44
46
|
|
45
47
|
def reload_message_for(action, file_path)
|
data/lib/hotwire-spark.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hotwire-spark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jorge Manrubia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-12-
|
11
|
+
date: 2024-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -135,21 +135,20 @@ files:
|
|
135
135
|
- app/javascript/hotwire/spark/reloaders/stimulus_reloader.js
|
136
136
|
- config/routes.rb
|
137
137
|
- lib/hotwire-spark.rb
|
138
|
-
- lib/hotwire/spark/action_cable/
|
139
|
-
- lib/hotwire/spark/action_cable/persistent_cable_server.rb
|
138
|
+
- lib/hotwire/spark/action_cable/server.rb
|
140
139
|
- lib/hotwire/spark/engine.rb
|
141
140
|
- lib/hotwire/spark/file_watcher.rb
|
142
141
|
- lib/hotwire/spark/installer.rb
|
143
142
|
- lib/hotwire/spark/middleware.rb
|
144
143
|
- lib/hotwire/spark/version.rb
|
145
144
|
- lib/tasks/hotwire_spark_tasks.rake
|
146
|
-
homepage: https://github.com/
|
145
|
+
homepage: https://github.com/hotwired/spark
|
147
146
|
licenses:
|
148
147
|
- MIT
|
149
148
|
metadata:
|
150
|
-
homepage_uri: https://github.com/
|
151
|
-
source_code_uri: https://github.com/
|
152
|
-
changelog_uri: https://github.com/
|
149
|
+
homepage_uri: https://github.com/hotwired/spark
|
150
|
+
source_code_uri: https://github.com/hotwired/spark
|
151
|
+
changelog_uri: https://github.com/hotwired/spark
|
153
152
|
post_install_message:
|
154
153
|
rdoc_options: []
|
155
154
|
require_paths:
|
@@ -1,43 +0,0 @@
|
|
1
|
-
class Hotwire::Spark::ActionCable::PersistentCableMiddleware
|
2
|
-
def initialize(app)
|
3
|
-
@app = app
|
4
|
-
end
|
5
|
-
|
6
|
-
def call(env)
|
7
|
-
request = Rack::Request.new(env)
|
8
|
-
|
9
|
-
if supress_action_cable_restarts?(request)
|
10
|
-
respond_suppressing_action_cable_restarts(env)
|
11
|
-
else
|
12
|
-
@app.call(env)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
COOKIE_NAME = "hotwire_spark_disable_cable_restarts"
|
18
|
-
RESTARTS_SUPPRESSED_GRACE_PERIOD = 10.seconds
|
19
|
-
|
20
|
-
def supress_action_cable_restarts?(request)
|
21
|
-
request.params["hotwire_spark"] || request.cookies[COOKIE_NAME]
|
22
|
-
end
|
23
|
-
|
24
|
-
def respond_suppressing_action_cable_restarts(env)
|
25
|
-
status, headers, body = suppressing_action_cable_restarts { @app.call(env) }
|
26
|
-
headers["Set-Cookie"] = append_cookie_to_disable_cable_restarts(headers["Set-Cookie"])
|
27
|
-
|
28
|
-
[ status, headers, body ]
|
29
|
-
end
|
30
|
-
|
31
|
-
def suppressing_action_cable_restarts(&block)
|
32
|
-
ActionCable.server.without_restarting(&block)
|
33
|
-
end
|
34
|
-
|
35
|
-
def append_cookie_to_disable_cable_restarts(existing_cookies)
|
36
|
-
[ existing_cookies, cookie_to_disable_cable_restarts ].compact
|
37
|
-
end
|
38
|
-
|
39
|
-
def cookie_to_disable_cable_restarts
|
40
|
-
expiration = RESTARTS_SUPPRESSED_GRACE_PERIOD.from_now.utc
|
41
|
-
"#{COOKIE_NAME}=true; Path=/; Expires=#{expiration.httpdate}; HttpOnly"
|
42
|
-
end
|
43
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Hotwire::Spark::ActionCable::PersistentCableServer
|
2
|
-
def self.prepended(base)
|
3
|
-
base.class_eval do
|
4
|
-
thread_mattr_accessor :suppress_restarts
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
def restart
|
9
|
-
return if restarts_suppressed?
|
10
|
-
|
11
|
-
super
|
12
|
-
end
|
13
|
-
|
14
|
-
def without_restarting
|
15
|
-
old_suppress_restarts, self.suppress_restarts = self.suppress_restarts, true
|
16
|
-
yield
|
17
|
-
ensure
|
18
|
-
self.suppress_restarts = old_suppress_restarts
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
def restarts_suppressed?
|
23
|
-
suppress_restarts
|
24
|
-
end
|
25
|
-
end
|