sprockets 3.0.0.beta.6 → 3.0.0.beta.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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +171 -100
  3. data/lib/rake/sprocketstask.rb +2 -2
  4. data/lib/sprockets.rb +69 -63
  5. data/lib/sprockets/asset.rb +2 -61
  6. data/lib/sprockets/autoload_processor.rb +48 -0
  7. data/lib/sprockets/base.rb +4 -6
  8. data/lib/sprockets/bower.rb +8 -5
  9. data/lib/sprockets/bundle.rb +9 -13
  10. data/lib/sprockets/cache.rb +19 -14
  11. data/lib/sprockets/cache/file_store.rb +2 -1
  12. data/lib/sprockets/cached_environment.rb +15 -68
  13. data/lib/sprockets/closure_compressor.rb +17 -4
  14. data/lib/sprockets/coffee_script_processor.rb +26 -0
  15. data/lib/sprockets/coffee_script_template.rb +3 -20
  16. data/lib/sprockets/compressing.rb +10 -4
  17. data/lib/sprockets/configuration.rb +21 -37
  18. data/lib/sprockets/context.rb +37 -67
  19. data/lib/sprockets/dependencies.rb +73 -0
  20. data/lib/sprockets/digest_utils.rb +8 -2
  21. data/lib/sprockets/directive_processor.rb +122 -165
  22. data/lib/sprockets/eco_processor.rb +32 -0
  23. data/lib/sprockets/eco_template.rb +3 -26
  24. data/lib/sprockets/ejs_processor.rb +31 -0
  25. data/lib/sprockets/ejs_template.rb +3 -25
  26. data/lib/sprockets/encoding_utils.rb +9 -21
  27. data/lib/sprockets/engines.rb +25 -27
  28. data/lib/sprockets/environment.rb +9 -1
  29. data/lib/sprockets/erb_processor.rb +30 -0
  30. data/lib/sprockets/erb_template.rb +3 -20
  31. data/lib/sprockets/file_reader.rb +15 -0
  32. data/lib/sprockets/http_utils.rb +2 -0
  33. data/lib/sprockets/jst_processor.rb +9 -2
  34. data/lib/sprockets/legacy.rb +212 -3
  35. data/lib/sprockets/legacy_tilt_processor.rb +1 -1
  36. data/lib/sprockets/loader.rb +95 -89
  37. data/lib/sprockets/manifest.rb +23 -59
  38. data/lib/sprockets/mime.rb +28 -41
  39. data/lib/sprockets/path_dependency_utils.rb +76 -0
  40. data/lib/sprockets/path_utils.rb +21 -1
  41. data/lib/sprockets/paths.rb +23 -8
  42. data/lib/sprockets/processing.rb +102 -91
  43. data/lib/sprockets/processor_utils.rb +97 -0
  44. data/lib/sprockets/resolve.rb +110 -97
  45. data/lib/sprockets/sass_cache_store.rb +2 -2
  46. data/lib/sprockets/sass_compressor.rb +17 -4
  47. data/lib/sprockets/sass_functions.rb +2 -2
  48. data/lib/sprockets/sass_importer.rb +2 -2
  49. data/lib/sprockets/sass_processor.rb +305 -0
  50. data/lib/sprockets/sass_template.rb +4 -286
  51. data/lib/sprockets/server.rb +1 -13
  52. data/lib/sprockets/transformers.rb +62 -25
  53. data/lib/sprockets/uglifier_compressor.rb +17 -4
  54. data/lib/sprockets/uri_utils.rb +190 -0
  55. data/lib/sprockets/utils.rb +87 -6
  56. data/lib/sprockets/version.rb +1 -1
  57. data/lib/sprockets/yui_compressor.rb +17 -4
  58. metadata +14 -5
  59. data/lib/sprockets/asset_uri.rb +0 -80
  60. data/lib/sprockets/lazy_processor.rb +0 -15
@@ -127,9 +127,9 @@ module Rake
127
127
  task :clobber => ["clobber_#{name}"]
128
128
 
129
129
  desc name == :assets ? "Clean old assets" : "Clean old #{name} assets"
130
- task "clean_#{name}", [:keep] do |t, args|
130
+ task "clean_#{name}" do
131
131
  with_logger do
132
- manifest.clean(Integer(args.keep || self.keep))
132
+ manifest.clean(keep)
133
133
  end
134
134
  end
135
135
 
data/lib/sprockets.rb CHANGED
@@ -10,23 +10,13 @@ module Sprockets
10
10
 
11
11
  # Processing
12
12
  autoload :Bundle, 'sprockets/bundle'
13
- autoload :ClosureCompressor, 'sprockets/closure_compressor'
14
13
  autoload :CoffeeScriptTemplate, 'sprockets/coffee_script_template'
15
14
  autoload :Context, 'sprockets/context'
16
15
  autoload :DirectiveProcessor, 'sprockets/directive_processor'
17
- autoload :EcoTemplate, 'sprockets/eco_template'
18
- autoload :EjsTemplate, 'sprockets/ejs_template'
19
- autoload :ERBTemplate, 'sprockets/erb_template'
20
- autoload :JstProcessor, 'sprockets/jst_processor'
21
- autoload :SassCompressor, 'sprockets/sass_compressor'
22
- autoload :SassTemplate, 'sprockets/sass_template'
23
- autoload :ScssTemplate, 'sprockets/sass_template'
24
- autoload :UglifierCompressor, 'sprockets/uglifier_compressor'
25
- autoload :YUICompressor, 'sprockets/yui_compressor'
16
+ autoload :FileReader, 'sprockets/file_reader'
26
17
 
27
18
  # Internal utilities
28
19
  autoload :ArgumentError, 'sprockets/errors'
29
- autoload :AssetURI, 'sprockets/asset_uri'
30
20
  autoload :Cache, 'sprockets/cache'
31
21
  autoload :ContentTypeMismatch, 'sprockets/errors'
32
22
  autoload :DigestUtils, 'sprockets/digest_utils'
@@ -34,48 +24,52 @@ module Sprockets
34
24
  autoload :Error, 'sprockets/errors'
35
25
  autoload :FileNotFound, 'sprockets/errors'
36
26
  autoload :HTTPUtils, 'sprockets/http_utils'
37
- autoload :LazyProcessor, 'sprockets/lazy_processor'
38
27
  autoload :PathUtils, 'sprockets/path_utils'
39
28
  autoload :Utils, 'sprockets/utils'
40
29
 
30
+ require 'sprockets/processor_utils'
31
+ extend ProcessorUtils
32
+
41
33
  # Extend Sprockets module to provide global registry
42
34
  require 'sprockets/configuration'
43
35
  require 'sprockets/context'
36
+ require 'digest/sha2'
44
37
  extend Configuration
45
38
 
46
- @root = File.expand_path('..', __FILE__).freeze
47
- @paths = [].freeze
48
- @mime_types = {}.freeze
49
- @mime_exts = {}.freeze
50
- @encodings = {}.freeze
51
- @engines = {}.freeze
52
- @engine_mime_types = {}.freeze
53
- @transformers = Hash.new { |h, k| {}.freeze }.freeze
54
- @inverted_transformers = Hash.new { |h, k| {}.freeze }.freeze
55
- @preprocessors = Hash.new { |h, k| [].freeze }.freeze
56
- @postprocessors = Hash.new { |h, k| [].freeze }.freeze
57
- @bundle_reducers = Hash.new { |h, k| {}.freeze }.freeze
58
- @bundle_processors = Hash.new { |h, k| [].freeze }.freeze
59
- @compressors = Hash.new { |h, k| {}.freeze }.freeze
60
- @context_class = Context
61
- @version = ''
62
-
63
- # Set the default digest
64
- require 'digest/sha2'
65
- @digest_class = Digest::SHA256
39
+ self.config = {
40
+ bundle_processors: Hash.new { |h, k| [].freeze }.freeze,
41
+ bundle_reducers: Hash.new { |h, k| {}.freeze }.freeze,
42
+ compressors: Hash.new { |h, k| {}.freeze }.freeze,
43
+ dependencies: Set.new.freeze,
44
+ dependency_resolvers: {}.freeze,
45
+ digest_class: Digest::SHA256,
46
+ engine_mime_types: {}.freeze,
47
+ engines: {}.freeze,
48
+ mime_exts: {}.freeze,
49
+ mime_types: {}.freeze,
50
+ paths: [].freeze,
51
+ postprocessors: Hash.new { |h, k| [].freeze }.freeze,
52
+ preprocessors: Hash.new { |h, k| [].freeze }.freeze,
53
+ registered_transformers: Hash.new { |h, k| {}.freeze }.freeze,
54
+ root: File.expand_path('..', __FILE__).freeze,
55
+ transformers: Hash.new { |h, k| {}.freeze }.freeze,
56
+ version: ""
57
+ }.freeze
58
+
59
+ @context_class = Context
66
60
 
67
61
  require 'logger'
68
62
  @logger = Logger.new($stderr)
69
63
  @logger.level = Logger::FATAL
70
64
 
71
65
  # Common asset text types
72
- register_mime_type 'application/javascript', extensions: ['.js'], charset: EncodingUtils::DETECT_UNICODE
73
- register_mime_type 'application/json', extensions: ['.json'], charset: EncodingUtils::DETECT_UNICODE
66
+ register_mime_type 'application/javascript', extensions: ['.js'], charset: :unicode
67
+ register_mime_type 'application/json', extensions: ['.json'], charset: :unicode
74
68
  register_mime_type 'application/xml', extensions: ['.xml']
75
- register_mime_type 'text/css', extensions: ['.css'], charset: EncodingUtils::DETECT_CSS
76
- register_mime_type 'text/html', extensions: ['.html', '.htm'], charset: EncodingUtils::DETECT_HTML
69
+ register_mime_type 'text/css', extensions: ['.css'], charset: :css
70
+ register_mime_type 'text/html', extensions: ['.html', '.htm'], charset: :html
77
71
  register_mime_type 'text/plain', extensions: ['.txt', '.text']
78
- register_mime_type 'text/yaml', extensions: ['.yml', '.yaml'], charset: EncodingUtils::DETECT_UNICODE
72
+ register_mime_type 'text/yaml', extensions: ['.yml', '.yaml'], charset: :unicode
79
73
 
80
74
  # Common image types
81
75
  register_mime_type 'image/x-icon', extensions: ['.ico']
@@ -103,14 +97,13 @@ module Sprockets
103
97
  register_mime_type 'application/x-font-ttf', extensions: ['.ttf']
104
98
  register_mime_type 'application/font-woff', extensions: ['.woff']
105
99
 
106
- # HTTP content encodings
107
- register_encoding :deflate, EncodingUtils::DEFLATE
108
- register_encoding :gzip, EncodingUtils::GZIP
109
- register_encoding :base64, EncodingUtils::BASE64
110
-
111
100
  require 'sprockets/directive_processor'
112
- register_preprocessor 'text/css', DirectiveProcessor
113
- register_preprocessor 'application/javascript', DirectiveProcessor
101
+ register_preprocessor 'text/css', DirectiveProcessor.new(
102
+ comments: ["//", ["/*", "*/"]]
103
+ )
104
+ register_preprocessor 'application/javascript', DirectiveProcessor.new(
105
+ comments: ["//", ["/*", "*/"]] + ["#", ["###", "###"]]
106
+ )
114
107
 
115
108
  require 'sprockets/bundle'
116
109
  register_bundle_processor 'application/javascript', Bundle
@@ -120,31 +113,44 @@ module Sprockets
120
113
  register_bundle_metadata_reducer 'application/javascript', :data, Utils.method(:concat_javascript_sources)
121
114
  register_bundle_metadata_reducer '*/*', :links, :+
122
115
 
123
- register_compressor 'text/css', :sass, LazyProcessor.new { SassCompressor }
124
- register_compressor 'text/css', :scss, LazyProcessor.new { SassCompressor }
125
- register_compressor 'text/css', :yui, LazyProcessor.new { YUICompressor }
126
- register_compressor 'application/javascript', :closure, LazyProcessor.new { ClosureCompressor }
127
- register_compressor 'application/javascript', :uglifier, LazyProcessor.new { UglifierCompressor }
128
- register_compressor 'application/javascript', :uglify, LazyProcessor.new { UglifierCompressor }
129
- register_compressor 'application/javascript', :yui, LazyProcessor.new { YUICompressor }
116
+ register_compressor 'text/css', :sass, autoload_processor(:SassCompressor, 'sprockets/sass_compressor')
117
+ register_compressor 'text/css', :scss, autoload_processor(:SassCompressor, 'sprockets/sass_compressor')
118
+ register_compressor 'text/css', :yui, autoload_processor(:YUICompressor, 'sprockets/yui_compressor')
119
+ register_compressor 'application/javascript', :closure, autoload_processor(:ClosureCompressor, 'sprockets/closure_compressor')
120
+ register_compressor 'application/javascript', :uglifier, autoload_processor(:UglifierCompressor, 'sprockets/uglifier_compressor')
121
+ register_compressor 'application/javascript', :uglify, autoload_processor(:UglifierCompressor, 'sprockets/uglifier_compressor')
122
+ register_compressor 'application/javascript', :yui, autoload_processor(:YUICompressor, 'sprockets/yui_compressor')
130
123
 
131
124
  # Mmm, CoffeeScript
132
- register_mime_type 'text/coffeescript', extensions: ['.coffee']
133
- register_engine '.coffee', LazyProcessor.new { CoffeeScriptTemplate }, mime_type: 'application/javascript'
125
+ register_engine '.coffee', autoload_processor(:CoffeeScriptProcessor, 'sprockets/coffee_script_processor'), mime_type: 'application/javascript'
134
126
 
135
127
  # JST engines
136
- register_mime_type 'text/eco', extensions: ['.eco']
137
- register_mime_type 'text/ejs', extensions: ['.ejs']
138
- register_engine '.jst', LazyProcessor.new { JstProcessor }, mime_type: 'application/javascript'
139
- register_engine '.eco', LazyProcessor.new { EcoTemplate }, mime_type: 'application/javascript'
140
- register_engine '.ejs', LazyProcessor.new { EjsTemplate }, mime_type: 'application/javascript'
128
+ register_engine '.jst', autoload_processor(:JstProcessor, 'sprockets/jst_processor'), mime_type: 'application/javascript'
129
+ register_engine '.eco', autoload_processor(:EcoProcessor, 'sprockets/eco_processor'), mime_type: 'application/javascript'
130
+ register_engine '.ejs', autoload_processor(:EjsProcessor, 'sprockets/ejs_processor'), mime_type: 'application/javascript'
141
131
 
142
132
  # CSS engines
143
- register_mime_type 'text/sass', extensions: ['.sass']
144
- register_mime_type 'text/scss', extensions: ['.scss']
145
- register_engine '.sass', LazyProcessor.new { SassTemplate }, mime_type: 'text/css'
146
- register_engine '.scss', LazyProcessor.new { ScssTemplate }, mime_type: 'text/css'
133
+ register_engine '.sass', autoload_processor(:SassProcessor, 'sprockets/sass_processor'), mime_type: 'text/css'
134
+ register_engine '.scss', autoload_processor(:ScssProcessor, 'sprockets/sass_processor'), mime_type: 'text/css'
147
135
 
148
136
  # Other
149
- register_engine '.erb', LazyProcessor.new { ERBTemplate }, mime_type: 'text/plain'
137
+ register_engine '.erb', autoload_processor(:ERBProcessor, 'sprockets/erb_processor'), mime_type: 'text/plain'
138
+
139
+ register_dependency_resolver 'environment-version' do |env|
140
+ env.version
141
+ end
142
+ register_dependency_resolver 'environment-paths' do |env|
143
+ env.paths
144
+ end
145
+ register_dependency_resolver 'file-digest' do |env, str|
146
+ env.file_digest(env.parse_file_digest_uri(str))
147
+ end
148
+ register_dependency_resolver 'processors' do |env, str|
149
+ env.resolve_processors_cache_key_uri(str)
150
+ end
151
+
152
+ depend_on 'environment-version'
153
+ depend_on 'environment-paths'
150
154
  end
155
+
156
+ require 'sprockets/legacy'
@@ -1,6 +1,5 @@
1
- require 'base64'
2
1
  require 'fileutils'
3
- require 'pathname'
2
+ require 'sprockets/digest_utils'
4
3
 
5
4
  module Sprockets
6
5
  class Asset
@@ -49,13 +48,6 @@ module Sprockets
49
48
  # Public: Returns String path of asset.
50
49
  attr_reader :filename
51
50
 
52
- # Deprecated: Use #filename instead.
53
- #
54
- # Returns Pathname.
55
- def pathname
56
- @pathname ||= Pathname.new(filename)
57
- end
58
-
59
51
  # Internal: Unique asset object ID.
60
52
  #
61
53
  # Returns a String.
@@ -97,36 +89,6 @@ module Sprockets
97
89
  metadata[:included]
98
90
  end
99
91
 
100
- # Deprecated: Expand asset into an `Array` of parts.
101
- #
102
- # Appending all of an assets body parts together should give you
103
- # the asset's contents as a whole.
104
- #
105
- # This allows you to link to individual files for debugging
106
- # purposes.
107
- #
108
- # Use Asset#included instead. Keeping a full copy of the bundle's processed
109
- # assets in memory (and in cache) is expensive and redundant. The common use
110
- # case is to relink to the assets anyway.
111
- #
112
- # Returns Array of Assets.
113
- def to_a
114
- if metadata[:included]
115
- metadata[:included].map { |uri| @environment.load(uri) }
116
- else
117
- [self]
118
- end
119
- end
120
-
121
- # Deprecated: Get all required Assets.
122
- #
123
- # See Asset#to_a
124
- #
125
- # Returns Array of Assets.
126
- def dependencies
127
- to_a.reject { |a| a.filename.eql?(self.filename) }
128
- end
129
-
130
92
  # Public: Return `String` of concatenated source.
131
93
  #
132
94
  # Returns String.
@@ -146,15 +108,6 @@ module Sprockets
146
108
  source
147
109
  end
148
110
 
149
- # Public: HTTP encoding for Asset, "deflate", "gzip", etc.
150
- #
151
- # Note: This is not the Ruby Encoding of the source. See Asset#charset.
152
- #
153
- # Returns a String or nil if encoding is "identity".
154
- def encoding
155
- metadata[:encoding]
156
- end
157
-
158
111
  # Public: Get charset of source.
159
112
  #
160
113
  # Returns a String charset name or nil if binary.
@@ -168,15 +121,6 @@ module Sprockets
168
121
  end
169
122
  alias_method :bytesize, :length
170
123
 
171
- # Deprecated: Returns Time of the last time the source was modified.
172
- #
173
- # Time resolution is normalized to the nearest second.
174
- #
175
- # Returns Time.
176
- def mtime
177
- Time.at(@mtime)
178
- end
179
-
180
124
  # Public: Returns String hexdigest of source.
181
125
  def hexdigest
182
126
  DigestUtils.pack_hexdigest(metadata[:digest])
@@ -231,10 +175,7 @@ module Sprockets
231
175
  #
232
176
  # Returns String.
233
177
  def inspect
234
- "#<#{self.class}:#{id} " +
235
- "filename=#{filename.inspect}, " +
236
- "digest=#{digest.inspect}" +
237
- ">"
178
+ "#<#{self.class}:#{object_id.to_s(16)} #{uri.inspect}>"
238
179
  end
239
180
 
240
181
  # Public: Implements Object#hash so Assets can be used as a Hash key or
@@ -0,0 +1,48 @@
1
+ module Sprockets
2
+ # Internal: Used for lazy loading processors.
3
+ #
4
+ # Libraries should not use lazily loaded processors. They are only needed
5
+ # internally by Sprockets since it has optionally dependencies such as
6
+ # CoffeeScript that may not be available in the gem environment.
7
+ class AutoloadProcessor
8
+ # Initialize AutoloadProcessor wrapper
9
+ #
10
+ # See ProcessorUtils.autoload_processor for constructor method.
11
+ #
12
+ # mod - Parent Module of processor class/module
13
+ # name - Symbol name of processor class/module
14
+ def initialize(mod, name)
15
+ @mod = mod
16
+ @name = name.to_sym
17
+ end
18
+
19
+ # Full name of module.
20
+ #
21
+ # Returns String.
22
+ def name
23
+ "#{@mod}::#{@name}"
24
+ end
25
+
26
+ # Check if target constant is already loaded.
27
+ #
28
+ # Returns Boolean.
29
+ def const_loaded?
30
+ @mod.autoload?(@name)
31
+ end
32
+
33
+ # Delegate to processor#cache_key
34
+ def cache_key
35
+ load_processor.cache_key if load_processor.respond_to?(:cache_key)
36
+ end
37
+
38
+ # Delegate to processor#call
39
+ def call(*args)
40
+ load_processor.call(*args)
41
+ end
42
+
43
+ private
44
+ def load_processor
45
+ @processor ||= @mod.const_get(@name)
46
+ end
47
+ end
48
+ end
@@ -1,14 +1,12 @@
1
- require 'sprockets/asset_uri'
2
1
  require 'sprockets/asset'
3
2
  require 'sprockets/bower'
4
3
  require 'sprockets/cache'
5
4
  require 'sprockets/configuration'
6
5
  require 'sprockets/digest_utils'
7
6
  require 'sprockets/errors'
8
- require 'sprockets/http_utils'
9
- require 'sprockets/legacy'
10
7
  require 'sprockets/loader'
11
8
  require 'sprockets/path_digest_utils'
9
+ require 'sprockets/path_dependency_utils'
12
10
  require 'sprockets/path_utils'
13
11
  require 'sprockets/resolve'
14
12
  require 'sprockets/server'
@@ -16,12 +14,11 @@ require 'sprockets/server'
16
14
  module Sprockets
17
15
  # `Base` class for `Environment` and `Cached`.
18
16
  class Base
19
- include PathDigestUtils, PathUtils, HTTPUtils, DigestUtils
17
+ include PathUtils, PathDependencyUtils, PathDigestUtils, DigestUtils
20
18
  include Configuration
21
19
  include Server
22
20
  include Resolve, Loader
23
21
  include Bower
24
- include Legacy
25
22
 
26
23
  # Get persistent cache store
27
24
  attr_reader :cache
@@ -61,7 +58,8 @@ module Sprockets
61
58
 
62
59
  # Find asset by logical path or expanded path.
63
60
  def find_asset(path, options = {})
64
- if uri = locate(path, options)
61
+ uri, _ = resolve(path, options.merge(compat: false))
62
+ if uri
65
63
  load(uri)
66
64
  end
67
65
  end
@@ -12,9 +12,9 @@ module Sprockets
12
12
  # load_path - String environment path
13
13
  # logical_path - String path relative to base
14
14
  #
15
- # Returns nothing.
16
- def resolve_alternates(load_path, logical_path, &block)
17
- super
15
+ # Returns candiate filenames.
16
+ def resolve_alternates(load_path, logical_path)
17
+ candidates, deps = super
18
18
 
19
19
  # bower.json can only be nested one level deep
20
20
  if !logical_path.index('/')
@@ -26,12 +26,15 @@ module Sprockets
26
26
  filename = filenames.detect { |fn| self.file?(fn) }
27
27
 
28
28
  if filename
29
- read_bower_main(dirname, filename, &block)
29
+ deps << build_file_digest_uri(filename)
30
+ read_bower_main(dirname, filename) do |path|
31
+ candidates << path
32
+ end
30
33
  end
31
34
  end
32
35
  end
33
36
 
34
- nil
37
+ return candidates, deps
35
38
  end
36
39
 
37
40
  # Internal: Read bower.json's main directive.
@@ -1,4 +1,5 @@
1
- require 'sprockets/asset_uri'
1
+ require 'set'
2
+ require 'sprockets/utils'
2
3
 
3
4
  module Sprockets
4
5
  # Internal: Bundle processor takes a single file asset and prepends all the
@@ -15,25 +16,20 @@ module Sprockets
15
16
  env = input[:environment]
16
17
  type = input[:content_type]
17
18
 
18
- # TODO: Rebuilding this URI is a bit of a smell
19
- processed_uri = AssetURI.build(input[:filename], type: type, skip_bundle: true)
19
+ processed_uri = env.build_asset_uri(input[:filename], type: type, skip_bundle: true)
20
20
 
21
- cache = Hash.new do |h, uri|
22
- h[uri] = env.load(uri)
23
- end
24
-
25
- find_required = proc { |uri| cache[uri].metadata[:required] }
21
+ find_required = proc { |uri| env.load(uri).metadata[:required] }
26
22
  required = Utils.dfs(processed_uri, &find_required)
27
- stubbed = Utils.dfs(cache[processed_uri].metadata[:stubbed], &find_required)
23
+ stubbed = Utils.dfs(env.load(processed_uri).metadata[:stubbed], &find_required)
28
24
  required.subtract(stubbed)
29
- assets = required.map { |uri| cache[uri] }
25
+ assets = required.map { |uri| env.load(uri) }
30
26
 
31
- dependency_paths = Set.new
27
+ dependencies = Set.new(input[:metadata][:dependencies])
32
28
  (required + stubbed).each do |uri|
33
- dependency_paths += cache[uri].metadata[:dependency_paths]
29
+ dependencies.merge(env.load(uri).metadata[:dependencies])
34
30
  end
35
31
 
36
- env.process_bundle_reducers(assets, env.unwrap_bundle_reducers(type)).merge(dependency_paths: dependency_paths, included: assets.map(&:uri))
32
+ env.process_bundle_reducers(assets, env.load_bundle_reducers(type)).merge(dependencies: dependencies, included: assets.map(&:uri))
37
33
  end
38
34
  end
39
35
  end