sprockets 4.0.0 → 4.0.2

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: cbc5f0a881069d09632a087bb32f43c8e5d01a631f2ff6fbc6e776e3695bd51c
4
- data.tar.gz: 580922aaccc4defd65fdf239b441f7e8e96216d98dae8fdfe0a64afc3b40a4bc
3
+ metadata.gz: a4743994bc846327ac80bde662aa5a26fd95ce5cca2dd149deafe0fe94b6bf00
4
+ data.tar.gz: 454485ef7d2c5aac60c69b7d7042ed1b74245afecfeadc72c7e9bc290dc8b5b8
5
5
  SHA512:
6
- metadata.gz: f474ef02d068783020ae4a3833bded8783d1a1bfa1ee5ae106dd7e8dfbcf12723c8582155cb44c0594b0c36bcad476b7139814f2577fa2e25a82ad6675763dc4
7
- data.tar.gz: 853bbac33f50b2097126190c01bdc182306b7aa7132d50b91248efd1dcc1b7a35863fa1a5e529eacc8d967ee9d2de8083ae68b72e02889e01a821d794d0ad147
6
+ metadata.gz: c6d61894b3f53a76bf1f04c3f2fe74143b33e43d5fbdc3db216bdf0ad88d06f8a73fc61bd12071ee79e8aab49b36cb14685f6bb2d86582387cbc5522cef305a3
7
+ data.tar.gz: ca2bff624116f6de55ce4f9c6371be9d71245d2883c4837cf5a1b4969006fbdf8507b358c7986cccb03edb00711367538176ed2701a1e725cde1206163c64e2c
@@ -2,7 +2,15 @@
2
2
 
3
3
  Get upgrade notes from Sprockets 3.x to 4.x at https://github.com/rails/sprockets/blob/master/UPGRADING.md
4
4
 
5
- ## Master
5
+ ## 4.0.2
6
+
7
+ - Fix `etag` and digest path compilation that were generating string with invalid digest since 4.0.1.
8
+
9
+ ## 4.0.1
10
+
11
+ - Fix for Ruby 2.7 keyword arguments warning in `base.rb`. [#660](https://github.com/rails/sprockets/pull/660)
12
+ - Fix for when `x_sprockets_linecount` is missing from a source map.
13
+ - Fix subresource integrity to match the digest of the asset.
6
14
 
7
15
  ## 4.0.0
8
16
 
data/README.md CHANGED
@@ -115,9 +115,9 @@ Here is a list of the available directives:
115
115
  - [`require_self`](#require_self) - Change order of where current contents are concatenated to current
116
116
  - [`require_directory`](#require_directory) - Add contents of each file in a folder to current
117
117
  - [`require_tree`](#require_tree) - Add contents of all files in all directories in a path to current
118
- - [`link`](#link) - Make target file compile and be publically available without adding contents to current
119
- - [`link_directory`](#link_directory) - Make target directory compile and be publically available without adding contents to current
120
- - [`link_tree`](#link_tree) - Make target tree compile and be publically available without adding contents to current
118
+ - [`link`](#link) - Make target file compile and be publicly available without adding contents to current
119
+ - [`link_directory`](#link_directory) - Make target directory compile and be publicly available without adding contents to current
120
+ - [`link_tree`](#link_tree) - Make target tree compile and be publicly available without adding contents to current
121
121
  - [`depend_on`](#depend_on) - Recompile current file if target has changed
122
122
  - [`stub`](#stub) - Ignore target file
123
123
 
@@ -363,37 +363,70 @@ directory specified by *path*.
363
363
  ### link
364
364
 
365
365
  `link` *path* declares a dependency on the target *path* and adds it to a list
366
- of subdependencies to automatically be compiled when the asset is written out to
366
+ of subdependencies to be compiled when the asset is written out to
367
367
  disk.
368
368
 
369
369
  Example:
370
370
 
371
- If you've got a `manifest.js` file and you want to explicitly make sure an `admin.js` file is
372
- generated and made available to the public you can link it like this:
371
+ If you've got a `manifest.js` file and you want to specify that a `admin.js` source file should be
372
+ generated and made available to the public you can link it by including this in the `manifest.js` file:
373
373
 
374
374
  ```
375
375
  //= link admin.js
376
376
  ```
377
377
 
378
+ The argument to `link` is a _logical path_, that is it will be resolved according to the
379
+ configured asset load paths. See [Accesing Assets](#accessing-assets) above. A path relative to
380
+ the current file won't work, it must be a logical path.
381
+
382
+ **Caution**: the "link" directive should always have an explicit extension on the end.
383
+
378
384
  ### link_directory
379
385
 
380
- `link_directory` *path* links all the files inside the directory specified by the *path*
386
+ `link_directory` *path* links all the files inside the directory specified by the *path*. By "link", we mean they are specified as compilation targets to be written out to disk, and made available to be served to user-agents.
387
+
388
+ Files in subdirectories will not be linked (Compare to [link_tree](#link_tree)).
389
+
390
+ The *path* argument to `link_directory` is _not_ a logical path (it does not use the asset load paths), but is a path relative to the file the `link_directory` directive is found in, and can use `..` to . For instance, you might want:
391
+
392
+ ```js
393
+ //= link_directory ../stylesheets
394
+ ```
395
+
396
+ `link_directory` can take an optional second argument with an extension or content-type, with the
397
+ two arguments separated by a space:
398
+
399
+ ```js
400
+ //= link_directory ../stylesheets text/css
401
+ //= link_directory ../more_stylesheets .css
402
+ ```
403
+
404
+ This will limit the matching files to link to only files recognized as that type. An extension is
405
+ just a shortcut for the type referenced, it does not need to match the source file exactly, but
406
+ instead identifies the content-type the source file must be recognized as.
381
407
 
382
408
  ### link_tree
383
409
 
384
- `link_tree` *path* works like `link_directory`, but operates
410
+ `link_tree` *path* works like [link_directory](#link_directory), but operates
385
411
  recursively to link all files in all subdirectories of the
386
412
  directory specified by *path*.
387
413
 
388
414
  Example:
389
415
 
390
- You can specify a file extension so any extra files will be ignored:
416
+ ```js
417
+ //= link_tree ./path/to/folder
418
+ ```
419
+
420
+ Like `link_directory`, the argument is path relative to the current file, it is *not* a 'logical path' tresolved against load paths.
421
+
422
+
423
+ As with `link_directory`, you can also specify a second argument -- separated by a space -- so any extra files not matching the content-type specified will be ignored:
391
424
 
392
425
  ```js
393
- //= link_tree ./path/to/folder .js
426
+ //= link_tree ./path/to/folder text/javascript
427
+ //= link_tree ./path/to/other_folder .js
394
428
  ```
395
429
 
396
- > Note: There is an intentional space between the path and the extension
397
430
 
398
431
  ### depend_on
399
432
 
@@ -123,13 +123,26 @@ module Sprockets
123
123
  metadata[:digest]
124
124
  end
125
125
 
126
+ # Private: Return the version of the environment where the asset was generated.
127
+ def environment_version
128
+ metadata[:environment_version]
129
+ end
130
+
126
131
  # Public: Returns String hexdigest of source.
127
132
  def hexdigest
128
133
  DigestUtils.pack_hexdigest(digest)
129
134
  end
130
135
 
131
136
  # Pubic: ETag String of Asset.
132
- alias_method :etag, :hexdigest
137
+ def etag
138
+ version = environment_version
139
+
140
+ if version && version != ""
141
+ DigestUtils.hexdigest(version + digest)
142
+ else
143
+ DigestUtils.pack_hexdigest(digest)
144
+ end
145
+ end
133
146
 
134
147
  # Public: Returns String base64 digest of source.
135
148
  def base64digest
@@ -138,7 +151,7 @@ module Sprockets
138
151
 
139
152
  # Public: A "named information" URL for subresource integrity.
140
153
  def integrity
141
- DigestUtils.integrity_uri(metadata[:digest])
154
+ DigestUtils.integrity_uri(digest)
142
155
  end
143
156
 
144
157
  # Public: Add enumerator to allow `Asset` instances to be used as Rack
@@ -115,8 +115,8 @@ module Sprockets
115
115
  #
116
116
  # environment['application.js']
117
117
  #
118
- def [](*args)
119
- find_asset(*args)
118
+ def [](*args, **options)
119
+ find_asset(*args, **options)
120
120
  end
121
121
 
122
122
  # Find asset by logical path or expanded path.
@@ -69,4 +69,3 @@ module Sprockets
69
69
  end
70
70
  end
71
71
  end
72
-
@@ -195,14 +195,16 @@ module Sprockets
195
195
  source = result.delete(:data)
196
196
  metadata = result
197
197
  metadata[:charset] = source.encoding.name.downcase unless metadata.key?(:charset)
198
- metadata[:digest] = digest(self.version + source)
198
+ metadata[:digest] = digest(source)
199
199
  metadata[:length] = source.bytesize
200
+ metadata[:environment_version] = version
200
201
  else
201
202
  dependencies << build_file_digest_uri(unloaded.filename)
202
203
  metadata = {
203
204
  digest: file_digest(unloaded.filename),
204
205
  length: self.stat(unloaded.filename).size,
205
- dependencies: dependencies
206
+ dependencies: dependencies,
207
+ environment_version: version,
206
208
  }
207
209
  end
208
210
 
@@ -78,7 +78,7 @@ module Sprockets
78
78
  offset = 0
79
79
  if a["sections"].count != 0 && !a["sections"].last["map"]["mappings"].empty?
80
80
  last_line_count = a["sections"].last["map"].delete("x_sprockets_linecount")
81
- offset += last_line_count
81
+ offset += last_line_count || 1
82
82
 
83
83
  last_offset = a["sections"].last["offset"]["line"]
84
84
  offset += last_offset
@@ -436,7 +436,7 @@ module Sprockets
436
436
  digit = BASE64_VALUES[str[i]]
437
437
  raise ArgumentError unless digit
438
438
  continuation = (digit & VLQ_CONTINUATION_BIT) != 0
439
- digit &= VLQ_CONTINUATION_BIT - 1
439
+ digit &= VLQ_BASE_MASK
440
440
  value += digit << shift
441
441
  if continuation
442
442
  shift += VLQ_BASE_SHIFT
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Sprockets
3
- VERSION = "4.0.0"
3
+ VERSION = "4.0.2"
4
4
  end
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.2
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: 2019-10-08 00:00:00.000000000 Z
12
+ date: 2020-06-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -437,7 +437,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
437
437
  - !ruby/object:Gem::Version
438
438
  version: '0'
439
439
  requirements: []
440
- rubygems_version: 3.0.3
440
+ rubygems_version: 3.1.2
441
441
  signing_key:
442
442
  specification_version: 4
443
443
  summary: Rack-based asset packaging system