diff --git a/ajax/libs/Cookies.js/0.3.1/cookies.js b/ajax/libs/Cookies.js/0.3.1/cookies.js new file mode 100644 index 000000000..975239c21 --- /dev/null +++ b/ajax/libs/Cookies.js/0.3.1/cookies.js @@ -0,0 +1,141 @@ +/*! + * Cookies.js - 0.3.1 + * Wednesday, April 24 2013 @ 2:28 AM EST + * + * Copyright (c) 2013, Scott Hamper + * Licensed under the MIT license, + * http://www.opensource.org/licenses/MIT + */ +(function (undefined) { + 'use strict'; + + var Cookies = function (key, value, options) { + return arguments.length === 1 ? + Cookies.get(key) : Cookies.set(key, value, options); + }; + + // Allows for setter injection in unit tests + Cookies._document = document; + Cookies._navigator = navigator; + + Cookies.defaults = { + path: '/' + }; + + Cookies.get = function (key) { + if (Cookies._cachedDocumentCookie !== Cookies._document.cookie) { + Cookies._renewCache(); + } + + return Cookies._cache[key]; + }; + + Cookies.set = function (key, value, options) { + options = Cookies._getExtendedOptions(options); + options.expires = Cookies._getExpiresDate(value === undefined ? -1 : options.expires); + + Cookies._document.cookie = Cookies._generateCookieString(key, value, options); + + return Cookies; + }; + + Cookies.expire = function (key, options) { + return Cookies.set(key, undefined, options); + }; + + Cookies._getExtendedOptions = function (options) { + return { + path: options && options.path || Cookies.defaults.path, + domain: options && options.domain || Cookies.defaults.domain, + expires: options && options.expires || Cookies.defaults.expires, + secure: options && options.secure !== undefined ? options.secure : Cookies.defaults.secure + }; + }; + + Cookies._isValidDate = function (date) { + return Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime()); + }; + + Cookies._getExpiresDate = function (expires, now) { + now = now || new Date(); + switch (typeof expires) { + case 'number': expires = new Date(now.getTime() + expires * 1000); break; + case 'string': expires = new Date(expires); break; + } + + if (expires && !Cookies._isValidDate(expires)) { + throw new Error('`expires` parameter cannot be converted to a valid Date instance'); + } + + return expires; + }; + + Cookies._generateCookieString = function (key, value, options) { + key = encodeURIComponent(key); + value = (value + '').replace(/[^!#$&-+\--:<-\[\]-~]/g, encodeURIComponent); + options = options || {}; + + var cookieString = key + '=' + value; + cookieString += options.path ? ';path=' + options.path : ''; + cookieString += options.domain ? ';domain=' + options.domain : ''; + cookieString += options.expires ? ';expires=' + options.expires.toGMTString() : ''; + cookieString += options.secure ? ';secure' : ''; + + return cookieString; + }; + + Cookies._getCookieObjectFromString = function (documentCookie) { + var cookieObject = {}; + var cookiesArray = documentCookie ? documentCookie.split('; ') : []; + + for (var i = 0; i < cookiesArray.length; i++) { + var cookieKvp = Cookies._getKeyValuePairFromCookieString(cookiesArray[i]); + + if (cookieObject[cookieKvp.key] === undefined) { + cookieObject[cookieKvp.key] = cookieKvp.value; + } + } + + return cookieObject; + }; + + Cookies._getKeyValuePairFromCookieString = function (cookieString) { + // "=" is a valid character in a cookie value according to RFC6265, so cannot `split('=')` + var separatorIndex = cookieString.indexOf('='); + + // IE omits the "=" when the cookie value is an empty string + separatorIndex = separatorIndex < 0 ? cookieString.length : separatorIndex; + + return { + key: decodeURIComponent(cookieString.substr(0, separatorIndex)), + value: decodeURIComponent(cookieString.substr(separatorIndex + 1)) + }; + }; + + Cookies._renewCache = function () { + Cookies._cache = Cookies._getCookieObjectFromString(Cookies._document.cookie); + Cookies._cachedDocumentCookie = Cookies._document.cookie; + }; + + Cookies._areEnabled = function () { + return Cookies._navigator.cookieEnabled || + Cookies.set('cookies.js', 1).get('cookies.js') === '1'; + }; + + Cookies.enabled = Cookies._areEnabled(); + + // AMD support + if (typeof define === 'function' && define.amd) { + define(function () { return Cookies; }); + // CommonJS and Node.js module support. + } else if (typeof exports !== 'undefined') { + // Support Node.js specific `module.exports` (which can be a function) + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = Cookies; + } + // But always support CommonJS module 1.1.1 spec (`exports` cannot be a function) + exports.Cookies = Cookies; + } else { + window.Cookies = Cookies; + } +})(); \ No newline at end of file diff --git a/ajax/libs/Cookies.js/0.3.1/cookies.min.js b/ajax/libs/Cookies.js/0.3.1/cookies.min.js new file mode 100644 index 000000000..979720bb6 --- /dev/null +++ b/ajax/libs/Cookies.js/0.3.1/cookies.min.js @@ -0,0 +1,6 @@ +/*! Cookies.js - 0.3.1; Copyright (c) 2013, Scott Hamper; http://www.opensource.org/licenses/MIT */ +(function(e){"use strict";var a=function(b,d,c){return 1===arguments.length?a.get(b):a.set(b,d,c)};a._document=document;a._navigator=navigator;a.defaults={path:"/"};a.get=function(b){a._cachedDocumentCookie!==a._document.cookie&&a._renewCache();return a._cache[b]};a.set=function(b,d,c){c=a._getExtendedOptions(c);c.expires=a._getExpiresDate(d===e?-1:c.expires);a._document.cookie=a._generateCookieString(b,d,c);return a};a.expire=function(b,d){return a.set(b,e,d)};a._getExtendedOptions=function(b){return{path:b&& +b.path||a.defaults.path,domain:b&&b.domain||a.defaults.domain,expires:b&&b.expires||a.defaults.expires,secure:b&&b.secure!==e?b.secure:a.defaults.secure}};a._isValidDate=function(b){return"[object Date]"===Object.prototype.toString.call(b)&&!isNaN(b.getTime())};a._getExpiresDate=function(b,d){d=d||new Date;switch(typeof b){case "number":b=new Date(d.getTime()+1E3*b);break;case "string":b=new Date(b)}if(b&&!a._isValidDate(b))throw Error("`expires` parameter cannot be converted to a valid Date instance"); +return b};a._generateCookieString=function(b,a,c){b=encodeURIComponent(b);a=(a+"").replace(/[^!#$&-+\--:<-\[\]-~]/g,encodeURIComponent);c=c||{};b=b+"="+a+(c.path?";path="+c.path:"");b+=c.domain?";domain="+c.domain:"";b+=c.expires?";expires="+c.expires.toGMTString():"";return b+=c.secure?";secure":""};a._getCookieObjectFromString=function(b){var d={};b=b?b.split("; "):[];for(var c=0;ca?b.length:a;return{key:decodeURIComponent(b.substr(0,a)),value:decodeURIComponent(b.substr(a+1))}};a._renewCache=function(){a._cache=a._getCookieObjectFromString(a._document.cookie);a._cachedDocumentCookie=a._document.cookie};a._areEnabled=function(){return a._navigator.cookieEnabled||"1"===a.set("cookies.js",1).get("cookies.js")};a.enabled=a._areEnabled();"function"===typeof define&&define.amd?define(function(){return a}):"undefined"!==typeof exports?("undefined"!== +typeof module&&module.exports&&(exports=module.exports=a),exports.Cookies=a):window.Cookies=a})(); \ No newline at end of file diff --git a/ajax/libs/Cookies.js/package.json b/ajax/libs/Cookies.js/package.json new file mode 100644 index 000000000..ad9e25df0 --- /dev/null +++ b/ajax/libs/Cookies.js/package.json @@ -0,0 +1,18 @@ +{ + "name": "Cookies.js", + "filename": "cookies.min.js", + "version": "0.3.1", + "description": "Cookies.js is a small client-side javascript library that makes managing cookies easy.", + "homepage": "https://github.com/ScottHamper/Cookies", + "keywords": [ + "javascript", + "cookies" + ], + "repositories": [ + { + "type": "git", + "url": "https://github.com/ScottHamper/Cookies.git" + } + ] + +}