adsf-live 1.5.0 → 1.5.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94c360ced013c83adf80c3336a83bb04709cf455739b9e14f74935eebbd89db3
4
- data.tar.gz: 2046ecbe1acafc10252bbe68309e12c6d3c244e6eaa5cb1c212fb715ca5d1556
3
+ metadata.gz: 59551ad64538b33765bcaf107d804454b5d4d2c70fec971b75673ea70a4a3de2
4
+ data.tar.gz: 4b0e62038081c3112adfbb7a3c5743987d85ed3627e62cd70539fd966a5c1de2
5
5
  SHA512:
6
- metadata.gz: 81f969042aa14dfe7e5f121fac25caf2a0448717fd80271911571aefd555947a2cf5c07d411edda1620bca4f009137b64167db6932972f0b5c61d900ccac28f4
7
- data.tar.gz: 6f58e8e486920003ead6966af3ddd3a077d9cf44d62f65dec06accd97998f3efbcf2d24e662d3496e6310c6a6c0548333c8aec4ce5297cebc3ec74260eb8401c
6
+ metadata.gz: 25148455618848a6247a941d2b56bc58b63e0c8803677ac7908e4c89cde8b17585c53e0f80c20205ca9577e6c24b78f250e2a641016c45af6329a3f8566c0927
7
+ data.tar.gz: 6432a179cbbf306a707c63b0ddd9735a17b86979d74c24c0ff409ccbf11a2d6f00a142877aa9a5c69d3b917839820770e11026734ffab946b974ad96f1659317
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rack
4
+ class LiveReload
5
+ LIVERELOAD_JS_PATH = '/__rack/livereload.js'
6
+ VENDORED_JS_PATH = "#{__dir__}/../../../vendor/livereload.js"
7
+ HEAD_TAG_REGEX = /<head( [^<]+)?>/.freeze
8
+ LIVERELOAD_PORT = 35_729
9
+ LIVERELOAD_SCHEME = 'ws'
10
+
11
+ def initialize(app, options = {})
12
+ @app = app
13
+ @options = options
14
+ end
15
+
16
+ def call(env)
17
+ return deliver_file(VENDORED_JS_PATH) if env['PATH_INFO']&.end_with? LIVERELOAD_JS_PATH
18
+
19
+ status, headers, body = result = @app.call(env)
20
+
21
+ if env['REQUEST_METHOD'] != 'GET' ||
22
+ headers['content-type'] !~ %r{text/html} ||
23
+ headers['transfer-encoding'] == 'chunked' ||
24
+ headers['content-disposition'] =~ /^inline/
25
+ return result
26
+ end
27
+
28
+ body.close if body.respond_to?(:close)
29
+ new_body = []
30
+ livereload_added = false
31
+ @env = env
32
+ body.each do |line|
33
+ if !livereload_added && line =~ HEAD_TAG_REGEX
34
+ new_body << line.sub(HEAD_TAG_REGEX) { |match| %(#{match}#{template}) }
35
+ livereload_added = true
36
+ else
37
+ new_body << line
38
+ end
39
+ end
40
+ headers['content-length'] = new_body.sum(&:bytesize).to_s
41
+ headers['x-rack-livereload'] = '1' if livereload_added
42
+
43
+ [status, headers, new_body]
44
+ end
45
+
46
+ private
47
+
48
+ def deliver_file(file)
49
+ [200, { 'content-type' => 'text/javascript', 'content-length' => ::File.size(file).to_s }, [::File.read(file)]]
50
+ end
51
+
52
+ def template
53
+ <<~HTML
54
+ <script>
55
+ RACK_LIVERELOAD_PORT = #{@options[:live_reload_port] || LIVERELOAD_PORT}
56
+ RACK_LIVERELOAD_SCHEME = "#{@options[:live_reload_scheme] || LIVERELOAD_SCHEME}"
57
+ </script>
58
+ <script src="#{livereload_source}?host=#{host_to_use}"></script>
59
+ HTML
60
+ end
61
+
62
+ def livereload_source
63
+ if @options[:source] == :vendored
64
+ LIVERELOAD_JS_PATH
65
+ else
66
+ "#{@options[:protocol] || 'http'}://#{host_to_use}/livereload.js"
67
+ end
68
+ end
69
+
70
+ def host_to_use
71
+ (@options[:host] || @env['HTTP_HOST'] || 'localhost').sub(/:.*/, '')
72
+ end
73
+ end
74
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Adsf
4
4
  module Live
5
- VERSION = '1.5.0'
5
+ VERSION = '1.5.1'
6
6
  end
7
7
  end
@@ -23,7 +23,7 @@ module Adsf
23
23
  data =
24
24
  JSON.dump(
25
25
  command: 'reload',
26
- path: "#{Dir.pwd}#{path}",
26
+ path: path,
27
27
  )
28
28
 
29
29
  @sockets.each { |ws| ws.send(data) }
data/lib/adsf/live.rb CHANGED
@@ -5,7 +5,6 @@ require 'eventmachine'
5
5
  require 'em-websocket'
6
6
  require 'json'
7
7
  require 'listen'
8
- require 'rack-livereload'
9
8
 
10
9
  module Adsf
11
10
  module Live
@@ -13,5 +12,6 @@ module Adsf
13
12
  end
14
13
 
15
14
  require_relative 'live/version'
15
+ require_relative 'live/rack_livereload'
16
16
  require_relative 'live/web_socket_server'
17
17
  require_relative 'live/watcher'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adsf-live
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Defreyne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-08 00:00:00.000000000 Z
11
+ date: 2024-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: adsf
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rack-livereload
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.3'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.3'
83
69
  description: Automatically reloads when changes are detected.
84
70
  email: denis.defreyne@stoneship.org
85
71
  executables: []
@@ -89,6 +75,7 @@ files:
89
75
  - NEWS.md
90
76
  - README.md
91
77
  - lib/adsf/live.rb
78
+ - lib/adsf/live/rack_livereload.rb
92
79
  - lib/adsf/live/version.rb
93
80
  - lib/adsf/live/watcher.rb
94
81
  - lib/adsf/live/web_socket_server.rb
@@ -112,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
99
  - !ruby/object:Gem::Version
113
100
  version: '0'
114
101
  requirements: []
115
- rubygems_version: 3.5.4
102
+ rubygems_version: 3.5.14
116
103
  signing_key:
117
104
  specification_version: 4
118
105
  summary: livereload support for adsf