From 39347539796a214dbeb12e843ab4b134703bd55f Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sat, 20 Sep 2014 17:00:38 -0700 Subject: [PATCH] Remove deprecated "jquery.json" module Announced in https://www.mail-archive.com/wikitech-l%40lists.wikimedia.org/msg78108.html Change-Id: Icc9dec0146cd374787124b7e1ed295c77737d11b --- RELEASE-NOTES-1.25 | 2 + resources/Resources.php | 8 - resources/lib/jquery/jquery.json.js | 199 ------------------------- resources/src/jquery.json-deprecate.js | 8 - 4 files changed, 2 insertions(+), 215 deletions(-) delete mode 100644 resources/lib/jquery/jquery.json.js delete mode 100644 resources/src/jquery.json-deprecate.js diff --git a/RELEASE-NOTES-1.25 b/RELEASE-NOTES-1.25 index 7bb3a432e9..04a215c432 100644 --- a/RELEASE-NOTES-1.25 +++ b/RELEASE-NOTES-1.25 @@ -46,6 +46,8 @@ changes to languages because of Bugzilla reports. since 1.20) * Removed 'async' parameter from the mw.Api#getCategories() method. (deprecated since 1.20) +* Removed 'jquery.json' module. (deprecated since 1.24) + Use the 'json' module and global JSON object instead. == Compatibility == diff --git a/resources/Resources.php b/resources/Resources.php index 2fa0c3a9b0..a0ce040bb1 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -245,14 +245,6 @@ return array( 'jquery.hoverIntent' => array( 'scripts' => 'resources/lib/jquery/jquery.hoverIntent.js', ), - 'jquery.json' => array( - // @deprecated since 1.24: Use the 'json' module and global JSON object instead. - 'scripts' => array( - 'resources/lib/jquery/jquery.json.js', - 'resources/src/jquery.json-deprecate.js', - ), - 'targets' => array( 'mobile', 'desktop' ), - ), 'jquery.localize' => array( 'scripts' => 'resources/src/jquery/jquery.localize.js', ), diff --git a/resources/lib/jquery/jquery.json.js b/resources/lib/jquery/jquery.json.js deleted file mode 100644 index 75953f4d23..0000000000 --- a/resources/lib/jquery/jquery.json.js +++ /dev/null @@ -1,199 +0,0 @@ -/** - * jQuery JSON plugin 2.4.0 - * - * @author Brantley Harris, 2009-2011 - * @author Timo Tijhof, 2011-2012 - * @source This plugin is heavily influenced by MochiKit's serializeJSON, which is - * copyrighted 2005 by Bob Ippolito. - * @source Brantley Harris wrote this plugin. It is based somewhat on the JSON.org - * website's http://www.json.org/json2.js, which proclaims: - * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that - * I uphold. - * @license MIT License - */ -(function ($) { - 'use strict'; - - var escape = /["\\\x00-\x1f\x7f-\x9f]/g, - meta = { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - hasOwn = Object.prototype.hasOwnProperty; - - /** - * jQuery.toJSON - * Converts the given argument into a JSON representation. - * - * @param o {Mixed} The json-serializable *thing* to be converted - * - * If an object has a toJSON prototype, that will be used to get the representation. - * Non-integer/string keys are skipped in the object, as are keys that point to a - * function. - * - */ - $.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o) { - if (o === null) { - return 'null'; - } - - var pairs, k, name, val, - type = $.type(o); - - if (type === 'undefined') { - return undefined; - } - - // Also covers instantiated Number and Boolean objects, - // which are typeof 'object' but thanks to $.type, we - // catch them here. I don't know whether it is right - // or wrong that instantiated primitives are not - // exported to JSON as an {"object":..}. - // We choose this path because that's what the browsers did. - if (type === 'number' || type === 'boolean') { - return String(o); - } - if (type === 'string') { - return $.quoteString(o); - } - if (typeof o.toJSON === 'function') { - return $.toJSON(o.toJSON()); - } - if (type === 'date') { - var month = o.getUTCMonth() + 1, - day = o.getUTCDate(), - year = o.getUTCFullYear(), - hours = o.getUTCHours(), - minutes = o.getUTCMinutes(), - seconds = o.getUTCSeconds(), - milli = o.getUTCMilliseconds(); - - if (month < 10) { - month = '0' + month; - } - if (day < 10) { - day = '0' + day; - } - if (hours < 10) { - hours = '0' + hours; - } - if (minutes < 10) { - minutes = '0' + minutes; - } - if (seconds < 10) { - seconds = '0' + seconds; - } - if (milli < 100) { - milli = '0' + milli; - } - if (milli < 10) { - milli = '0' + milli; - } - return '"' + year + '-' + month + '-' + day + 'T' + - hours + ':' + minutes + ':' + seconds + - '.' + milli + 'Z"'; - } - - pairs = []; - - if ($.isArray(o)) { - for (k = 0; k < o.length; k++) { - pairs.push($.toJSON(o[k]) || 'null'); - } - return '[' + pairs.join(',') + ']'; - } - - // Any other object (plain object, RegExp, ..) - // Need to do typeof instead of $.type, because we also - // want to catch non-plain objects. - if (typeof o === 'object') { - for (k in o) { - // Only include own properties, - // Filter out inherited prototypes - if (hasOwn.call(o, k)) { - // Keys must be numerical or string. Skip others - type = typeof k; - if (type === 'number') { - name = '"' + k + '"'; - } else if (type === 'string') { - name = $.quoteString(k); - } else { - continue; - } - type = typeof o[k]; - - // Invalid values like these return undefined - // from toJSON, however those object members - // shouldn't be included in the JSON string at all. - if (type !== 'function' && type !== 'undefined') { - val = $.toJSON(o[k]); - pairs.push(name + ':' + val); - } - } - } - return '{' + pairs.join(',') + '}'; - } - }; - - /** - * jQuery.evalJSON - * Evaluates a given json string. - * - * @param str {String} - */ - $.evalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) { - /*jshint evil: true */ - return eval('(' + str + ')'); - }; - - /** - * jQuery.secureEvalJSON - * Evals JSON in a way that is *more* secure. - * - * @param str {String} - */ - $.secureEvalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) { - var filtered = - str - .replace(/\\["\\\/bfnrtu]/g, '@') - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') - .replace(/(?:^|:|,)(?:\s*\[)+/g, ''); - - if (/^[\],:{}\s]*$/.test(filtered)) { - /*jshint evil: true */ - return eval('(' + str + ')'); - } - throw new SyntaxError('Error parsing JSON, source is not valid.'); - }; - - /** - * jQuery.quoteString - * Returns a string-repr of a string, escaping quotes intelligently. - * Mostly a support function for toJSON. - * Examples: - * >>> jQuery.quoteString('apple') - * "apple" - * - * >>> jQuery.quoteString('"Where are we going?", she asked.') - * "\"Where are we going?\", she asked." - */ - $.quoteString = function (str) { - if (str.match(escape)) { - return '"' + str.replace(escape, function (a) { - var c = meta[a]; - if (typeof c === 'string') { - return c; - } - c = a.charCodeAt(); - return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); - }) + '"'; - } - return '"' + str + '"'; - }; - -}(jQuery)); diff --git a/resources/src/jquery.json-deprecate.js b/resources/src/jquery.json-deprecate.js deleted file mode 100644 index f38decd9a0..0000000000 --- a/resources/src/jquery.json-deprecate.js +++ /dev/null @@ -1,8 +0,0 @@ -( function ( mw, $ ) { - // @deprecated since 1.24. The 'jquery.json' module will be removed in MW 1.25. Use the 'json' module. - - mw.log.deprecate( $, 'toJSON', $.toJSON, 'Use JSON.stringify instead (module "json" for polyfill).' ); - mw.log.deprecate( $, 'evalJSON', $.evalJSON, 'Use JSON.parse instead (module "json" for polyfill).' ); - mw.log.deprecate( $, 'secureEvalJSON', $.secureEvalJSON, 'Use JSON.parse instead (module "json" for polyfill).' ); - mw.log.deprecate( $, 'quoteString', $.quoteString, 'Use JSON.stringify instead (module "json" for polyfill).' ); -}( mediaWiki, jQuery ) ); -- 2.20.1