hyperstack-config 1.0.alpha1.4 → 1.0.alpha1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hyperstack-config.rb +1 -0
- data/lib/hyperstack-hotloader-config.js.erb +2 -2
- data/lib/hyperstack/config/version.rb +1 -1
- data/lib/hyperstack/context.rb +2 -1
- data/lib/hyperstack/hotloader.rb +15 -5
- data/lib/hyperstack/hotloader/short_cut.js +2 -2
- data/lib/hyperstack/imports.rb +7 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d14021b6ecdd6098649de52f6da0252c1293adf0c78e5d3def26df3a15a3564c
|
4
|
+
data.tar.gz: c9da07047b3a4b765986c70ea1461e41458d6bf638b3c00530bd2e252a97d3f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d4375dc40618772fbde219f71217038b06baa335a1e4b772e2ce598e7a988f7e582c35c947584907d635eaaed8703f1ec9df7a5d1a8fa1c553febc081797fad
|
7
|
+
data.tar.gz: c00034e43ae80a7bfd39534a8f3e497c84f20968f5182b1e7450035035772fe500a896467c52155e5dac16ce1f71482ad2eed8d7568800c3bea2c75bbeea2675
|
data/lib/hyperstack-config.rb
CHANGED
@@ -38,6 +38,7 @@ else
|
|
38
38
|
require 'hyperstack/on_error'
|
39
39
|
Hyperstack.define_setting :hotloader_port, 25222
|
40
40
|
Hyperstack.define_setting :hotloader_ping, nil
|
41
|
+
Hyperstack.define_setting :hotloader_ignore_callback_mapping, false
|
41
42
|
Hyperstack.import 'opal', gem: true
|
42
43
|
Hyperstack.import 'browser', client_only: true
|
43
44
|
Hyperstack.import 'hyperstack-config', gem: true
|
@@ -1,7 +1,7 @@
|
|
1
|
-
console.log('hotloader config doing its thing')
|
2
1
|
if ((typeof(window) !== 'undefined') && (window.Hyperstack==undefined || window.Hyperstack.hotloader==undefined)) {
|
3
2
|
window.Hyperstack = { hotloader: function(port, ping) { }}
|
4
3
|
}
|
5
4
|
//if (typeof(Hyperstack) === 'undefined') { Hyperstack = {} }
|
6
5
|
Hyperstack.hotloader.port = <%= Hyperstack.hotloader_port %>
|
7
|
-
Hyperstack.hotloader.ping = <%=
|
6
|
+
Hyperstack.hotloader.ping = <%= Hyperstack.hotloader_ping ? Hyperstack.hotloader_ping : false %>
|
7
|
+
Hyperstack.hotloader.ignore_callback_mapping = <%= !(!Hyperstack.hotloader_ignore_callback_mapping && Rails.configuration.assets.debug) %>
|
data/lib/hyperstack/context.rb
CHANGED
@@ -25,7 +25,8 @@ module Hyperstack
|
|
25
25
|
# @context.
|
26
26
|
if @context
|
27
27
|
@context.each do |ctx, vars|
|
28
|
-
|
28
|
+
# be careful: You can't dup nil, hence `init && init.dup`
|
29
|
+
vars.each { |var, init| ctx.instance_variable_set(var, init && init.dup) }
|
29
30
|
end
|
30
31
|
Hyperstack::Application::Boot.run if reboot
|
31
32
|
else
|
data/lib/hyperstack/hotloader.rb
CHANGED
@@ -19,19 +19,29 @@ module Hyperstack
|
|
19
19
|
@@callbacks ||= Hash.new { |h, k| h[k] = Array.new }
|
20
20
|
end
|
21
21
|
|
22
|
-
STACKDIRS = ['hyperstack
|
22
|
+
STACKDIRS = ['hyperstack', 'corelib']
|
23
23
|
|
24
24
|
def self.file_name(frame)
|
25
|
+
return unless frame
|
25
26
|
file_name = `#{frame}.fileName`
|
26
|
-
match = %r{^(.+\/assets\/
|
27
|
-
return unless match
|
28
|
-
file_name.gsub(match[
|
27
|
+
match = %r{^(.+\/assets)\/}.match(file_name)
|
28
|
+
return unless match
|
29
|
+
file_name = file_name.gsub(match[0], '').split('/')
|
30
|
+
n = (file_name.length - 1) / 2
|
31
|
+
return unless file_name[0..n - 1] == file_name[n..2 * n - 1]
|
32
|
+
return if STACKDIRS.include?(file_name[0])
|
33
|
+
"#{match[0]}#{file_name[0..n - 1].join('/')}/#{file_name[-1]}"
|
29
34
|
end
|
30
35
|
|
31
36
|
def self.when_file_updates(&block)
|
37
|
+
return if `Hyperstack.hotloader.ignore_callback_mapping`
|
32
38
|
return callbacks[$_hyperstack_reloader_file_name] << block if $_hyperstack_reloader_file_name
|
33
39
|
callback = lambda do |frames|
|
34
|
-
|
40
|
+
# StackTrace.get maps the stack frames back to the source maps
|
41
|
+
# we then associate any files in the call stack that match our application file pattern
|
42
|
+
# with the block, which will remove any callbacks defined when those files were executing.
|
43
|
+
# Note that StackTrace.getSync gives us the raw .js file names so it will not work
|
44
|
+
frames.collect(&method(:file_name)).compact.uniq.each { |name| callbacks[name] << block if name }
|
35
45
|
end
|
36
46
|
error = lambda do |e|
|
37
47
|
`console.error(#{"hyperstack hot loader could not find source file for callback: #{e}"})`
|
@@ -4,6 +4,6 @@ if (typeof window !== 'undefined') {
|
|
4
4
|
Opal.Hyperstack.$const_get('Hotloader').$listen(port || 25222, ping || Opal.nil)
|
5
5
|
}
|
6
6
|
}
|
7
|
-
} else {
|
7
|
+
} /* else {
|
8
8
|
throw 'Attempt to run hotloader during prerendering - make sure you import with the `client_only: true` option'
|
9
|
-
}
|
9
|
+
} */
|
data/lib/hyperstack/imports.rb
CHANGED
@@ -6,13 +6,17 @@ module Hyperstack
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def import(value, gem: nil, cancelled: nil, client_only: nil, server_only: nil, tree: nil, js_import: nil, at_head: nil)
|
9
|
-
return if
|
9
|
+
return if imported? value
|
10
10
|
new_element = [
|
11
11
|
value, cancelled, !client_only, !server_only, (tree ? :tree : :gem), js_import
|
12
12
|
]
|
13
13
|
import_list.send(at_head ? :unshift : :push, new_element)
|
14
14
|
end
|
15
15
|
|
16
|
+
def imported?(value)
|
17
|
+
import_list.detect { |current_value, *| value == current_value }
|
18
|
+
end
|
19
|
+
|
16
20
|
alias imports import
|
17
21
|
|
18
22
|
def import_tree(value, cancelled: nil, client_only: nil, server_only: nil)
|
@@ -90,8 +94,8 @@ module Hyperstack
|
|
90
94
|
Dir.glob(Rails.root.join('app', path, '**', '*')).sort.collect do |fname|
|
91
95
|
fname = fname.gsub(/^#{base_name}/, '')
|
92
96
|
fname = fname.gsub(/\.erb$/, '')
|
93
|
-
if fname =~ /(\.js$)|(\.rb$)/
|
94
|
-
fname = fname.gsub(/(\.js$)|(\.rb$)/, '')
|
97
|
+
if fname =~ /(\.js$)|(\.rb$)|(\.jsx$)/
|
98
|
+
fname = fname.gsub(/(\.js$)|(\.rb$)|(\.jsx$)/, '')
|
95
99
|
r = "require '#{fname}' #{client_guard(render_on_server, render_on_client)}"
|
96
100
|
puts " #{r}"
|
97
101
|
"puts \"#{r}\"; #{r}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyperstack-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.alpha1.
|
4
|
+
version: 1.0.alpha1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mitch VanDuyn
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-06-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: listen
|
@@ -333,7 +333,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
333
333
|
- !ruby/object:Gem::Version
|
334
334
|
version: 1.3.1
|
335
335
|
requirements: []
|
336
|
-
rubygems_version: 3.0.
|
336
|
+
rubygems_version: 3.0.4
|
337
337
|
signing_key:
|
338
338
|
specification_version: 4
|
339
339
|
summary: Provides a single point configuration module for hyperstack gems
|