EmbyCrackedClient/web/modules/polyfills/urlsearchparams.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
6.3 KiB
JavaScript

var self=this||{};try{(URLSearchParams=>{if("+"!==new URLSearchParams("q=%2B").get("q")||"+"!==new URLSearchParams({q:"+"}).get("q")||"+"!==new URLSearchParams([["q","+"]]).get("q")||"q=%0A"!==new URLSearchParams("q=\n").toString()||"q=+%26"!==new URLSearchParams({q:" &"}).toString()||"q=%25zx"!==new URLSearchParams({q:"%zx"}).toString())throw URLSearchParams;self.URLSearchParams=URLSearchParams})(URLSearchParams)}catch(URLSearchParams){((Object,String,isArray)=>{var key,create=Object.create,defineProperty=Object.defineProperty,find=/[!'\(\)~]|%20|%00/g,findPercentSign=/%(?![0-9a-fA-F]{2})/g,plus=/\+/g,replace={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"},proto={append:function(key,value){appendTo(this._ungap,key,value)},delete:function(key){delete this._ungap[key]},get:function(key){return this.has(key)?this._ungap[key][0]:null},getAll:function(key){return this.has(key)?this._ungap[key].slice(0):[]},has:function(key){return key in this._ungap},set:function(key,value){this._ungap[key]=[String(value)]},forEach:function(callback,thisArg){var key,self=this;for(key in self._ungap)self._ungap[key].forEach(invoke,key);function invoke(value){callback.call(thisArg,value,String(key),self)}},toJSON:function(){return{}},toString:function(){var key,query=[];for(key in this._ungap)for(var encoded=encode(key),i=0,value=this._ungap[key];i<value.length;i++)query.push(encoded+"="+encode(value[i]));return query.join("&")}};for(key in proto)defineProperty(URLSearchParams.prototype,key,{configurable:!0,writable:!0,value:proto[key]});function URLSearchParams(query){var dict=create(null);switch(defineProperty(this,"_ungap",{value:dict}),!0){case!query:break;case"string"==typeof query:for(var pairs=(query="?"===query.charAt(0)?query.slice(1):query).split("&"),i=0,length=pairs.length;i<length;i++){var index=(value=pairs[i]).indexOf("=");-1<index?appendTo(dict,decode(value.slice(0,index)),decode(value.slice(index+1))):value.length&&appendTo(dict,decode(value),"")}break;case isArray(query):for(var value,i=0,length=query.length;i<length;i++)appendTo(dict,(value=query[i])[0],value[1]);break;case"forEach"in query:query.forEach(addEach,dict);break;default:for(var key in query)appendTo(dict,key,query[key])}}function addEach(value,key){appendTo(this,key,value)}function appendTo(dict,key,value){value=isArray(value)?value.join(","):value;key in dict?dict[key].push(value):dict[key]=[value]}function decode(str){return decodeURIComponent(str.replace(findPercentSign,"%25").replace(plus," "))}function encode(str){return encodeURIComponent(str).replace(find,replacer)}function replacer(match){return replace[match]}self.URLSearchParams=URLSearchParams})(Object,String,Array.isArray)}(URLSearchParamsProto=>{var iterable=!1;try{iterable=!!Symbol.iterator}catch(o_O){}function iterator(self,callback){var items=[];return self.forEach(callback,items),iterable?items[Symbol.iterator]():{next:function(){var value=items.shift();return{done:void 0===value,value:value}}}}"forEach"in URLSearchParamsProto||(URLSearchParamsProto.forEach=function(callback,thisArg){var self=this,names=Object.create(null);this.toString().replace(/=[\s\S]*?(?:&|$)/g,"=").split("=").forEach(function(name){!name.length||name in names||(names[name]=self.getAll(name)).forEach(function(value){callback.call(thisArg,value,name,self)})})}),"keys"in URLSearchParamsProto||(URLSearchParamsProto.keys=function(){return iterator(this,function(value,key){this.push(key)})}),"values"in URLSearchParamsProto||(URLSearchParamsProto.values=function(){return iterator(this,function(value,key){this.push(value)})}),"entries"in URLSearchParamsProto||(URLSearchParamsProto.entries=function(){return iterator(this,function(value,key){this.push([key,value])})}),!iterable||Symbol.iterator in URLSearchParamsProto||(URLSearchParamsProto[Symbol.iterator]=URLSearchParamsProto.entries),"sort"in URLSearchParamsProto||(URLSearchParamsProto.sort=function(){for(var i,key,value,entries=this.entries(),entry=entries.next(),done=entry.done,keys=[],values=Object.create(null);!done;)key=(value=entry.value)[0],keys.push(key),key in values||(values[key]=[]),values[key].push(value[1]),done=(entry=entries.next()).done;for(keys.sort(),i=0;i<keys.length;i++)this.delete(keys[i]);for(i=0;i<keys.length;i++)this.append(key=keys[i],values[key].shift())}),(Object=>{function updateSearchParams(sp){var append=sp.append;sp.append=URLSearchParamsProto.append,URLSearchParams.call(sp,sp._usp.search.slice(1)),sp.append=append}function verifySearchParams(obj,Class){if(!(obj instanceof Class))throw new TypeError("'searchParams' accessed on an object that does not implement interface "+Class.name)}function upgradeClass(Class){var createSearchParams,polluteSearchParams,ClassProto=Class.prototype,searchParams=gOPD(ClassProto,"searchParams"),href=gOPD(ClassProto,"href"),search=gOPD(ClassProto,"search");!searchParams&&search&&search.set&&(polluteSearchParams=(search=>{function append(name,value){URLSearchParamsProto.append.call(this,name,value),name=this.toString(),search.set.call(this._usp,name?"?"+name:"")}function del(name){URLSearchParamsProto.delete.call(this,name),name=this.toString(),search.set.call(this._usp,name?"?"+name:"")}function set(name,value){URLSearchParamsProto.set.call(this,name,value),name=this.toString(),search.set.call(this._usp,name?"?"+name:"")}return function(sp,value){return sp.append=append,sp.delete=del,sp.set=set,dP(sp,"_usp",{configurable:!0,writable:!0,value:value})}})(search),createSearchParams=function(obj,sp){return dP(obj,"_searchParams",{configurable:!0,writable:!0,value:polluteSearchParams(sp,obj)}),sp},Object.defineProperties(ClassProto,{href:{get:function(){return href.get.call(this)},set:function(value){var sp=this._searchParams;href.set.call(this,value),sp&&updateSearchParams(sp)}},search:{get:function(){return search.get.call(this)},set:function(value){var sp=this._searchParams;search.set.call(this,value),sp&&updateSearchParams(sp)}},searchParams:{get:function(){return verifySearchParams(this,Class),this._searchParams||createSearchParams(this,new URLSearchParams(this.search.slice(1)))},set:function(sp){verifySearchParams(this,Class),createSearchParams(this,sp)}}}))}var dP=Object.defineProperty,gOPD=Object.getOwnPropertyDescriptor;try{upgradeClass(HTMLAnchorElement),/^function|object$/.test(typeof URL)&&URL.prototype&&upgradeClass(URL)}catch(meh){}})(Object)})(self.URLSearchParams.prototype,Object);