opal-sprockets 0.4.4.1.0.3.7 → 0.4.5.1.0.3.7

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: 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