The release notes tracked in this document are also made available on the releases page
- adding support for CentralNic Second Level Domains - Issue #333
- adding option
strict
toURITemplate()
in order to throw an exception in case a placeholder could not be replaced - PR #330
- fixing
.absoluteTo()
to not resolve URIs containing a scheme - Issue #328
- fixing
URI.withinString()
to ignorewww.
andhttp://.
- Issue #327
- fixing
URITemplate()
to allow'
(single quotes) in literals - PR #326
- prevent
new URI(null)
from blowing up - PR #321 - fixing
URI.withinString()
to properly handle fully contained parentheses - Issue #325
- fixing
URI.withinString()
to capture balanced parentheses - Issue #247
- fixing UMD wrappers to properly detect CommonJS - Issue #318, PR #319
- fixing
URI.withinString()
to allow callback to returnundefined
orstring
- Issue #303 - fixing
.absoluteTo()
to properly resolve relative paths for fragment-only URLs
- fixing UMD wrapper of
jquery.URI.js
- Issue #295
- adding
URI.joinPaths()
to compose paths from directory tokens - Issue #285 - fixing
URITemplate()
to allow.
in variable names - PR #287 - fixing
URITemplate()
to reject invalid literals - PR #289 - fixing
URITemplate()
to reject prefix modifier on composite values - PR #290 - fixing
URI.buildUserinfo()
to properly serialize password-only values - PR #293
- 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
- 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
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
- SECURITY fixing
URI.parseHost()
to rewrite\
to/
as Node and Browsers do - Issue #233 - fixing
.host()
and.authority()
to raise an error if they contain a path segment (extending Issue #233)
- 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
- 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)
- 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()
- fixing
- 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
- 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)
- 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)
- changes to package management manifests only
- 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
- fixing
URI.parseHost()
andURI.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)
- fixing
.encodeQuery()
and.decodeQuery()
to respectURI.escapeQuerySpace
- (Issue #137) - fixing fragment plugins to return URI for simpler loading - (Issue #139)
- 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)
- 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)
- 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
- adding
.segmentCoded()
to provide en/decoding interface to.segment()
- (Issue #79) - optimize
.relativeTo()
results - (Issue #78, Issue #95) - 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)
- adding
URI.noConflict()
- (Issue #84) - 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):
- optimize
jquery.URI.js
to use new DOM element infrastructure
- fixing
relativeTo()
- (Issue #75) - fixing
normalizePath()
to not prepend./
to relative paths - (Issue #76)
- adding
absoluteTo()
to properly resolve relative scheme - (Issue #71)
- adding
hasQuery()
- (Issue #71) - fixing URI property detection to return 'src' if none was detected (
jquery.URI.js
) - (Issue #69)
- fixing IE9 compatibility with location import:
URI(location)
- fixing string character access for IE7 - (Issue #67), (Issue #68)
- adding
.setQuery()
- (Issue #64) - adding callback argument to
.query()
- adding jQuery 1.9.1 to the test suite
- adding
.fragmentPrefix()
to configure prefix of fragmentURI and fragmentQuery extensions - (Issue #55) - adding docs for
.toString()
,.valueOf()
and.href()
- (Issue #56) - fixing
.relativeTo()
for descendants - (Issue #57)
- fixing build() to properly omit empty query and fragment (Issue #53)
- 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
- adding meta-data for Jam and Bower
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".
- fixing parsing of
/wiki/Help:IPA
- (Issue #49)
- fixing
strictEncodeURIComponent()
to properly encode*
to%2A
- fixing IE9's incorrect report of
img.href
being available - (Issue #48)
- 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)
- fixing
.segment()
's append operation - (Issue #39)
- fixing URI() constructor passing of
base
- (Issue #33 LarryBattle) - adding
.segment()
accessor - (Issue #34) - 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()
- fixing
.absoluteTo()
to join two relative paths properly - (Issue #29) - adding
.clone()
to copy an URI instance
.directory()
now returns empty string if there is no directory- fixing
.absoluteTo()
to join two relative paths properly - (Issue #29)
- adding URN (
javascript:
,mailto:
, ...) support - adding
.scheme()
as alias of.protocol()
- adding
.userinfo()
to comply with terminology of RFC 3986 - adding jQuery Plugin
src/jquery.URI.js
- fixing relative scheme URLs - (Issue #19 byroot)
- adding Second Level Domain (SLD) Support - (Issue #17)
- fixing global scope leakage - (Issue #15 mark-rushakoff)
- adding CommonJS compatibility - (Issue #11, Evangenieur)
- adding
URI.iso8859()
andURI.unicode()
to switch base charsets - (Issue #10, mortenn) - adding
.iso8859()
and.unicode()
to convert an URI's escape encoding
- 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()
- 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)
- 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
- 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
- Initial URI.js