Update portal JS

This commit is contained in:
Xavier Guimard 2019-06-24 11:38:00 +02:00
parent 750eaafe65
commit 1c17c6b077
5 changed files with 219 additions and 195 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Fingerprintjs2 2.0.5 - Modern & flexible browser fingerprint library v2 * Fingerprintjs2 2.1.0 - Modern & flexible browser fingerprint library v2
* https://github.com/Valve/fingerprintjs2 * https://github.com/Valve/fingerprintjs2
* Copyright (c) 2015 Valentin Vasilyev (valentin.vasilyev@outlook.com) * Copyright (c) 2015 Valentin Vasilyev (valentin.vasilyev@outlook.com)
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
@ -22,12 +22,12 @@
})('Fingerprint2', this, function () { })('Fingerprint2', this, function () {
'use strict' 'use strict'
/// MurmurHash3 related functions /// MurmurHash3 related functions
// //
// Given two 64bit ints (as an array of two 32bit ints) returns the two // Given two 64bit ints (as an array of two 32bit ints) returns the two
// added together as a 64bit int (as an array of two 32bit ints). // added together as a 64bit int (as an array of two 32bit ints).
// //
var x64Add = function (m, n) { var x64Add = function (m, n) {
m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff] m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]
n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff] n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]
@ -46,10 +46,10 @@
return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]] return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]
} }
// //
// Given two 64bit ints (as an array of two 32bit ints) returns the two // Given two 64bit ints (as an array of two 32bit ints) returns the two
// multiplied together as a 64bit int (as an array of two 32bit ints). // multiplied together as a 64bit int (as an array of two 32bit ints).
// //
var x64Multiply = function (m, n) { var x64Multiply = function (m, n) {
m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff] m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]
n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff] n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]
@ -76,11 +76,11 @@
o[0] &= 0xffff o[0] &= 0xffff
return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]] return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]
} }
// //
// Given a 64bit int (as an array of two 32bit ints) and an int // Given a 64bit int (as an array of two 32bit ints) and an int
// representing a number of bit positions, returns the 64bit int (as an // representing a number of bit positions, returns the 64bit int (as an
// array of two 32bit ints) rotated left by that number of positions. // array of two 32bit ints) rotated left by that number of positions.
// //
var x64Rotl = function (m, n) { var x64Rotl = function (m, n) {
n %= 64 n %= 64
if (n === 32) { if (n === 32) {
@ -92,11 +92,11 @@
return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))] return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))]
} }
} }
// //
// Given a 64bit int (as an array of two 32bit ints) and an int // Given a 64bit int (as an array of two 32bit ints) and an int
// representing a number of bit positions, returns the 64bit int (as an // representing a number of bit positions, returns the 64bit int (as an
// array of two 32bit ints) shifted left by that number of positions. // array of two 32bit ints) shifted left by that number of positions.
// //
var x64LeftShift = function (m, n) { var x64LeftShift = function (m, n) {
n %= 64 n %= 64
if (n === 0) { if (n === 0) {
@ -107,18 +107,18 @@
return [m[1] << (n - 32), 0] return [m[1] << (n - 32), 0]
} }
} }
// //
// Given two 64bit ints (as an array of two 32bit ints) returns the two // Given two 64bit ints (as an array of two 32bit ints) returns the two
// xored together as a 64bit int (as an array of two 32bit ints). // xored together as a 64bit int (as an array of two 32bit ints).
// //
var x64Xor = function (m, n) { var x64Xor = function (m, n) {
return [m[0] ^ n[0], m[1] ^ n[1]] return [m[0] ^ n[0], m[1] ^ n[1]]
} }
// //
// Given a block, returns murmurHash3's final x64 mix of that block. // Given a block, returns murmurHash3's final x64 mix of that block.
// (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the
// only place where we need to right shift 64bit ints.) // only place where we need to right shift 64bit ints.)
// //
var x64Fmix = function (h) { var x64Fmix = function (h) {
h = x64Xor(h, [0, h[0] >>> 1]) h = x64Xor(h, [0, h[0] >>> 1])
h = x64Multiply(h, [0xff51afd7, 0xed558ccd]) h = x64Multiply(h, [0xff51afd7, 0xed558ccd])
@ -128,10 +128,10 @@
return h return h
} }
// //
// Given a string and an optional seed as an int, returns a 128 bit // Given a string and an optional seed as an int, returns a 128 bit
// hash using the x64 flavor of MurmurHash3, as an unsigned hex. // hash using the x64 flavor of MurmurHash3, as an unsigned hex.
// //
var x64hash128 = function (key, seed) { var x64hash128 = function (key, seed) {
key = key || '' key = key || ''
seed = seed || 0 seed = seed || 0
@ -311,7 +311,7 @@
return target return target
} }
// https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices
var enumerateDevicesKey = function (done, options) { var enumerateDevicesKey = function (done, options) {
if (!isEnumerateDevicesSupported()) { if (!isEnumerateDevicesSupported()) {
return done(options.NOT_AVAILABLE) return done(options.NOT_AVAILABLE)
@ -329,7 +329,7 @@
var isEnumerateDevicesSupported = function () { var isEnumerateDevicesSupported = function () {
return (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) return (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices)
} }
// Inspired by and based on https://github.com/cozylife/audio-fingerprint // Inspired by and based on https://github.com/cozylife/audio-fingerprint
var audioKey = function (done, options) { var audioKey = function (done, options) {
var audioOptions = options.audio var audioOptions = options.audio
if (audioOptions.excludeIOS11 && navigator.userAgent.match(/OS 11.+Version\/11.+Safari/)) { if (audioOptions.excludeIOS11 && navigator.userAgent.match(/OS 11.+Version\/11.+Safari/)) {
@ -370,7 +370,7 @@
var audioTimeoutId = setTimeout(function () { var audioTimeoutId = setTimeout(function () {
console.warn('Audio fingerprint timed out. Please report bug at https://github.com/Valve/fingerprintjs2 with your user agent: "' + navigator.userAgent + '".') console.warn('Audio fingerprint timed out. Please report bug at https://github.com/Valve/fingerprintjs2 with your user agent: "' + navigator.userAgent + '".')
context.oncomplete = function () {} context.oncomplete = function () { }
context = null context = null
return done('audioTimeout') return done('audioTimeout')
}, audioOptions.timeout) }, audioOptions.timeout)
@ -395,6 +395,9 @@
var UserAgent = function (done) { var UserAgent = function (done) {
done(navigator.userAgent) done(navigator.userAgent)
} }
var webdriver = function (done, options) {
done(navigator.webdriver == null ? options.NOT_AVAILABLE : navigator.webdriver)
}
var languageKey = function (done, options) { var languageKey = function (done, options) {
done(navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || options.NOT_AVAILABLE) done(navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || options.NOT_AVAILABLE)
} }
@ -502,7 +505,7 @@
var hasLiedBrowserKey = function (done) { var hasLiedBrowserKey = function (done) {
done(getHasLiedBrowser()) done(getHasLiedBrowser())
} }
// flash fonts (will increase fingerprinting time 20X to ~ 130-150ms) // flash fonts (will increase fingerprinting time 20X to ~ 130-150ms)
var flashFontsKey = function (done, options) { var flashFontsKey = function (done, options) {
// we do flash if swfobject is loaded // we do flash if swfobject is loaded
if (!hasSwfObjectLoaded()) { if (!hasSwfObjectLoaded()) {
@ -518,7 +521,7 @@
done(fonts) done(fonts)
}, options) }, options)
} }
// kudos to http://www.lalit.org/lab/javascript-css-font-detect/ // kudos to http://www.lalit.org/lab/javascript-css-font-detect/
var jsFontsKey = function (done, options) { var jsFontsKey = function (done, options) {
// a font will be compared against all the three default fonts. // a font will be compared against all the three default fonts.
// and if it doesn't match all 3 then that font is not available. // and if it doesn't match all 3 then that font is not available.
@ -815,7 +818,7 @@
} }
} }
// https://bugzilla.mozilla.org/show_bug.cgi?id=781447 // https://bugzilla.mozilla.org/show_bug.cgi?id=781447
var hasLocalStorage = function (options) { var hasLocalStorage = function (options) {
try { try {
return !!window.localStorage return !!window.localStorage
@ -857,14 +860,14 @@
return options.NOT_AVAILABLE return options.NOT_AVAILABLE
} }
} }
// This is a crude and primitive touch screen detection. // This is a crude and primitive touch screen detection.
// It's not possible to currently reliably detect the availability of a touch screen // It's not possible to currently reliably detect the availability of a touch screen
// with a JS, without actually subscribing to a touch event. // with a JS, without actually subscribing to a touch event.
// http://www.stucox.com/blog/you-cant-detect-a-touchscreen/ // http://www.stucox.com/blog/you-cant-detect-a-touchscreen/
// https://github.com/Modernizr/Modernizr/issues/548 // https://github.com/Modernizr/Modernizr/issues/548
// method returns an array of 3 values: // method returns an array of 3 values:
// maxTouchPoints, the success or failure of creating a TouchEvent, // maxTouchPoints, the success or failure of creating a TouchEvent,
// and the availability of the 'ontouchstart' property // and the availability of the 'ontouchstart' property
var getTouchSupport = function () { var getTouchSupport = function () {
var maxTouchPoints = 0 var maxTouchPoints = 0
@ -883,7 +886,7 @@
var touchStart = 'ontouchstart' in window var touchStart = 'ontouchstart' in window
return [maxTouchPoints, touchEvent, touchStart] return [maxTouchPoints, touchEvent, touchStart]
} }
// https://www.browserleaks.com/canvas#how-does-it-work // https://www.browserleaks.com/canvas#how-does-it-work
var getCanvasFp = function (options) { var getCanvasFp = function (options) {
var result = [] var result = []
@ -1087,6 +1090,7 @@
} }
var getHasLiedLanguages = function () { var getHasLiedLanguages = function () {
// We check if navigator.language is equal to the first language of navigator.languages // We check if navigator.language is equal to the first language of navigator.languages
// navigator.languages is undefined on IE11 (and potentially older IEs)
if (typeof navigator.languages !== 'undefined') { if (typeof navigator.languages !== 'undefined') {
try { try {
var firstLanguages = navigator.languages[0].substr(0, 2) var firstLanguages = navigator.languages[0].substr(0, 2)
@ -1114,7 +1118,7 @@
os = 'Windows' os = 'Windows'
} else if (userAgent.indexOf('android') >= 0) { } else if (userAgent.indexOf('android') >= 0) {
os = 'Android' os = 'Android'
} else if (userAgent.indexOf('linux') >= 0) { } else if (userAgent.indexOf('linux') >= 0 || userAgent.indexOf('cros') >= 0) {
os = 'Linux' os = 'Linux'
} else if (userAgent.indexOf('iphone') >= 0 || userAgent.indexOf('ipad') >= 0) { } else if (userAgent.indexOf('iphone') >= 0 || userAgent.indexOf('ipad') >= 0) {
os = 'iOS' os = 'iOS'
@ -1153,9 +1157,16 @@
return true return true
} else if ((platform.indexOf('mac') >= 0 || platform.indexOf('ipad') >= 0 || platform.indexOf('ipod') >= 0 || platform.indexOf('iphone') >= 0) && os !== 'Mac' && os !== 'iOS') { } else if ((platform.indexOf('mac') >= 0 || platform.indexOf('ipad') >= 0 || platform.indexOf('ipod') >= 0 || platform.indexOf('iphone') >= 0) && os !== 'Mac' && os !== 'iOS') {
return true return true
} else if ((platform.indexOf('win') === -1 && platform.indexOf('linux') === -1 && platform.indexOf('mac') === -1) !== (os === 'Other')) { } else {
var platformIsOther = platform.indexOf('win') < 0 &&
platform.indexOf('linux') < 0 &&
platform.indexOf('mac') < 0 &&
platform.indexOf('iphone') < 0 &&
platform.indexOf('ipad') < 0
if (platformIsOther !== (os === 'Other')) {
return true return true
} }
}
return typeof navigator.plugins === 'undefined' && os !== 'Windows' && os !== 'Windows Phone' return typeof navigator.plugins === 'undefined' && os !== 'Windows' && os !== 'Windows Phone'
} }
@ -1262,38 +1273,39 @@
} }
var components = [ var components = [
{key: 'userAgent', getData: UserAgent}, { key: 'userAgent', getData: UserAgent },
{key: 'language', getData: languageKey}, { key: 'webdriver', getData: webdriver },
{key: 'colorDepth', getData: colorDepthKey}, { key: 'language', getData: languageKey },
{key: 'deviceMemory', getData: deviceMemoryKey}, { key: 'colorDepth', getData: colorDepthKey },
{key: 'pixelRatio', getData: pixelRatioKey}, { key: 'deviceMemory', getData: deviceMemoryKey },
{key: 'hardwareConcurrency', getData: hardwareConcurrencyKey}, { key: 'pixelRatio', getData: pixelRatioKey },
{key: 'screenResolution', getData: screenResolutionKey}, { key: 'hardwareConcurrency', getData: hardwareConcurrencyKey },
{key: 'availableScreenResolution', getData: availableScreenResolutionKey}, { key: 'screenResolution', getData: screenResolutionKey },
{key: 'timezoneOffset', getData: timezoneOffset}, { key: 'availableScreenResolution', getData: availableScreenResolutionKey },
{key: 'timezone', getData: timezone}, { key: 'timezoneOffset', getData: timezoneOffset },
{key: 'sessionStorage', getData: sessionStorageKey}, { key: 'timezone', getData: timezone },
{key: 'localStorage', getData: localStorageKey}, { key: 'sessionStorage', getData: sessionStorageKey },
{key: 'indexedDb', getData: indexedDbKey}, { key: 'localStorage', getData: localStorageKey },
{key: 'addBehavior', getData: addBehaviorKey}, { key: 'indexedDb', getData: indexedDbKey },
{key: 'openDatabase', getData: openDatabaseKey}, { key: 'addBehavior', getData: addBehaviorKey },
{key: 'cpuClass', getData: cpuClassKey}, { key: 'openDatabase', getData: openDatabaseKey },
{key: 'platform', getData: platformKey}, { key: 'cpuClass', getData: cpuClassKey },
{key: 'doNotTrack', getData: doNotTrackKey}, { key: 'platform', getData: platformKey },
{key: 'plugins', getData: pluginsComponent}, { key: 'doNotTrack', getData: doNotTrackKey },
{key: 'canvas', getData: canvasKey}, { key: 'plugins', getData: pluginsComponent },
{key: 'webgl', getData: webglKey}, { key: 'canvas', getData: canvasKey },
{key: 'webglVendorAndRenderer', getData: webglVendorAndRendererKey}, { key: 'webgl', getData: webglKey },
{key: 'adBlock', getData: adBlockKey}, { key: 'webglVendorAndRenderer', getData: webglVendorAndRendererKey },
{key: 'hasLiedLanguages', getData: hasLiedLanguagesKey}, { key: 'adBlock', getData: adBlockKey },
{key: 'hasLiedResolution', getData: hasLiedResolutionKey}, { key: 'hasLiedLanguages', getData: hasLiedLanguagesKey },
{key: 'hasLiedOs', getData: hasLiedOsKey}, { key: 'hasLiedResolution', getData: hasLiedResolutionKey },
{key: 'hasLiedBrowser', getData: hasLiedBrowserKey}, { key: 'hasLiedOs', getData: hasLiedOsKey },
{key: 'touchSupport', getData: touchSupportKey}, { key: 'hasLiedBrowser', getData: hasLiedBrowserKey },
{key: 'fonts', getData: jsFontsKey, pauseBefore: true}, { key: 'touchSupport', getData: touchSupportKey },
{key: 'fontsFlash', getData: flashFontsKey, pauseBefore: true}, { key: 'fonts', getData: jsFontsKey, pauseBefore: true },
{key: 'audio', getData: audioKey}, { key: 'fontsFlash', getData: flashFontsKey, pauseBefore: true },
{key: 'enumerateDevices', getData: enumerateDevicesKey} { key: 'audio', getData: audioKey },
{ key: 'enumerateDevices', getData: enumerateDevicesKey }
] ]
var Fingerprint2 = function (options) { var Fingerprint2 = function (options) {
@ -1316,7 +1328,7 @@
if (typeof options.preprocessor === 'function') { if (typeof options.preprocessor === 'function') {
value = options.preprocessor(key, value) value = options.preprocessor(key, value)
} }
keys.data.push({key: key, value: value}) keys.data.push({ key: key, value: value })
} }
} }
@ -1373,30 +1385,32 @@
for (var i = 0; i < components.length; i++) { for (var i = 0; i < components.length; i++) {
var component = components[i] var component = components[i]
if (component.value === (options.NOT_AVAILABLE || 'not available')) { if (component.value === (options.NOT_AVAILABLE || 'not available')) {
newComponents.push({key: component.key, value: 'unknown'}) newComponents.push({ key: component.key, value: 'unknown' })
} else if (component.key === 'plugins') { } else if (component.key === 'plugins') {
newComponents.push({key: 'plugins', newComponents.push({
key: 'plugins',
value: map(component.value, function (p) { value: map(component.value, function (p) {
var mimeTypes = map(p[2], function (mt) { var mimeTypes = map(p[2], function (mt) {
if (mt.join) { return mt.join('~') } if (mt.join) { return mt.join('~') }
return mt return mt
}).join(',') }).join(',')
return [p[0], p[1], mimeTypes].join('::') return [p[0], p[1], mimeTypes].join('::')
})}) })
})
} else if (['canvas', 'webgl'].indexOf(component.key) !== -1) { } else if (['canvas', 'webgl'].indexOf(component.key) !== -1) {
newComponents.push({key: component.key, value: component.value.join('~')}) newComponents.push({ key: component.key, value: component.value.join('~') })
} else if (['sessionStorage', 'localStorage', 'indexedDb', 'addBehavior', 'openDatabase'].indexOf(component.key) !== -1) { } else if (['sessionStorage', 'localStorage', 'indexedDb', 'addBehavior', 'openDatabase'].indexOf(component.key) !== -1) {
if (component.value) { if (component.value) {
newComponents.push({key: component.key, value: 1}) newComponents.push({ key: component.key, value: 1 })
} else { } else {
// skip // skip
continue continue
} }
} else { } else {
if (component.value) { if (component.value) {
newComponents.push(component.value.join ? {key: component.key, value: component.value.join(';')} : component) newComponents.push(component.value.join ? { key: component.key, value: component.value.join(';') } : component)
} else { } else {
newComponents.push({key: component.key, value: component.value}) newComponents.push({ key: component.key, value: component.value })
} }
} }
} }
@ -1406,6 +1420,6 @@
} }
Fingerprint2.x64hash128 = x64hash128 Fingerprint2.x64hash128 = x64hash128
Fingerprint2.VERSION = '2.0.0' Fingerprint2.VERSION = '2.1.0'
return Fingerprint2 return Fingerprint2
}) })

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*! /*!
* jQuery JavaScript Library v3.4.0 * jQuery JavaScript Library v3.4.1
* https://jquery.com/ * https://jquery.com/
* *
* Includes Sizzle.js * Includes Sizzle.js
@ -9,7 +9,7 @@
* Released under the MIT license * Released under the MIT license
* https://jquery.org/license * https://jquery.org/license
* *
* Date: 2019-04-10T19:48Z * Date: 2019-05-01T21:04Z
*/ */
( function( global, factory ) { ( function( global, factory ) {
@ -142,7 +142,7 @@ function toType( obj ) {
var var
version = "3.4.0", version = "3.4.1",
// Define a local copy of jQuery // Define a local copy of jQuery
jQuery = function( selector, context ) { jQuery = function( selector, context ) {
@ -4498,8 +4498,12 @@ var documentElement = document.documentElement;
}, },
composed = { composed: true }; composed = { composed: true };
// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
// Check attachment across shadow DOM boundaries when possible (gh-3504) // Check attachment across shadow DOM boundaries when possible (gh-3504)
if ( documentElement.attachShadow ) { // Support: iOS 10.0-10.2 only
// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
// leading to errors. We need to check for `getRootNode`.
if ( documentElement.getRootNode ) {
isAttached = function( elem ) { isAttached = function( elem ) {
return jQuery.contains( elem.ownerDocument, elem ) || return jQuery.contains( elem.ownerDocument, elem ) ||
elem.getRootNode( composed ) === elem.ownerDocument; elem.getRootNode( composed ) === elem.ownerDocument;
@ -5359,8 +5363,7 @@ jQuery.event = {
// Claim the first handler // Claim the first handler
if ( rcheckableType.test( el.type ) && if ( rcheckableType.test( el.type ) &&
el.click && nodeName( el, "input" ) && el.click && nodeName( el, "input" ) ) {
dataPriv.get( el, "click" ) === undefined ) {
// dataPriv.set( el, "click", ... ) // dataPriv.set( el, "click", ... )
leverageNative( el, "click", returnTrue ); leverageNative( el, "click", returnTrue );
@ -5377,8 +5380,7 @@ jQuery.event = {
// Force setup before triggering a click // Force setup before triggering a click
if ( rcheckableType.test( el.type ) && if ( rcheckableType.test( el.type ) &&
el.click && nodeName( el, "input" ) && el.click && nodeName( el, "input" ) ) {
dataPriv.get( el, "click" ) === undefined ) {
leverageNative( el, "click" ); leverageNative( el, "click" );
} }
@ -5419,7 +5421,9 @@ function leverageNative( el, type, expectSync ) {
// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
if ( !expectSync ) { if ( !expectSync ) {
if ( dataPriv.get( el, type ) === undefined ) {
jQuery.event.add( el, type, returnTrue ); jQuery.event.add( el, type, returnTrue );
}
return; return;
} }
@ -5434,9 +5438,13 @@ function leverageNative( el, type, expectSync ) {
if ( ( event.isTrigger & 1 ) && this[ type ] ) { if ( ( event.isTrigger & 1 ) && this[ type ] ) {
// Interrupt processing of the outer synthetic .trigger()ed event // Interrupt processing of the outer synthetic .trigger()ed event
if ( !saved ) { // Saved data should be false in such cases, but might be a leftover capture object
// from an async native handler (gh-4350)
if ( !saved.length ) {
// Store arguments for use when handling the inner native event // Store arguments for use when handling the inner native event
// There will always be at least one argument (an event object), so this array
// will not be confused with a leftover capture object.
saved = slice.call( arguments ); saved = slice.call( arguments );
dataPriv.set( this, type, saved ); dataPriv.set( this, type, saved );
@ -5449,14 +5457,14 @@ function leverageNative( el, type, expectSync ) {
if ( saved !== result || notAsync ) { if ( saved !== result || notAsync ) {
dataPriv.set( this, type, false ); dataPriv.set( this, type, false );
} else { } else {
result = undefined; result = {};
} }
if ( saved !== result ) { if ( saved !== result ) {
// Cancel the outer synthetic event // Cancel the outer synthetic event
event.stopImmediatePropagation(); event.stopImmediatePropagation();
event.preventDefault(); event.preventDefault();
return result; return result.value;
} }
// If this is an inner synthetic event for an event with a bubbling surrogate // If this is an inner synthetic event for an event with a bubbling surrogate
@ -5471,17 +5479,19 @@ function leverageNative( el, type, expectSync ) {
// If this is a native event triggered above, everything is now in order // If this is a native event triggered above, everything is now in order
// Fire an inner synthetic event with the original arguments // Fire an inner synthetic event with the original arguments
} else if ( saved ) { } else if ( saved.length ) {
// ...and capture the result // ...and capture the result
dataPriv.set( this, type, jQuery.event.trigger( dataPriv.set( this, type, {
value: jQuery.event.trigger(
// Support: IE <=9 - 11+ // Support: IE <=9 - 11+
// Extend with the prototype to reset the above stopImmediatePropagation() // Extend with the prototype to reset the above stopImmediatePropagation()
jQuery.extend( saved.shift(), jQuery.Event.prototype ), jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
saved, saved.slice( 1 ),
this this
) ); )
} );
// Abort handling of the native event // Abort handling of the native event
event.stopImmediatePropagation(); event.stopImmediatePropagation();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long