addressable 2.8.1 → 2.9.0

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: 3ddda72232f6aef9f6f4311c2855f1b3fea9acc80f51c4e5e90bd23820b0d74e
4
- data.tar.gz: 88f208cb2d73dec64663e6e3c1710dc08b188402937038fefce6a2d47debc97d
3
+ metadata.gz: ffaab8b78df30a2126058a425f168d76b26bc33e60849cabc1a6beabae24464d
4
+ data.tar.gz: 841ab2bd18fbcf3ff746cb85ea1661e628e278e6c7bc5ad96cd480e36a54f067
5
5
  SHA512:
6
- metadata.gz: 4e1b0c83fc2f2e54cba6804f3840c8bb29f0d73259979d5bf678ebd5d32257b91585d9b71a780321427835d10f98b9c07969267878f0b032c53d031c30202a4c
7
- data.tar.gz: 35abc3652c8ff92032411e4daad7133b7c4649aff4a1a25fe622cf1c9b661d56f096a1084392e053788baea79f551a9d4a448d16c9e61e23bf4d9692a6728bf3
6
+ metadata.gz: f5884313cb2c68ea73d25e8f7f0a76200030bb3fb7abad8b31532180b1ae3c1df10f8db614a273dba115c87860682d227fdf046c743370e020a577cae667d026
7
+ data.tar.gz: c97dd91446991ce20400e9b4c2586aefbc1dca9fd1d49efca9606fc505ff0d49807686ab1fdfd7d4dba447c9c4bf8fb6c0bbd5a1d3d69a4952207d035e912dc2
data/CHANGELOG.md CHANGED
@@ -1,20 +1,84 @@
1
- # Addressable 2.8.1
1
+ # Changelog
2
+
3
+ ## Addressable 2.9.0 <a name="v2.9.0">
4
+ - fixes ReDoS vulnerability in Addressable::Template#match (fixes incomplete
5
+ remediation in 2.8.10)
6
+
7
+ ## Addressable 2.8.10 <a name="v2.8.10">
8
+ - fixes ReDoS vulnerability in Addressable::Template#match
9
+
10
+ ## Addressable 2.8.9 <a name="v2.8.9">
11
+ - Reduce gem size by excluding test files ([#569])
12
+ - No need for bundler as development dependency ([#571], [5fc1d93](https://github.com/sporkmonger/addressable/commit/5fc1d93))
13
+ - idna/pure: stop building the useless `COMPOSITION_TABLE` (removes the `Addressable::IDNA::COMPOSITION_TABLE` constant) ([#564])
14
+
15
+ [#569]: https://github.com/sporkmonger/addressable/pull/569
16
+ [#571]: https://github.com/sporkmonger/addressable/pull/571
17
+ [#564]: https://github.com/sporkmonger/addressable/pull/564
18
+
19
+ ## Addressable 2.8.8 <a name="v2.8.8">
20
+ - Replace the `unicode.data` blob by a ruby constant ([#561])
21
+ - Allow `public_suffix` 7 ([#558])
22
+
23
+ [#561]: https://github.com/sporkmonger/addressable/pull/561
24
+ [#558]: https://github.com/sporkmonger/addressable/pull/558
25
+
26
+ ## Addressable 2.8.7 <a name="v2.8.7">
27
+ - Allow `public_suffix` 6 ([#535])
28
+
29
+ [#535]: https://github.com/sporkmonger/addressable/pull/535
30
+
31
+ ## Addressable 2.8.6 <a name="v2.8.6">
32
+ - Memoize regexps for common character classes ([#524])
33
+
34
+ [#524]: https://github.com/sporkmonger/addressable/pull/524
35
+
36
+ ## Addressable 2.8.5 <a name="v2.8.5">
37
+ - Fix thread safety issue with encoding tables ([#515])
38
+ - Define URI::NONE as a module to avoid serialization issues ([#509])
39
+ - Fix YAML serialization ([#508])
40
+
41
+ [#508]: https://github.com/sporkmonger/addressable/pull/508
42
+ [#509]: https://github.com/sporkmonger/addressable/pull/509
43
+ [#515]: https://github.com/sporkmonger/addressable/pull/515
44
+
45
+ ## Addressable 2.8.4 <a name="v2.8.4">
46
+ - Restore `Addressable::IDNA.unicode_normalize_kc` as a deprecated method ([#504])
47
+
48
+ [#504]: https://github.com/sporkmonger/addressable/pull/504
49
+
50
+ ## Addressable 2.8.3 <a name="v2.8.3">
51
+ - Fix template expand level 2 hash support for non-string objects ([#499], [#498])
52
+
53
+ [#499]: https://github.com/sporkmonger/addressable/pull/499
54
+ [#498]: https://github.com/sporkmonger/addressable/pull/498
55
+
56
+ ## Addressable 2.8.2 <a name="v2.8.2">
57
+ - Improve cache hits and JIT friendliness ([#486](https://github.com/sporkmonger/addressable/pull/486))
58
+ - Improve code style and test coverage ([#482](https://github.com/sporkmonger/addressable/pull/482))
59
+ - Ensure reset of deferred validation ([#481](https://github.com/sporkmonger/addressable/pull/481))
60
+ - Resolve normalization differences between `IDNA::Native` and `IDNA::Pure` ([#408](https://github.com/sporkmonger/addressable/issues/408), [#492])
61
+ - Remove redundant colon in `Addressable::URI::CharacterClasses::AUTHORITY` regex ([#438](https://github.com/sporkmonger/addressable/pull/438)) (accidentally reverted by [#449] merge but [added back](https://github.com/sporkmonger/addressable/pull/492#discussion_r1105125280) in [#492])
62
+
63
+ [#492]: https://github.com/sporkmonger/addressable/pull/492
64
+
65
+ ## Addressable 2.8.1 <a name="v2.8.1">
2
66
  - refactor `Addressable::URI.normalize_path` to address linter offenses ([#430](https://github.com/sporkmonger/addressable/pull/430))
3
- - remove redundant colon in `Addressable::URI::CharacterClasses::AUTHORITY` regex ([#438](https://github.com/sporkmonger/addressable/pull/438))
4
67
  - update gemspec to reflect supported Ruby versions ([#466], [#464], [#463])
5
68
  - compatibility w/ public_suffix 5.x ([#466], [#465], [#460])
6
69
  - fixes "invalid byte sequence in UTF-8" exception when unencoding URLs containing non UTF-8 characters ([#459](https://github.com/sporkmonger/addressable/pull/459))
7
- - `Ractor` compatibility ([#449](https://github.com/sporkmonger/addressable/pull/449))
70
+ - `Ractor` compatibility ([#449])
8
71
  - use the whole string instead of a single line for template match ([#431](https://github.com/sporkmonger/addressable/pull/431))
9
72
  - force UTF-8 encoding only if needed ([#341](https://github.com/sporkmonger/addressable/pull/341))
10
73
 
74
+ [#449]: https://github.com/sporkmonger/addressable/pull/449
11
75
  [#460]: https://github.com/sporkmonger/addressable/pull/460
12
76
  [#463]: https://github.com/sporkmonger/addressable/pull/463
13
77
  [#464]: https://github.com/sporkmonger/addressable/pull/464
14
78
  [#465]: https://github.com/sporkmonger/addressable/pull/465
15
79
  [#466]: https://github.com/sporkmonger/addressable/pull/466
16
80
 
17
- # Addressable 2.8.0
81
+ ## Addressable 2.8.0 <a name="v2.8.0">
18
82
  - fixes ReDoS vulnerability in Addressable::Template#match
19
83
  - no longer replaces `+` with spaces in queries for non-http(s) schemes
20
84
  - fixed encoding ipv6 literals
@@ -26,14 +90,14 @@
26
90
  - performance improvements
27
91
  - switch CI/CD to GitHub Actions
28
92
 
29
- # Addressable 2.7.0
93
+ ## Addressable 2.7.0 <a name="v2.7.0">
30
94
  - added `:compacted` flag to `normalized_query`
31
95
  - `heuristic_parse` handles `mailto:` more intuitively
32
96
  - dropped explicit support for JRuby 9.0.5.0
33
97
  - compatibility w/ public_suffix 4.x
34
98
  - performance improvements
35
99
 
36
- # Addressable 2.6.0
100
+ ## Addressable 2.6.0 <a name="v2.6.0">
37
101
  - added `tld=` method to allow assignment to the public suffix
38
102
  - most `heuristic_parse` patterns are now case-insensitive
39
103
  - `heuristic_parse` handles more `file://` URI variations
@@ -44,17 +108,17 @@
44
108
  - minor performance improvements in regexps
45
109
  - fixes to eliminate warnings
46
110
 
47
- # Addressable 2.5.2
111
+ ## Addressable 2.5.2 <a name="v2.5.2">
48
112
  - better support for frozen string literals
49
113
  - fixed bug w/ uppercase characters in scheme
50
114
  - IDNA errors w/ emoji URLs
51
115
  - compatibility w/ public_suffix 3.x
52
116
 
53
- # Addressable 2.5.1
117
+ ## Addressable 2.5.1 <a name="v2.5.1">
54
118
  - allow unicode normalization to be disabled for URI Template expansion
55
119
  - removed duplicate test
56
120
 
57
- # Addressable 2.5.0
121
+ ## Addressable 2.5.0 <a name="v2.5.0">
58
122
  - dropping support for Ruby 1.9
59
123
  - adding support for Ruby 2.4 preview
60
124
  - add support for public suffixes and tld; first runtime dependency
@@ -68,7 +132,7 @@
68
132
  - host parts longer than 63 bytes will be ignored and not passed to libidn
69
133
  - normalized values always encoded as UTF-8
70
134
 
71
- # Addressable 2.4.0
135
+ ## Addressable 2.4.0 <a name="v2.4.0">
72
136
  - support for 1.8.x dropped
73
137
  - double quotes in a host now raises an error
74
138
  - newlines in host will no longer get unescaped during normalization
@@ -80,17 +144,17 @@
80
144
  - fixed minor bug where an exception would be thrown for a missing ACE suffix
81
145
  - better partial expansion of URI templates
82
146
 
83
- # Addressable 2.3.8
147
+ ## Addressable 2.3.8 <a name="v2.3.8">
84
148
  - fix warnings
85
149
  - update dependency gems
86
150
  - support for 1.8.x officially deprecated
87
151
 
88
- # Addressable 2.3.7
152
+ ## Addressable 2.3.7 <a name="v2.3.7">
89
153
  - fix scenario in which invalid URIs don't get an exception until inspected
90
154
  - handle hostnames with two adjacent periods correctly
91
155
  - upgrade of RSpec
92
156
 
93
- # Addressable 2.3.6
157
+ ## Addressable 2.3.6 <a name="v2.3.6">
94
158
  - normalization drops empty query string
95
159
  - better handling in template extract for missing values
96
160
  - template modifier for `'?'` now treated as optional
@@ -99,19 +163,19 @@
99
163
  - added `:sorted` option to normalization of query strings
100
164
  - fixed issue with normalization of hosts given in `'example.com.'` form
101
165
 
102
- # Addressable 2.3.5
166
+ ## Addressable 2.3.5 <a name="v2.3.5">
103
167
  - added Addressable::URI#empty? method
104
168
  - Addressable::URI#hostname methods now strip square brackets from IPv6 hosts
105
169
  - compatibility with Net::HTTP in Ruby 2.0.0
106
170
  - Addressable::URI#route_from should always give relative URIs
107
171
 
108
- # Addressable 2.3.4
172
+ ## Addressable 2.3.4 <a name="v2.3.4">
109
173
  - fixed issue with encoding altering its inputs
110
174
  - query string normalization now leaves ';' characters alone
111
175
  - FakeFS is detected before attempting to load unicode tables
112
176
  - additional testing to ensure frozen objects don't cause problems
113
177
 
114
- # Addressable 2.3.3
178
+ ## Addressable 2.3.3 <a name="v2.3.3">
115
179
  - fixed issue with converting common primitives during template expansion
116
180
  - fixed port encoding issue
117
181
  - removed a few warnings
@@ -120,59 +184,59 @@
120
184
  - no template match should now result in nil instead of an empty MatchData
121
185
  - added license information to gemspec
122
186
 
123
- # Addressable 2.3.2
187
+ ## Addressable 2.3.2 <a name="v2.3.2">
124
188
  - added Addressable::URI#default_port method
125
189
  - fixed issue with Marshalling Unicode data on Windows
126
190
  - improved heuristic parsing to better handle IPv4 addresses
127
191
 
128
- # Addressable 2.3.1
192
+ ## Addressable 2.3.1 <a name="v2.3.1">
129
193
  - fixed missing unicode data file
130
194
 
131
- # Addressable 2.3.0
195
+ ## Addressable 2.3.0 <a name="v2.3.0">
132
196
  - updated Addressable::Template to use RFC 6570, level 4
133
197
  - fixed compatibility problems with some versions of Ruby
134
198
  - moved unicode tables into a data file for performance reasons
135
199
  - removing support for multiple query value notations
136
200
 
137
- # Addressable 2.2.8
201
+ ## Addressable 2.2.8 <a name="v2.2.8">
138
202
  - fixed issues with dot segment removal code
139
203
  - form encoding can now handle multiple values per key
140
204
  - updated development environment
141
205
 
142
- # Addressable 2.2.7
206
+ ## Addressable 2.2.7 <a name="v2.2.7">
143
207
  - fixed issues related to Addressable::URI#query_values=
144
208
  - the Addressable::URI.parse method is now polymorphic
145
209
 
146
- # Addressable 2.2.6
210
+ ## Addressable 2.2.6 <a name="v2.2.6">
147
211
  - changed the way ambiguous paths are handled
148
212
  - fixed bug with frozen URIs
149
213
  - https supported in heuristic parsing
150
214
 
151
- # Addressable 2.2.5
215
+ ## Addressable 2.2.5 <a name="v2.2.5">
152
216
  - 'parsing' a pre-parsed URI object is now a dup operation
153
217
  - introduced conditional support for libidn
154
218
  - fixed normalization issue on ampersands in query strings
155
219
  - added additional tests around handling of query strings
156
220
 
157
- # Addressable 2.2.4
221
+ ## Addressable 2.2.4 <a name="v2.2.4">
158
222
  - added origin support from draft-ietf-websec-origin-00
159
223
  - resolved issue with attempting to navigate below root
160
224
  - fixed bug with string splitting in query strings
161
225
 
162
- # Addressable 2.2.3
226
+ ## Addressable 2.2.3 <a name="v2.2.3">
163
227
  - added :flat_array notation for query strings
164
228
 
165
- # Addressable 2.2.2
229
+ ## Addressable 2.2.2 <a name="v2.2.2">
166
230
  - fixed issue with percent escaping of '+' character in query strings
167
231
 
168
- # Addressable 2.2.1
232
+ ## Addressable 2.2.1 <a name="v2.2.1">
169
233
  - added support for application/x-www-form-urlencoded.
170
234
 
171
- # Addressable 2.2.0
235
+ ## Addressable 2.2.0 <a name="v2.2.0">
172
236
  - added site methods
173
237
  - improved documentation
174
238
 
175
- # Addressable 2.1.2
239
+ ## Addressable 2.1.2 <a name="v2.1.2">
176
240
  - added HTTP request URI methods
177
241
  - better handling of Windows file paths
178
242
  - validation_deferred boolean replaced with defer_validation block
@@ -180,14 +244,14 @@
180
244
  - fixed issue with constructing URIs with relative paths
181
245
  - fixed warnings
182
246
 
183
- # Addressable 2.1.1
247
+ ## Addressable 2.1.1 <a name="v2.1.1">
184
248
  - more type checking changes
185
249
  - fixed issue with unicode normalization
186
250
  - added method to find template defaults
187
251
  - symbolic keys are now allowed in template mappings
188
252
  - numeric values and symbolic values are now allowed in template mappings
189
253
 
190
- # Addressable 2.1.0
254
+ ## Addressable 2.1.0 <a name="v2.1.0x">
191
255
  - refactored URI template support out into its own class
192
256
  - removed extract method due to being useless and unreliable
193
257
  - removed Addressable::URI.expand_template
@@ -201,15 +265,15 @@
201
265
  - worked around issue with freezing URIs
202
266
  - improved specs
203
267
 
204
- # Addressable 2.0.2
268
+ ## Addressable 2.0.2 <a name="v2.0.2">
205
269
  - fixed issue with URI template expansion
206
270
  - fixed issue with percent escaping characters 0-15
207
271
 
208
- # Addressable 2.0.1
272
+ ## Addressable 2.0.1 <a name="v2.0.1">
209
273
  - fixed issue with query string assignment
210
274
  - fixed issue with improperly encoded components
211
275
 
212
- # Addressable 2.0.0
276
+ ## Addressable 2.0.0 <a name="v2.0.0">
213
277
  - the initialize method now takes an options hash as its only parameter
214
278
  - added query_values method to URI class
215
279
  - completely replaced IDNA implementation with pure Ruby
@@ -224,20 +288,20 @@
224
288
  - updated URI Template code to match v 03 of the draft spec
225
289
  - added a bunch of new specifications
226
290
 
227
- # Addressable 1.0.4
291
+ ## Addressable 1.0.4 <a name="v1.0.4">
228
292
  - switched to using RSpec's pending system for specs that rely on IDN
229
293
  - fixed issue with creating URIs with paths that are not prefixed with '/'
230
294
 
231
- # Addressable 1.0.3
295
+ ## Addressable 1.0.3 <a name="v1.0.3">
232
296
  - implemented a hash method
233
297
 
234
- # Addressable 1.0.2
298
+ ## Addressable 1.0.2 <a name="v1.0.2">
235
299
  - fixed minor bug with the extract_mapping method
236
300
 
237
- # Addressable 1.0.1
301
+ ## Addressable 1.0.1 <a name="v1.0.1">
238
302
  - fixed minor bug with the extract_mapping method
239
303
 
240
- # Addressable 1.0.0
304
+ ## Addressable 1.0.0 <a name="v1.0.0">
241
305
  - heuristic parse method added
242
306
  - parsing is slightly more strict
243
307
  - replaced to_h with to_hash
@@ -246,16 +310,16 @@
246
310
  - improved heckle rake task
247
311
  - no surviving heckle mutations
248
312
 
249
- # Addressable 0.1.2
313
+ ## Addressable 0.1.2 <a name="v0.1.2">
250
314
  - improved normalization
251
315
  - fixed bug in joining algorithm
252
316
  - updated specifications
253
317
 
254
- # Addressable 0.1.1
318
+ ## Addressable 0.1.1 <a name="v0.1.1">
255
319
  - updated documentation
256
320
  - added URI Template variable extraction
257
321
 
258
- # Addressable 0.1.0
322
+ ## Addressable 0.1.0 <a name="v0.1.0">
259
323
  - initial release
260
324
  - implementation based on RFC 3986, 3987
261
325
  - support for IRIs via libidn
data/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
  [coveralls]: https://coveralls.io/r/sporkmonger/addressable
18
18
  [inch]: https://inch-ci.org/github/sporkmonger/addressable
19
19
 
20
- # Description
20
+ ## Description
21
21
 
22
22
  Addressable is an alternative implementation to the URI implementation
23
23
  that is part of Ruby's standard library. It is flexible, offers heuristic
@@ -25,12 +25,12 @@ parsing, and additionally provides extensive support for IRIs and URI templates.
25
25
 
26
26
  Addressable closely conforms to RFC 3986, RFC 3987, and RFC 6570 (level 4).
27
27
 
28
- # Reference
28
+ ## Reference
29
29
 
30
30
  - {Addressable::URI}
31
31
  - {Addressable::Template}
32
32
 
33
- # Example usage
33
+ ## Example usage
34
34
 
35
35
  ```ruby
36
36
  require "addressable/uri"
@@ -49,7 +49,7 @@ uri.normalize
49
49
  ```
50
50
 
51
51
 
52
- # URI Templates
52
+ ## URI Templates
53
53
 
54
54
  For more details, see [RFC 6570](https://www.rfc-editor.org/rfc/rfc6570.txt).
55
55
 
@@ -88,7 +88,7 @@ template.extract(uri)
88
88
  # }
89
89
  ```
90
90
 
91
- # Install
91
+ ## Install
92
92
 
93
93
  ```console
94
94
  $ gem install addressable
@@ -103,7 +103,7 @@ $ brew install libidn # OS X
103
103
  $ gem install idn-ruby
104
104
  ```
105
105
 
106
- # Semantic Versioning
106
+ ## Semantic Versioning
107
107
 
108
108
  This project uses [Semantic Versioning](https://semver.org/). You can (and should) specify your
109
109
  dependency using a pessimistic version constraint covering the major and minor
@@ -29,8 +29,14 @@ module Addressable
29
29
  IDN::Punycode.decode(value.to_s)
30
30
  end
31
31
 
32
- def self.unicode_normalize_kc(value)
33
- IDN::Stringprep.nfkc_normalize(value.to_s)
32
+ class << self
33
+ # @deprecated Use {String#unicode_normalize(:nfkc)} instead
34
+ def unicode_normalize_kc(value)
35
+ value.to_s.unicode_normalize(:nfkc)
36
+ end
37
+
38
+ extend Gem::Deprecate
39
+ deprecate :unicode_normalize_kc, "String#unicode_normalize(:nfkc)", 2023, 4
34
40
  end
35
41
 
36
42
  def self.to_ascii(value)