opal-sprockets 0.4.4.1.0.3.7 → 0.4.9.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: 4219e230743e17009790fafebb6ab1ff5dc149bb1c1ef84c92818d455bd8d25f
4
+ data.tar.gz: a864f139a015e995b14013252a95734f6fb87358ce9bbf9822e53c15aa350ed9
5
5
  SHA512:
6
- metadata.gz: b4d3288b3215ef08ca4c099c8ec16c06c97c2f8e20a30aa5e495e4183bb7ba0d9002a53de46ec9c0f576e826c3c06522477d353f602b6256b20f81f5151127a5
7
- data.tar.gz: bb1cdf3ab5d589a609abb883e634fa61d457d93c461db889bd554065b28681a7c77f26bf9d036ee6e52e46b01093c31a52b3d7fdb0be8ca54675c3f9534debaa
6
+ metadata.gz: 7a9bfe6e8905b81daca542ce0013e3ba00337846fd34cf9bda3e6efd31b819bf4ee70320d66e9c55518ae5c581a54a4ad8f11e6fa2c49ed93ed3124a7d201ccc
7
+ data.tar.gz: 3b16bfcda0c2742af3f9e7155be2d07084e13af2e7045477a7f0616e25987c9e7198eb15332dea624841b539411b2aa013da713ea94d523dafca4752cb2dfc1f
@@ -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,41 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.4.9](https://github.com/opal/opal-sprockets/compare/v0.4.8.1.0.3.7...v0.4.9.1.0.3.7)
4
+
5
+ *11 September 2020*
6
+
7
+ - Avoid OpalLoaded undefined when applications have no dependencies.
8
+
9
+
10
+ ## [v0.4.8](https://github.com/opal/opal-sprockets/compare/v0.4.7.1.0.3.7...v0.4.8.1.0.3.7)
11
+
12
+ *14 September 2019*
13
+
14
+ - Revert the changes in 0.4.7
15
+
16
+
17
+ ## [v0.4.7](https://github.com/opal/opal-sprockets/compare/v0.4.6.1.0.3.7...v0.4.7.1.0.3.7)
18
+
19
+ *14 September 2019*
20
+
21
+ - Require `opal/sprockets` before calling `Opal::Sprockets.loaded_asset`
22
+
23
+
24
+ ## [v0.4.6](https://github.com/opal/opal-sprockets/compare/v0.4.5.1.0.3.7...v0.4.6.1.0.3.7)
25
+
26
+ *24 July 2019*
27
+
28
+ - Allow multiple calls to the code produced by `Opal::Sprockets.load_asset`
29
+
30
+
31
+ ## [v0.4.5](https://github.com/opal/opal-sprockets/compare/v0.4.4.1.0.3.7...v0.4.5.1.0.3.7)
32
+
33
+ *25 May 2019*
34
+
35
+ - Opal is now loaded as part of the bootstrap process instead of being marked as preloaded by the processor
36
+ - Simplified code for loading-related scripts
37
+
38
+
3
39
  ## [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
40
 
5
41
  *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.5.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.require("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 = 'typeof(OpalLoaded) === "undefined" ? [] : 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.require(#{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.9'
4
4
  OPAL_VERSION = '1.0.0'
5
5
  SPROCKETS_VERSION = '3.7'
6
6
 
@@ -8,25 +8,45 @@ describe Opal::Sprockets do
8
8
  describe '.load_asset' do
9
9
  it 'loads the main asset' do
10
10
  code = described_class.load_asset('console')
11
- expect(code).to include('Opal.load("console");')
11
+ expect(code).to include('Opal.require("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(typeof(OpalLoaded) === "undefined" ? [] : OpalLoaded));})
19
+ expect(code).to include('Opal.require("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.require("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.require("foo");')
39
+ expect(code).to include('Opal.require("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(typeof(OpalLoaded) === "undefined" ? [] : OpalLoaded);',
46
+ 'Opal.require("foo");',
47
+ 'Opal.require("bar");',
48
+ ].join("\n"))
49
+ end
30
50
  end
31
51
 
32
52
  describe '.javascript_include_tag' do
metadata CHANGED
@@ -1,15 +1,15 @@
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.9.1.0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elia Schito
8
8
  - Adam Beynon
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-05-12 00:00:00.000000000 Z
12
+ date: 2020-09-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sprockets
@@ -162,7 +162,7 @@ files:
162
162
  homepage: https://github.com/opal/opal-sprockets#readme
163
163
  licenses: []
164
164
  metadata: {}
165
- post_install_message:
165
+ post_install_message:
166
166
  rdoc_options: []
167
167
  require_paths:
168
168
  - lib
@@ -177,8 +177,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
177
  - !ruby/object:Gem::Version
178
178
  version: '0'
179
179
  requirements: []
180
- rubygems_version: 3.0.3
181
- signing_key:
180
+ rubygems_version: 3.1.2
181
+ signing_key:
182
182
  specification_version: 4
183
183
  summary: Sprockets support for Opal.
184
184
  test_files: