sprockets 4.0.0.beta6 → 4.0.0.beta7
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +432 -306
- data/lib/sprockets.rb +7 -2
- data/lib/sprockets/{source_map_comment_processor.rb → add_source_map_comment_to_asset_processor.rb} +24 -1
- data/lib/sprockets/base.rb +25 -1
- data/lib/sprockets/context.rb +54 -5
- data/lib/sprockets/loader.rb +12 -1
- data/lib/sprockets/manifest.rb +5 -0
- data/lib/sprockets/server.rb +2 -2
- data/lib/sprockets/source_map_processor.rb +33 -13
- data/lib/sprockets/version.rb +1 -1
- metadata +18 -4
    
        data/lib/sprockets.rb
    CHANGED
    
    | @@ -72,10 +72,14 @@ module Sprockets | |
| 72 72 | 
             
              register_mime_type 'audio/aiff', extensions: ['.aiff']
         | 
| 73 73 | 
             
              register_mime_type 'audio/mpeg', extensions: ['.mp3', '.mp2', '.m2a', '.m3a']
         | 
| 74 74 | 
             
              register_mime_type 'application/ogg', extensions: ['.ogx']
         | 
| 75 | 
            +
              register_mime_type 'audio/ogg', extensions: ['.ogg', '.oga']
         | 
| 75 76 | 
             
              register_mime_type 'audio/midi', extensions: ['.midi', '.mid']
         | 
| 76 77 | 
             
              register_mime_type 'video/avi', extensions: ['.avi']
         | 
| 77 78 | 
             
              register_mime_type 'audio/wave', extensions: ['.wav', '.wave']
         | 
| 78 79 | 
             
              register_mime_type 'video/mp4', extensions: ['.mp4', '.m4v']
         | 
| 80 | 
            +
              register_mime_type 'audio/aac', extensions: ['.aac']
         | 
| 81 | 
            +
              register_mime_type 'audio/mp4', extensions: ['.m4a']
         | 
| 82 | 
            +
              register_mime_type 'audio/flac', extensions: ['.flac']
         | 
| 79 83 |  | 
| 80 84 | 
             
              # Common font types
         | 
| 81 85 | 
             
              register_mime_type 'application/vnd.ms-fontobject', extensions: ['.eot']
         | 
| @@ -102,9 +106,9 @@ module Sprockets | |
| 102 106 | 
             
                env.default_processors_for(type, file_type)
         | 
| 103 107 | 
             
              end
         | 
| 104 108 |  | 
| 105 | 
            -
              require 'sprockets/ | 
| 109 | 
            +
              require 'sprockets/add_source_map_comment_to_asset_processor'
         | 
| 106 110 | 
             
              register_pipeline :debug do
         | 
| 107 | 
            -
                [ | 
| 111 | 
            +
                [AddSourceMapCommentToAssetProcessor]
         | 
| 108 112 | 
             
              end
         | 
| 109 113 |  | 
| 110 114 | 
             
              require 'sprockets/directive_processor'
         | 
| @@ -184,6 +188,7 @@ module Sprockets | |
| 184 188 | 
             
                text/sass
         | 
| 185 189 | 
             
                text/scss
         | 
| 186 190 | 
             
                text/yaml
         | 
| 191 | 
            +
                text/eco
         | 
| 187 192 | 
             
              ), 'application/\2+ruby', '.erb', ERBProcessor)
         | 
| 188 193 |  | 
| 189 194 | 
             
              register_mime_type 'application/html+ruby', extensions: ['.html.erb', '.erb', '.rhtml'], charset: :html
         | 
    
        data/lib/sprockets/{source_map_comment_processor.rb → add_source_map_comment_to_asset_processor.rb}
    RENAMED
    
    | @@ -3,8 +3,31 @@ require 'sprockets/uri_utils' | |
| 3 3 | 
             
            require 'sprockets/path_utils'
         | 
| 4 4 |  | 
| 5 5 | 
             
            module Sprockets
         | 
| 6 | 
            -
               | 
| 6 | 
            +
              # This is a processor designed to add a source map "comment"
         | 
| 7 | 
            +
              # to the bottom of a css or JS file that is serving a source
         | 
| 8 | 
            +
              # map. An example of a comment might look like this
         | 
| 9 | 
            +
              #
         | 
| 10 | 
            +
              #    //# application.js-80af0efcc960fc2ac93eda2f7b12e3db40ab360bf6ea269ceed3bea3678326f9.map
         | 
| 11 | 
            +
              #
         | 
| 12 | 
            +
              # As an asset is built it gets source map information added
         | 
| 13 | 
            +
              # to the `asset.to_hash[:metadata][:map]` key. This contains all the
         | 
| 14 | 
            +
              # information that is needed to build a source map file.
         | 
| 15 | 
            +
              #
         | 
| 16 | 
            +
              # To add this comment we must have an asset we can link to.
         | 
| 17 | 
            +
              # To do this we ensure that the original aset is loaded, then
         | 
| 18 | 
            +
              # we use a use a special mime type. For example `application/js-sourcemap+json`
         | 
| 19 | 
            +
              # for a JS source map.
         | 
| 20 | 
            +
              #
         | 
| 21 | 
            +
              # This will trigger a new asset to be loaded and generated by the
         | 
| 22 | 
            +
              # `SourceMapProcessor` processor.
         | 
| 23 | 
            +
              #
         | 
| 24 | 
            +
              # Finally once we have that file, we can generate a link to it
         | 
| 25 | 
            +
              # with it's full fingerprint. This is done and then
         | 
| 26 | 
            +
              # added to the original asset as a comment at the bottom.
         | 
| 27 | 
            +
              #
         | 
| 28 | 
            +
              class AddSourceMapCommentToAssetProcessor
         | 
| 7 29 | 
             
                def self.call(input)
         | 
| 30 | 
            +
             | 
| 8 31 | 
             
                  case input[:content_type]
         | 
| 9 32 | 
             
                  when "application/javascript"
         | 
| 10 33 | 
             
                    comment = "\n//# sourceMappingURL=%s"
         | 
    
        data/lib/sprockets/base.rb
    CHANGED
    
    | @@ -16,6 +16,18 @@ require 'sprockets/source_map_utils' | |
| 16 16 | 
             
            require 'sprockets/uri_tar'
         | 
| 17 17 |  | 
| 18 18 | 
             
            module Sprockets
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              class DoubleLinkError < Sprockets::Error
         | 
| 21 | 
            +
                def initialize(parent_filename:, logical_path:, last_filename:, filename:)
         | 
| 22 | 
            +
                  message = String.new
         | 
| 23 | 
            +
                  message << "Multiple files with the same output path cannot be linked (#{logical_path.inspect})\n"
         | 
| 24 | 
            +
                  message << "In #{parent_filename.inspect} these files were linked:\n"
         | 
| 25 | 
            +
                  message << "  - #{last_filename}\n"
         | 
| 26 | 
            +
                  message << "  - #{filename}\n"
         | 
| 27 | 
            +
                  super(message)
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 19 31 | 
             
              # `Base` class for `Environment` and `CachedEnvironment`.
         | 
| 20 32 | 
             
              class Base
         | 
| 21 33 | 
             
                include PathUtils, PathDependencyUtils, PathDigestUtils, DigestUtils, SourceMapUtils
         | 
| @@ -73,14 +85,26 @@ module Sprockets | |
| 73 85 | 
             
                def find_all_linked_assets(*args)
         | 
| 74 86 | 
             
                  return to_enum(__method__, *args) unless block_given?
         | 
| 75 87 |  | 
| 76 | 
            -
                  asset = find_asset(*args)
         | 
| 88 | 
            +
                  parent_asset = asset = find_asset(*args)
         | 
| 77 89 | 
             
                  return unless asset
         | 
| 78 90 |  | 
| 79 91 | 
             
                  yield asset
         | 
| 80 92 | 
             
                  stack = asset.links.to_a
         | 
| 93 | 
            +
                  linked_paths = {}
         | 
| 81 94 |  | 
| 82 95 | 
             
                  while uri = stack.shift
         | 
| 83 96 | 
             
                    yield asset = load(uri)
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                    last_filename = linked_paths[asset.logical_path]
         | 
| 99 | 
            +
                    if last_filename && last_filename != asset.filename
         | 
| 100 | 
            +
                      raise DoubleLinkError.new(
         | 
| 101 | 
            +
                        parent_filename: parent_asset.filename,
         | 
| 102 | 
            +
                        last_filename:   last_filename,
         | 
| 103 | 
            +
                        logical_path:    asset.logical_path,
         | 
| 104 | 
            +
                        filename:        asset.filename
         | 
| 105 | 
            +
                      )
         | 
| 106 | 
            +
                    end
         | 
| 107 | 
            +
                    linked_paths[asset.logical_path] = asset.filename
         | 
| 84 108 | 
             
                    stack = asset.links.to_a + stack
         | 
| 85 109 | 
             
                  end
         | 
| 86 110 |  | 
    
        data/lib/sprockets/context.rb
    CHANGED
    
    | @@ -186,9 +186,10 @@ module Sprockets | |
| 186 186 | 
             
                  asset
         | 
| 187 187 | 
             
                end
         | 
| 188 188 |  | 
| 189 | 
            -
                # Returns a  | 
| 190 | 
            -
                #  | 
| 191 | 
            -
                # | 
| 189 | 
            +
                # Returns a `data:` URI with the contents of the asset at the specified
         | 
| 190 | 
            +
                # path, and marks that path as a dependency of the current file.
         | 
| 191 | 
            +
                #
         | 
| 192 | 
            +
                # Uses URI encoding for SVG files, base64 encoding for all the other files.
         | 
| 192 193 | 
             
                #
         | 
| 193 194 | 
             
                # Use `asset_data_uri` from ERB with CSS or JavaScript assets:
         | 
| 194 195 | 
             
                #
         | 
| @@ -198,8 +199,11 @@ module Sprockets | |
| 198 199 | 
             
                #
         | 
| 199 200 | 
             
                def asset_data_uri(path)
         | 
| 200 201 | 
             
                  asset = depend_on_asset(path)
         | 
| 201 | 
            -
                   | 
| 202 | 
            -
             | 
| 202 | 
            +
                  if asset.content_type == 'image/svg+xml'
         | 
| 203 | 
            +
                    svg_asset_data_uri(asset)
         | 
| 204 | 
            +
                  else
         | 
| 205 | 
            +
                    base64_asset_data_uri(asset)
         | 
| 206 | 
            +
                  end
         | 
| 203 207 | 
             
                end
         | 
| 204 208 |  | 
| 205 209 | 
             
                # Expands logical path to full url to asset.
         | 
| @@ -251,5 +255,50 @@ Extend your environment context with a custom method. | |
| 251 255 | 
             
                def stylesheet_path(path)
         | 
| 252 256 | 
             
                  asset_path(path, type: :stylesheet)
         | 
| 253 257 | 
             
                end
         | 
| 258 | 
            +
             | 
| 259 | 
            +
                protected
         | 
| 260 | 
            +
             | 
| 261 | 
            +
                # Returns a URI-encoded data URI (always "-quoted).
         | 
| 262 | 
            +
                def svg_asset_data_uri(asset)
         | 
| 263 | 
            +
                  svg = asset.source.dup
         | 
| 264 | 
            +
                  optimize_svg_for_uri_escaping!(svg)
         | 
| 265 | 
            +
                  data = Rack::Utils.escape(svg)
         | 
| 266 | 
            +
                  optimize_quoted_uri_escapes!(data)
         | 
| 267 | 
            +
                  "\"data:#{asset.content_type};charset=utf-8,#{data}\""
         | 
| 268 | 
            +
                end
         | 
| 269 | 
            +
             | 
| 270 | 
            +
                # Returns a Base64-encoded data URI.
         | 
| 271 | 
            +
                def base64_asset_data_uri(asset)
         | 
| 272 | 
            +
                  data = Rack::Utils.escape(EncodingUtils.base64(asset.source))
         | 
| 273 | 
            +
                  "data:#{asset.content_type};base64,#{data}"
         | 
| 274 | 
            +
                end
         | 
| 275 | 
            +
             | 
| 276 | 
            +
                # Optimizes an SVG for being URI-escaped.
         | 
| 277 | 
            +
                #
         | 
| 278 | 
            +
                # This method only performs these basic but crucial optimizations:
         | 
| 279 | 
            +
                # * Replaces " with ', because ' does not need escaping.
         | 
| 280 | 
            +
                # * Removes comments, meta, doctype, and newlines.
         | 
| 281 | 
            +
                # * Collapses whitespace.
         | 
| 282 | 
            +
                def optimize_svg_for_uri_escaping!(svg)
         | 
| 283 | 
            +
                  # Remove comments, xml meta, and doctype
         | 
| 284 | 
            +
                  svg.gsub!(/<!--.*?-->|<\?.*?\?>|<!.*?>/m, '')
         | 
| 285 | 
            +
                  # Replace consecutive whitespace and newlines with a space
         | 
| 286 | 
            +
                  svg.gsub!(/\s+/, ' ')
         | 
| 287 | 
            +
                  # Collapse inter-tag whitespace
         | 
| 288 | 
            +
                  svg.gsub!('> <', '><')
         | 
| 289 | 
            +
                  # Replace " with '
         | 
| 290 | 
            +
                  svg.gsub!(/([\w:])="(.*?)"/, "\\1='\\2'")
         | 
| 291 | 
            +
                  svg.strip!
         | 
| 292 | 
            +
                end
         | 
| 293 | 
            +
             | 
| 294 | 
            +
                # Un-escapes characters in the given URI-escaped string that do not need
         | 
| 295 | 
            +
                # escaping in "-quoted data URIs.
         | 
| 296 | 
            +
                def optimize_quoted_uri_escapes!(escaped)
         | 
| 297 | 
            +
                  escaped.gsub!('%3D', '=')
         | 
| 298 | 
            +
                  escaped.gsub!('%3A', ':')
         | 
| 299 | 
            +
                  escaped.gsub!('%2F', '/')
         | 
| 300 | 
            +
                  escaped.gsub!('%27', "'")
         | 
| 301 | 
            +
                  escaped.tr!('+', ' ')
         | 
| 302 | 
            +
                end
         | 
| 254 303 | 
             
              end
         | 
| 255 304 | 
             
            end
         | 
    
        data/lib/sprockets/loader.rb
    CHANGED
    
    | @@ -81,6 +81,8 @@ module Sprockets | |
| 81 81 | 
             
                      asset[:metadata][:links].map!             { |uri| expand_from_root(uri) } if asset[:metadata][:links]
         | 
| 82 82 | 
             
                      asset[:metadata][:stubbed].map!           { |uri| expand_from_root(uri) } if asset[:metadata][:stubbed]
         | 
| 83 83 | 
             
                      asset[:metadata][:required].map!          { |uri| expand_from_root(uri) } if asset[:metadata][:required]
         | 
| 84 | 
            +
                      asset[:metadata][:to_load].map!           { |uri| expand_from_root(uri) } if asset[:metadata][:to_load]
         | 
| 85 | 
            +
                      asset[:metadata][:to_link].map!           { |uri| expand_from_root(uri) } if asset[:metadata][:to_link]
         | 
| 84 86 | 
             
                      asset[:metadata][:dependencies].map!      { |uri| uri.start_with?("file-digest://") ? expand_from_root(uri) : uri } if asset[:metadata][:dependencies]
         | 
| 85 87 |  | 
| 86 88 | 
             
                      asset[:metadata].each_key do |k|
         | 
| @@ -140,7 +142,6 @@ module Sprockets | |
| 140 142 |  | 
| 141 143 | 
             
                    # Read into memory and process if theres a processor pipeline
         | 
| 142 144 | 
             
                    if processors.any?
         | 
| 143 | 
            -
             | 
| 144 145 | 
             
                      result = call_processors(processors, {
         | 
| 145 146 | 
             
                        environment: self,
         | 
| 146 147 | 
             
                        cache: self.cache,
         | 
| @@ -224,6 +225,16 @@ module Sprockets | |
| 224 225 | 
             
                        cached_asset[:metadata][:required].map! { |uri| compress_from_root(uri) }
         | 
| 225 226 | 
             
                      end
         | 
| 226 227 |  | 
| 228 | 
            +
                      if cached_asset[:metadata][:to_load] && !cached_asset[:metadata][:to_load].empty?
         | 
| 229 | 
            +
                        cached_asset[:metadata][:to_load] = cached_asset[:metadata][:to_load].dup
         | 
| 230 | 
            +
                        cached_asset[:metadata][:to_load].map! { |uri| compress_from_root(uri) }
         | 
| 231 | 
            +
                      end
         | 
| 232 | 
            +
             | 
| 233 | 
            +
                      if cached_asset[:metadata][:to_link] && !cached_asset[:metadata][:to_link].empty?
         | 
| 234 | 
            +
                        cached_asset[:metadata][:to_link] = cached_asset[:metadata][:to_link].dup
         | 
| 235 | 
            +
                        cached_asset[:metadata][:to_link].map! { |uri| compress_from_root(uri) }
         | 
| 236 | 
            +
                      end
         | 
| 237 | 
            +
             | 
| 227 238 | 
             
                      if cached_asset[:metadata][:dependencies] && !cached_asset[:metadata][:dependencies].empty?
         | 
| 228 239 | 
             
                        cached_asset[:metadata][:dependencies] = cached_asset[:metadata][:dependencies].dup
         | 
| 229 240 | 
             
                        cached_asset[:metadata][:dependencies].map! do |uri|
         | 
    
        data/lib/sprockets/manifest.rb
    CHANGED
    
    | @@ -165,7 +165,12 @@ module Sprockets | |
| 165 165 | 
             
                  filenames            = []
         | 
| 166 166 | 
             
                  concurrent_exporters = []
         | 
| 167 167 |  | 
| 168 | 
            +
                  assets_to_export = Concurrent::Array.new
         | 
| 168 169 | 
             
                  find(*args) do |asset|
         | 
| 170 | 
            +
                    assets_to_export << asset
         | 
| 171 | 
            +
                  end
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                  assets_to_export.each do |asset|
         | 
| 169 174 | 
             
                    mtime = Time.now.iso8601
         | 
| 170 175 | 
             
                    files[asset.digest_path] = {
         | 
| 171 176 | 
             
                      'logical_path' => asset.logical_path,
         | 
    
        data/lib/sprockets/server.rb
    CHANGED
    
    | @@ -54,11 +54,11 @@ module Sprockets | |
| 54 54 | 
             
                  if fingerprint
         | 
| 55 55 | 
             
                    if_match = fingerprint
         | 
| 56 56 | 
             
                  elsif env['HTTP_IF_MATCH']
         | 
| 57 | 
            -
                    if_match = env['HTTP_IF_MATCH'][ | 
| 57 | 
            +
                    if_match = env['HTTP_IF_MATCH'][/"(\w+)"$/, 1]
         | 
| 58 58 | 
             
                  end
         | 
| 59 59 |  | 
| 60 60 | 
             
                  if env['HTTP_IF_NONE_MATCH']
         | 
| 61 | 
            -
                    if_none_match = env['HTTP_IF_NONE_MATCH'][ | 
| 61 | 
            +
                    if_none_match = env['HTTP_IF_NONE_MATCH'][/"(\w+)"$/, 1]
         | 
| 62 62 | 
             
                  end
         | 
| 63 63 |  | 
| 64 64 | 
             
                  # Look up the asset.
         | 
| @@ -2,24 +2,32 @@ | |
| 2 2 | 
             
            require 'set'
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Sprockets
         | 
| 5 | 
            -
              class SourceMapProcessor
         | 
| 6 | 
            -
                def self.original_content_type(source_map_content_type, error_when_not_found: true)
         | 
| 7 | 
            -
                  case source_map_content_type
         | 
| 8 | 
            -
                  when "application/js-sourcemap+json"
         | 
| 9 | 
            -
                    "application/javascript"
         | 
| 10 | 
            -
                  when "application/css-sourcemap+json"
         | 
| 11 | 
            -
                    "text/css"
         | 
| 12 | 
            -
                  else
         | 
| 13 | 
            -
                    fail(source_map_content_type) if error_when_not_found
         | 
| 14 | 
            -
                    source_map_content_type
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
                end
         | 
| 17 5 |  | 
| 6 | 
            +
              # The purpose of this class is to generate a source map file
         | 
| 7 | 
            +
              # that can be read and understood by browsers.
         | 
| 8 | 
            +
              #
         | 
| 9 | 
            +
              # When a file is passed in it will have a `application/js-sourcemap+json`
         | 
| 10 | 
            +
              # or `application/css-sourcemap+json` mime type. The filename will be
         | 
| 11 | 
            +
              # match the original asset. The original asset is loaded. As it
         | 
| 12 | 
            +
              # gets processed by Sprockets it will aquire all information
         | 
| 13 | 
            +
              # needed to build a source map file in the `asset.to_hash[:metadata][:map]`
         | 
| 14 | 
            +
              # key.
         | 
| 15 | 
            +
              #
         | 
| 16 | 
            +
              # The output is an asset with a properly formatted source map file:
         | 
| 17 | 
            +
              #
         | 
| 18 | 
            +
              #   {
         | 
| 19 | 
            +
              #     "version": 3,
         | 
| 20 | 
            +
              #     "sources": ["foo.js"],
         | 
| 21 | 
            +
              #     "names":   [ ],
         | 
| 22 | 
            +
              #     "mappings": "AAAA,GAAIA"
         | 
| 23 | 
            +
              #   }
         | 
| 24 | 
            +
              #
         | 
| 25 | 
            +
              class SourceMapProcessor
         | 
| 18 26 | 
             
                def self.call(input)
         | 
| 19 27 | 
             
                  links = Set.new(input[:metadata][:links])
         | 
| 20 28 | 
             
                  env = input[:environment]
         | 
| 21 29 |  | 
| 22 | 
            -
                  uri, _ = env.resolve!(input[:filename], accept: original_content_type(input[:content_type]))
         | 
| 30 | 
            +
                  uri, _ = env.resolve!(input[:filename], accept: self.original_content_type(input[:content_type]))
         | 
| 23 31 | 
             
                  asset  = env.load(uri)
         | 
| 24 32 | 
             
                  map    = asset.metadata[:map]
         | 
| 25 33 |  | 
| @@ -42,5 +50,17 @@ module Sprockets | |
| 42 50 |  | 
| 43 51 | 
             
                  { data: json, links: links, dependencies: dependencies }
         | 
| 44 52 | 
             
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                def self.original_content_type(source_map_content_type, error_when_not_found: true)
         | 
| 55 | 
            +
                  case source_map_content_type
         | 
| 56 | 
            +
                  when "application/js-sourcemap+json"
         | 
| 57 | 
            +
                    "application/javascript"
         | 
| 58 | 
            +
                  when "application/css-sourcemap+json"
         | 
| 59 | 
            +
                    "text/css"
         | 
| 60 | 
            +
                  else
         | 
| 61 | 
            +
                    fail(source_map_content_type) if error_when_not_found
         | 
| 62 | 
            +
                    source_map_content_type
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
                end
         | 
| 45 65 | 
             
              end
         | 
| 46 66 | 
             
            end
         | 
    
        data/lib/sprockets/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sprockets
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4.0.0. | 
| 4 | 
            +
              version: 4.0.0.beta7
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sam Stephenson
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2018-03-13 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: rack
         | 
| @@ -45,6 +45,20 @@ dependencies: | |
| 45 45 | 
             
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 47 | 
             
                    version: '1.0'
         | 
| 48 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 49 | 
            +
              name: m
         | 
| 50 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ">="
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
              type: :development
         | 
| 56 | 
            +
              prerelease: false
         | 
| 57 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - ">="
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 48 62 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 49 63 | 
             
              name: babel-transpiler
         | 
| 50 64 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -304,6 +318,7 @@ files: | |
| 304 318 | 
             
            - bin/sprockets
         | 
| 305 319 | 
             
            - lib/rake/sprocketstask.rb
         | 
| 306 320 | 
             
            - lib/sprockets.rb
         | 
| 321 | 
            +
            - lib/sprockets/add_source_map_comment_to_asset_processor.rb
         | 
| 307 322 | 
             
            - lib/sprockets/asset.rb
         | 
| 308 323 | 
             
            - lib/sprockets/autoload.rb
         | 
| 309 324 | 
             
            - lib/sprockets/autoload/babel.rb
         | 
| @@ -370,7 +385,6 @@ files: | |
| 370 385 | 
             
            - lib/sprockets/sassc_compressor.rb
         | 
| 371 386 | 
             
            - lib/sprockets/sassc_processor.rb
         | 
| 372 387 | 
             
            - lib/sprockets/server.rb
         | 
| 373 | 
            -
            - lib/sprockets/source_map_comment_processor.rb
         | 
| 374 388 | 
             
            - lib/sprockets/source_map_processor.rb
         | 
| 375 389 | 
             
            - lib/sprockets/source_map_utils.rb
         | 
| 376 390 | 
             
            - lib/sprockets/transformers.rb
         | 
| @@ -402,7 +416,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 402 416 | 
             
                  version: 1.3.1
         | 
| 403 417 | 
             
            requirements: []
         | 
| 404 418 | 
             
            rubyforge_project: sprockets
         | 
| 405 | 
            -
            rubygems_version: 2.6 | 
| 419 | 
            +
            rubygems_version: 2.7.6
         | 
| 406 420 | 
             
            signing_key: 
         | 
| 407 421 | 
             
            specification_version: 4
         | 
| 408 422 | 
             
            summary: Rack-based asset packaging system
         |