diff --git a/bower.json b/bower.json index ed2b58f6..e86f4d3c 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "imgix-core-js", - "version": "1.0.7", + "version": "1.1.0", "homepage": "https://github.com/imgix/imgix-core-js", "authors": [ "Kelly Sutton ", diff --git a/dist/imgix-core-js.js b/dist/imgix-core-js.js index 02d216d5..6b78e8b7 100644 --- a/dist/imgix-core-js.js +++ b/dist/imgix-core-js.js @@ -13,7 +13,7 @@ var md5 = _md5; var Base64 = _jsBase64; - var VERSION = '1.0.7'; + var VERSION = '1.1.0'; var DEFAULTS = { host: null, useHTTPS: true, @@ -70,15 +70,10 @@ // Use de/encodeURIComponent to ensure *all* characters are handled, // since it's being used as a path path = encodeURIComponent(path); - } else if (/^https?%3A%2F%2F/.test(path)) { - // Decode and re-encode the path, to ensure that it's fully, correctly encoded. - // Use de/encodeURIComponent to ensure *all* characters are handled, - // since it's being used as a path - path = decodeURIComponent(encodeURIComponent(path)); } else { // Use de/encodeURI if we think the path is just a path, // so it leaves legal characters like '/' and '@' alone - path = decodeURI(encodeURI(path)); + path = encodeURI(path); } return '/' + path; diff --git a/dist/imgix-core-js.min.js b/dist/imgix-core-js.min.js index 8091481f..5d8449d3 100644 --- a/dist/imgix-core-js.min.js +++ b/dist/imgix-core-js.min.js @@ -1 +1 @@ -(function(global,factory){if(typeof define==="function"&&define.amd){define("Imgix",["exports","md5","js-base64"],factory)}else if(typeof exports!=="undefined"){module.exports=factory(exports,require("md5"),require("js-base64").Base64)}else{var mod={exports:{}};global.ImgixClient=factory(mod.exports,global.md5,global.Base64)}})(this,function(exports,_md5,_jsBase64){var md5=_md5;var Base64=_jsBase64;var VERSION="1.0.7";var DEFAULTS={host:null,useHTTPS:true,includeLibraryParam:true};var ImgixClient=function(){function ImgixClient(opts){var key,val;this.settings={};for(key in DEFAULTS){val=DEFAULTS[key];this.settings[key]=val}for(key in opts){val=opts[key];this.settings[key]=val}if(!this.settings.host){throw new Error("ImgixClient must be passed a valid host")}if(this.settings.includeLibraryParam){this.settings.libraryParam="js-"+VERSION}this.settings.urlPrefix=this.settings.useHTTPS?"https://":"http://"}ImgixClient.prototype.buildURL=function(path,params){path=this._sanitizePath(path);if(params==null){params={}}var queryParams=this._buildParams(params);if(!!this.settings.secureURLToken){queryParams=this._signParams(path,queryParams)}return this.settings.urlPrefix+this.settings.host+path+queryParams};ImgixClient.prototype._sanitizePath=function(path){path=path.replace(/^\//,"");if(/^https?:\/\//.test(path)){path=encodeURIComponent(path)}else if(/^https?%3A%2F%2F/.test(path)){path=decodeURIComponent(encodeURIComponent(path))}else{path=decodeURI(encodeURI(path))}return"/"+path};ImgixClient.prototype._buildParams=function(params){if(this.settings.libraryParam){params.ixlib=this.settings.libraryParam}var queryParams=[];var key,val,encodedKey,encodedVal;for(key in params){val=params[key];encodedKey=encodeURIComponent(key);encodedVal;if(key.substr(-2)==="64"){encodedVal=Base64.encodeURI(val)}else{encodedVal=encodeURIComponent(val)}queryParams.push(encodedKey+"="+encodedVal)}if(queryParams[0]){queryParams[0]="?"+queryParams[0]}return queryParams.join("&")};ImgixClient.prototype._signParams=function(path,queryParams){var signatureBase=this.settings.secureURLToken+path+queryParams;var signature=md5(signatureBase);if(queryParams.length>0){return queryParams=queryParams+"&s="+signature}else{return queryParams="?s="+signature}};ImgixClient.VERSION=VERSION;return ImgixClient}();return ImgixClient}); \ No newline at end of file +(function(global,factory){if(typeof define==="function"&&define.amd){define("Imgix",["exports","md5","js-base64"],factory)}else if(typeof exports!=="undefined"){module.exports=factory(exports,require("md5"),require("js-base64").Base64)}else{var mod={exports:{}};global.ImgixClient=factory(mod.exports,global.md5,global.Base64)}})(this,function(exports,_md5,_jsBase64){var md5=_md5;var Base64=_jsBase64;var VERSION="1.1.0";var DEFAULTS={host:null,useHTTPS:true,includeLibraryParam:true};var ImgixClient=function(){function ImgixClient(opts){var key,val;this.settings={};for(key in DEFAULTS){val=DEFAULTS[key];this.settings[key]=val}for(key in opts){val=opts[key];this.settings[key]=val}if(!this.settings.host){throw new Error("ImgixClient must be passed a valid host")}if(this.settings.includeLibraryParam){this.settings.libraryParam="js-"+VERSION}this.settings.urlPrefix=this.settings.useHTTPS?"https://":"http://"}ImgixClient.prototype.buildURL=function(path,params){path=this._sanitizePath(path);if(params==null){params={}}var queryParams=this._buildParams(params);if(!!this.settings.secureURLToken){queryParams=this._signParams(path,queryParams)}return this.settings.urlPrefix+this.settings.host+path+queryParams};ImgixClient.prototype._sanitizePath=function(path){path=path.replace(/^\//,"");if(/^https?:\/\//.test(path)){path=encodeURIComponent(path)}else{path=encodeURI(path)}return"/"+path};ImgixClient.prototype._buildParams=function(params){if(this.settings.libraryParam){params.ixlib=this.settings.libraryParam}var queryParams=[];var key,val,encodedKey,encodedVal;for(key in params){val=params[key];encodedKey=encodeURIComponent(key);encodedVal;if(key.substr(-2)==="64"){encodedVal=Base64.encodeURI(val)}else{encodedVal=encodeURIComponent(val)}queryParams.push(encodedKey+"="+encodedVal)}if(queryParams[0]){queryParams[0]="?"+queryParams[0]}return queryParams.join("&")};ImgixClient.prototype._signParams=function(path,queryParams){var signatureBase=this.settings.secureURLToken+path+queryParams;var signature=md5(signatureBase);if(queryParams.length>0){return queryParams=queryParams+"&s="+signature}else{return queryParams="?s="+signature}};ImgixClient.VERSION=VERSION;return ImgixClient}();return ImgixClient}); \ No newline at end of file diff --git a/package.json b/package.json index d815d0b4..7ef078ce 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "imgix-core-js", "description": "Common boilerplate for all imgix JavaScript-based functionality.", - "version": "1.0.7", + "version": "1.1.0", "repository": "https://github.com/imgix/imgix-core-js", "scripts": { "assert_version": "node assert_version.js", diff --git a/src/imgix-core-js.js b/src/imgix-core-js.js index 0089bb67..6b78e8b7 100644 --- a/src/imgix-core-js.js +++ b/src/imgix-core-js.js @@ -13,7 +13,7 @@ var md5 = _md5; var Base64 = _jsBase64; - var VERSION = '1.0.7'; + var VERSION = '1.1.0'; var DEFAULTS = { host: null, useHTTPS: true,