Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-inclu.../js/dist/vendor
File: wp-polyfill-formdata.js
/* formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
[0] Fix | Delete
[1] Fix | Delete
/* global FormData self Blob File */
[2] Fix | Delete
/* eslint-disable no-inner-declarations */
[3] Fix | Delete
[4] Fix | Delete
if (typeof Blob !== 'undefined' && (typeof FormData === 'undefined' || !FormData.prototype.keys)) {
[5] Fix | Delete
const global = typeof globalThis === 'object'
[6] Fix | Delete
? globalThis
[7] Fix | Delete
: typeof window === 'object'
[8] Fix | Delete
? window
[9] Fix | Delete
: typeof self === 'object' ? self : this
[10] Fix | Delete
[11] Fix | Delete
// keep a reference to native implementation
[12] Fix | Delete
const _FormData = global.FormData
[13] Fix | Delete
[14] Fix | Delete
// To be monkey patched
[15] Fix | Delete
const _send = global.XMLHttpRequest && global.XMLHttpRequest.prototype.send
[16] Fix | Delete
const _fetch = global.Request && global.fetch
[17] Fix | Delete
const _sendBeacon = global.navigator && global.navigator.sendBeacon
[18] Fix | Delete
// Might be a worker thread...
[19] Fix | Delete
const _match = global.Element && global.Element.prototype
[20] Fix | Delete
[21] Fix | Delete
// Unable to patch Request/Response constructor correctly #109
[22] Fix | Delete
// only way is to use ES6 class extend
[23] Fix | Delete
// https://github.com/babel/babel/issues/1966
[24] Fix | Delete
[25] Fix | Delete
const stringTag = global.Symbol && Symbol.toStringTag
[26] Fix | Delete
[27] Fix | Delete
// Add missing stringTags to blob and files
[28] Fix | Delete
if (stringTag) {
[29] Fix | Delete
if (!Blob.prototype[stringTag]) {
[30] Fix | Delete
Blob.prototype[stringTag] = 'Blob'
[31] Fix | Delete
}
[32] Fix | Delete
[33] Fix | Delete
if ('File' in global && !File.prototype[stringTag]) {
[34] Fix | Delete
File.prototype[stringTag] = 'File'
[35] Fix | Delete
}
[36] Fix | Delete
}
[37] Fix | Delete
[38] Fix | Delete
// Fix so you can construct your own File
[39] Fix | Delete
try {
[40] Fix | Delete
new File([], '') // eslint-disable-line
[41] Fix | Delete
} catch (a) {
[42] Fix | Delete
global.File = function File (b, d, c) {
[43] Fix | Delete
const blob = new Blob(b, c || {})
[44] Fix | Delete
const t = c && void 0 !== c.lastModified ? new Date(c.lastModified) : new Date()
[45] Fix | Delete
[46] Fix | Delete
Object.defineProperties(blob, {
[47] Fix | Delete
name: {
[48] Fix | Delete
value: d
[49] Fix | Delete
},
[50] Fix | Delete
lastModified: {
[51] Fix | Delete
value: +t
[52] Fix | Delete
},
[53] Fix | Delete
toString: {
[54] Fix | Delete
value () {
[55] Fix | Delete
return '[object File]'
[56] Fix | Delete
}
[57] Fix | Delete
}
[58] Fix | Delete
})
[59] Fix | Delete
[60] Fix | Delete
if (stringTag) {
[61] Fix | Delete
Object.defineProperty(blob, stringTag, {
[62] Fix | Delete
value: 'File'
[63] Fix | Delete
})
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
return blob
[67] Fix | Delete
}
[68] Fix | Delete
}
[69] Fix | Delete
[70] Fix | Delete
function ensureArgs (args, expected) {
[71] Fix | Delete
if (args.length < expected) {
[72] Fix | Delete
throw new TypeError(`${expected} argument required, but only ${args.length} present.`)
[73] Fix | Delete
}
[74] Fix | Delete
}
[75] Fix | Delete
[76] Fix | Delete
/**
[77] Fix | Delete
* @param {string} name
[78] Fix | Delete
* @param {string | undefined} filename
[79] Fix | Delete
* @returns {[string, File|string]}
[80] Fix | Delete
*/
[81] Fix | Delete
function normalizeArgs (name, value, filename) {
[82] Fix | Delete
if (value instanceof Blob) {
[83] Fix | Delete
filename = filename !== undefined
[84] Fix | Delete
? String(filename + '')
[85] Fix | Delete
: typeof value.name === 'string'
[86] Fix | Delete
? value.name
[87] Fix | Delete
: 'blob'
[88] Fix | Delete
[89] Fix | Delete
if (value.name !== filename || Object.prototype.toString.call(value) === '[object Blob]') {
[90] Fix | Delete
value = new File([value], filename)
[91] Fix | Delete
}
[92] Fix | Delete
return [String(name), value]
[93] Fix | Delete
}
[94] Fix | Delete
return [String(name), String(value)]
[95] Fix | Delete
}
[96] Fix | Delete
[97] Fix | Delete
// normalize line feeds for textarea
[98] Fix | Delete
// https://html.spec.whatwg.org/multipage/form-elements.html#textarea-line-break-normalisation-transformation
[99] Fix | Delete
function normalizeLinefeeds (value) {
[100] Fix | Delete
return value.replace(/\r?\n|\r/g, '\r\n')
[101] Fix | Delete
}
[102] Fix | Delete
[103] Fix | Delete
/**
[104] Fix | Delete
* @template T
[105] Fix | Delete
* @param {ArrayLike<T>} arr
[106] Fix | Delete
* @param {{ (elm: T): void; }} cb
[107] Fix | Delete
*/
[108] Fix | Delete
function each (arr, cb) {
[109] Fix | Delete
for (let i = 0; i < arr.length; i++) {
[110] Fix | Delete
cb(arr[i])
[111] Fix | Delete
}
[112] Fix | Delete
}
[113] Fix | Delete
[114] Fix | Delete
const escape = str => str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22')
[115] Fix | Delete
[116] Fix | Delete
/**
[117] Fix | Delete
* @implements {Iterable}
[118] Fix | Delete
*/
[119] Fix | Delete
class FormDataPolyfill {
[120] Fix | Delete
/**
[121] Fix | Delete
* FormData class
[122] Fix | Delete
*
[123] Fix | Delete
* @param {HTMLFormElement=} form
[124] Fix | Delete
*/
[125] Fix | Delete
constructor (form) {
[126] Fix | Delete
/** @type {[string, string|File][]} */
[127] Fix | Delete
this._data = []
[128] Fix | Delete
[129] Fix | Delete
const self = this
[130] Fix | Delete
form && each(form.elements, (/** @type {HTMLInputElement} */ elm) => {
[131] Fix | Delete
if (
[132] Fix | Delete
!elm.name ||
[133] Fix | Delete
elm.disabled ||
[134] Fix | Delete
elm.type === 'submit' ||
[135] Fix | Delete
elm.type === 'button' ||
[136] Fix | Delete
elm.matches('form fieldset[disabled] *')
[137] Fix | Delete
) return
[138] Fix | Delete
[139] Fix | Delete
if (elm.type === 'file') {
[140] Fix | Delete
const files = elm.files && elm.files.length
[141] Fix | Delete
? elm.files
[142] Fix | Delete
: [new File([], '', { type: 'application/octet-stream' })] // #78
[143] Fix | Delete
[144] Fix | Delete
each(files, file => {
[145] Fix | Delete
self.append(elm.name, file)
[146] Fix | Delete
})
[147] Fix | Delete
} else if (elm.type === 'select-multiple' || elm.type === 'select-one') {
[148] Fix | Delete
each(elm.options, opt => {
[149] Fix | Delete
!opt.disabled && opt.selected && self.append(elm.name, opt.value)
[150] Fix | Delete
})
[151] Fix | Delete
} else if (elm.type === 'checkbox' || elm.type === 'radio') {
[152] Fix | Delete
if (elm.checked) self.append(elm.name, elm.value)
[153] Fix | Delete
} else {
[154] Fix | Delete
const value = elm.type === 'textarea' ? normalizeLinefeeds(elm.value) : elm.value
[155] Fix | Delete
self.append(elm.name, value)
[156] Fix | Delete
}
[157] Fix | Delete
})
[158] Fix | Delete
}
[159] Fix | Delete
[160] Fix | Delete
/**
[161] Fix | Delete
* Append a field
[162] Fix | Delete
*
[163] Fix | Delete
* @param {string} name field name
[164] Fix | Delete
* @param {string|Blob|File} value string / blob / file
[165] Fix | Delete
* @param {string=} filename filename to use with blob
[166] Fix | Delete
* @return {undefined}
[167] Fix | Delete
*/
[168] Fix | Delete
append (name, value, filename) {
[169] Fix | Delete
ensureArgs(arguments, 2)
[170] Fix | Delete
this._data.push(normalizeArgs(name, value, filename))
[171] Fix | Delete
}
[172] Fix | Delete
[173] Fix | Delete
/**
[174] Fix | Delete
* Delete all fields values given name
[175] Fix | Delete
*
[176] Fix | Delete
* @param {string} name Field name
[177] Fix | Delete
* @return {undefined}
[178] Fix | Delete
*/
[179] Fix | Delete
delete (name) {
[180] Fix | Delete
ensureArgs(arguments, 1)
[181] Fix | Delete
const result = []
[182] Fix | Delete
name = String(name)
[183] Fix | Delete
[184] Fix | Delete
each(this._data, entry => {
[185] Fix | Delete
entry[0] !== name && result.push(entry)
[186] Fix | Delete
})
[187] Fix | Delete
[188] Fix | Delete
this._data = result
[189] Fix | Delete
}
[190] Fix | Delete
[191] Fix | Delete
/**
[192] Fix | Delete
* Iterate over all fields as [name, value]
[193] Fix | Delete
*
[194] Fix | Delete
* @return {Iterator}
[195] Fix | Delete
*/
[196] Fix | Delete
* entries () {
[197] Fix | Delete
for (var i = 0; i < this._data.length; i++) {
[198] Fix | Delete
yield this._data[i]
[199] Fix | Delete
}
[200] Fix | Delete
}
[201] Fix | Delete
[202] Fix | Delete
/**
[203] Fix | Delete
* Iterate over all fields
[204] Fix | Delete
*
[205] Fix | Delete
* @param {Function} callback Executed for each item with parameters (value, name, thisArg)
[206] Fix | Delete
* @param {Object=} thisArg `this` context for callback function
[207] Fix | Delete
*/
[208] Fix | Delete
forEach (callback, thisArg) {
[209] Fix | Delete
ensureArgs(arguments, 1)
[210] Fix | Delete
for (const [name, value] of this) {
[211] Fix | Delete
callback.call(thisArg, value, name, this)
[212] Fix | Delete
}
[213] Fix | Delete
}
[214] Fix | Delete
[215] Fix | Delete
/**
[216] Fix | Delete
* Return first field value given name
[217] Fix | Delete
* or null if non existent
[218] Fix | Delete
*
[219] Fix | Delete
* @param {string} name Field name
[220] Fix | Delete
* @return {string|File|null} value Fields value
[221] Fix | Delete
*/
[222] Fix | Delete
get (name) {
[223] Fix | Delete
ensureArgs(arguments, 1)
[224] Fix | Delete
const entries = this._data
[225] Fix | Delete
name = String(name)
[226] Fix | Delete
for (let i = 0; i < entries.length; i++) {
[227] Fix | Delete
if (entries[i][0] === name) {
[228] Fix | Delete
return entries[i][1]
[229] Fix | Delete
}
[230] Fix | Delete
}
[231] Fix | Delete
return null
[232] Fix | Delete
}
[233] Fix | Delete
[234] Fix | Delete
/**
[235] Fix | Delete
* Return all fields values given name
[236] Fix | Delete
*
[237] Fix | Delete
* @param {string} name Fields name
[238] Fix | Delete
* @return {Array} [{String|File}]
[239] Fix | Delete
*/
[240] Fix | Delete
getAll (name) {
[241] Fix | Delete
ensureArgs(arguments, 1)
[242] Fix | Delete
const result = []
[243] Fix | Delete
name = String(name)
[244] Fix | Delete
each(this._data, data => {
[245] Fix | Delete
data[0] === name && result.push(data[1])
[246] Fix | Delete
})
[247] Fix | Delete
[248] Fix | Delete
return result
[249] Fix | Delete
}
[250] Fix | Delete
[251] Fix | Delete
/**
[252] Fix | Delete
* Check for field name existence
[253] Fix | Delete
*
[254] Fix | Delete
* @param {string} name Field name
[255] Fix | Delete
* @return {boolean}
[256] Fix | Delete
*/
[257] Fix | Delete
has (name) {
[258] Fix | Delete
ensureArgs(arguments, 1)
[259] Fix | Delete
name = String(name)
[260] Fix | Delete
for (let i = 0; i < this._data.length; i++) {
[261] Fix | Delete
if (this._data[i][0] === name) {
[262] Fix | Delete
return true
[263] Fix | Delete
}
[264] Fix | Delete
}
[265] Fix | Delete
return false
[266] Fix | Delete
}
[267] Fix | Delete
[268] Fix | Delete
/**
[269] Fix | Delete
* Iterate over all fields name
[270] Fix | Delete
*
[271] Fix | Delete
* @return {Iterator}
[272] Fix | Delete
*/
[273] Fix | Delete
* keys () {
[274] Fix | Delete
for (const [name] of this) {
[275] Fix | Delete
yield name
[276] Fix | Delete
}
[277] Fix | Delete
}
[278] Fix | Delete
[279] Fix | Delete
/**
[280] Fix | Delete
* Overwrite all values given name
[281] Fix | Delete
*
[282] Fix | Delete
* @param {string} name Filed name
[283] Fix | Delete
* @param {string} value Field value
[284] Fix | Delete
* @param {string=} filename Filename (optional)
[285] Fix | Delete
*/
[286] Fix | Delete
set (name, value, filename) {
[287] Fix | Delete
ensureArgs(arguments, 2)
[288] Fix | Delete
name = String(name)
[289] Fix | Delete
/** @type {[string, string|File][]} */
[290] Fix | Delete
const result = []
[291] Fix | Delete
const args = normalizeArgs(name, value, filename)
[292] Fix | Delete
let replace = true
[293] Fix | Delete
[294] Fix | Delete
// - replace the first occurrence with same name
[295] Fix | Delete
// - discards the remaining with same name
[296] Fix | Delete
// - while keeping the same order items where added
[297] Fix | Delete
each(this._data, data => {
[298] Fix | Delete
data[0] === name
[299] Fix | Delete
? replace && (replace = !result.push(args))
[300] Fix | Delete
: result.push(data)
[301] Fix | Delete
})
[302] Fix | Delete
[303] Fix | Delete
replace && result.push(args)
[304] Fix | Delete
[305] Fix | Delete
this._data = result
[306] Fix | Delete
}
[307] Fix | Delete
[308] Fix | Delete
/**
[309] Fix | Delete
* Iterate over all fields
[310] Fix | Delete
*
[311] Fix | Delete
* @return {Iterator}
[312] Fix | Delete
*/
[313] Fix | Delete
* values () {
[314] Fix | Delete
for (const [, value] of this) {
[315] Fix | Delete
yield value
[316] Fix | Delete
}
[317] Fix | Delete
}
[318] Fix | Delete
[319] Fix | Delete
/**
[320] Fix | Delete
* Return a native (perhaps degraded) FormData with only a `append` method
[321] Fix | Delete
* Can throw if it's not supported
[322] Fix | Delete
*
[323] Fix | Delete
* @return {FormData}
[324] Fix | Delete
*/
[325] Fix | Delete
['_asNative'] () {
[326] Fix | Delete
const fd = new _FormData()
[327] Fix | Delete
[328] Fix | Delete
for (const [name, value] of this) {
[329] Fix | Delete
fd.append(name, value)
[330] Fix | Delete
}
[331] Fix | Delete
[332] Fix | Delete
return fd
[333] Fix | Delete
}
[334] Fix | Delete
[335] Fix | Delete
/**
[336] Fix | Delete
* [_blob description]
[337] Fix | Delete
*
[338] Fix | Delete
* @return {Blob} [description]
[339] Fix | Delete
*/
[340] Fix | Delete
['_blob'] () {
[341] Fix | Delete
const boundary = '----formdata-polyfill-' + Math.random(),
[342] Fix | Delete
chunks = [],
[343] Fix | Delete
p = `--${boundary}\r\nContent-Disposition: form-data; name="`
[344] Fix | Delete
this.forEach((value, name) => typeof value == 'string'
[345] Fix | Delete
? chunks.push(p + escape(normalizeLinefeeds(name)) + `"\r\n\r\n${normalizeLinefeeds(value)}\r\n`)
[346] Fix | Delete
: chunks.push(p + escape(normalizeLinefeeds(name)) + `"; filename="${escape(value.name)}"\r\nContent-Type: ${value.type||"application/octet-stream"}\r\n\r\n`, value, `\r\n`))
[347] Fix | Delete
chunks.push(`--${boundary}--`)
[348] Fix | Delete
return new Blob(chunks, {
[349] Fix | Delete
type: "multipart/form-data; boundary=" + boundary
[350] Fix | Delete
})
[351] Fix | Delete
}
[352] Fix | Delete
[353] Fix | Delete
/**
[354] Fix | Delete
* The class itself is iterable
[355] Fix | Delete
* alias for formdata.entries()
[356] Fix | Delete
*
[357] Fix | Delete
* @return {Iterator}
[358] Fix | Delete
*/
[359] Fix | Delete
[Symbol.iterator] () {
[360] Fix | Delete
return this.entries()
[361] Fix | Delete
}
[362] Fix | Delete
[363] Fix | Delete
/**
[364] Fix | Delete
* Create the default string description.
[365] Fix | Delete
*
[366] Fix | Delete
* @return {string} [object FormData]
[367] Fix | Delete
*/
[368] Fix | Delete
toString () {
[369] Fix | Delete
return '[object FormData]'
[370] Fix | Delete
}
[371] Fix | Delete
}
[372] Fix | Delete
[373] Fix | Delete
if (_match && !_match.matches) {
[374] Fix | Delete
_match.matches =
[375] Fix | Delete
_match.matchesSelector ||
[376] Fix | Delete
_match.mozMatchesSelector ||
[377] Fix | Delete
_match.msMatchesSelector ||
[378] Fix | Delete
_match.oMatchesSelector ||
[379] Fix | Delete
_match.webkitMatchesSelector ||
[380] Fix | Delete
function (s) {
[381] Fix | Delete
var matches = (this.document || this.ownerDocument).querySelectorAll(s)
[382] Fix | Delete
var i = matches.length
[383] Fix | Delete
while (--i >= 0 && matches.item(i) !== this) {}
[384] Fix | Delete
return i > -1
[385] Fix | Delete
}
[386] Fix | Delete
}
[387] Fix | Delete
[388] Fix | Delete
if (stringTag) {
[389] Fix | Delete
/**
[390] Fix | Delete
* Create the default string description.
[391] Fix | Delete
* It is accessed internally by the Object.prototype.toString().
[392] Fix | Delete
*/
[393] Fix | Delete
FormDataPolyfill.prototype[stringTag] = 'FormData'
[394] Fix | Delete
}
[395] Fix | Delete
[396] Fix | Delete
// Patch xhr's send method to call _blob transparently
[397] Fix | Delete
if (_send) {
[398] Fix | Delete
const setRequestHeader = global.XMLHttpRequest.prototype.setRequestHeader
[399] Fix | Delete
[400] Fix | Delete
global.XMLHttpRequest.prototype.setRequestHeader = function (name, value) {
[401] Fix | Delete
setRequestHeader.call(this, name, value)
[402] Fix | Delete
if (name.toLowerCase() === 'content-type') this._hasContentType = true
[403] Fix | Delete
}
[404] Fix | Delete
[405] Fix | Delete
global.XMLHttpRequest.prototype.send = function (data) {
[406] Fix | Delete
// need to patch send b/c old IE don't send blob's type (#44)
[407] Fix | Delete
if (data instanceof FormDataPolyfill) {
[408] Fix | Delete
const blob = data['_blob']()
[409] Fix | Delete
if (!this._hasContentType) this.setRequestHeader('Content-Type', blob.type)
[410] Fix | Delete
_send.call(this, blob)
[411] Fix | Delete
} else {
[412] Fix | Delete
_send.call(this, data)
[413] Fix | Delete
}
[414] Fix | Delete
}
[415] Fix | Delete
}
[416] Fix | Delete
[417] Fix | Delete
// Patch fetch's function to call _blob transparently
[418] Fix | Delete
if (_fetch) {
[419] Fix | Delete
global.fetch = function (input, init) {
[420] Fix | Delete
if (init && init.body && init.body instanceof FormDataPolyfill) {
[421] Fix | Delete
init.body = init.body['_blob']()
[422] Fix | Delete
}
[423] Fix | Delete
[424] Fix | Delete
return _fetch.call(this, input, init)
[425] Fix | Delete
}
[426] Fix | Delete
}
[427] Fix | Delete
[428] Fix | Delete
// Patch navigator.sendBeacon to use native FormData
[429] Fix | Delete
if (_sendBeacon) {
[430] Fix | Delete
global.navigator.sendBeacon = function (url, data) {
[431] Fix | Delete
if (data instanceof FormDataPolyfill) {
[432] Fix | Delete
data = data['_asNative']()
[433] Fix | Delete
}
[434] Fix | Delete
return _sendBeacon.call(this, url, data)
[435] Fix | Delete
}
[436] Fix | Delete
}
[437] Fix | Delete
[438] Fix | Delete
global['FormData'] = FormDataPolyfill
[439] Fix | Delete
}
[440] Fix | Delete
[441] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function