🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

jquery-migrate

Package Overview
Dependencies
Maintainers
4
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jquery-migrate - npm Package Compare versions

Comparing version

to
3.4.0

.github/workflows/node.js.yml

6

.eslintrc-browser.json

@@ -26,4 +26,8 @@ {

"one-var": [ "error", { "var": "always" } ],
"strict": [ "error", "function" ]
"strict": [ "error", "function" ],
// Support: IE <=9 only, Android <=4.0 only
// Allow square bracket notation for ES3 reserved words
"dot-notation": [ "error", { "allowKeywords": false } ]
}
}
{
"root": true,
"extends": "./.eslintrc-node.json"
"extends": "./.eslintrc-node.json",
"overrides": [
{
"files": ["**/*.mjs"],
"parserOptions": {
"sourceType": "module"
}
}
]
}

2

build/.sizecache.json

@@ -1,1 +0,1 @@

{"":{"version":0.4,"tips":{"master":"08ddec112974120bde86e734141dbb813551c915"}}," last run":{"dist/jquery-migrate.js":{"":25300,"gz":8146},"dist/jquery-migrate.min.js":{"":11267,"gz":4198}},"master":{"dist/jquery-migrate.js":{"":25300,"gz":8146},"dist/jquery-migrate.min.js":{"":11267,"gz":4198}}}
{"":{"version":0.4,"tips":{"main":"e692fe75efebabc05b2354f15bae9704d747d636","css-array":"5113b16e4bfccea3493d477cb939b27b6078e8e1","offset-warnings-lax":"0c372cf6adc5e285928ba05185370d06551c1be1","firefox":"71f528f829b07cbc46e5d883b8530431afa6b997","css-tests-fix":"7135c2ef272d9d54a11816ac62c79f173053557c","updates":"2b1fbf53fb3a251cda2bb9856d783852d51bc432","testswarm-upgrade":"5d2e9b6624a79d257c7ace3142783949f3514410","css-numbers-warnings-update":"850566b3ab1e5badabdd23e858c1b669cdc9c315","json-to-jsonp":"e35cd8595f50278fac284f62cfddea609a2c0373","css-number-jquery-4":"2f4924498ce08a9d1285e2593b246f891cd36d92","migrate-disable-warnings":"05a05b7742c3f908da6632c2bf7c5febf2dfdfb3","update-deps":"7c7a2712a13453bbd4d34ea90346640b3f9ebca2"}}," last run":{"dist/jquery-migrate.js":{"":30789,"gz":9669},"dist/jquery-migrate.min.js":{"":13467,"gz":4825}},"main":{"dist/jquery-migrate.js":{"":30789,"gz":9669},"dist/jquery-migrate.min.js":{"":13467,"gz":4825}},"css-array":{"dist/jquery-migrate.js":{"":24768,"gz":7905},"dist/jquery-migrate.min.js":{"":11158,"gz":4083}},"offset-warnings-lax":{"dist/jquery-migrate.js":{"":24434,"gz":7824},"dist/jquery-migrate.min.js":{"":11004,"gz":4038}},"firefox":{"dist/jquery-migrate.js":{"":24468,"gz":7829},"dist/jquery-migrate.min.js":{"":11001,"gz":4053}},"css-tests-fix":{"dist/jquery-migrate.js":{"":24468,"gz":7829},"dist/jquery-migrate.min.js":{"":11027,"gz":4042}},"updates":{"dist/jquery-migrate.js":{"":24468,"gz":7829},"dist/jquery-migrate.min.js":{"":11001,"gz":4053}},"testswarm-upgrade":{"dist/jquery-migrate.js":{"":24468,"gz":7828},"dist/jquery-migrate.min.js":{"":11001,"gz":4053}},"css-numbers-warnings-update":{"dist/jquery-migrate.js":{"":24468,"gz":7829},"dist/jquery-migrate.min.js":{"":11001,"gz":4053}},"json-to-jsonp":{"dist/jquery-migrate.js":{"":25293,"gz":8152},"dist/jquery-migrate.min.js":{"":11265,"gz":4196}},"css-number-jquery-4":{"dist/jquery-migrate.js":{"":25837,"gz":8342},"dist/jquery-migrate.min.js":{"":11530,"gz":4315}},"migrate-disable-warnings":{"dist/jquery-migrate.js":{"":30797,"gz":9671},"dist/jquery-migrate.min.js":{"":13501,"gz":4829}},"update-deps":{"dist/jquery-migrate.js":{"":30797,"gz":9672},"dist/jquery-migrate.min.js":{"":13475,"gz":4829}}}

@@ -50,3 +50,3 @@ # Contributing to jQuery

Bugs in old versions of jQuery may have already been fixed. In order to avoid reporting known issues, make sure you are always testing against the [latest build](http://code.jquery.com/jquery.js).
Bugs in old versions of jQuery may have already been fixed. In order to avoid reporting known issues, make sure you are always testing against the [latest jQuery version](https://releases.jquery.com/jquery/).

@@ -59,3 +59,3 @@ ### Try an older version of jQuery

When you are experiencing a problem, the most useful thing you can possibly do is to [reduce your code](http://webkit.org/quality/reduction.html) to the bare minimum required to reproduce the issue. This makes it *much* easier to isolate and fix the offending code. Bugs that are reported without reduced test cases take on average 9001% longer to fix than bugs that are submitted with them, so you really should try to do this if at all possible.
When you are experiencing a problem, the most useful thing you can possibly do is to [reduce your code](https://webkit.org/test-case-reduction/) to the bare minimum required to reproduce the issue. This makes it *much* easier to isolate and fix the offending code. Bugs that are reported without reduced test cases take on average 9001% longer to fix than bugs that are submitted with them, so you really should try to do this if at all possible.

@@ -89,3 +89,3 @@ ## jQuery Core Style Guide

Clone your plugin fork to work locally
Clone your plugin fork to work locally:

@@ -96,3 +96,3 @@ ```bash

Change directory to the newly created dir jquery-migrate/
Change directory to the newly created dir `jquery-migrate/`:

@@ -103,3 +103,3 @@ ```bash

Add the jquery-migrate master as a remote. I label mine "upstream"
Add the jquery-migrate repository as a remote; I label mine "upstream":

@@ -110,6 +110,6 @@ ```bash

Get in the habit of pulling in the "upstream" master to stay up to date as jQuery receives new commits
Get in the habit of pulling in the "upstream" `main` branch to stay up to date as jQuery Migrate receives new commits:
```bash
$ git pull upstream master
$ git pull upstream main
```

@@ -130,10 +130,10 @@

**NEVER write your patches to the master branch**
**NEVER write your patches to the `main` branch**
**ALWAYS USE A "TOPIC" BRANCH!** Like so (#### = the ticket #)...
Make sure you start with your up-to-date master:
Make sure you start with your up-to-date `main` branch:
```bash
$ git checkout master
$ git checkout main
```

@@ -189,6 +189,6 @@

Before you tackle your next bug patch, return to the master:
Before you tackle your next bug patch, return to the `main` branch:
```bash
$ git checkout master
$ git checkout main
```

@@ -199,3 +199,3 @@

By default the plugin runs against the current (jquery-3.x-git WIP) version of jQuery. You can select a different version by specifying it in the URL. Files are always retrieved from code.jquery.com.
By default the plugin runs against the current (jquery-3.x-git WIP) version of jQuery. You can select a different version by specifying it in the URL. Files are always retrieved from code.jquery.com or releases.jquery.com (the latter for development versions).

@@ -202,0 +202,0 @@ Example:

/*!
* jQuery Migrate - v3.3.2 - 2020-11-17T23:22Z
* jQuery Migrate - v3.4.0 - 2022-03-24T16:30Z
* Copyright OpenJS Foundation and other contributors

@@ -27,3 +27,3 @@ */

jQuery.migrateVersion = "3.3.2";
jQuery.migrateVersion = "3.4.0";

@@ -52,2 +52,36 @@ // Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2

// A map from disabled patch codes to `true`. This should really
// be a `Set` but those are unsupported in IE.
var disabledPatches = Object.create( null );
// Don't apply patches for specified codes. Helpful for code bases
// where some Migrate warnings have been addressed and it's desirable
// to avoid needless patches or false positives.
jQuery.migrateDisablePatches = function() {
var i;
for ( i = 0; i < arguments.length; i++ ) {
disabledPatches[ arguments[ i ] ] = true;
}
};
// Allow enabling patches disabled via `jQuery.migrateDisablePatches`.
// Helpful if you want to disable a patch only for some code that won't
// be updated soon to be able to focus on other warnings - and enable it
// immediately after such a call:
// ```js
// jQuery.migrateDisablePatches( "workaroundA" );
// elem.pluginViolatingWarningA( "pluginMethod" );
// jQuery.migrateEnablePatches( "workaroundA" );
// ```
jQuery.migrateEnablePatches = function() {
var i;
for ( i = 0; i < arguments.length; i++ ) {
delete disabledPatches[ arguments[ i ] ];
}
};
jQuery.migrateIsPatchEnabled = function( patchCode ) {
return !disabledPatches[ patchCode ];
};
( function() {

@@ -96,7 +130,8 @@

function migrateWarn( msg ) {
function migrateWarn( code, msg ) {
var console = window.console;
if ( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) {
if ( jQuery.migrateIsPatchEnabled( code ) &&
( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) ) {
warnedAbout[ msg ] = true;
jQuery.migrateWarnings.push( msg );
jQuery.migrateWarnings.push( msg + " [" + code + "]" );
if ( console && console.warn && !jQuery.migrateMute ) {

@@ -111,3 +146,3 @@ console.warn( "JQMIGRATE: " + msg );

function migrateWarnProp( obj, prop, value, msg ) {
function migrateWarnProp( obj, prop, value, code, msg ) {
Object.defineProperty( obj, prop, {

@@ -117,7 +152,7 @@ configurable: true,

get: function() {
migrateWarn( msg );
migrateWarn( code, msg );
return value;
},
set: function( newValue ) {
migrateWarn( msg );
migrateWarn( code, msg );
value = newValue;

@@ -128,13 +163,43 @@ }

function migrateWarnFunc( obj, prop, newFunc, msg ) {
function migrateWarnFuncInternal( obj, prop, newFunc, code, msg ) {
var finalFunc,
origFunc = obj[ prop ];
obj[ prop ] = function() {
migrateWarn( msg );
return newFunc.apply( this, arguments );
// If `msg` not provided, do not warn; more sophisticated warnings
// logic is most likely embedded in `newFunc`, in that case here
// we just care about the logic choosing the proper implementation
// based on whether the patch is disabled or not.
if ( msg ) {
migrateWarn( code, msg );
}
// Since patches can be disabled & enabled dynamically, we
// need to decide which implementation to run on each invocation.
finalFunc = jQuery.migrateIsPatchEnabled( code ) ?
newFunc :
// The function may not have existed originally so we need a fallback.
( origFunc || jQuery.noop );
return finalFunc.apply( this, arguments );
};
}
function migratePatchAndWarnFunc( obj, prop, newFunc, code, msg ) {
if ( !msg ) {
throw new Error( "No warning message provided" );
}
return migrateWarnFuncInternal( obj, prop, newFunc, code, msg );
}
function migratePatchFunc( obj, prop, newFunc, code ) {
return migrateWarnFuncInternal( obj, prop, newFunc, code );
}
if ( window.document.compatMode === "BackCompat" ) {
// JQuery has never supported or tested Quirks Mode
migrateWarn( "jQuery is not compatible with Quirks Mode" );
// jQuery has never supported or tested Quirks Mode
migrateWarn( "quirks", "jQuery is not compatible with Quirks Mode" );
}

@@ -154,9 +219,11 @@

jQuery.fn.init = function( arg1 ) {
migratePatchFunc( jQuery.fn, "init", function( arg1 ) {
var args = Array.prototype.slice.call( arguments );
if ( typeof arg1 === "string" && arg1 === "#" ) {
if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) &&
typeof arg1 === "string" && arg1 === "#" ) {
// JQuery( "#" ) is a bogus ID selector, but it returned an empty set before jQuery 3.0
migrateWarn( "jQuery( '#' ) is not a valid selector" );
// JQuery( "#" ) is a bogus ID selector, but it returned an empty set
// before jQuery 3.0
migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" );
args[ 0 ] = [];

@@ -166,6 +233,10 @@ }

return oldInit.apply( this, args );
};
}, "selector-empty-id" );
// This is already done in Core but the above patch will lose this assignment
// so we need to redo it. It doesn't matter whether the patch is enabled or not
// as the method is always going to be a Migrate-created wrapper.
jQuery.fn.init.prototype = jQuery.fn;
jQuery.find = function( selector ) {
migratePatchFunc( jQuery, "find", function( selector ) {
var args = Array.prototype.slice.call( arguments );

@@ -192,6 +263,8 @@

window.document.querySelector( selector );
migrateWarn( "Attribute selector with '#' must be quoted: " + args[ 0 ] );
migrateWarn( "selector-hash",
"Attribute selector with '#' must be quoted: " + args[ 0 ] );
args[ 0 ] = selector;
} catch ( err2 ) {
migrateWarn( "Attribute selector with '#' was not fixed: " + args[ 0 ] );
migrateWarn( "selector-hash",
"Attribute selector with '#' was not fixed: " + args[ 0 ] );
}

@@ -202,3 +275,3 @@ }

return oldFind.apply( this, args );
};
}, "selector-hash" );

@@ -213,22 +286,22 @@ // Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)

// The number of elements contained in the matched element set
migrateWarnFunc( jQuery.fn, "size", function() {
migratePatchAndWarnFunc( jQuery.fn, "size", function() {
return this.length;
},
}, "size",
"jQuery.fn.size() is deprecated and removed; use the .length property" );
migrateWarnFunc( jQuery, "parseJSON", function() {
migratePatchAndWarnFunc( jQuery, "parseJSON", function() {
return JSON.parse.apply( null, arguments );
},
}, "parseJSON",
"jQuery.parseJSON is deprecated; use JSON.parse" );
migrateWarnFunc( jQuery, "holdReady", jQuery.holdReady,
"jQuery.holdReady is deprecated" );
migratePatchAndWarnFunc( jQuery, "holdReady", jQuery.holdReady,
"holdReady", "jQuery.holdReady is deprecated" );
migrateWarnFunc( jQuery, "unique", jQuery.uniqueSort,
"jQuery.unique is deprecated; use jQuery.uniqueSort" );
migratePatchAndWarnFunc( jQuery, "unique", jQuery.uniqueSort,
"unique", "jQuery.unique is deprecated; use jQuery.uniqueSort" );
// Now jQuery.expr.pseudos is the standard incantation
migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos,
migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos",
"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" );
migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos,
migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos",
"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" );

@@ -238,7 +311,7 @@

if ( jQueryVersionSince( "3.1.1" ) ) {
migrateWarnFunc( jQuery, "trim", function( text ) {
migratePatchAndWarnFunc( jQuery, "trim", function( text ) {
return text == null ?
"" :
( text + "" ).replace( rtrim, "" );
},
}, "trim",
"jQuery.trim is deprecated; use String.prototype.trim" );

@@ -249,8 +322,8 @@ }

if ( jQueryVersionSince( "3.2.0" ) ) {
migrateWarnFunc( jQuery, "nodeName", function( elem, name ) {
migratePatchAndWarnFunc( jQuery, "nodeName", function( elem, name ) {
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
},
}, "nodeName",
"jQuery.nodeName is deprecated" );
migrateWarnFunc( jQuery, "isArray", Array.isArray,
migratePatchAndWarnFunc( jQuery, "isArray", Array.isArray, "isArray",
"jQuery.isArray is deprecated; use Array.isArray"

@@ -262,3 +335,3 @@ );

migrateWarnFunc( jQuery, "isNumeric", function( obj ) {
migratePatchAndWarnFunc( jQuery, "isNumeric", function( obj ) {

@@ -275,3 +348,3 @@ // As of jQuery 3.0, isNumeric is limited to

!isNaN( obj - parseFloat( obj ) );
},
}, "isNumeric",
"jQuery.isNumeric() is deprecated"

@@ -287,3 +360,3 @@ );

migrateWarnFunc( jQuery, "type", function( obj ) {
migratePatchAndWarnFunc( jQuery, "type", function( obj ) {
if ( obj == null ) {

@@ -297,15 +370,15 @@ return obj + "";

typeof obj;
},
}, "type",
"jQuery.type is deprecated" );
migrateWarnFunc( jQuery, "isFunction",
migratePatchAndWarnFunc( jQuery, "isFunction",
function( obj ) {
return typeof obj === "function";
},
}, "isFunction",
"jQuery.isFunction() is deprecated" );
migrateWarnFunc( jQuery, "isWindow",
migratePatchAndWarnFunc( jQuery, "isWindow",
function( obj ) {
return obj != null && obj === obj.window;
},
}, "isWindow",
"jQuery.isWindow() is deprecated"

@@ -321,3 +394,3 @@ );

jQuery.ajax = function( ) {
migratePatchFunc( jQuery, "ajax", function() {
var jQXHR = oldAjax.apply( this, arguments );

@@ -327,7 +400,7 @@

if ( jQXHR.promise ) {
migrateWarnFunc( jQXHR, "success", jQXHR.done,
migratePatchAndWarnFunc( jQXHR, "success", jQXHR.done, "jqXHR-methods",
"jQXHR.success is deprecated and removed" );
migrateWarnFunc( jQXHR, "error", jQXHR.fail,
migratePatchAndWarnFunc( jQXHR, "error", jQXHR.fail, "jqXHR-methods",
"jQXHR.error is deprecated and removed" );
migrateWarnFunc( jQXHR, "complete", jQXHR.always,
migratePatchAndWarnFunc( jQXHR, "complete", jQXHR.always, "jqXHR-methods",
"jQXHR.complete is deprecated and removed" );

@@ -337,3 +410,3 @@ }

return jQXHR;
};
}, "jqXHR-methods" );

@@ -357,3 +430,3 @@ // Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion

) ) {
migrateWarn( "JSON-to-JSONP auto-promotion is deprecated" );
migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" );
}

@@ -369,3 +442,3 @@ } );

jQuery.fn.removeAttr = function( name ) {
migratePatchFunc( jQuery.fn, "removeAttr", function( name ) {
var self = this;

@@ -375,3 +448,4 @@

if ( jQuery.expr.match.bool.test( attr ) ) {
migrateWarn( "jQuery.fn.removeAttr no longer sets boolean properties: " + attr );
migrateWarn( "removeAttr-bool",
"jQuery.fn.removeAttr no longer sets boolean properties: " + attr );
self.prop( attr, false );

@@ -382,12 +456,13 @@ }

return oldRemoveAttr.apply( this, arguments );
};
}, "removeAttr-bool" );
jQuery.fn.toggleClass = function( state ) {
migratePatchFunc( jQuery.fn, "toggleClass", function( state ) {
// Only deprecating no-args or single boolean arg
if ( state !== undefined && typeof state !== "boolean" ) {
return oldToggleClass.apply( this, arguments );
}
migrateWarn( "jQuery.fn.toggleClass( boolean ) is deprecated" );
migrateWarn( "toggleClass-bool", "jQuery.fn.toggleClass( boolean ) is deprecated" );

@@ -414,3 +489,3 @@ // Toggle entire class name of each element

} );
};
}, "toggleClass-bool" );

@@ -423,3 +498,3 @@ function camelCase( string ) {

var oldFnCss,
var origFnCss,
internalSwapCall = false,

@@ -469,3 +544,3 @@ ralphaStart = /^[a-z]/,

jQuery.swap = function( elem, options, callback, args ) {
migratePatchFunc( jQuery, "swap", function( elem, options, callback, args ) {
var ret, name,

@@ -475,3 +550,3 @@ old = {};

if ( !internalSwapCall ) {
migrateWarn( "jQuery.swap() is undocumented and deprecated" );
migrateWarn( "swap", "jQuery.swap() is undocumented and deprecated" );
}

@@ -493,9 +568,8 @@

return ret;
};
}, "swap" );
if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) {
jQuery.cssProps = new Proxy( jQuery.cssProps || {}, {
set: function() {
migrateWarn( "JQMIGRATE: jQuery.cssProps is deprecated" );
migrateWarn( "cssProps", "jQuery.cssProps is deprecated" );
return Reflect.set.apply( this, arguments );

@@ -506,6 +580,38 @@ }

// Create a dummy jQuery.cssNumber if missing. It won't be used by jQuery but
// it will prevent code adding new keys to it unconditionally from crashing.
if ( !jQuery.cssNumber ) {
jQuery.cssNumber = {};
// In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version:
// https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233
// This way, number values for the CSS properties below won't start triggering
// Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438).
if ( jQueryVersionSince( "4.0.0" ) && typeof Proxy !== "undefined" ) {
jQuery.cssNumber = new Proxy( {
animationIterationCount: true,
columnCount: true,
fillOpacity: true,
flexGrow: true,
flexShrink: true,
fontWeight: true,
gridArea: true,
gridColumn: true,
gridColumnEnd: true,
gridColumnStart: true,
gridRow: true,
gridRowEnd: true,
gridRowStart: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
widows: true,
zIndex: true,
zoom: true
}, {
get: function() {
migrateWarn( "css-number", "jQuery.cssNumber is deprecated" );
return Reflect.get.apply( this, arguments );
},
set: function() {
migrateWarn( "css-number", "jQuery.cssNumber is deprecated" );
return Reflect.set.apply( this, arguments );
}
} );
}

@@ -522,7 +628,8 @@

oldFnCss = jQuery.fn.css;
origFnCss = jQuery.fn.css;
jQuery.fn.css = function( name, value ) {
migratePatchFunc( jQuery.fn, "css", function( name, value ) {
var camelName,
origThis = this;
if ( name && typeof name === "object" && !Array.isArray( name ) ) {

@@ -534,6 +641,8 @@ jQuery.each( name, function( n, v ) {

}
if ( typeof value === "number" ) {
camelName = camelCase( name );
if ( !isAutoPx( camelName ) && !jQuery.cssNumber[ camelName ] ) {
migrateWarn( "Number-typed values are deprecated for jQuery.fn.css( \"" +
migrateWarn( "css-number",
"Number-typed values are deprecated for jQuery.fn.css( \"" +
name + "\", value )" );

@@ -543,8 +652,8 @@ }

return oldFnCss.apply( this, arguments );
};
return origFnCss.apply( this, arguments );
}, "css-number" );
var oldData = jQuery.data;
var origData = jQuery.data;
jQuery.data = function( elem, name, value ) {
migratePatchFunc( jQuery, "data", function( elem, name, value ) {
var curData, sameKeys, key;

@@ -554,7 +663,9 @@

if ( name && typeof name === "object" && arguments.length === 2 ) {
curData = jQuery.hasData( elem ) && oldData.call( this, elem );
curData = jQuery.hasData( elem ) && origData.call( this, elem );
sameKeys = {};
for ( key in name ) {
if ( key !== camelCase( key ) ) {
migrateWarn( "jQuery.data() always sets/gets camelCased names: " + key );
migrateWarn( "data-camelCase",
"jQuery.data() always sets/gets camelCased names: " + key );
curData[ key ] = name[ key ];

@@ -566,3 +677,3 @@ } else {

oldData.call( this, elem, sameKeys );
origData.call( this, elem, sameKeys );

@@ -574,5 +685,7 @@ return name;

if ( name && typeof name === "string" && name !== camelCase( name ) ) {
curData = jQuery.hasData( elem ) && oldData.call( this, elem );
curData = jQuery.hasData( elem ) && origData.call( this, elem );
if ( curData && name in curData ) {
migrateWarn( "jQuery.data() always sets/gets camelCased names: " + name );
migrateWarn( "data-camelCase",
"jQuery.data() always sets/gets camelCased names: " + name );
if ( arguments.length > 2 ) {

@@ -585,4 +698,4 @@ curData[ name ] = value;

return oldData.apply( this, arguments );
};
return origData.apply( this, arguments );
}, "data-camelCase" );

@@ -598,5 +711,6 @@ // Support jQuery slim which excludes the effects module

jQuery.Tween.prototype.run = function( ) {
migratePatchFunc( jQuery.Tween.prototype, "run", function( ) {
if ( jQuery.easing[ this.easing ].length > 1 ) {
migrateWarn(
"easing-one-arg",
"'jQuery.easing." + this.easing.toString() + "' should use only one argument"

@@ -609,5 +723,5 @@ );

oldTweenRun.apply( this, arguments );
};
}, "easing-one-arg" );
intervalValue = jQuery.fx.interval || 13;
intervalValue = jQuery.fx.interval;
intervalMsg = "jQuery.fx.interval is deprecated";

@@ -624,8 +738,13 @@

if ( !window.document.hidden ) {
migrateWarn( intervalMsg );
migrateWarn( "fx-interval", intervalMsg );
}
return intervalValue;
// Only fallback to the default if patch is enabled
if ( !jQuery.migrateIsPatchEnabled( "fx-interval" ) ) {
return intervalValue;
}
return intervalValue === undefined ? 13 : intervalValue;
},
set: function( newValue ) {
migrateWarn( intervalMsg );
migrateWarn( "fx-interval", intervalMsg );
intervalValue = newValue;

@@ -646,5 +765,6 @@ }

migrateWarnProp( jQuery.event.props, "concat", jQuery.event.props.concat,
"event-old-patch",
"jQuery.event.props.concat() is deprecated and removed" );
jQuery.event.fix = function( originalEvent ) {
migratePatchFunc( jQuery.event, "fix", function( originalEvent ) {
var event,

@@ -656,3 +776,4 @@ type = originalEvent.type,

if ( props.length ) {
migrateWarn( "jQuery.event.props are deprecated and removed: " + props.join() );
migrateWarn( "event-old-patch",
"jQuery.event.props are deprecated and removed: " + props.join() );
while ( props.length ) {

@@ -665,3 +786,4 @@ jQuery.event.addProp( props.pop() );

fixHook._migrated_ = true;
migrateWarn( "jQuery.event.fixHooks are deprecated and removed: " + type );
migrateWarn( "event-old-patch",
"jQuery.event.fixHooks are deprecated and removed: " + type );
if ( ( props = fixHook.props ) && props.length ) {

@@ -676,17 +798,20 @@ while ( props.length ) {

return fixHook && fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
};
return fixHook && fixHook.filter ?
fixHook.filter( event, originalEvent ) :
event;
}, "event-old-patch" );
jQuery.event.add = function( elem, types ) {
migratePatchFunc( jQuery.event, "add", function( elem, types ) {
// This misses the multiple-types case but that seems awfully rare
if ( elem === window && types === "load" && window.document.readyState === "complete" ) {
migrateWarn( "jQuery(window).on('load'...) called after load event occurred" );
migrateWarn( "load-after-event",
"jQuery(window).on('load'...) called after load event occurred" );
}
return oldEventAdd.apply( this, arguments );
};
}, "load-after-event" );
jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
jQuery.fn[ name ] = function() {
migratePatchFunc( jQuery.fn, name, function() {
var args = Array.prototype.slice.call( arguments, 0 );

@@ -702,3 +827,4 @@

migrateWarn( "jQuery.fn." + name + "() is deprecated" );
migrateWarn( "shorthand-removed-v3",
"jQuery.fn." + name + "() is deprecated" );

@@ -716,3 +842,3 @@ args.splice( 0, 0, name );

return this;
};
}, "shorthand-removed-v3" );

@@ -727,8 +853,9 @@ } );

// Handle event binding
jQuery.fn[ name ] = function( data, fn ) {
migrateWarn( "jQuery.fn." + name + "() event shorthand is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) {
return arguments.length > 0 ?
this.on( name, null, data, fn ) :
this.trigger( name );
};
},
"shorthand-deprecated-v3",
"jQuery.fn." + name + "() event shorthand is deprecated" );
} );

@@ -744,3 +871,3 @@

if ( this === window.document ) {
migrateWarn( "'ready' event is deprecated" );
migrateWarn( "ready-event", "'ready' event is deprecated" );
}

@@ -750,30 +877,21 @@ }

jQuery.fn.extend( {
migratePatchAndWarnFunc( jQuery.fn, "bind", function( types, data, fn ) {
return this.on( types, null, data, fn );
}, "pre-on-methods", "jQuery.fn.bind() is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, "unbind", function( types, fn ) {
return this.off( types, null, fn );
}, "pre-on-methods", "jQuery.fn.unbind() is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, "delegate", function( selector, types, data, fn ) {
return this.on( types, selector, data, fn );
}, "pre-on-methods", "jQuery.fn.delegate() is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, "undelegate", function( selector, types, fn ) {
return arguments.length === 1 ?
this.off( selector, "**" ) :
this.off( types, selector || "**", fn );
}, "pre-on-methods", "jQuery.fn.undelegate() is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, "hover", function( fnOver, fnOut ) {
return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver );
}, "pre-on-methods", "jQuery.fn.hover() is deprecated" );
bind: function( types, data, fn ) {
migrateWarn( "jQuery.fn.bind() is deprecated" );
return this.on( types, null, data, fn );
},
unbind: function( types, fn ) {
migrateWarn( "jQuery.fn.unbind() is deprecated" );
return this.off( types, null, fn );
},
delegate: function( selector, types, data, fn ) {
migrateWarn( "jQuery.fn.delegate() is deprecated" );
return this.on( types, selector, data, fn );
},
undelegate: function( selector, types, fn ) {
migrateWarn( "jQuery.fn.undelegate() is deprecated" );
return arguments.length === 1 ?
this.off( selector, "**" ) :
this.off( types, selector || "**", fn );
},
hover: function( fnOver, fnOut ) {
migrateWarn( "jQuery.fn.hover() is deprecated" );
return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver );
}
} );
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
origHtmlPrefilter = jQuery.htmlPrefilter,
makeMarkup = function( html ) {

@@ -787,30 +905,36 @@ var doc = window.document.implementation.createHTMLDocument( "" );

if ( changed !== html && makeMarkup( html ) !== makeMarkup( changed ) ) {
migrateWarn( "HTML tags must be properly nested and closed: " + html );
migrateWarn( "self-closed-tags",
"HTML tags must be properly nested and closed: " + html );
}
};
/**
* Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead.
* @deprecated
*/
jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() {
jQuery.htmlPrefilter = function( html ) {
warnIfChanged( html );
return html.replace( rxhtmlTag, "<$1></$2>" );
};
jQuery.migrateEnablePatches( "self-closed-tags" );
};
jQuery.htmlPrefilter = function( html ) {
migratePatchFunc( jQuery, "htmlPrefilter", function( html ) {
warnIfChanged( html );
return origHtmlPrefilter( html );
};
return html.replace( rxhtmlTag, "<$1></$2>" );
}, "self-closed-tags" );
var oldOffset = jQuery.fn.offset;
// This patch needs to be disabled by default as it re-introduces
// security issues (CVE-2020-11022, CVE-2020-11023).
jQuery.migrateDisablePatches( "self-closed-tags" );
jQuery.fn.offset = function() {
var origOffset = jQuery.fn.offset;
migratePatchFunc( jQuery.fn, "offset", function() {
var elem = this[ 0 ];
if ( elem && ( !elem.nodeType || !elem.getBoundingClientRect ) ) {
migrateWarn( "jQuery.fn.offset() requires a valid DOM element" );
migrateWarn( "offset-valid-elem", "jQuery.fn.offset() requires a valid DOM element" );
return arguments.length ? this : undefined;
}
return oldOffset.apply( this, arguments );
};
return origOffset.apply( this, arguments );
}, "offset-valid-elem" );

@@ -822,5 +946,5 @@ // Support jQuery slim which excludes the ajax module

var oldParam = jQuery.param;
var origParam = jQuery.param;
jQuery.param = function( data, traditional ) {
migratePatchFunc( jQuery, "param", function( data, traditional ) {
var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;

@@ -830,18 +954,15 @@

migrateWarn( "jQuery.param() no longer uses jQuery.ajaxSettings.traditional" );
migrateWarn( "param-ajax-traditional",
"jQuery.param() no longer uses jQuery.ajaxSettings.traditional" );
traditional = ajaxTraditional;
}
return oldParam.call( this, data, traditional );
};
return origParam.call( this, data, traditional );
}, "param-ajax-traditional" );
}
var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
migratePatchAndWarnFunc( jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf",
"jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" );
jQuery.fn.andSelf = function() {
migrateWarn( "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" );
return oldSelf.apply( this, arguments );
};
// Support jQuery slim which excludes the deferred module in jQuery 4.0+

@@ -862,11 +983,9 @@ if ( jQuery.Deferred ) {

jQuery.Deferred = function( func ) {
migratePatchFunc( jQuery, "Deferred", function( func ) {
var deferred = oldDeferred(),
promise = deferred.promise();
deferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) {
function newDeferredPipe( /* fnDone, fnFail, fnProgress */ ) {
var fns = arguments;
migrateWarn( "deferred.pipe() is deprecated" );
return jQuery.Deferred( function( newDefer ) {

@@ -896,4 +1015,8 @@ jQuery.each( tuples, function( i, tuple ) {

} ).promise();
}
};
migratePatchAndWarnFunc( deferred, "pipe", newDeferredPipe, "deferred-pipe",
"deferred.pipe() is deprecated" );
migratePatchAndWarnFunc( promise, "pipe", newDeferredPipe, "deferred-pipe",
"deferred.pipe() is deprecated" );

@@ -905,3 +1028,3 @@ if ( func ) {

return deferred;
};
}, "deferred-pipe" );

@@ -908,0 +1031,0 @@ // Preserve handler of uncaught exceptions in promise chains

@@ -1,3 +0,3 @@

/*! jQuery Migrate v3.3.2 | (c) OpenJS Foundation and other contributors | jquery.org/license */
"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,n){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,n=r.exec(e)||[],o=r.exec(t)||[],i=1;i<=3;i++){if(+o[i]<+n[i])return 1;if(+n[i]<+o[i])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.3.2",n.console&&n.console.log&&(s&&e("3.0.0")||n.console.log("JQMIGRATE: jQuery 3.0.0+ REQUIRED"),s.migrateWarnings&&n.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),n.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion));var r={};function u(e){var t=n.console;s.migrateDeduplicateWarnings&&r[e]||(r[e]=!0,s.migrateWarnings.push(e),t&&t.warn&&!s.migrateMute&&(t.warn("JQMIGRATE: "+e),s.migrateTrace&&t.trace&&t.trace()))}function t(e,t,r,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return u(n),r},set:function(e){u(n),r=e}})}function o(e,t,r,n){e[t]=function(){return u(n),r.apply(this,arguments)}}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){r={},s.migrateWarnings.length=0},"BackCompat"===n.document.compatMode&&u("jQuery is not compatible with Quirks Mode");var i,a,c,d={},l=s.fn.init,p=s.find,f=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,y=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,m=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;for(i in s.fn.init=function(e){var t=Array.prototype.slice.call(arguments);return"string"==typeof e&&"#"===e&&(u("jQuery( '#' ) is not a valid selector"),t[0]=[]),l.apply(this,t)},s.fn.init.prototype=s.fn,s.find=function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&f.test(t))try{n.document.querySelector(t)}catch(e){t=t.replace(y,function(e,t,r,n){return"["+t+r+'"'+n+'"]'});try{n.document.querySelector(t),u("Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){u("Attribute selector with '#' was not fixed: "+r[0])}}return p.apply(this,r)},p)Object.prototype.hasOwnProperty.call(p,i)&&(s.find[i]=p[i]);o(s.fn,"size",function(){return this.length},"jQuery.fn.size() is deprecated and removed; use the .length property"),o(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"jQuery.parseJSON is deprecated; use JSON.parse"),o(s,"holdReady",s.holdReady,"jQuery.holdReady is deprecated"),o(s,"unique",s.uniqueSort,"jQuery.unique is deprecated; use jQuery.uniqueSort"),t(s.expr,"filters",s.expr.pseudos,"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),t(s.expr,":",s.expr.pseudos,"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.1.1")&&o(s,"trim",function(e){return null==e?"":(e+"").replace(m,"")},"jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&(o(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"jQuery.nodeName is deprecated"),o(s,"isArray",Array.isArray,"jQuery.isArray is deprecated; use Array.isArray")),e("3.3.0")&&(o(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){d["[object "+t+"]"]=t.toLowerCase()}),o(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?d[Object.prototype.toString.call(e)]||"object":typeof e},"jQuery.type is deprecated"),o(s,"isFunction",function(e){return"function"==typeof e},"jQuery.isFunction() is deprecated"),o(s,"isWindow",function(e){return null!=e&&e===e.window},"jQuery.isWindow() is deprecated")),s.ajax&&(a=s.ajax,c=/(=)\?(?=&|$)|\?\?/,s.ajax=function(){var e=a.apply(this,arguments);return e.promise&&(o(e,"success",e.done,"jQXHR.success is deprecated and removed"),o(e,"error",e.fail,"jQXHR.error is deprecated and removed"),o(e,"complete",e.always,"jQXHR.complete is deprecated and removed")),e},e("4.0.0")||s.ajaxPrefilter("+json",function(e){!1!==e.jsonp&&(c.test(e.url)||"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&c.test(e.data))&&u("JSON-to-JSONP auto-promotion is deprecated")}));var g=s.fn.removeAttr,h=s.fn.toggleClass,v=/\S+/g;function j(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})}s.fn.removeAttr=function(e){var r=this;return s.each(e.match(v),function(e,t){s.expr.match.bool.test(t)&&(u("jQuery.fn.removeAttr no longer sets boolean properties: "+t),r.prop(t,!1))}),g.apply(this,arguments)};var Q,b=!(s.fn.toggleClass=function(t){return void 0!==t&&"boolean"!=typeof t?h.apply(this,arguments):(u("jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var e=this.getAttribute&&this.getAttribute("class")||"";e&&s.data(this,"__className__",e),this.setAttribute&&this.setAttribute("class",!e&&!1!==t&&s.data(this,"__className__")||"")}))}),w=/^[a-z]/,x=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;s.swap&&s.each(["height","width","reliableMarginRight"],function(e,t){var r=s.cssHooks[t]&&s.cssHooks[t].get;r&&(s.cssHooks[t].get=function(){var e;return b=!0,e=r.apply(this,arguments),b=!1,e})}),s.swap=function(e,t,r,n){var o,i,a={};for(i in b||u("jQuery.swap() is undocumented and deprecated"),t)a[i]=e.style[i],e.style[i]=t[i];for(i in o=r.apply(e,n||[]),t)e.style[i]=a[i];return o},e("3.4.0")&&"undefined"!=typeof Proxy&&(s.cssProps=new Proxy(s.cssProps||{},{set:function(){return u("JQMIGRATE: jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),s.cssNumber||(s.cssNumber={}),Q=s.fn.css,s.fn.css=function(e,t){var r,n,o=this;return e&&"object"==typeof e&&!Array.isArray(e)?(s.each(e,function(e,t){s.fn.css.call(o,e,t)}),this):("number"==typeof t&&(r=j(e),n=r,w.test(n)&&x.test(n[0].toUpperCase()+n.slice(1))||s.cssNumber[r]||u('Number-typed values are deprecated for jQuery.fn.css( "'+e+'", value )')),Q.apply(this,arguments))};var A,k,S,M,N=s.data;s.data=function(e,t,r){var n,o,i;if(t&&"object"==typeof t&&2===arguments.length){for(i in n=s.hasData(e)&&N.call(this,e),o={},t)i!==j(i)?(u("jQuery.data() always sets/gets camelCased names: "+i),n[i]=t[i]):o[i]=t[i];return N.call(this,e,o),t}return t&&"string"==typeof t&&t!==j(t)&&(n=s.hasData(e)&&N.call(this,e))&&t in n?(u("jQuery.data() always sets/gets camelCased names: "+t),2<arguments.length&&(n[t]=r),n[t]):N.apply(this,arguments)},s.fx&&(S=s.Tween.prototype.run,M=function(e){return e},s.Tween.prototype.run=function(){1<s.easing[this.easing].length&&(u("'jQuery.easing."+this.easing.toString()+"' should use only one argument"),s.easing[this.easing]=M),S.apply(this,arguments)},A=s.fx.interval||13,k="jQuery.fx.interval is deprecated",n.requestAnimationFrame&&Object.defineProperty(s.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return n.document.hidden||u(k),A},set:function(e){u(k),A=e}}));var R=s.fn.load,H=s.event.add,C=s.event.fix;s.event.props=[],s.event.fixHooks={},t(s.event.props,"concat",s.event.props.concat,"jQuery.event.props.concat() is deprecated and removed"),s.event.fix=function(e){var t,r=e.type,n=this.fixHooks[r],o=s.event.props;if(o.length){u("jQuery.event.props are deprecated and removed: "+o.join());while(o.length)s.event.addProp(o.pop())}if(n&&!n._migrated_&&(n._migrated_=!0,u("jQuery.event.fixHooks are deprecated and removed: "+r),(o=n.props)&&o.length))while(o.length)s.event.addProp(o.pop());return t=C.call(this,e),n&&n.filter?n.filter(t,e):t},s.event.add=function(e,t){return e===n&&"load"===t&&"complete"===n.document.readyState&&u("jQuery(window).on('load'...) called after load event occurred"),H.apply(this,arguments)},s.each(["load","unload","error"],function(e,t){s.fn[t]=function(){var e=Array.prototype.slice.call(arguments,0);return"load"===t&&"string"==typeof e[0]?R.apply(this,e):(u("jQuery.fn."+t+"() is deprecated"),e.splice(0,0,t),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))}}),s.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,r){s.fn[r]=function(e,t){return u("jQuery.fn."+r+"() event shorthand is deprecated"),0<arguments.length?this.on(r,null,e,t):this.trigger(r)}}),s(function(){s(n.document).triggerHandler("ready")}),s.event.special.ready={setup:function(){this===n.document&&u("'ready' event is deprecated")}},s.fn.extend({bind:function(e,t,r){return u("jQuery.fn.bind() is deprecated"),this.on(e,null,t,r)},unbind:function(e,t){return u("jQuery.fn.unbind() is deprecated"),this.off(e,null,t)},delegate:function(e,t,r,n){return u("jQuery.fn.delegate() is deprecated"),this.on(t,e,r,n)},undelegate:function(e,t,r){return u("jQuery.fn.undelegate() is deprecated"),1===arguments.length?this.off(e,"**"):this.off(t,e||"**",r)},hover:function(e,t){return u("jQuery.fn.hover() is deprecated"),this.on("mouseenter",e).on("mouseleave",t||e)}});function T(e){var t=n.document.implementation.createHTMLDocument("");return t.body.innerHTML=e,t.body&&t.body.innerHTML}function P(e){var t=e.replace(O,"<$1></$2>");t!==e&&T(e)!==T(t)&&u("HTML tags must be properly nested and closed: "+e)}var O=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,q=s.htmlPrefilter;s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.htmlPrefilter=function(e){return P(e),e.replace(O,"<$1></$2>")}},s.htmlPrefilter=function(e){return P(e),q(e)};var D,_=s.fn.offset;s.fn.offset=function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?_.apply(this,arguments):(u("jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},s.ajax&&(D=s.param,s.param=function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(u("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),D.call(this,e,t)});var E,F,J=s.fn.andSelf||s.fn.addBack;return s.fn.andSelf=function(){return u("jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),J.apply(this,arguments)},s.Deferred&&(E=s.Deferred,F=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],s.Deferred=function(e){var i=E(),a=i.promise();return i.pipe=a.pipe=function(){var o=arguments;return u("deferred.pipe() is deprecated"),s.Deferred(function(n){s.each(F,function(e,t){var r="function"==typeof o[e]&&o[e];i[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===a?n.promise():this,r?[e]:arguments)})}),o=null}).promise()},e&&e.call(i,i),i},s.Deferred.exceptionHook=E.exceptionHook),s});
/*! jQuery Migrate v3.4.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,n){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,n=r.exec(e)||[],o=r.exec(t)||[],a=1;a<=3;a++){if(+n[a]>+o[a])return 1;if(+n[a]<+o[a])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.4.0";var t=Object.create(null),o=(s.migrateDisablePatches=function(){for(var e=0;e<arguments.length;e++)t[arguments[e]]=!0},s.migrateEnablePatches=function(){for(var e=0;e<arguments.length;e++)delete t[arguments[e]]},s.migrateIsPatchEnabled=function(e){return!t[e]},n.console&&n.console.log&&(s&&e("3.0.0")||n.console.log("JQMIGRATE: jQuery 3.0.0+ REQUIRED"),s.migrateWarnings&&n.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),n.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion)),{});function i(e,t){var r=n.console;!s.migrateIsPatchEnabled(e)||s.migrateDeduplicateWarnings&&o[t]||(o[t]=!0,s.migrateWarnings.push(t+" ["+e+"]"),r&&r.warn&&!s.migrateMute&&(r.warn("JQMIGRATE: "+t),s.migrateTrace&&r.trace&&r.trace()))}function r(e,t,r,n,o){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return i(n,o),r},set:function(e){i(n,o),r=e}})}function a(e,t,r,n,o){var a=e[t];e[t]=function(){return o&&i(n,o),(s.migrateIsPatchEnabled(n)?r:a||s.noop).apply(this,arguments)}}function u(e,t,r,n,o){if(!o)throw new Error("No warning message provided");a(e,t,r,n,o)}function d(e,t,r,n){a(e,t,r,n)}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){o={},s.migrateWarnings.length=0},"BackCompat"===n.document.compatMode&&i("quirks","jQuery is not compatible with Quirks Mode");var c,l,p,f={},m=s.fn.init,y=s.find,h=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,g=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,v=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;for(c in d(s.fn,"init",function(e){var t=Array.prototype.slice.call(arguments);return s.migrateIsPatchEnabled("selector-empty-id")&&"string"==typeof e&&"#"===e&&(i("selector-empty-id","jQuery( '#' ) is not a valid selector"),t[0]=[]),m.apply(this,t)},"selector-empty-id"),s.fn.init.prototype=s.fn,d(s,"find",function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&h.test(t))try{n.document.querySelector(t)}catch(e){t=t.replace(g,function(e,t,r,n){return"["+t+r+'"'+n+'"]'});try{n.document.querySelector(t),i("selector-hash","Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){i("selector-hash","Attribute selector with '#' was not fixed: "+r[0])}}return y.apply(this,r)},"selector-hash"),y)Object.prototype.hasOwnProperty.call(y,c)&&(s.find[c]=y[c]);u(s.fn,"size",function(){return this.length},"size","jQuery.fn.size() is deprecated and removed; use the .length property"),u(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"parseJSON","jQuery.parseJSON is deprecated; use JSON.parse"),u(s,"holdReady",s.holdReady,"holdReady","jQuery.holdReady is deprecated"),u(s,"unique",s.uniqueSort,"unique","jQuery.unique is deprecated; use jQuery.uniqueSort"),r(s.expr,"filters",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),r(s.expr,":",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.1.1")&&u(s,"trim",function(e){return null==e?"":(e+"").replace(v,"")},"trim","jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&(u(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"nodeName","jQuery.nodeName is deprecated"),u(s,"isArray",Array.isArray,"isArray","jQuery.isArray is deprecated; use Array.isArray")),e("3.3.0")&&(u(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"isNumeric","jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){f["[object "+t+"]"]=t.toLowerCase()}),u(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?f[Object.prototype.toString.call(e)]||"object":typeof e},"type","jQuery.type is deprecated"),u(s,"isFunction",function(e){return"function"==typeof e},"isFunction","jQuery.isFunction() is deprecated"),u(s,"isWindow",function(e){return null!=e&&e===e.window},"isWindow","jQuery.isWindow() is deprecated")),s.ajax&&(l=s.ajax,p=/(=)\?(?=&|$)|\?\?/,d(s,"ajax",function(){var e=l.apply(this,arguments);return e.promise&&(u(e,"success",e.done,"jqXHR-methods","jQXHR.success is deprecated and removed"),u(e,"error",e.fail,"jqXHR-methods","jQXHR.error is deprecated and removed"),u(e,"complete",e.always,"jqXHR-methods","jQXHR.complete is deprecated and removed")),e},"jqXHR-methods"),e("4.0.0")||s.ajaxPrefilter("+json",function(e){!1!==e.jsonp&&(p.test(e.url)||"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&p.test(e.data))&&i("jsonp-promotion","JSON-to-JSONP auto-promotion is deprecated")}));var j=s.fn.removeAttr,b=s.fn.toggleClass,w=/\S+/g;function Q(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})}d(s.fn,"removeAttr",function(e){var r=this;return s.each(e.match(w),function(e,t){s.expr.match.bool.test(t)&&(i("removeAttr-bool","jQuery.fn.removeAttr no longer sets boolean properties: "+t),r.prop(t,!1))}),j.apply(this,arguments)},"removeAttr-bool"),d(s.fn,"toggleClass",function(t){return void 0!==t&&"boolean"!=typeof t?b.apply(this,arguments):(i("toggleClass-bool","jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var e=this.getAttribute&&this.getAttribute("class")||"";e&&s.data(this,"__className__",e),this.setAttribute&&this.setAttribute("class",!e&&!1!==t&&s.data(this,"__className__")||"")}))},"toggleClass-bool");var x,A=!1,R=/^[a-z]/,T=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;s.swap&&s.each(["height","width","reliableMarginRight"],function(e,t){var r=s.cssHooks[t]&&s.cssHooks[t].get;r&&(s.cssHooks[t].get=function(){var e;return A=!0,e=r.apply(this,arguments),A=!1,e})}),d(s,"swap",function(e,t,r,n){var o,a={};for(o in A||i("swap","jQuery.swap() is undocumented and deprecated"),t)a[o]=e.style[o],e.style[o]=t[o];for(o in r=r.apply(e,n||[]),t)e.style[o]=a[o];return r},"swap"),e("3.4.0")&&"undefined"!=typeof Proxy&&(s.cssProps=new Proxy(s.cssProps||{},{set:function(){return i("cssProps","jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),e("4.0.0")&&"undefined"!=typeof Proxy&&(s.cssNumber=new Proxy({animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},{get:function(){return i("css-number","jQuery.cssNumber is deprecated"),Reflect.get.apply(this,arguments)},set:function(){return i("css-number","jQuery.cssNumber is deprecated"),Reflect.set.apply(this,arguments)}})),x=s.fn.css,d(s.fn,"css",function(e,t){var r,n=this;return e&&"object"==typeof e&&!Array.isArray(e)?(s.each(e,function(e,t){s.fn.css.call(n,e,t)}),this):("number"==typeof t&&(t=Q(e),r=t,R.test(r)&&T.test(r[0].toUpperCase()+r.slice(1))||s.cssNumber[t]||i("css-number",'Number-typed values are deprecated for jQuery.fn.css( "'+e+'", value )')),x.apply(this,arguments))},"css-number");function C(e){var t=n.document.implementation.createHTMLDocument("");return t.body.innerHTML=e,t.body&&t.body.innerHTML}var S,N,P,k,H,E,M,q=s.data,D=(d(s,"data",function(e,t,r){var n,o,a;if(t&&"object"==typeof t&&2===arguments.length){for(a in n=s.hasData(e)&&q.call(this,e),o={},t)a!==Q(a)?(i("data-camelCase","jQuery.data() always sets/gets camelCased names: "+a),n[a]=t[a]):o[a]=t[a];return q.call(this,e,o),t}return t&&"string"==typeof t&&t!==Q(t)&&(n=s.hasData(e)&&q.call(this,e))&&t in n?(i("data-camelCase","jQuery.data() always sets/gets camelCased names: "+t),2<arguments.length&&(n[t]=r),n[t]):q.apply(this,arguments)},"data-camelCase"),s.fx&&(P=s.Tween.prototype.run,k=function(e){return e},d(s.Tween.prototype,"run",function(){1<s.easing[this.easing].length&&(i("easing-one-arg","'jQuery.easing."+this.easing.toString()+"' should use only one argument"),s.easing[this.easing]=k),P.apply(this,arguments)},"easing-one-arg"),S=s.fx.interval,N="jQuery.fx.interval is deprecated",n.requestAnimationFrame&&Object.defineProperty(s.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return n.document.hidden||i("fx-interval",N),s.migrateIsPatchEnabled("fx-interval")&&void 0===S?13:S},set:function(e){i("fx-interval",N),S=e}})),s.fn.load),F=s.event.add,W=s.event.fix,O=(s.event.props=[],s.event.fixHooks={},r(s.event.props,"concat",s.event.props.concat,"event-old-patch","jQuery.event.props.concat() is deprecated and removed"),d(s.event,"fix",function(e){var t=e.type,r=this.fixHooks[t],n=s.event.props;if(n.length){i("event-old-patch","jQuery.event.props are deprecated and removed: "+n.join());while(n.length)s.event.addProp(n.pop())}if(r&&!r._migrated_&&(r._migrated_=!0,i("event-old-patch","jQuery.event.fixHooks are deprecated and removed: "+t),(n=r.props)&&n.length))while(n.length)s.event.addProp(n.pop());return t=W.call(this,e),r&&r.filter?r.filter(t,e):t},"event-old-patch"),d(s.event,"add",function(e,t){return e===n&&"load"===t&&"complete"===n.document.readyState&&i("load-after-event","jQuery(window).on('load'...) called after load event occurred"),F.apply(this,arguments)},"load-after-event"),s.each(["load","unload","error"],function(e,t){d(s.fn,t,function(){var e=Array.prototype.slice.call(arguments,0);return"load"===t&&"string"==typeof e[0]?D.apply(this,e):(i("shorthand-removed-v3","jQuery.fn."+t+"() is deprecated"),e.splice(0,0,t),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))},"shorthand-removed-v3")}),s.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,r){u(s.fn,r,function(e,t){return 0<arguments.length?this.on(r,null,e,t):this.trigger(r)},"shorthand-deprecated-v3","jQuery.fn."+r+"() event shorthand is deprecated")}),s(function(){s(n.document).triggerHandler("ready")}),s.event.special.ready={setup:function(){this===n.document&&i("ready-event","'ready' event is deprecated")}},u(s.fn,"bind",function(e,t,r){return this.on(e,null,t,r)},"pre-on-methods","jQuery.fn.bind() is deprecated"),u(s.fn,"unbind",function(e,t){return this.off(e,null,t)},"pre-on-methods","jQuery.fn.unbind() is deprecated"),u(s.fn,"delegate",function(e,t,r,n){return this.on(t,e,r,n)},"pre-on-methods","jQuery.fn.delegate() is deprecated"),u(s.fn,"undelegate",function(e,t,r){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",r)},"pre-on-methods","jQuery.fn.undelegate() is deprecated"),u(s.fn,"hover",function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)},"pre-on-methods","jQuery.fn.hover() is deprecated"),/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi),_=(s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.migrateEnablePatches("self-closed-tags")},d(s,"htmlPrefilter",function(e){var t,r;return(r=(t=e).replace(O,"<$1></$2>"))!==t&&C(t)!==C(r)&&i("self-closed-tags","HTML tags must be properly nested and closed: "+t),e.replace(O,"<$1></$2>")},"self-closed-tags"),s.migrateDisablePatches("self-closed-tags"),s.fn.offset);return d(s.fn,"offset",function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?_.apply(this,arguments):(i("offset-valid-elem","jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},"offset-valid-elem"),s.ajax&&(H=s.param,d(s,"param",function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(i("param-ajax-traditional","jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),H.call(this,e,t)},"param-ajax-traditional")),u(s.fn,"andSelf",s.fn.addBack,"andSelf","jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),s.Deferred&&(E=s.Deferred,M=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],d(s,"Deferred",function(e){var a=E(),i=a.promise();function t(){var o=arguments;return s.Deferred(function(n){s.each(M,function(e,t){var r="function"==typeof o[e]&&o[e];a[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===i?n.promise():this,r?[e]:arguments)})}),o=null}).promise()}return u(a,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),u(i,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),e&&e.call(a,a),a},"deferred-pipe"),s.Deferred.exceptionHook=E.exceptionHook),s});
//# sourceMappingURL=jquery-migrate.min.map

@@ -9,21 +9,24 @@ "use strict";

const oldNode = /^v10\./.test( process.version );
const karmaFilesExceptJQuery = [
"node_modules/native-promise-only/lib/npo.src.js",
"external/npo/npo.js",
"dist/jquery-migrate.min.js",
"test/data/compareVersions.js",
"test/testinit.js",
"test/migrate.js",
"test/core.js",
"test/ajax.js",
"test/attributes.js",
"test/css.js",
"test/data.js",
"test/deferred.js",
"test/effects.js",
"test/event.js",
"test/manipulation.js",
"test/offset.js",
"test/serialize.js",
"test/traversing.js",
"test/data/testinit.js",
"test/data/test-utils.js",
"test/unit/migrate.js",
"test/unit/jquery/core.js",
"test/unit/jquery/ajax.js",
"test/unit/jquery/attributes.js",
"test/unit/jquery/css.js",
"test/unit/jquery/data.js",
"test/unit/jquery/deferred.js",
"test/unit/jquery/effects.js",
"test/unit/jquery/event.js",
"test/unit/jquery/manipulation.js",
"test/unit/jquery/offset.js",
"test/unit/jquery/serialize.js",
"test/unit/jquery/traversing.js",

@@ -34,2 +37,9 @@ { pattern: "dist/jquery-migrate.js", included: false, served: true },

// Support: Node.js <12
// Skip running tasks that dropped support for Node.js 10
// in this Node version.
function runIfNewNode( task ) {
return oldNode ? "print_old_node_message:" + task : task;
}
// Project configuration.

@@ -61,2 +71,4 @@ grunt.initConfig( {

"min+3.x-git.slim.min",
"dev+3.6.0",
"dev+3.6.0.slim",
"dev+3.5.1",

@@ -118,2 +130,16 @@ "dev+3.5.1.slim",

},
npmcopy: {
all: {
options: {
destPrefix: "external"
},
files: {
"npo/npo.js": "native-promise-only/lib/npo.src.js",
"qunit/qunit.js": "qunit/qunit/qunit.js",
"qunit/qunit.css": "qunit/qunit/qunit.css",
"qunit/LICENSE.txt": "qunit/LICENSE.txt"
}
}
},
uglify: {

@@ -131,8 +157,8 @@ all: {

output: {
"ascii_only": true,
ascii_only: true,
// Support: Android 4.0 only
// UglifyJS 3 breaks Android 4.0 if this option is not enabled.
// This is in lieu of setting ie8 for all of mangle, compress, and output
"ie8": true
// This is in lieu of setting ie for all of mangle, compress, and output
ie: true
},

@@ -142,3 +168,3 @@ banner: "/*! jQuery Migrate v<%= pkg.version %>" +

compress: {
"hoist_funs": false,
hoist_funs: false,
loops: false,

@@ -164,3 +190,3 @@

files: [
"https://code.jquery.com/jquery-3.x-git.min.js",
"https://releases.jquery.com/git/jquery-3.x-git.min.js",
...karmaFilesExceptJQuery

@@ -190,3 +216,3 @@ ],

files: [
"https://code.jquery.com/jquery-3.x-git.slim.min.js",
"https://releases.jquery.com/git/jquery-3.x-git.slim.min.js",
...karmaFilesExceptJQuery

@@ -224,2 +250,7 @@ ]

grunt.registerTask( "print_old_node_message", ( ...args ) => {
var task = args.join( ":" );
grunt.log.writeln( "Old Node.js detected, running the task \"" + task + "\" skipped..." );
} );
// Just an alias

@@ -237,7 +268,8 @@ grunt.registerTask( "test", [

// if we already know the source files pass the linter.
"eslint:dev",
"eslint:dist"
runIfNewNode( "eslint:dev" ),
runIfNewNode( "eslint:dist" )
] );
grunt.registerTask( "default-no-test", [
"npmcopy",
"build",

@@ -244,0 +276,0 @@ "uglify",

@@ -6,3 +6,3 @@ {

"main": "dist/jquery-migrate.js",
"version": "3.3.2",
"version": "3.4.0",
"homepage": "https://github.com/jquery/jquery-migrate",

@@ -30,25 +30,26 @@ "author": {

"devDependencies": {
"chalk": "4.0.0",
"chalk": "5.0.1",
"commitplease": "3.2.0",
"enquirer": "2.3.6",
"eslint": "7.2.0",
"eslint": "8.11.0",
"eslint-config-jquery": "3.0.0",
"eslint-plugin-import": "2.21.1",
"grunt": "1.1.0",
"grunt-cli": "1.3.2",
"eslint-plugin-import": "2.25.4",
"grunt": "1.4.1",
"grunt-cli": "1.4.3",
"grunt-compare-size": "0.4.2",
"grunt-contrib-uglify": "4.0.1",
"grunt-contrib-uglify": "5.0.1",
"grunt-contrib-watch": "1.1.0",
"grunt-eslint": "23.0.0",
"grunt-karma": "4.0.0",
"grunt-eslint": "24.0.0",
"grunt-karma": "4.0.2",
"grunt-npmcopy": "0.2.0",
"gzip-js": "0.3.2",
"karma": "5.0.9",
"karma": "6.3.17",
"karma-browserstack-launcher": "1.6.0",
"karma-chrome-launcher": "3.1.0",
"karma-firefox-launcher": "1.3.0",
"karma-qunit": "4.1.1",
"karma-chrome-launcher": "3.1.1",
"karma-firefox-launcher": "2.1.2",
"karma-qunit": "4.1.2",
"load-grunt-tasks": "5.1.0",
"native-promise-only": "0.8.1",
"qunit": "2.10.0",
"rollup": "2.15.0",
"qunit": "2.18.0",
"rollup": "2.70.1",
"testswarm": "1.1.2"

@@ -55,0 +56,0 @@ },

@@ -1,2 +0,2 @@

[![Build Status](https://travis-ci.org/jquery/jquery-migrate.svg?branch=master)](https://travis-ci.org/jquery/jquery-migrate)
![CI Status](https://github.com/jquery/jquery-migrate/actions/workflows/node.js.yml/badge.svg?branch=main)

@@ -15,4 +15,4 @@ #### NOTE: To upgrade to jQuery 3.0, you first need version 1.12.x or 2.2.x. If you're using an older version, first upgrade to one of these versions using [jQuery Migrate 1.x](https://github.com/jquery/jquery-migrate/tree/1.x-stable#readme), to resolve any compatibility issues. For more information about the changes made in jQuery 3.0, see the [upgrade guide](https://jquery.com/upgrade-guide/3.0/) and [blog post](https://blog.jquery.com/2016/06/09/jquery-3-0-final-released/).

```html
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script src="https://code.jquery.com/jquery-migrate-3.3.2.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/jquery-migrate-3.4.0.js"></script>
```

@@ -30,4 +30,4 @@

| Minified | | <p align="center">✓</p> |
| Latest release (*may be hotlinked if desired*) | [jquery-migrate-3.3.2.js](https://code.jquery.com/jquery-migrate-3.3.2.js) | [jquery-migrate-3.3.2.min.js](https://code.jquery.com/jquery-migrate-3.3.2.min.js) |
| \* Latest work-in-progress build | [jquery-migrate-git.js](https://code.jquery.com/jquery-migrate-git.js) | [jquery-migrate-git.min.js](https://code.jquery.com/jquery-migrate-git.min.js) |
| Latest release (*may be hotlinked if desired*) | [jquery-migrate-3.4.0.js](https://code.jquery.com/jquery-migrate-3.4.0.js) | [jquery-migrate-3.4.0.min.js](https://code.jquery.com/jquery-migrate-3.4.0.min.js) |
| \* Latest work-in-progress build | [jquery-migrate-git.js](https://releases.jquery.com/git/jquery-migrate-git.js) | [jquery-migrate-git.min.js](https://releases.jquery.com/git/jquery-migrate-git.min.js) |

@@ -42,3 +42,3 @@

All warnings generated by this plugin start with the string "JQMIGRATE". A list of the warnings you may see are in [warnings.md](https://github.com/jquery/jquery-migrate/blob/master/warnings.md).
All warnings generated by this plugin start with the string "JQMIGRATE". A list of the warnings you may see are in [warnings.md](https://github.com/jquery/jquery-migrate/blob/main/warnings.md).

@@ -62,2 +62,10 @@

`jQuery.migrateDisablePatches`: Disables patches by their codes. You can find a code for each patch in square brackets in [warnings.md](https://github.com/jquery/jquery-migrate/blob/main/warnings.md). A limited number of warnings doesn't have codes defined and cannot be disabled. These are mostly setup issues like using an incorrect version of jQuery or loading Migrate multiple times.
`jQuery.migrateDisablePatches`: Disables patches by their codes.
`jQuery.migrateIsPatchEnabled`: Returns `true` if a patch of a provided code is enabled and `false` otherwise.
`jQuery.UNSAFE_restoreLegacyHtmlPrefilter`: A deprecated alias of `jQuery.migrateEnablePatches( "self-closed-tags" )`
## Reporting problems

@@ -64,0 +72,0 @@

import { jQueryVersionSince } from "../compareVersions.js";
import { migrateWarn, migrateWarnFunc } from "../main.js";
import { migrateWarn, migratePatchAndWarnFunc, migratePatchFunc } from "../main.js";

@@ -10,3 +10,3 @@ // Support jQuery slim which excludes the ajax module

jQuery.ajax = function( ) {
migratePatchFunc( jQuery, "ajax", function() {
var jQXHR = oldAjax.apply( this, arguments );

@@ -16,7 +16,7 @@

if ( jQXHR.promise ) {
migrateWarnFunc( jQXHR, "success", jQXHR.done,
migratePatchAndWarnFunc( jQXHR, "success", jQXHR.done, "jqXHR-methods",
"jQXHR.success is deprecated and removed" );
migrateWarnFunc( jQXHR, "error", jQXHR.fail,
migratePatchAndWarnFunc( jQXHR, "error", jQXHR.fail, "jqXHR-methods",
"jQXHR.error is deprecated and removed" );
migrateWarnFunc( jQXHR, "complete", jQXHR.always,
migratePatchAndWarnFunc( jQXHR, "complete", jQXHR.always, "jqXHR-methods",
"jQXHR.complete is deprecated and removed" );

@@ -26,3 +26,3 @@ }

return jQXHR;
};
}, "jqXHR-methods" );

@@ -46,3 +46,3 @@ // Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion

) ) {
migrateWarn( "JSON-to-JSONP auto-promotion is deprecated" );
migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" );
}

@@ -49,0 +49,0 @@ } );

@@ -1,2 +0,2 @@

import { migrateWarn } from "../main.js";
import { migratePatchFunc, migrateWarn } from "../main.js";

@@ -7,3 +7,3 @@ var oldRemoveAttr = jQuery.fn.removeAttr,

jQuery.fn.removeAttr = function( name ) {
migratePatchFunc( jQuery.fn, "removeAttr", function( name ) {
var self = this;

@@ -13,3 +13,4 @@

if ( jQuery.expr.match.bool.test( attr ) ) {
migrateWarn( "jQuery.fn.removeAttr no longer sets boolean properties: " + attr );
migrateWarn( "removeAttr-bool",
"jQuery.fn.removeAttr no longer sets boolean properties: " + attr );
self.prop( attr, false );

@@ -20,12 +21,13 @@ }

return oldRemoveAttr.apply( this, arguments );
};
}, "removeAttr-bool" );
jQuery.fn.toggleClass = function( state ) {
migratePatchFunc( jQuery.fn, "toggleClass", function( state ) {
// Only deprecating no-args or single boolean arg
if ( state !== undefined && typeof state !== "boolean" ) {
return oldToggleClass.apply( this, arguments );
}
migrateWarn( "jQuery.fn.toggleClass( boolean ) is deprecated" );
migrateWarn( "toggleClass-bool", "jQuery.fn.toggleClass( boolean ) is deprecated" );

@@ -52,2 +54,2 @@ // Toggle entire class name of each element

} );
};
}, "toggleClass-bool" );
import { jQueryVersionSince } from "../compareVersions.js";
import { migrateWarn, migrateWarnFunc, migrateWarnProp } from "../main.js";
import {
migratePatchFunc,
migrateWarn,
migratePatchAndWarnFunc,
migrateWarnProp
} from "../main.js";
import "../disablePatches.js";

@@ -16,9 +22,11 @@ var findProp,

jQuery.fn.init = function( arg1 ) {
migratePatchFunc( jQuery.fn, "init", function( arg1 ) {
var args = Array.prototype.slice.call( arguments );
if ( typeof arg1 === "string" && arg1 === "#" ) {
if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) &&
typeof arg1 === "string" && arg1 === "#" ) {
// JQuery( "#" ) is a bogus ID selector, but it returned an empty set before jQuery 3.0
migrateWarn( "jQuery( '#' ) is not a valid selector" );
// JQuery( "#" ) is a bogus ID selector, but it returned an empty set
// before jQuery 3.0
migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" );
args[ 0 ] = [];

@@ -28,6 +36,10 @@ }

return oldInit.apply( this, args );
};
}, "selector-empty-id" );
// This is already done in Core but the above patch will lose this assignment
// so we need to redo it. It doesn't matter whether the patch is enabled or not
// as the method is always going to be a Migrate-created wrapper.
jQuery.fn.init.prototype = jQuery.fn;
jQuery.find = function( selector ) {
migratePatchFunc( jQuery, "find", function( selector ) {
var args = Array.prototype.slice.call( arguments );

@@ -54,6 +66,8 @@

window.document.querySelector( selector );
migrateWarn( "Attribute selector with '#' must be quoted: " + args[ 0 ] );
migrateWarn( "selector-hash",
"Attribute selector with '#' must be quoted: " + args[ 0 ] );
args[ 0 ] = selector;
} catch ( err2 ) {
migrateWarn( "Attribute selector with '#' was not fixed: " + args[ 0 ] );
migrateWarn( "selector-hash",
"Attribute selector with '#' was not fixed: " + args[ 0 ] );
}

@@ -64,3 +78,3 @@ }

return oldFind.apply( this, args );
};
}, "selector-hash" );

@@ -75,22 +89,22 @@ // Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)

// The number of elements contained in the matched element set
migrateWarnFunc( jQuery.fn, "size", function() {
migratePatchAndWarnFunc( jQuery.fn, "size", function() {
return this.length;
},
}, "size",
"jQuery.fn.size() is deprecated and removed; use the .length property" );
migrateWarnFunc( jQuery, "parseJSON", function() {
migratePatchAndWarnFunc( jQuery, "parseJSON", function() {
return JSON.parse.apply( null, arguments );
},
}, "parseJSON",
"jQuery.parseJSON is deprecated; use JSON.parse" );
migrateWarnFunc( jQuery, "holdReady", jQuery.holdReady,
"jQuery.holdReady is deprecated" );
migratePatchAndWarnFunc( jQuery, "holdReady", jQuery.holdReady,
"holdReady", "jQuery.holdReady is deprecated" );
migrateWarnFunc( jQuery, "unique", jQuery.uniqueSort,
"jQuery.unique is deprecated; use jQuery.uniqueSort" );
migratePatchAndWarnFunc( jQuery, "unique", jQuery.uniqueSort,
"unique", "jQuery.unique is deprecated; use jQuery.uniqueSort" );
// Now jQuery.expr.pseudos is the standard incantation
migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos,
migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos",
"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" );
migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos,
migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos",
"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" );

@@ -100,7 +114,7 @@

if ( jQueryVersionSince( "3.1.1" ) ) {
migrateWarnFunc( jQuery, "trim", function( text ) {
migratePatchAndWarnFunc( jQuery, "trim", function( text ) {
return text == null ?
"" :
( text + "" ).replace( rtrim, "" );
},
}, "trim",
"jQuery.trim is deprecated; use String.prototype.trim" );

@@ -111,8 +125,8 @@ }

if ( jQueryVersionSince( "3.2.0" ) ) {
migrateWarnFunc( jQuery, "nodeName", function( elem, name ) {
migratePatchAndWarnFunc( jQuery, "nodeName", function( elem, name ) {
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
},
}, "nodeName",
"jQuery.nodeName is deprecated" );
migrateWarnFunc( jQuery, "isArray", Array.isArray,
migratePatchAndWarnFunc( jQuery, "isArray", Array.isArray, "isArray",
"jQuery.isArray is deprecated; use Array.isArray"

@@ -124,3 +138,3 @@ );

migrateWarnFunc( jQuery, "isNumeric", function( obj ) {
migratePatchAndWarnFunc( jQuery, "isNumeric", function( obj ) {

@@ -137,3 +151,3 @@ // As of jQuery 3.0, isNumeric is limited to

!isNaN( obj - parseFloat( obj ) );
},
}, "isNumeric",
"jQuery.isNumeric() is deprecated"

@@ -149,3 +163,3 @@ );

migrateWarnFunc( jQuery, "type", function( obj ) {
migratePatchAndWarnFunc( jQuery, "type", function( obj ) {
if ( obj == null ) {

@@ -159,17 +173,17 @@ return obj + "";

typeof obj;
},
}, "type",
"jQuery.type is deprecated" );
migrateWarnFunc( jQuery, "isFunction",
migratePatchAndWarnFunc( jQuery, "isFunction",
function( obj ) {
return typeof obj === "function";
},
}, "isFunction",
"jQuery.isFunction() is deprecated" );
migrateWarnFunc( jQuery, "isWindow",
migratePatchAndWarnFunc( jQuery, "isWindow",
function( obj ) {
return obj != null && obj === obj.window;
},
}, "isWindow",
"jQuery.isWindow() is deprecated"
);
}
import { jQueryVersionSince } from "../compareVersions.js";
import { migrateWarn } from "../main.js";
import { migrateWarn, migratePatchFunc } from "../main.js";
import { camelCase } from "../utils.js";
var oldFnCss,
var origFnCss,
internalSwapCall = false,

@@ -50,3 +50,3 @@ ralphaStart = /^[a-z]/,

jQuery.swap = function( elem, options, callback, args ) {
migratePatchFunc( jQuery, "swap", function( elem, options, callback, args ) {
var ret, name,

@@ -56,3 +56,3 @@ old = {};

if ( !internalSwapCall ) {
migrateWarn( "jQuery.swap() is undocumented and deprecated" );
migrateWarn( "swap", "jQuery.swap() is undocumented and deprecated" );
}

@@ -74,9 +74,8 @@

return ret;
};
}, "swap" );
if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) {
jQuery.cssProps = new Proxy( jQuery.cssProps || {}, {
set: function() {
migrateWarn( "JQMIGRATE: jQuery.cssProps is deprecated" );
migrateWarn( "cssProps", "jQuery.cssProps is deprecated" );
return Reflect.set.apply( this, arguments );

@@ -87,6 +86,38 @@ }

// Create a dummy jQuery.cssNumber if missing. It won't be used by jQuery but
// it will prevent code adding new keys to it unconditionally from crashing.
if ( !jQuery.cssNumber ) {
jQuery.cssNumber = {};
// In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version:
// https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233
// This way, number values for the CSS properties below won't start triggering
// Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438).
if ( jQueryVersionSince( "4.0.0" ) && typeof Proxy !== "undefined" ) {
jQuery.cssNumber = new Proxy( {
animationIterationCount: true,
columnCount: true,
fillOpacity: true,
flexGrow: true,
flexShrink: true,
fontWeight: true,
gridArea: true,
gridColumn: true,
gridColumnEnd: true,
gridColumnStart: true,
gridRow: true,
gridRowEnd: true,
gridRowStart: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
widows: true,
zIndex: true,
zoom: true
}, {
get: function() {
migrateWarn( "css-number", "jQuery.cssNumber is deprecated" );
return Reflect.get.apply( this, arguments );
},
set: function() {
migrateWarn( "css-number", "jQuery.cssNumber is deprecated" );
return Reflect.set.apply( this, arguments );
}
} );
}

@@ -103,7 +134,8 @@

oldFnCss = jQuery.fn.css;
origFnCss = jQuery.fn.css;
jQuery.fn.css = function( name, value ) {
migratePatchFunc( jQuery.fn, "css", function( name, value ) {
var camelName,
origThis = this;
if ( name && typeof name === "object" && !Array.isArray( name ) ) {

@@ -115,6 +147,8 @@ jQuery.each( name, function( n, v ) {

}
if ( typeof value === "number" ) {
camelName = camelCase( name );
if ( !isAutoPx( camelName ) && !jQuery.cssNumber[ camelName ] ) {
migrateWarn( "Number-typed values are deprecated for jQuery.fn.css( \"" +
migrateWarn( "css-number",
"Number-typed values are deprecated for jQuery.fn.css( \"" +
name + "\", value )" );

@@ -124,3 +158,3 @@ }

return oldFnCss.apply( this, arguments );
};
return origFnCss.apply( this, arguments );
}, "css-number" );

@@ -1,7 +0,7 @@

import { migrateWarn } from "../main.js";
import { migratePatchFunc, migrateWarn } from "../main.js";
import { camelCase } from "../utils.js";
var oldData = jQuery.data;
var origData = jQuery.data;
jQuery.data = function( elem, name, value ) {
migratePatchFunc( jQuery, "data", function( elem, name, value ) {
var curData, sameKeys, key;

@@ -11,7 +11,9 @@

if ( name && typeof name === "object" && arguments.length === 2 ) {
curData = jQuery.hasData( elem ) && oldData.call( this, elem );
curData = jQuery.hasData( elem ) && origData.call( this, elem );
sameKeys = {};
for ( key in name ) {
if ( key !== camelCase( key ) ) {
migrateWarn( "jQuery.data() always sets/gets camelCased names: " + key );
migrateWarn( "data-camelCase",
"jQuery.data() always sets/gets camelCased names: " + key );
curData[ key ] = name[ key ];

@@ -23,3 +25,3 @@ } else {

oldData.call( this, elem, sameKeys );
origData.call( this, elem, sameKeys );

@@ -31,5 +33,7 @@ return name;

if ( name && typeof name === "string" && name !== camelCase( name ) ) {
curData = jQuery.hasData( elem ) && oldData.call( this, elem );
curData = jQuery.hasData( elem ) && origData.call( this, elem );
if ( curData && name in curData ) {
migrateWarn( "jQuery.data() always sets/gets camelCased names: " + name );
migrateWarn( "data-camelCase",
"jQuery.data() always sets/gets camelCased names: " + name );
if ( arguments.length > 2 ) {

@@ -42,3 +46,3 @@ curData[ name ] = value;

return oldData.apply( this, arguments );
};
return origData.apply( this, arguments );
}, "data-camelCase" );

@@ -1,2 +0,2 @@

import { migrateWarn } from "../main.js";
import { migratePatchFunc, migratePatchAndWarnFunc } from "../main.js";

@@ -18,11 +18,9 @@ // Support jQuery slim which excludes the deferred module in jQuery 4.0+

jQuery.Deferred = function( func ) {
migratePatchFunc( jQuery, "Deferred", function( func ) {
var deferred = oldDeferred(),
promise = deferred.promise();
deferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) {
function newDeferredPipe( /* fnDone, fnFail, fnProgress */ ) {
var fns = arguments;
migrateWarn( "deferred.pipe() is deprecated" );
return jQuery.Deferred( function( newDefer ) {

@@ -52,4 +50,8 @@ jQuery.each( tuples, function( i, tuple ) {

} ).promise();
}
};
migratePatchAndWarnFunc( deferred, "pipe", newDeferredPipe, "deferred-pipe",
"deferred.pipe() is deprecated" );
migratePatchAndWarnFunc( promise, "pipe", newDeferredPipe, "deferred-pipe",
"deferred.pipe() is deprecated" );

@@ -61,3 +63,3 @@ if ( func ) {

return deferred;
};
}, "deferred-pipe" );

@@ -64,0 +66,0 @@ // Preserve handler of uncaught exceptions in promise chains

@@ -1,2 +0,3 @@

import { migrateWarn } from "../main.js";
import { migratePatchFunc, migrateWarn } from "../main.js";
import "../disablePatches.js";

@@ -12,5 +13,6 @@ // Support jQuery slim which excludes the effects module

jQuery.Tween.prototype.run = function( ) {
migratePatchFunc( jQuery.Tween.prototype, "run", function( ) {
if ( jQuery.easing[ this.easing ].length > 1 ) {
migrateWarn(
"easing-one-arg",
"'jQuery.easing." + this.easing.toString() + "' should use only one argument"

@@ -23,5 +25,5 @@ );

oldTweenRun.apply( this, arguments );
};
}, "easing-one-arg" );
intervalValue = jQuery.fx.interval || 13;
intervalValue = jQuery.fx.interval;
intervalMsg = "jQuery.fx.interval is deprecated";

@@ -38,8 +40,13 @@

if ( !window.document.hidden ) {
migrateWarn( intervalMsg );
migrateWarn( "fx-interval", intervalMsg );
}
return intervalValue;
// Only fallback to the default if patch is enabled
if ( !jQuery.migrateIsPatchEnabled( "fx-interval" ) ) {
return intervalValue;
}
return intervalValue === undefined ? 13 : intervalValue;
},
set: function( newValue ) {
migrateWarn( intervalMsg );
migrateWarn( "fx-interval", intervalMsg );
intervalValue = newValue;

@@ -46,0 +53,0 @@ }

@@ -1,2 +0,8 @@

import { migrateWarn, migrateWarnProp } from "../main.js";
import {
migrateWarn,
migratePatchAndWarnFunc,
migratePatchFunc,
migrateWarnProp
} from "../main.js";
import "../disablePatches.js";

@@ -11,5 +17,6 @@ var oldLoad = jQuery.fn.load,

migrateWarnProp( jQuery.event.props, "concat", jQuery.event.props.concat,
"event-old-patch",
"jQuery.event.props.concat() is deprecated and removed" );
jQuery.event.fix = function( originalEvent ) {
migratePatchFunc( jQuery.event, "fix", function( originalEvent ) {
var event,

@@ -21,3 +28,4 @@ type = originalEvent.type,

if ( props.length ) {
migrateWarn( "jQuery.event.props are deprecated and removed: " + props.join() );
migrateWarn( "event-old-patch",
"jQuery.event.props are deprecated and removed: " + props.join() );
while ( props.length ) {

@@ -30,3 +38,4 @@ jQuery.event.addProp( props.pop() );

fixHook._migrated_ = true;
migrateWarn( "jQuery.event.fixHooks are deprecated and removed: " + type );
migrateWarn( "event-old-patch",
"jQuery.event.fixHooks are deprecated and removed: " + type );
if ( ( props = fixHook.props ) && props.length ) {

@@ -41,17 +50,20 @@ while ( props.length ) {

return fixHook && fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
};
return fixHook && fixHook.filter ?
fixHook.filter( event, originalEvent ) :
event;
}, "event-old-patch" );
jQuery.event.add = function( elem, types ) {
migratePatchFunc( jQuery.event, "add", function( elem, types ) {
// This misses the multiple-types case but that seems awfully rare
if ( elem === window && types === "load" && window.document.readyState === "complete" ) {
migrateWarn( "jQuery(window).on('load'...) called after load event occurred" );
migrateWarn( "load-after-event",
"jQuery(window).on('load'...) called after load event occurred" );
}
return oldEventAdd.apply( this, arguments );
};
}, "load-after-event" );
jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
jQuery.fn[ name ] = function() {
migratePatchFunc( jQuery.fn, name, function() {
var args = Array.prototype.slice.call( arguments, 0 );

@@ -67,3 +79,4 @@

migrateWarn( "jQuery.fn." + name + "() is deprecated" );
migrateWarn( "shorthand-removed-v3",
"jQuery.fn." + name + "() is deprecated" );

@@ -81,3 +94,3 @@ args.splice( 0, 0, name );

return this;
};
}, "shorthand-removed-v3" );

@@ -92,8 +105,9 @@ } );

// Handle event binding
jQuery.fn[ name ] = function( data, fn ) {
migrateWarn( "jQuery.fn." + name + "() event shorthand is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) {
return arguments.length > 0 ?
this.on( name, null, data, fn ) :
this.trigger( name );
};
},
"shorthand-deprecated-v3",
"jQuery.fn." + name + "() event shorthand is deprecated" );
} );

@@ -109,3 +123,3 @@

if ( this === window.document ) {
migrateWarn( "'ready' event is deprecated" );
migrateWarn( "ready-event", "'ready' event is deprecated" );
}

@@ -115,26 +129,18 @@ }

jQuery.fn.extend( {
bind: function( types, data, fn ) {
migrateWarn( "jQuery.fn.bind() is deprecated" );
return this.on( types, null, data, fn );
},
unbind: function( types, fn ) {
migrateWarn( "jQuery.fn.unbind() is deprecated" );
return this.off( types, null, fn );
},
delegate: function( selector, types, data, fn ) {
migrateWarn( "jQuery.fn.delegate() is deprecated" );
return this.on( types, selector, data, fn );
},
undelegate: function( selector, types, fn ) {
migrateWarn( "jQuery.fn.undelegate() is deprecated" );
return arguments.length === 1 ?
this.off( selector, "**" ) :
this.off( types, selector || "**", fn );
},
hover: function( fnOver, fnOut ) {
migrateWarn( "jQuery.fn.hover() is deprecated" );
return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver );
}
} );
migratePatchAndWarnFunc( jQuery.fn, "bind", function( types, data, fn ) {
return this.on( types, null, data, fn );
}, "pre-on-methods", "jQuery.fn.bind() is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, "unbind", function( types, fn ) {
return this.off( types, null, fn );
}, "pre-on-methods", "jQuery.fn.unbind() is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, "delegate", function( selector, types, data, fn ) {
return this.on( types, selector, data, fn );
}, "pre-on-methods", "jQuery.fn.delegate() is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, "undelegate", function( selector, types, fn ) {
return arguments.length === 1 ?
this.off( selector, "**" ) :
this.off( types, selector || "**", fn );
}, "pre-on-methods", "jQuery.fn.undelegate() is deprecated" );
migratePatchAndWarnFunc( jQuery.fn, "hover", function( fnOver, fnOut ) {
return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver );
}, "pre-on-methods", "jQuery.fn.hover() is deprecated" );

@@ -1,5 +0,5 @@

import { migrateWarn } from "../main.js";
import { migratePatchFunc, migrateWarn } from "../main.js";
import "../disablePatches.js";
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
origHtmlPrefilter = jQuery.htmlPrefilter,
makeMarkup = function( html ) {

@@ -13,16 +13,22 @@ var doc = window.document.implementation.createHTMLDocument( "" );

if ( changed !== html && makeMarkup( html ) !== makeMarkup( changed ) ) {
migrateWarn( "HTML tags must be properly nested and closed: " + html );
migrateWarn( "self-closed-tags",
"HTML tags must be properly nested and closed: " + html );
}
};
/**
* Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead.
* @deprecated
*/
jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() {
jQuery.htmlPrefilter = function( html ) {
warnIfChanged( html );
return html.replace( rxhtmlTag, "<$1></$2>" );
};
jQuery.migrateEnablePatches( "self-closed-tags" );
};
jQuery.htmlPrefilter = function( html ) {
migratePatchFunc( jQuery, "htmlPrefilter", function( html ) {
warnIfChanged( html );
return origHtmlPrefilter( html );
};
return html.replace( rxhtmlTag, "<$1></$2>" );
}, "self-closed-tags" );
// This patch needs to be disabled by default as it re-introduces
// security issues (CVE-2020-11022, CVE-2020-11023).
jQuery.migrateDisablePatches( "self-closed-tags" );

@@ -1,14 +0,14 @@

import { migrateWarn } from "../main.js";
import { migrateWarn, migratePatchFunc } from "../main.js";
var oldOffset = jQuery.fn.offset;
var origOffset = jQuery.fn.offset;
jQuery.fn.offset = function() {
migratePatchFunc( jQuery.fn, "offset", function() {
var elem = this[ 0 ];
if ( elem && ( !elem.nodeType || !elem.getBoundingClientRect ) ) {
migrateWarn( "jQuery.fn.offset() requires a valid DOM element" );
migrateWarn( "offset-valid-elem", "jQuery.fn.offset() requires a valid DOM element" );
return arguments.length ? this : undefined;
}
return oldOffset.apply( this, arguments );
};
return origOffset.apply( this, arguments );
}, "offset-valid-elem" );

@@ -1,2 +0,3 @@

import { migrateWarn } from "../main.js";
import { migratePatchFunc, migrateWarn } from "../main.js";
import "../disablePatches.js";

@@ -8,5 +9,5 @@ // Support jQuery slim which excludes the ajax module

var oldParam = jQuery.param;
var origParam = jQuery.param;
jQuery.param = function( data, traditional ) {
migratePatchFunc( jQuery, "param", function( data, traditional ) {
var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;

@@ -16,9 +17,10 @@

migrateWarn( "jQuery.param() no longer uses jQuery.ajaxSettings.traditional" );
migrateWarn( "param-ajax-traditional",
"jQuery.param() no longer uses jQuery.ajaxSettings.traditional" );
traditional = ajaxTraditional;
}
return oldParam.call( this, data, traditional );
};
return origParam.call( this, data, traditional );
}, "param-ajax-traditional" );
}

@@ -1,8 +0,4 @@

import { migrateWarn } from "../main.js";
import { migratePatchAndWarnFunc } from "../main.js";
var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
jQuery.fn.andSelf = function() {
migrateWarn( "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" );
return oldSelf.apply( this, arguments );
};
migratePatchAndWarnFunc( jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf",
"jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" );
import { jQueryVersionSince } from "./compareVersions.js";
import "./disablePatches.js";

@@ -27,3 +28,3 @@ ( function() {

export var warnedAbout = {};
var warnedAbout = {};

@@ -47,7 +48,8 @@ // By default each warning is only reported once.

export function migrateWarn( msg ) {
export function migrateWarn( code, msg ) {
var console = window.console;
if ( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) {
if ( jQuery.migrateIsPatchEnabled( code ) &&
( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) ) {
warnedAbout[ msg ] = true;
jQuery.migrateWarnings.push( msg );
jQuery.migrateWarnings.push( msg + " [" + code + "]" );
if ( console && console.warn && !jQuery.migrateMute ) {

@@ -62,3 +64,3 @@ console.warn( "JQMIGRATE: " + msg );

export function migrateWarnProp( obj, prop, value, msg ) {
export function migrateWarnProp( obj, prop, value, code, msg ) {
Object.defineProperty( obj, prop, {

@@ -68,7 +70,7 @@ configurable: true,

get: function() {
migrateWarn( msg );
migrateWarn( code, msg );
return value;
},
set: function( newValue ) {
migrateWarn( msg );
migrateWarn( code, msg );
value = newValue;

@@ -79,13 +81,43 @@ }

export function migrateWarnFunc( obj, prop, newFunc, msg ) {
function migrateWarnFuncInternal( obj, prop, newFunc, code, msg ) {
var finalFunc,
origFunc = obj[ prop ];
obj[ prop ] = function() {
migrateWarn( msg );
return newFunc.apply( this, arguments );
// If `msg` not provided, do not warn; more sophisticated warnings
// logic is most likely embedded in `newFunc`, in that case here
// we just care about the logic choosing the proper implementation
// based on whether the patch is disabled or not.
if ( msg ) {
migrateWarn( code, msg );
}
// Since patches can be disabled & enabled dynamically, we
// need to decide which implementation to run on each invocation.
finalFunc = jQuery.migrateIsPatchEnabled( code ) ?
newFunc :
// The function may not have existed originally so we need a fallback.
( origFunc || jQuery.noop );
return finalFunc.apply( this, arguments );
};
}
export function migratePatchAndWarnFunc( obj, prop, newFunc, code, msg ) {
if ( !msg ) {
throw new Error( "No warning message provided" );
}
return migrateWarnFuncInternal( obj, prop, newFunc, code, msg );
}
export function migratePatchFunc( obj, prop, newFunc, code ) {
return migrateWarnFuncInternal( obj, prop, newFunc, code );
}
if ( window.document.compatMode === "BackCompat" ) {
// JQuery has never supported or tested Quirks Mode
migrateWarn( "jQuery is not compatible with Quirks Mode" );
// jQuery has never supported or tested Quirks Mode
migrateWarn( "quirks", "jQuery is not compatible with Quirks Mode" );
}
jQuery.migrateVersion = "3.3.2";
jQuery.migrateVersion = "3.4.0";

@@ -30,5 +30,11 @@ # jQuery Migrate Plugin - Warning Messages

### JQMIGRATE: Attribute selector with '#' must be quoted
### JQMIGRATE: Attribute selector with '#' was not fixed
### \[selector-empty-id\] JQMIGRATE: jQuery( '#' ) is not a valid selector
**Cause:** Selectors consisting of just `#` are not valid CSS syntax so `jQuery( '#' )` is an invalid call but it used to return an empty jQuery object before jQuery 3.0. In later versions this selector throws an error.
**Solution**: Don't call `jQuery` with just `"#"`. If you construct your ID selector dynamically, make sure the string appended to `"#"` is not empty.
### \[selector-hash\] JQMIGRATE: Attribute selector with '#' must be quoted
### \[selector-hash\] JQMIGRATE: Attribute selector with '#' was not fixed
**Cause:** Selectors such as `a[href=#main]` are not valid CSS syntax because the value contains special characters that are not quoted. Until jQuery 1.11.3/2.1.4 this was accepted, but the behavior is non-standard and was never documented. In later versions this selector throws an error. *In some cases with complex selectors, Migrate may not attempt a repair.* In those cases a fatal error will be logged on the console and you will need to fix the selector manually.

@@ -38,3 +44,3 @@

### JQMIGRATE: jQuery is not compatible with Quirks Mode
### \[quirks\] JQMIGRATE: jQuery is not compatible with Quirks Mode

@@ -45,5 +51,5 @@ **Cause:** A browser runs in "quirks mode" when the HTML document does not have a `<!doctype ...>` as its first non-blank line, or when the doctype in the file is invalid. This mode causes the browser to emulate 1990s-era (HTML3) behavior. In Internet Explorer, it also causes many high-performance APIs to be hidden in order to better emulate ancient browsers. jQuery has never been compatible with, or tested in, quirks mode.

### JQMIGRATE: jQXHR.success is deprecated and removed
### JQMIGRATE: jQXHR.error is deprecated and removed
### JQMIGRATE: jQXHR.complete is deprecated and removed
### \[jqXHR-methods\] JQMIGRATE: jQXHR.success is deprecated and removed
### \[jqXHR-methods\] JQMIGRATE: jQXHR.error is deprecated and removed
### \[jqXHR-methods\] JQMIGRATE: jQXHR.complete is deprecated and removed

@@ -54,3 +60,3 @@ **Cause:** The `.success()`, `.error()`, and `.complete()` methods of the `jQXHR` object returned from `jQuery.ajax()` have been deprecated since jQuery 1.8 and were removed in jQuery 3.0.

### JQMIGRATE: jQuery.fn.error() is deprecated
### \[shorthand-removed-v3\] JQMIGRATE: jQuery.fn.error() is deprecated

@@ -61,4 +67,4 @@ **Cause:** The `$().error()` method was used to attach an "error" event to an element but has been removed in 1.9 to reduce confusion with the `$.error()` method which is unrelated and has not been deprecated. It also serves to discourage the temptation to use `$(window).error()` which does not work because `window.onerror` does not follow standard event handler conventions. The `$().error()` method was removed in jQuery 3.0.

### JQMIGRATE: jQuery.fn.load() is deprecated
### JQMIGRATE: jQuery.fn.unload() is deprecated
### \[shorthand-removed-v3\] JQMIGRATE: jQuery.fn.load() is deprecated
### \[shorthand-removed-v3\] JQMIGRATE: jQuery.fn.unload() is deprecated

@@ -69,3 +75,3 @@ **Cause:** The `.load()` and `.unload()` event methods attach a "load" and "unload" event, respectively, to an element. They were deprecated in 1.9 and removed in 3.0 to reduce confusion with the AJAX-related `.load()` method that loads HTML fragments and which has not been deprecated. Note that these two methods are used almost exclusively with a jQuery collection consisting of only the `window` element. Also note that attaching an "unload" or "beforeunload" event on a window via any means can impact performance on some browsers because it disables the document cache (bfcache). For that reason we strongly advise against it.

### JQMIGRATE: deferred.pipe() is deprecated
### \[deferred-pipe\] JQMIGRATE: deferred.pipe() is deprecated

@@ -76,3 +82,3 @@ **Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function.

### JQMIGRATE: jQuery.fx.interval is deprecated
### \[fx-interval\] JQMIGRATE: jQuery.fx.interval is deprecated

@@ -83,3 +89,3 @@ **Cause**: As of jQuery 3.0 the `jQuery.fx.interval` property can be used to change the animation interval _only_ on browsers that do not support the `window.requestAnimationFrame()` method. That is currently only Internet Explorer 9 and the Android Browser. Once support is dropped for these browsers, the property will serve no purpose and it will be removed.

### JQMIGRATE: jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()
### \[andSelf\] JQMIGRATE: jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()

@@ -90,3 +96,3 @@ **Cause**: The `.andSelf()` method has been renamed to `.addBack()` as of jQuery 1.9 to better reflect its purpose of adding back the previous set of results. The old alias was removed in jQuery 3.0.

### JQMIGRATE: jQuery.fn.size() is deprecated and removed; use the .length property
### \[size\] JQMIGRATE: jQuery.fn.size() is deprecated and removed; use the .length property

@@ -97,9 +103,9 @@ **Cause**: The `.size()` method returns the number of elements in the current jQuery object, but duplicates the more-efficient `.length` property which provides the same functionality. As of jQuery 1.9 the `.length` property is the preferred way to retrieve this value. jQuery 3.0 no longer contains the `.size()` method.

### JQMIGRATE: jQuery.data() always sets/gets camelCased names
### \[data-camelCase\] JQMIGRATE: jQuery.data() always sets/gets camelCased names
**Cause:** The page is attempting to set or get a jQuery data item using kebab case, e.g. `my-data`, when a `my-data` item has been set directly on the jQuery data object. jQuery 3.0 always exclusively uses camel case, e.g., `myData`, when it accesses data items via the `.data()` API and does not find kebab case data in that object.
**Cause:** The page is attempting to set or get a jQuery data item using kebab case, e.g. `my-data`, when a `my-data` item has been set directly on the jQuery data object. jQuery 3.0 always exclusively uses camel case, e.g., `myData`, when it accesses data items via the `.data()` API and does not find kebab case data in that object.
**Solution:** Either 1) Always use the `.data()` API to set or get data items, 2) Always use camelCase names when also setting properties directly on jQuery's data object, or 3) Always set properties directly on the data object without using the API call to set or get data by name. Never mix direct access to the data object and API calls with kebab case names.
### JQMIGRATE: jQuery.fn.removeAttr no longer sets boolean properties
### \[removeAttr-bool\] JQMIGRATE: jQuery.fn.removeAttr no longer sets boolean properties

@@ -110,3 +116,3 @@ **Cause**: Prior to jQuery 3.0, using `.removeAttr()` on a boolean attribute such as `checked`, `selected`, or `readonly` would also set the corresponding named *property* to `false`. This behavior was required for ancient versions of Internet Explorer but is not correct for modern browsers because the attribute represents the initial value and the property represents the current (dynamic) value.

### JQMIGRATE: jQuery.fn.offset() requires a valid DOM element
### \[offset-valid-elem\] JQMIGRATE: jQuery.fn.offset() requires a valid DOM element

@@ -117,9 +123,9 @@ **Cause:** In earlier versions of jQuery, the `.offset()` method would return a value of `{ top: 0, left: 0 }` for some cases of invalid input. jQuery 3.0 throws errors in some of these cases. The selected element in the jQuery collection must be a DOM element that has a `getBoundingClientRect` method. Text nodes, the `window` object, and plain JavaScript objects are not valid input to the `.offset()` method. jQuery *may* throw an error in those cases but in general does not guarantee specific results with invalid inputs.

### JQMIGRATE: jQuery.param() no longer uses jQuery.ajaxSettings.traditional
### \[param-ajax-traditional\] JQMIGRATE: jQuery.param() no longer uses jQuery.ajaxSettings.traditional
**Cause:** As of jQuery 3.0, the serialization method `jQuery.param` is fully independent of jQuery's ajax module. As a result, it does not look at the `jQuery.ajaxSettings.traditional` flag that affects how form data is encoded. Note that the `jQuery.ajax()` method still honors this flag if you make a request through it.
**Solution:** To continue using the `traditional` flag, pass it explicitly: `jQuery.data( myData, jQuery.ajaxSettings.traditional )`.
**Solution:** To continue using the `traditional` flag, pass it explicitly: `jQuery.param( myData, jQuery.ajaxSettings.traditional )`.
### JQMIGRATE: jQuery.swap() is undocumented and deprecated
### \[swap\] JQMIGRATE: jQuery.swap() is undocumented and deprecated

@@ -130,6 +136,6 @@ **Cause**: The `jQuery.swap()` method temporarily exchanges a set of CSS properties. It was never documented as part of jQuery's public API and should not be used because it can cause performance problems due to forced layout. This method has been removed in jQuery 3.0.

### JQMIGRATE: jQuery.fn.bind() is deprecated
### JQMIGRATE: jQuery.fn.unbind() is deprecated
### JQMIGRATE: jQuery.fn.delegate() is deprecated
### JQMIGRATE: jQuery.fn.undelegate() is deprecated
### \[pre-on-methods\] JQMIGRATE: jQuery.fn.bind() is deprecated
### \[pre-on-methods\] JQMIGRATE: jQuery.fn.unbind() is deprecated
### \[pre-on-methods\] JQMIGRATE: jQuery.fn.delegate() is deprecated
### \[pre-on-methods\] JQMIGRATE: jQuery.fn.undelegate() is deprecated

@@ -140,3 +146,3 @@ **Cause:**: These event binding methods have been deprecated in favor of the `.on()` and `.off()` methods which can handle both delegated and direct event binding. Although the older methods are still present in jQuery 3.0, they may be removed as early as the next major-version update.

### JQMIGRATE: 'ready' event is deprecated
### \[ready-event\] JQMIGRATE: 'ready' event is deprecated

@@ -147,3 +153,3 @@ **Cause**: Using one of jQuery's API methods to bind a "ready" event, e.g. `$( document ).on( "ready", fn )`, will cause the function to be called when the document is ready, but only if it is attached before the browser fires its own `DOMContentLoaded` event. That makes it unreliable for many uses, particularly ones where jQuery or its plugins are loaded asynchronously after page load.

### JQMIGRATE: 'jQuery.easing.NAME' should use only one argument
### \[easing-one-arg\] JQMIGRATE: 'jQuery.easing.NAME' should use only one argument

@@ -172,3 +178,3 @@ **Cause**: Additional arguments for `jQuery.easing` methods were never documented and are redundant since the same behavior can be easily achieved without them. When Migrate detects this case, the specified easing function is not used and `"linear"` easing is used instead for the animation.

### JQMIGRATE: jQuery.parseJSON is deprecated; use JSON.parse
### \[parseJSON\] JQMIGRATE: jQuery.parseJSON is deprecated; use JSON.parse

@@ -179,3 +185,3 @@ **Cause**: The `jQuery.parseJSON` method in recent jQuery is identical to the native `JSON.parse`. As of jQuery 3.0 `jQuery.parseJSON` is deprecated.

### JQMIGRATE: jQuery.isNumeric() is deprecated
### \[isNumeric\] JQMIGRATE: jQuery.isNumeric() is deprecated

@@ -186,3 +192,3 @@ **Cause**: This method was used by jQuery to determine if certain string arguments could be converted to numbers, but the name led people to apply their own interpretations to what the method means. As a result, it often doesn't meet the needs of specific cases. For example, a 25-character string of only digits is technically a valid number, but JavaScript cannot represent it accurately. The string `"0x251D"` is a valid hexadecimal number but may not be acceptable numeric input to a web form.

### JQMIGRATE: jQuery.type() is deprecated
### \[type\] JQMIGRATE: jQuery.type() is deprecated

@@ -193,3 +199,3 @@ **Cause**: This method returns a string that indicates the type of the argument, for example `"number"` or `"function"`. However, as the JavaScript language evolves this method has become problematic because new language constructs might require this function to either return a new string (potentially breaking existing code) or somehow map new constructs into existing strings (again, potentially breaking existing code). Examples of new recent JavaScript features include asynchronous functions, class constructors, `Symbol`s, or functions that act as iterators.

### JQMIGRATE: jQuery.unique is deprecated; use jQuery.uniqueSort
### \[unique\] JQMIGRATE: jQuery.unique is deprecated; use jQuery.uniqueSort

@@ -200,4 +206,4 @@ **Cause**: The fact that `jQuery.unique` sorted its results in DOM order was surprising to many who did not read the documentation carefully. As of jQuery 3.0 this function is being renamed to make it clear.

### JQMIGRATE: jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos
### JQMIGRATE: jQuery.expr.filters is deprecated; use jQuery.expr.pseudos
### \[expr-pre-pseudos\] JQMIGRATE: jQuery.expr\[':'\] is deprecated; use jQuery.expr.pseudos
### \[expr-pre-pseudos\] JQMIGRATE: jQuery.expr.filters is deprecated; use jQuery.expr.pseudos

@@ -208,3 +214,3 @@ **Cause:** The standard way to add new custom selectors through jQuery is `jQuery.expr.pseudos`. These two other aliases are deprecated, although they still work as of jQuery 3.0.

### JQMIGRATE: jQuery.fn.toggleClass( [ boolean ] ) is deprecated
### \[toggleClass-bool\] JQMIGRATE: jQuery.fn.toggleClass( \[ boolean \] ) is deprecated

@@ -215,5 +221,5 @@ **Cause:** Calling `.toggleClass()` with no arguments, or with a single Boolean `true` or `false` argument, has been deprecated. Its behavior was poorly documented, but essentially the method saved away the current `class` value in a data item when the class was removed and restored the saved value when it was toggled back. If you do not believe you are specificially trying to use this form of the method, it is possible you are accidentally doing so via an inadvertent undefined value, as `.toggleClass( undefined )` toggles all classes.

### JQMIGRATE: jQuery.event.props are deprecated and removed
### JQMIGRATE: jQuery.event.props.concat() is deprecated and removed
### JQMIGRATE: jQuery.event.fixHooks are deprecated and removed
### \[event-old-patch\] JQMIGRATE: jQuery.event.props are deprecated and removed
### \[event-old-patch\] JQMIGRATE: jQuery.event.props.concat() is deprecated and removed
### \[event-old-patch\] JQMIGRATE: jQuery.event.fixHooks are deprecated and removed

@@ -224,3 +230,3 @@ **Cause:** The code on the page has used the `jQuery.event.props` or `jQuery.event.fixHooks` data structures. These were used in previous versions to affect the properties that are copied from the native event to the jQuery event each time an event is delivered, but they had the potential to create performance issues. Versions of jQuery Mobile before 1.5 make use of this API and require jQuery Migrate to run properly.

### JQMIGRATE: jQuery(window).on('load'...) called after load event occurred
### \[load-after-event\] JQMIGRATE: jQuery(window).on('load'...) called after load event occurred

@@ -231,3 +237,3 @@ **Cause:** The calling code has attempted to attach a `load` event to `window` after the page has already loaded. That means the handler will never run and so is probably not what the caller intended. This can occur when the event attachment is made too late, for example, in a jQuery ready handler. It can also occur when a file is loaded dynamically with jQuery after the page has loaded, for example using the `$.getScript()` method.

### JQMIGRATE: jQuery.holdReady() is deprecated
### \[holdReady\] JQMIGRATE: jQuery.holdReady() is deprecated

@@ -238,4 +244,10 @@ **Cause:** The `jQuery.holdReady()` method has been deprecated due to its detrimental effect on the global performance of the page. This method can prevent all the code on the page from initializing for extended lengths of time.

### JQMIGRATE: jQuery.isWindow() is deprecated
### \[isFunction\] JQMIGRATE: jQuery.isFunction() is deprecated
**Cause:** This method returns `true` if its argument is thought to be a function. It was created to work around bugs in `typeof` implementations in legacy browsers.
**Solution:** Replace any use of `jQuery.isFunction( x )` with `typeof x === "function"`.
### \[isWindow\] JQMIGRATE: jQuery.isWindow() is deprecated
**Cause:** This method returns `true` if its argument is thought to be a `window` element. It was created for internal use and is not a reliable way of detecting `window` for public needs.

@@ -245,3 +257,3 @@

### JQMIGRATE: jQuery.fn.click() event shorthand is deprecated
### \[shorthand-deprecated-v3\] JQMIGRATE: jQuery.fn.click() event shorthand is deprecated

@@ -252,9 +264,9 @@ **Cause:** The `.on()` and `.trigger()` methods can set an event handler or generate an event for any event type, and should be used instead of the shortcut methods. This message also applies to the other event shorthands, including: blur, focus, focusin, focusout, resize, scroll, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and contextmenu.

### JQMIGRATE: jQuery.fn.hover() is deprecated
### \[pre-on-methods\] JQMIGRATE: jQuery.fn.hover() is deprecated
**Cause:** The `.hover()` method is a shorthand for the use of the `mouseover`/`mouseout` events. It is often a poor user interface choice because it does not allow for any small amounts of delay between when the mouse enters or exits an area and when the event fires. This can make it quite difficult to use with UI widgets such as drop-down menus. For more information on the problems of hovering, see the [hoverIntent plugin](http://cherne.net/brian/resources/jquery.hoverIntent.html).
**Cause:** The `.hover()` method is a shorthand for the use of the `mouseover`/`mouseout` events. It is often a poor user interface choice because it does not allow for any small amounts of delay between when the mouse enters or exits an area and when the event fires. This can make it quite difficult to use with UI widgets such as drop-down menus. For more information on the problems of hovering, see the [hoverIntent plugin](http://cherne.net/brian/resources/jquery.hoverIntent.html).
**Solution:** Review uses of `.hover()` to determine if they are appropriate, and consider use of plugins such as `hoverIntent` as an alternative. The direct replacement for `.hover(fn1, fn2)`, is `.on("mouseenter", fn1).on("mouseleave", fn2)`.
### JQMIGRATE: jQuery.nodeName() is deprecated
### \[nodeName\] JQMIGRATE: jQuery.nodeName() is deprecated

@@ -265,3 +277,3 @@ **Cause:** This public but never-documented method has been deprecated as of jQuery 3.2.0.

### JQMIGRATE: jQuery.cssProps is deprecated
### \[cssProps\] JQMIGRATE: jQuery.cssProps is deprecated

@@ -272,3 +284,3 @@ **Cause:** The `jQuery.cssProps` property is a public but undocumented object that allows CSS properties with one name to be mapped into another name. It was used for legacy browsers like IE8 that used non-standard names. This object is no longer used inside jQuery since all supported browsers now use the standard CSS property names.

#### JQMIGRATE: jQuery.isArray is deprecated; use Array.isArray
### \[isArray\] JQMIGRATE: jQuery.isArray is deprecated; use Array.isArray

@@ -279,3 +291,3 @@ **Cause:** Older versions of JavaScript made it difficult to determine if a particular object was a true Array, so jQuery provided a cross-browser function to do the work. The browsers supported by jQuery 3.0 all provide a standard method for this purpose.

#### JQMIGRATE: jQuery.trim is deprecated; use String.prototype.trim
### \[trim\] JQMIGRATE: jQuery.trim is deprecated; use String.prototype.trim

@@ -286,3 +298,3 @@ **Cause:** Older versions of IE & Android Browser didn't implement a method to `trim` strings so jQuery provided a cross-browser implementation. The browsers supported by jQuery 3.0 all provide a standard method for this purpose.

### JQMIGRATE: Number-typed values are deprecated for jQuery.fn.css( _(property name)_, value )
### \[css-number\] JQMIGRATE: Number-typed values are deprecated for jQuery.fn.css( _(property name)_, value )

@@ -293,3 +305,3 @@ **Cause:** In past versions, when a number-typed value was passed to `.css()` jQuery converted it to a string and added `"px"` to the end. As the CSS standard has evolved, an increasingly large set of CSS properties now accept values that are unitless numbers, where this behavior is incorrect. It has become impractical to manage these exceptions in the `jQuery.cssNumber` object. In addition, some CSS properties like `line-height` can accept both a bare number `2` or a pixel value `2px`. jQuery cannot know the correct way to interpret `$.css("line-height", 2)` and currently treats it as `"2px"`.

#### JQMIGRATE: HTML tags must be properly nested and closed: _(HTML string)_
### \[self-closed-tags\] JQMIGRATE: HTML tags must be properly nested and closed: _(HTML string)_

@@ -299,1 +311,7 @@ **Cause:** jQuery 3.5.0 changed the way it processes HTML strings. Previously, jQuery would attempt to fix self-closed tags like `<i class="test" />` that the HTML5 specification says are not self-closed, turning it into `<i class="test"></i>`. This processing can create a [security problem](https://nvd.nist.gov/vuln/detail/CVE-2020-11022) with malicious strings, so the functionality had to be removed.

**Solution:** Search for the reported HTML strings and edit the tags to close them explicitly. In some cases the strings passed to jQuery may be created inside the program and thus not searchable. Migrate warning messages include a stack trace that can be used to find the location of the usage in the code.
### \[jsonp-promotion\] JQMIGRATE: JSON-to-JSONP auto-promotion is deprecated
**Cause:** `jQuery.ajax` calls with `dataType: 'json'` with a provided callback are automatically converted by jQuery to JSONP requests unless the options also specify `jsonp: false`. Auto-promoting JSON requests to JSONP introduces a security risk as the developer may be unaware they're not just downloading data but executing code from a remote domain. This auto-promoting behavior is deprecated and will be removed in jQuery 4.0.0.
**Solution:** To trigger a JSONP request, specify the `dataType: "jsonp"` option.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet