URI.js - Changelog¶ ↑
The release notes tracked in this document are also made available on the releases page
1.19.10 (March 5th 2022)¶ ↑
-
SECURITY fixing {
URI.parse()
} handle excessive colons in protocol delimiter - disclosed by huydoppa via huntr.dev/
1.19.9 (March 3rd 2022)¶ ↑
1.19.8 (February 15th 2022)¶ ↑
-
SECURITY fixing {
URI.parse()
} treat scheme case-insenstivie when handling excessive slackes and backslashes - PR #412 by r0hanSH
1.19.7 (July 14th 2021)¶ ↑
-
SECURITY fixing {
URI.parseQuery()
} to prevent overwriting__proto__
in parseQuery() - disclosed privately by @NewEraCracker -
SECURITY fixing {
URI.parse()
} to handle variable amounts of</code> and <code>/
in scheme delimiter as Node and Browsers do - disclosed privately by ready-research via huntr.dev/ -
removed obsolete build tools
-
updated jQuery versions (verifying compatibility with 1.12.4, 2.2.4, 3.6.0)
1.19.6 (February 13th 2021)¶ ↑
-
SECURITY fixing {
URI.parse()
} to rewrite</code> in scheme delimiter to <code>/
as Node and Browsers do - disclosed privately by Yaniv Nizry from the CxSCA AppSec team at Checkmarx
1.19.5 (December 30th 2020)¶ ↑
-
dropping jquery.URI.js from minified bundle accidentally added since v1.19.3 - Issue #404
1.19.4 (December 23rd 2020)¶ ↑
-
SECURITY fixing {
URI.parseAuthority()
} to rewrite</code> to <code>/
as Node and Browsers do - followed up to by alesandroortiz in PR #403, relates to Issue #233
1.19.3 (December 20th 2020)¶ ↑
-
SECURITY fixing {
URI.parseAuthority()
} to rewrite</code> to <code>/
as Node and Browsers do - disclosed privately by alesandroortiz, relates to Issue #233
1.19.2 (October 20th 2019)¶ ↑
-
fixing {
URI.build()
} to properly handle relative paths when a scheme is given - Issue #387 -
fixing {
URI.buildQuery()
} to properly handle empty param name - Issue #243, PR #383 -
support Composer PR #386
1.19.1 (February 10th 2018)¶ ↑
-
fixing {
.href()
} to parsequery
property - Issue #366, PR #367
1.19.0 (October 1st 2017)¶ ↑
-
adding
.setFragment()
to query fragment plugin - Issue #338, PR #356 -
adding setting {
URI.preventInvalidHostname
} to control if an error should be thrown on invalid input - Issue #352, Issue #354, Issue #355 - effectively making the changes of version 1.18.11 opt-in rather than default.
1.18.12 (August 9th 2017)¶ ↑
-
making {
URI.parse()
} allow_
in hostname - Issue #347, PR #348 -
fixing {
URI.parse()
} to not useNumber.isNumber()
for IE compatibility - Issue #350, PR #351
1.18.11 (August 8th 2017)¶ ↑
-
making {
URI.parse()
} throw on invalid port and hostname - Issue #344, PR #345
1.18.10 (March 30th 2017)¶ ↑
-
adding support for CentralNic Second Level Domains - Issue #333
1.18.9 (March 6th 2017)¶ ↑
-
adding option
strict
to {URITemplate()
} in order to throw an exception in case a placeholder could not be replaced - PR #330
1.18.8 (February 27th 2017)¶ ↑
-
fixing {
.absoluteTo()
} to not resolve URIs containing a scheme - Issue #328
1.18.7 (February 13th 2017)¶ ↑
-
fixing {
URI.withinString()
} to ignorewww.
andhttp://.
- Issue #327
1.18.6 (February 10th 2017)¶ ↑
1.18.5 (January 30th 2017)¶ ↑
-
prevent
new URI(null)
from blowing up - PR #321 -
fixing {
URI.withinString()
} to properly handle fully contained parentheses - Issue #325
1.18.4 (December 4th 2016)¶ ↑
-
fixing {
URI.withinString()
} to capture balanced parentheses - Issue #247
1.18.3 (November 17th 2016)¶ ↑
-
fixing UMD wrappers to properly detect CommonJS - Issue #318, PR #319
1.18.2 (September 25th 2016)¶ ↑
-
fixing {
URI.withinString()
} to allow callback to returnundefined
orstring
- Issue #303 -
fixing {
.absoluteTo()
} to properly resolve relative paths for fragment-only URLs
1.18.1 (May 29th 2016)¶ ↑
-
fixing UMD wrapper of
jquery.URI.js
- Issue #295
1.18.0 (April 30th 2016)¶ ↑
-
adding {
URI.joinPaths()
} to compose paths from directory tokens - Issue #285 -
fixing {
URITemplate()
} to allow.
in variable names - PR #287 -
fixing {
URITemplate()
} to reject prefix modifier on composite values - PR #290 -
fixing {
URI.buildUserinfo()
} to properly serialize password-only values - PR #293
1.17.1 (February 25th 2016)¶ ↑
-
fixing {
.normalizePath()
} to properly handle percent-encoded dot segments and leading dots in basename - Issue #264, by JordanMilne -
fixing {
.hasQuery()
} to acceptRegExp
for name argument - Issue #274, Issue #277 by mbrodala
1.17.0 (November 13th 2015)¶ ↑
-
fixing {
URI.removeQuery()
} to cast values to string before matching - Issue #250, Issue #252, by ryanelian and Siltaar -
fixing {
.segment()
} to allow appending an empty element - Issue #236, Issue #253, by orlando -
adding {
.origin()
} to get protocol and authority, counter-part to.resource()
- Issue #210, Issue #263, by justinmchase
1.16.1 (September 19th 2015)¶ ↑
Package Management Cleanup - no changes to source code!
-
renaming package to “urijs”, was “URIjs” (because npm decided to go lower-case at some point and maintaining capitals in your package name poses all sorts of stupid issues)
-
removing jam, spm,
component.json
andURI.jquery.json
as nobody cared that URI.js was stuck on 1.14 for a year
1.16.0 (July 24th 2015)¶ ↑
-
SECURITY fixing {
URI.parseHost()
} to rewrite</code> to <code>/
as Node and Browsers do - Issue #233 -
fixing {
.host()
} and {.authority()
} to raise an error if they contain a path segment (extending Issue #233)
1.15.2 (July 2nd 2015)¶ ↑
-
fixing {
URI.parseQuery()
} to accept?foo&foo=bar
- Issue #220 -
fixing {
.segmentCoded()
} to encode (instead of decode) array input - Issue #223 -
fixing {
.normalizePath()
} to properly resolve/foo/..
to/
- Issue #224 -
fixing {
.relativeTo()
} to resolve/foo/
and/foo/bar
to./
instead of empty string - Issue #226 -
fixing
bower.json
‘s"main": "src/URI.js"
- Issue #227
1.15.1 (April 5th 2015)¶ ↑
-
fixing
URI()
to match behavior ofnew URI()
(caused by #196) - Issue #205 -
fixing {
URI.removeQuery()
} to accept RegExp for name and value arguments - (Issue #204, peterwillis)
1.15.0 (April 1st 2015 - no joke, promise!)¶ ↑
-
fixing
URI(undefined)
to throw TypeError - (Issue #189, Issue #196, eakron) - tiny backward-compatibility-break -
fixing {
.absoluteTo()
} - (Issue #200, giltayar) -
fixing {
.pathname()
} to properly en/decode URN paths - (Issue #201, mlefoster) -
fixing URI normalization to properly handle URN paths based on RFC 2141 syntax - (Issue #201, mlefoster)
-
fixing {
.normalize()
} and {.normalizePath()
} to properly normalize URN paths -
adding
URI.encodeUrnPathSegment()
-
adding
URI.decodeUrnPathSegment()
-
adding
URI.decodeUrnPath()
-
adding
URI.recodeUrnPath()
1.14.2 (February 25th 2015)¶ ↑
-
fixing inclusion of LICENSE in packages - (Issue #174)
-
fixing {
URI.parseHost()
} to not interpret colon in path as IPv6 hostname - (Issue #190) -
adding meta data for SPM package manager - (Issue #176)
-
adding license meta to
bower.json
1.14.1 (October 1st 2014)¶ ↑
-
fixing handling of String instances (not string primitives) - (Issue #146)
-
fixing Firefox {
.watch()
} interfering with.parseQuery()
- (Issue #169) -
fixing {
addQuery()
} to not throw error on null value - (Issue #171)
1.14.0 (September 8th 2014)¶ ↑
-
adding Hungarian second level domains - (Issue #159)
-
adding
<audio src="…">
and<video src="…">
to supported DOM attributes - (Issue #160), (Issue #161) -
fixing
file://hostname/path
parsing - (Issue #158) -
fixing
.decodePathSegment()
to not throw malformed URI error - (Issue #163)
1.13.2 (May 29th 2014)¶ ↑
-
changes to package management manifests only
1.13.1 (April 16th 2014)¶ ↑
-
fixing IPv6 normalization (bad variable name) - (Issue #145)
-
adding grunt and jshint
-
changing code style to 2 spaces indentation, single quote strings
-
applying
'use strict';
everywhere -
fixing jshint warnings
1.13.0 (April 15th 2014)¶ ↑
-
fixing {
URI.parseHost()
} and {URI.buildHost()
} to properly parse and build the IPv6 examples given in RFC2732 Format for Literal IPv6 Addresses in URL’s - (Issue #144) -
adding performance improvements to SecondLevelDomain - (PR #122, gorhill)
1.12.1 (March 8th 2014)¶ ↑
-
fixing {
.encodeQuery()
} and {.decodeQuery()
} to respect {URI.escapeQuerySpace
} - (Issue #137) -
fixing fragment plugins to return URI for simpler loading - (Issue #139)
1.12.0 (January 23rd 2014)¶ ↑
-
fixing {
.absoluteTo()
} to comply with RFC3986 Reference Resolution Examples - (Issue #113) -
fixing {
.normalizePath()
} to maintain leading parent references (../
) for relative paths, while removing them for absolute paths - (Issue #133) -
fixing
URI.protocol_expression
to properly accept.
in compliance with RFC 3986 - Scheme - (Issue #132) -
fixing {
URI.withinString()
} to not use backtracking prone regular expressionURI.find_uri_expression
anymore - (Issue #131) -
fixing {
URI.withinString()
} to accept optionsignore
andignoreHtml
to allow better control over which detected URLs get handled - (Issue #117) -
fixing {
URI.withinString()
} to accept optionstart
to specify the RegExp used for finding the beginning of an URL (defaults to/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi
) - (Issue #115)
1.11.2 (August 14th 2013)¶ ↑
-
fixing regression for Node.js introduced by
fixing unsafe eval by using UMD's root
- (Issue #107) -
fixing parser to accept malformed userinfo (non-encoded email address) - (Issue #108)
1.11.1 (August 13th 2013)¶ ↑
-
fixing inconsistent {
.relativeTo()
} results caused by inconsistent URI component handling - (Issue #103) -
fixing unsafe eval by using UMD’s root - (Issue #105)
-
fixing {
.segment()
} to allow appending an empty element - (Issue #106) -
fixing {
.segment()
} to collapse empty elements in array notation
1.11.0 (August 6th 2013)¶ ↑
-
adding {
.segmentCoded()
} to provide en/decoding interface to.segment()
- (Issue #79) -
removing obsolete code fragments from
URI.parse()
andrelativeTo()
- (Issue #100) -
adding setting {
URI.escapeQuerySpace
} to control if query string should escape spaces using+
or%20
- (Issue #74) -
updating Punycode.js to version 1.2.3
-
fixing internal
strictEncodeURIComponent()
to work in Firefox 3.6 - (Issue #91) -
fixing {
.normalizePath()
} to properly resolve/.
and/.//
to/
- (Issue #97) -
fixing {
.path()
} to return empty string if there is no path - (Issue #82) -
fixing crashing of
URI.decodeQuery()
on malformed input - now returns original undecoded data - (Issue #87, Issue #92) -
fixing build tool - (Issue #83)
-
fixing for-loop to make closure compiler happy - (Issue #93)
-
fixing whitespace in code - (Issue #84)
-
fixing {
.readable()
} to decode the hash value as well - (Issue #90) -
prevent
jquery.URI.js
from temporarily usingwindow.location
as thehref
of an empty attribute of a DOM element - (Issue #94) -
fixing internal
getType()
for IE8 with undefined value - (Issue #96) -
adding DOM elements to URI constructor - (Issue #77):
-
{
<a href="...">
} -
{
<blockquote cite="...">
} -
{
<link href="...">
} -
{
<base href="...">
} -
{
<script src="...">
} -
{
<form action="...">
} -
{
<input type="image" src="...">
} -
{
<img src="...">
} -
{
<area href="...">
} -
{
<iframe src="...">
} -
{
<embed src="...">
} -
{
<source src="...">
} -
{
<track src="...">
} -
optimize
jquery.URI.js
to use new DOM element infrastructure
1.10.2 (April 15th 2013)¶ ↑
1.10.1 (April 2nd 2013)¶ ↑
1.10.0 (March 16th 2013)¶ ↑
-
fixing URI property detection to return ‘src’ if none was detected (
jquery.URI.js
) - (Issue #69)
1.9.1 (February 12th 2013)¶ ↑
-
fixing IE9 compatibility with location import:
URI(location)
-
fixing string character access for IE7 - (Issue #67), (Issue #68)
1.9.0 (February 11th 2013)¶ ↑
-
adding callback argument to {
.query()
} -
adding jQuery 1.9.1 to the test suite
1.8.3 (January 9th 2013)¶ ↑
1.8.2 (December 27th 2012)¶ ↑
-
adding
.fragmentPrefix()
to configure prefix of fragmentURI and fragmentQuery extensions - (Issue #55) -
adding docs for {
.toString()
,.valueOf()
} and {.href()
} - (Issue #56)
1.8.1 (November 15th 2012)¶ ↑
-
fixing build() to properly omit empty query and fragment (Issue #53)
1.8.0 (November 13th 2012)¶ ↑
-
adding {
.resource()
} as compound of [path, query, fragment] -
adding jQuery 1.8.x compatibility for jQuery.URI.js (remaining backwards compatibility!)
-
adding default ports for gopher, ws, wss
-
adding {
.duplicateQueryParameters()
} to control ifkey=value
duplicates have to be preserved or reduced (Issue #51) -
updating Punycode.js to version 1.1.1
-
improving AMD/Node using UMD returnExports - (Issue #44, Issue #47)
-
fixing
.addQuery("empty")
to properly add?empty
- (Issue #46) -
fixing parsing of badly formatted userinfo
http://username:pass:word@hostname
-
fixing parsing of Windows-Drive-Letter paths
file://C:/WINDOWS/foo.txt
-
fixing
URI(location)
to properly parse the URL - (Issue #52) -
fixing type error for fragment abuse demos - (Issue #50)
-
adding documentation for various encode/decode functions
-
adding some pointers on possible problems with URLs to About URIs
-
adding tests for fragment abuse and splitting tests into separate scopes
Note: QUnit seems to be having some difficulties on IE8. While the jQuery-plugin tests fail, the plugin itself works. We’re still trying to figure out what’s making QUnit “lose its config state”.
1.7.4 (October 21st 2012)¶ ↑
-
fixing parsing of
/wiki/Help:IPA
- (Issue #49)
1.7.3 (October 11th 2012)¶ ↑
-
fixing
strictEncodeURIComponent()
to properly encode*
to%2A
-
fixing IE9’s incorrect report of
img.href
being available - (Issue #48)
1.7.2 (August 28th 2012)¶ ↑
-
fixing SLD detection in {
.tld()
} -foot.se
would detectt.se
- (Issue #42) -
fixing {
.absoluteTo()
} to comply with RFC 3986 Section 5.2.2 - (Issue #41) -
fixing
location
not being available in non-browser environments like node.js (Issue #45 grimen)
1.7.1 (August 14th 2012)¶ ↑
-
fixing {
.segment()
}[http://medialize.github.io/URI.js/docs.html#accessors-segment]‘s append operation - (Issue #39)
1.7.0 (August 11th 2012)¶ ↑
-
fixing URI() constructor passing of
base
- (Issue #33 LarryBattle) -
upgrading
URI.encode()
to strict URI encoding according to RFC3986 -
adding
URI.encodeReserved()
to exclude reserved characters (according to RFC3986) from being encoded -
adding URI Template (RFC 6570) support with {
URITemplate()
}
1.6.3 (June 24th 2012)¶ ↑
-
fixing {
.absoluteTo()
} to join two relative paths properly - (Issue #29) -
adding {
.clone()
} to copy an URI instance
1.6.2 (June 23rd 2012)¶ ↑
-
{
.directory()
} now returns empty string if there is no directory -
fixing {
.absoluteTo()
} to join two relative paths properly - (Issue #29)
1.6.1 (May 19th 2012)¶ ↑
1.6.0 (March 19th 2012)¶ ↑
-
adding URN (
javascript:
,mailto:
, …) support -
adding jQuery Plugin
src/jquery.URI.js
1.5.0 (February 19th 2012)¶ ↑
-
adding Second Level Domain (SLD) Support - (Issue #17)
1.4.3 (January 28th 2012)¶ ↑
-
fixing global scope leakage - (Issue #15 mark-rushakoff)
1.4.2 (January 25th 2012)¶ ↑
1.4.1 (January 21st 2012)¶ ↑
-
adding CommonJS compatibility - (Issue #11, Evangenieur)
1.4.0 (January 12th 2012)¶ ↑
-
adding {
URI.iso8859()
} and {URI.unicode()
} to switch base charsets - (Issue #10, mortenn) -
adding {
.iso8859()
} and {.unicode()
} to convert an URI’s escape encoding
1.3.1 (January 3rd 2011)¶ ↑
-
updating Punycode.js to version 0.3.0
-
adding edge-case tests (“jim”)
-
fixing edge-cases in .protocol(), .port(), .subdomain(), .domain(), .tld(), .filename()
-
fixing parsing of hostname in {
.hostname()
}
1.3.0 (December 30th 2011)¶ ↑
-
adding {
.subdomain()
} convenience accessor -
improving internal deferred build handling
-
fixing thrown Error for
URI("http://example.org").query(true)
- (Issue #6) -
adding examples for extending URI.js for fragment abuse, see src/URI.fragmentQuery.js and src/URI.fragmentURI.js - (Issue #2)
1.2.0 (December 29th 2011)¶ ↑
-
adding {
.equals()
} for URL comparison -
fixing encoding/decoding for {
.pathname()
}, {.directory()
}, {.filename()
} and {.suffix()
} according to RFC 3986 3.3 -
fixing escape spaces in query strings with
+
according to application/x-www-form-urlencoded -
fixing to allow {
URI.buildQuery()
} to build duplicate key=value combinations -
fixing {
URI(string, string)
} constructor to conform with the specification -
adding {
.readable()
} for humanly readable representation of encoded URIs -
fixing bug where @ in pathname would be parsed as part of the authority
1.1.0 (December 28th 2011)¶ ↑
-
adding {
URI.withinString()
} -
adding {
.normalizeProtocol()
} to lowercase protocols -
fixing {
.normalizeHostname()
} to lowercase hostnames -
fixing String.substr() to be replaced by String.substring() - (Issue #1)
-
fixing parsing “?foo” to
{foo: null}
Algorithm for collecting URL parameters -
fixing building
{foo: null, bar: ""}
to “?foo&bar=” Algorithm for serializing URL parameters -
fixing RegExp escaping
1.0.0 (December 27th 2011)¶ ↑
-
Initial URI.js