opal-sprockets 0.4.4.1.0.3.7 → 0.4.5.1.0.3.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29134bcb2e75192d6c97a28a4d758196b42df277d04acdabbdbc445b58f05236
4
- data.tar.gz: 54c92ccd5276b53ebcc7947cbc449419295614202023ccb97159b3b6fb0be0fb
3
+ metadata.gz: fe4fea42b4e089b7da5235e189941d2882c81e229f4016813ad1c431c1cb0937
4
+ data.tar.gz: da9543d5252c5ef2c906cf1bb6b6b9cda8fa654d3023800a7398ca39547b3160
5
5
  SHA512:
6
- metadata.gz: b4d3288b3215ef08ca4c099c8ec16c06c97c2f8e20a30aa5e495e4183bb7ba0d9002a53de46ec9c0f576e826c3c06522477d353f602b6256b20f81f5151127a5
7
- data.tar.gz: bb1cdf3ab5d589a609abb883e634fa61d457d93c461db889bd554065b28681a7c77f26bf9d036ee6e52e46b01093c31a52b3d7fdb0be8ca54675c3f9534debaa
6
+ metadata.gz: 86f846edd06ce32281a77233b7a160f2ff4ae197fd4b974fc7f58d551a68a84e27d93e693cdeb06f416b5620c459503b2cc2fca305f603ec28ee1afe96a61ca8
7
+ data.tar.gz: f8f35614551b30c6b9e49b0566cd61fb653860196c904a8b4c7b4d7b28fc3bca1f0b1068435e1cfa68fa87d6265b74928addef1effe8df66a909742d78e98778
@@ -8,27 +8,14 @@ branches:
8
8
 
9
9
  matrix:
10
10
  include:
11
- - rvm: 2.1.10
12
- env: RACK_VERSION='< 2.0.0' SPROCKETS_VERSION='~> 3.4.1'
13
- - rvm: 2.2.10
14
- env: SPROCKETS_VERSION='~> 3.5.2'
15
- - rvm: 2.3.7
16
- env: SPROCKETS_VERSION='~> 3.6.3'
17
- - rvm: 2.4.4
18
- env: SPROCKETS_VERSION='~> 3.7.1'
19
- - rvm: 2.5.1
20
- env: SPROCKETS_VERSION='~> 3.7.1'
21
-
22
- - rvm: 2.1.10
23
- env: OPAL_VERSION='~> 0.11.3' RACK_VERSION='< 2.0.0' SPROCKETS_VERSION='~> 3.4.1'
24
- - rvm: 2.2.10
25
- env: OPAL_VERSION='~> 0.11.3' SPROCKETS_VERSION='~> 3.5.2'
26
- - rvm: 2.3.7
27
- env: OPAL_VERSION='~> 0.11.3' SPROCKETS_VERSION='~> 3.6.3'
28
- - rvm: 2.4.4
29
- env: OPAL_VERSION='~> 0.11.3' SPROCKETS_VERSION='~> 3.7.1'
30
- - rvm: 2.5.1
31
- env: OPAL_VERSION='~> 0.11.3' SPROCKETS_VERSION='~> 3.7.1'
11
+ - rvm: 2.3
12
+ env: OPAL_VERSION='~> 1.0.0'
13
+ - rvm: 2.4
14
+ env: OPAL_VERSION='~> 1.0.0'
15
+ - rvm: 2.5
16
+ env: OPAL_VERSION='~> 1.0.0'
17
+ - rvm: 2.6
18
+ env: OPAL_VERSION='~> 1.0.0'
32
19
 
33
20
  notifications:
34
21
  irc: "irc.freenode.org#opal"
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.4.5](https://github.com/opal/opal-sprockets/compare/v0.4.4.1.0.3.7...v0.4.5.1.0.3.7)
4
+
5
+ *25 May 2019*
6
+
7
+ - Opal is now loaded as part of the bootstrap process instead of being marked as preloaded by the processor
8
+ - Simplified code for loading-related scripts
9
+
10
+
3
11
  ## [v0.4.4](https://github.com/opal/opal-sprockets/compare/v0.4.3.0.11.0.3.7...v0.4.4.1.0.3.7)
4
12
 
5
13
  *12 May 2019*
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'opal', '~> 0.11.0'
4
- gem 'opal-sprockets'
3
+ require_relative "../lib/opal/sprockets/version.rb"
4
+ gem 'opal', "~> #{Opal::Sprockets::OPAL_VERSION}"
5
+ gem 'opal-sprockets', path: '..'
@@ -1,22 +1,22 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ opal-sprockets (0.4.4.1.0.3.7)
5
+ opal (~> 1.0.0)
6
+ sprockets (~> 3.7)
7
+ tilt (>= 1.4)
8
+
1
9
  GEM
2
10
  remote: https://rubygems.org/
3
11
  specs:
4
12
  ast (2.4.0)
5
- concurrent-ruby (1.1.4)
6
- hike (1.2.3)
7
- opal (0.11.4)
13
+ concurrent-ruby (1.1.5)
14
+ opal (1.0.0)
8
15
  ast (>= 2.3.0)
9
- hike (~> 1.2)
10
- parser (= 2.3.3.1)
11
- sourcemap (~> 0.1.0)
12
- opal-sprockets (0.4.2.0.11.0.3.1)
13
- opal (~> 0.11.0)
14
- sprockets (~> 3.1)
15
- tilt (>= 1.4)
16
- parser (2.3.3.1)
17
- ast (~> 2.2)
18
- rack (2.0.6)
19
- sourcemap (0.1.1)
16
+ parser (= 2.5.3.0)
17
+ parser (2.5.3.0)
18
+ ast (~> 2.4.0)
19
+ rack (2.0.7)
20
20
  sprockets (3.7.2)
21
21
  concurrent-ruby (~> 1.0)
22
22
  rack (> 1, < 3)
@@ -26,8 +26,8 @@ PLATFORMS
26
26
  ruby
27
27
 
28
28
  DEPENDENCIES
29
- opal (~> 0.11.0)
30
- opal-sprockets
29
+ opal (~> 1.0.0)
30
+ opal-sprockets!
31
31
 
32
32
  BUNDLED WITH
33
33
  1.17.3
@@ -14,31 +14,40 @@ module Opal
14
14
  #
15
15
  # @example Will output the following JavaScript:
16
16
  #
17
- # if (typeof(Opal) !== 'undefined') {
18
- # Opal.loaded("opal");
19
- # Opal.loaded("jquery.self");
20
- # Opal.load("application");
21
- # }
17
+ # Opal.loaded("jquery.self", "yet_another_carousel.self");
18
+ # Opal.load("opal", "application");
22
19
  #
23
20
  # @param name [String] The logical name of the main asset to be loaded (without extension)
24
21
  #
25
22
  # @return [String] JavaScript code
26
- def self.load_asset(name, _sprockets = :deprecated)
27
- if _sprockets != :deprecated && !@load_asset_warning_displayed
28
- @load_asset_warning_displayed = true
29
- warn "Passing a sprockets environment to Opal::Sprockets.load_asset no more needed.\n #{caller(1, 3).join("\n ")}"
23
+ def self.load_asset(*names)
24
+ if names.last.is_a?(::Sprockets::Environment)
25
+ unless @load_asset_warning_displayed
26
+ @load_asset_warning_displayed = true
27
+ warn "Passing a sprockets environment to Opal::Sprockets.load_asset no more needed.\n #{caller(1, 3).join("\n ")}"
28
+ end
29
+ names.pop
30
30
  end
31
31
 
32
- name = name.sub(/(\.(js|rb|opal))*\z/, '')
33
- stubbed_files = ::Opal::Config.stubbed_files
32
+ names = names.map { |name| name.sub(/(\.(js|rb|opal))*\z/, '') }
33
+ stubbed = ::Opal::Config.stubbed_files.to_a
34
+
35
+ loaded = 'OpalLoaded || []'
36
+ loaded = "#{stubbed.to_json}.concat(#{loaded})" if stubbed.any?
34
37
 
35
- loaded = ['opal', 'corelib/runtime'] + stubbed_files.to_a
38
+ [
39
+ "Opal.loaded(#{loaded});",
40
+ *names.map { |name| "Opal.load(#{name.to_json});" }
41
+ ].join("\n")
42
+ end
36
43
 
37
- "if (typeof(Opal) !== 'undefined') { "\
38
- "Opal.loaded(#{loaded.to_json}); "\
39
- "if (typeof(OpalLoaded) !== 'undefined') Opal.loaded(OpalLoaded); "\
40
- "if (Opal.modules[#{name.to_json}]) Opal.load(#{name.to_json}); "\
41
- "}"
44
+ # Mark an asset as already loaded.
45
+ # This is useful for requiring JavaScript files which are not managed by Opal's laoding system.
46
+ #
47
+ # @param [String] name The "logical name" of the asset
48
+ # @return [String] JavaScript code
49
+ def self.loaded_asset(name)
50
+ %{if (typeof(OpalLoaded) === 'undefined') OpalLoaded = []; OpalLoaded.push(#{name.to_json});}
42
51
  end
43
52
 
44
53
  # Generate a `<script>` tag for Opal assets.
@@ -70,7 +79,7 @@ module Opal
70
79
  scripts << %{<script src="#{prefix}/#{name}.js"></script>}
71
80
  end
72
81
 
73
- scripts << %{<script>#{::Opal::Sprockets.load_asset(name)}</script>}
82
+ scripts << %{<script>#{load_asset('opal', name)}</script>}
74
83
 
75
84
  scripts.join "\n"
76
85
  end
@@ -32,14 +32,6 @@ module Opal
32
32
 
33
33
  compiler_options = self.compiler_options.merge(file: logical_path)
34
34
 
35
- # Opal will be loaded immediately to as the runtime redefines some crucial
36
- # methods such that need to be implemented as soon as possible:
37
- #
38
- # E.g. It forwards .toString() to .$to_s() for Opal objects including Array.
39
- # If .$to_s() is not implemented and some other lib is loaded before
40
- # corelib/* .toString results in an `undefined is not a function` error.
41
- compiler_options.merge!(requirable: false) if logical_path == 'opal'
42
-
43
35
  compiler = Compiler.new(data, compiler_options)
44
36
  result = compiler.compile
45
37
 
@@ -165,10 +157,7 @@ module Opal::Sprockets::Processor
165
157
  if processed_by_opal[asset]
166
158
  input[:data]
167
159
  else
168
- [
169
- input[:data],
170
- %{if (typeof(OpalLoaded) === 'undefined') OpalLoaded = []; OpalLoaded.push(#{input[:name].to_json});}
171
- ].join(";\n")
160
+ "#{input[:data]}\n#{Opal::Sprockets.loaded_asset(input[:name])}"
172
161
  end
173
162
  end
174
163
  end
@@ -1,6 +1,6 @@
1
1
  module Opal
2
2
  module Sprockets
3
- BASE_VERSION = '0.4.4'
3
+ BASE_VERSION = '0.4.5'
4
4
  OPAL_VERSION = '1.0.0'
5
5
  SPROCKETS_VERSION = '3.7'
6
6
 
@@ -11,22 +11,42 @@ describe Opal::Sprockets do
11
11
  expect(code).to include('Opal.load("console");')
12
12
  end
13
13
 
14
- it 'marks as loaded "opal" plus all non opal assets' do
15
- code = described_class.load_asset('corelib/runtime')
16
- expect(code).to include('Opal.loaded(["opal","corelib/runtime"]);')
14
+ it 'marks as loaded stubs and all non-opal assets' do
15
+ allow(Opal::Config).to receive(:stubbed_files) { %w[foo bar] }
16
+
17
+ code = described_class.load_asset('baz')
18
+ expect(code).to include('Opal.loaded(["foo","bar"].concat(OpalLoaded || []));')
19
+ expect(code).to include('Opal.load("baz");')
17
20
  end
18
21
 
19
22
  it 'tries to load an asset if it is registered as opal module' do
20
23
  code = described_class.load_asset('foo')
21
- expect(code).to include('if (Opal.modules["foo"]) Opal.load("foo");')
24
+ expect(code).to include('Opal.load("foo");')
25
+ end
26
+
27
+ it 'warns the user that passing an env is not needed, only once' do
28
+ expect(described_class).to receive(:warn).once
29
+ described_class.load_asset('foo', env)
30
+ described_class.load_asset('foo', env)
31
+ described_class.load_asset('foo', env)
32
+ described_class.load_asset('foo', 'bar', env)
33
+ described_class.load_asset('foo', 'bar', env)
22
34
  end
23
- end
24
35
 
25
- it 'warns the user that passing an env is not needed, only once' do
26
- expect(described_class).to receive(:warn).once
27
- described_class.load_asset('foo', env)
28
- described_class.load_asset('foo', env)
29
- described_class.load_asset('foo', env)
36
+ it 'accepts multiple names' do
37
+ code = described_class.load_asset('foo', 'bar')
38
+ expect(code).to include('Opal.load("foo");')
39
+ expect(code).to include('Opal.load("bar");')
40
+ end
41
+
42
+ it 'detects deprecated env with multiple names' do
43
+ code = described_class.load_asset('foo', 'bar', env)
44
+ expect(code).to eq([
45
+ 'Opal.loaded(OpalLoaded || []);',
46
+ 'Opal.load("foo");',
47
+ 'Opal.load("bar");',
48
+ ].join("\n"))
49
+ end
30
50
  end
31
51
 
32
52
  describe '.javascript_include_tag' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-sprockets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4.1.0.3.7
4
+ version: 0.4.5.1.0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elia Schito
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-05-12 00:00:00.000000000 Z
12
+ date: 2019-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sprockets