isomorfeus-asset-manager 0.13.4 → 0.13.8

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: 57c6e9cbf3cca3ff51230dc1d5d138d41d0c52c22a3dac313ef74d0103e2021c
4
- data.tar.gz: 0f2aecd3cced8363965e0514bd8e64dcfa82df116e9ade38bb340d873b70bc27
3
+ metadata.gz: 21a755b3c964b1e4463ac86d3a107bfa96cf1e3711013f3d27ab360805e54a52
4
+ data.tar.gz: a61345d86fd03993f9eeb0f27528731285135a200208e3065c0e2cd2737bcb5a
5
5
  SHA512:
6
- metadata.gz: '079db8abd836f1d0a720ffa0b6905d31cb7c22e78ca4b8be079d4b58762dd4fa4c70438831bd3bb312acc678dfcda0fcd1c4033126f8df52aff38bfec66e9327'
7
- data.tar.gz: bf2092bd1ca8f2d19b150ada7eb6efb054fda1d9dcf295866146b9e9ea19e24ab223f8f49110cb6b388fce819a262d737ac110aded218966c1592abcd4635b26
6
+ metadata.gz: 7847d671507e887ae60b0577b3b9bbe2811dc004ca5ada5392d04df064e9bb58f1d80fd6af79d5d20d6611788d27351e5b5e467d155039ad07b0e19e917aa4ef
7
+ data.tar.gz: 55e4afab66c907df3655198dd52271be34d8f2a43b77ebc3dc4881a48df64bb29980c05013057c71a5653105b431922dbbad063f3573413b280ac1534e5b3fa8
@@ -64,7 +64,7 @@ module Isomorfeus
64
64
  @css_size = @css.size
65
65
  unless @target == :node
66
66
  @css_gz = Zlib::gzip(b, level: Zlib::BEST_COMPRESSION)
67
- @css_gz_size = @bundle_gz.size
67
+ @css_gz_size = @css_gz.size
68
68
  end
69
69
  end
70
70
  @css
@@ -93,7 +93,7 @@ module Isomorfeus
93
93
  end
94
94
 
95
95
  def touch
96
- @mtime = Time.now
96
+ @mtime = (Time.now.to_f * (10 ** 9)).to_i
97
97
  end
98
98
 
99
99
  def to_s
@@ -112,7 +112,7 @@ module Isomorfeus
112
112
  hmr_ws.onmessage = function(event) {
113
113
  let update = JSON.parse(event.data);
114
114
  if (typeof update.error !== 'undefined') { console.error(update.error); return; }
115
- let start_index = '/* Generated by Opal 1.2.0 */\\nOpal.modules[\\"'.length;
115
+ let start_index = 'Opal.modules[\\"'.length;
116
116
  let end_index = update.javascript.indexOf('"', start_index);
117
117
  let opal_module_name = update.javascript.substr(start_index, end_index - start_index);
118
118
  console.log('Updating ', opal_module_name);
@@ -8,7 +8,7 @@ module Isomorfeus
8
8
  attr_accessor :root
9
9
  attr_accessor :app_root
10
10
  attr_accessor :assets_path
11
- attr_accessor :assets_websocket_path
11
+ attr_accessor :assets_websocket_path
12
12
  attr_accessor :asset_manager_tmpdir
13
13
  attr_accessor :asset_manager_hmr_channel
14
14
  attr_accessor :asset_manager_hmr_dirs
@@ -19,24 +19,24 @@ module Isomorfeus
19
19
  def add_web_js_import(*args)
20
20
  Isomorfeus.assets['web.js'].add_js_import(*args)
21
21
  end
22
-
22
+
23
23
  def add_ssr_js_import(*args)
24
24
  Isomorfeus.assets['ssr.js'].add_js_import(*args)
25
25
  end
26
-
26
+
27
27
  def add_common_js_import(*args)
28
28
  Isomorfeus.assets['web.js'].add_js_import(*args)
29
29
  Isomorfeus.assets['ssr.js'].add_js_import(*args)
30
30
  end
31
-
31
+
32
32
  def add_web_ruby_import(*args)
33
33
  Isomorfeus.assets['web.js'].add_ruby_import(*args)
34
34
  end
35
-
35
+
36
36
  def add_ssr_ruby_import(*args)
37
37
  Isomorfeus.assets['ssr.js'].add_ruby_import(*args)
38
38
  end
39
-
39
+
40
40
  def add_common_ruby_import(*args)
41
41
  Isomorfeus.assets['web.js'].add_ruby_import(*args)
42
42
  Isomorfeus.assets['ssr.js'].add_ruby_import(*args)
@@ -66,7 +66,7 @@ module Isomorfeus
66
66
 
67
67
  self.hmr_listener = nil
68
68
  self.asset_manager_hmr_channel = :isomorfeus_asset_manager_module_updates
69
- self.asset_manager_hmr_dirs = %w[channels, components, data, operations, policies]
69
+ self.asset_manager_hmr_dirs = %w[channels components data operations policies]
70
70
  self.assets_websocket_path = '/_assets_websocket'
71
71
  self.assets_path = '/assets'
72
72
  self.assets = {
@@ -18,7 +18,7 @@ module Isomorfeus
18
18
  @assets_path_size = @assets_path.size
19
19
  end
20
20
  rescue Exception => e
21
- STDERR.puts "#{e.message}\n#{e.backtrace.join("\n")}\n"
21
+ STDERR.puts "#{e.message}\n#{e.backtrace&.join("\n")}\n"
22
22
  end
23
23
 
24
24
  def call(env)
@@ -41,7 +41,7 @@ module Isomorfeus
41
41
  return [200, headers, asset.bundle_gz]
42
42
  else
43
43
  headers[Rack::CONTENT_LENGTH] = asset.bundle_size
44
- return [200, {}, asset.bundle]
44
+ return [200, headers, asset.bundle]
45
45
  end
46
46
  end
47
47
  end
@@ -51,7 +51,7 @@ module Isomorfeus
51
51
  asset_key = path_info[@assets_path_size..-5]
52
52
  asset = Isomorfeus.assets[asset_key]
53
53
  if asset && asset.target != :node
54
- asset_manager.transition(asset_key, asset)
54
+ asset_manager.transition(asset_key, asset) unless asset.bundled?
55
55
  headers = {}
56
56
  headers['Last-Modified'] = asset.mtime
57
57
  headers[Rack::CONTENT_TYPE] = 'application/json'
@@ -61,7 +61,7 @@ module Isomorfeus
61
61
  return [200, headers, asset.bundle_map_gz]
62
62
  else
63
63
  headers[Rack::CONTENT_LENGTH] = asset.bundle_map_size
64
- return [200, {}, asset.bundle_map]
64
+ return [200, headers, asset.bundle_map]
65
65
  end
66
66
  end
67
67
 
@@ -80,7 +80,7 @@ module Isomorfeus
80
80
  return [200, headers, asset.css_gz]
81
81
  else
82
82
  headers[Rack::CONTENT_LENGTH] = asset.css_size
83
- return [200, {}, asset.css]
83
+ return [200, headers, asset.css]
84
84
  end
85
85
  end
86
86
 
@@ -89,7 +89,7 @@ module Isomorfeus
89
89
  asset_key = path_info[@assets_path_size..-9] + '.js'
90
90
  asset = Isomorfeus.assets[asset_key]
91
91
  if asset && asset.target != :node
92
- asset_manager.transition(asset_key, asset)
92
+ asset_manager.transition(asset_key, asset) unless asset.bundled?
93
93
  headers = {}
94
94
  headers['Last-Modified'] = asset.mtime
95
95
  headers[Rack::CONTENT_TYPE] = 'application/json'
@@ -99,7 +99,7 @@ module Isomorfeus
99
99
  return [200, headers, asset.css_map_gz]
100
100
  else
101
101
  headers[Rack::CONTENT_LENGTH] = asset.css_map_size
102
- return [200, {}, asset.css_map]
102
+ return [200, headers, asset.css_map]
103
103
  end
104
104
  end
105
105
  end
@@ -115,7 +115,7 @@ module Isomorfeus
115
115
  @app.call(env)
116
116
  end
117
117
  rescue Exception => e
118
- STDERR.puts "#{e.message}\n#{e.backtrace.join("\n")}\n"
118
+ STDERR.puts "#{e.message}\n#{e.backtrace&.join("\n")}\n"
119
119
  @app.call(env)
120
120
  end
121
121
 
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  class AssetManager
3
- VERSION = '0.13.4'
3
+ VERSION = '0.13.8'
4
4
  end
5
5
  end
@@ -1,5 +1,44 @@
1
1
  module Isomorfeus
2
2
  class AssetManager
3
+ @@app_common_imports = false
4
+ @@app_web_imports = false
5
+ @@app_ssr_imports = false
6
+
7
+ def self.add_app_imports
8
+ imports_path = File.expand_path(File.join(Isomorfeus.app_root, 'imports'))
9
+ if Dir.exist?(imports_path)
10
+ unless @@app_common_imports
11
+ common_imports_file = File.join(imports_path, 'common.js')
12
+ if File.exist?(common_imports_file)
13
+ Isomorfeus.add_common_js_import(common_imports_file)
14
+ @@app_common_imports = true
15
+ end
16
+ end
17
+ unless @@app_web_imports
18
+ web_imports_file = File.join(imports_path, 'web.js')
19
+ if File.exist?(web_imports_file)
20
+ Isomorfeus.add_web_js_import(web_imports_file)
21
+ @@app_web_imports = true
22
+ end
23
+ end
24
+ unless @@app_ssr_imports
25
+ ssr_imports_file = File.join(imports_path, 'ssr.js')
26
+ if File.exist?(ssr_imports_file)
27
+ Isomorfeus.add_ssr_js_import(ssr_imports_file)
28
+ @@app_ssr_imports
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ def self.last_updated
35
+ @last_updated
36
+ end
37
+
38
+ def self.last_updated=(l)
39
+ @last_updated = l
40
+ end
41
+
3
42
  def initialize
4
43
  Isomorfeus.set_node_paths
5
44
 
@@ -9,19 +48,10 @@ module Isomorfeus
9
48
  FileUtils.mkdir_p(@imports_path)
10
49
  FileUtils.mkdir_p(@output_path)
11
50
  @server_path = File.join(Isomorfeus.app_root, 'server')
51
+ self.class.add_app_imports
12
52
 
13
53
  @context = ExecJS.permissive_compile(init_js)
14
54
 
15
- imports_path = File.expand_path(File.join(Isomorfeus.app_root, 'imports'))
16
- if Dir.exist?(imports_path)
17
- common_imports_file = File.join(imports_path, 'common.js')
18
- Isomorfeus.add_common_js_import(common_imports_file) if File.exist?(common_imports_file)
19
- web_imports_file = File.join(imports_path, 'web.js')
20
- Isomorfeus.add_web_js_import(web_imports_file) if File.exist?(web_imports_file)
21
- ssr_imports_file = File.join(imports_path, 'ssr.js')
22
- Isomorfeus.add_ssr_js_import(ssr_imports_file) if File.exist?(ssr_imports_file)
23
- end
24
-
25
55
  init_hmr_listener if Isomorfeus.development? && !Isomorfeus.hmr_listener
26
56
  end
27
57
 
@@ -29,6 +59,7 @@ module Isomorfeus
29
59
  return if !Isomorfeus.development? && asset.bundled?
30
60
  asset.mutex.synchronize do
31
61
  return if !Isomorfeus.development? && asset.bundled?
62
+ return if Isomorfeus.development? && asset.bundled? && (self.class.last_updated.nil? || (asset.mtime > self.class.last_updated))
32
63
  asset.touch
33
64
  build_ruby_and_save(asset_key, asset)
34
65
  save_imports(asset_key, asset)
@@ -131,8 +162,10 @@ module Isomorfeus
131
162
  listen_dirs << listen_dir if Dir.exist?(listen_dir)
132
163
  end
133
164
  end
165
+ am_class = self.class
134
166
  Isomorfeus.hmr_listener = Listen.to(*listen_dirs) do |modified, added, _|
135
167
  (modified + added).each do |file|
168
+ am_class.last_updated = (Time.now.to_f * (10 ** 9)).to_i
136
169
  next if file.start_with?(@server_path)
137
170
  begin
138
171
  update = compile_ruby(file)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-asset-manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.4
4
+ version: 0.13.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-11 00:00:00.000000000 Z
11
+ date: 2021-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: isomorfeus-iodine