You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					59 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					59 lines
				
				1.4 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | import toFormData from './toFormData.js'; | ||
|  | 
 | ||
|  | /** | ||
|  |  * It encodes a string by replacing all characters that are not in the unreserved set with | ||
|  |  * their percent-encoded equivalents | ||
|  |  * | ||
|  |  * @param {string} str - The string to encode. | ||
|  |  * | ||
|  |  * @returns {string} The encoded string. | ||
|  |  */ | ||
|  | function encode(str) { | ||
|  |   const charMap = { | ||
|  |     '!': '%21', | ||
|  |     "'": '%27', | ||
|  |     '(': '%28', | ||
|  |     ')': '%29', | ||
|  |     '~': '%7E', | ||
|  |     '%20': '+', | ||
|  |     '%00': '\x00' | ||
|  |   }; | ||
|  |   return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { | ||
|  |     return charMap[match]; | ||
|  |   }); | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * It takes a params object and converts it to a FormData object | ||
|  |  * | ||
|  |  * @param {Object<string, any>} params - The parameters to be converted to a FormData object. | ||
|  |  * @param {Object<string, any>} options - The options object passed to the Axios constructor. | ||
|  |  * | ||
|  |  * @returns {void} | ||
|  |  */ | ||
|  | function AxiosURLSearchParams(params, options) { | ||
|  |   this._pairs = []; | ||
|  | 
 | ||
|  |   params && toFormData(params, this, options); | ||
|  | } | ||
|  | 
 | ||
|  | const prototype = AxiosURLSearchParams.prototype; | ||
|  | 
 | ||
|  | prototype.append = function append(name, value) { | ||
|  |   this._pairs.push([name, value]); | ||
|  | }; | ||
|  | 
 | ||
|  | prototype.toString = function toString(encoder) { | ||
|  |   const _encode = encoder ? function(value) { | ||
|  |     return encoder.call(this, value, encode); | ||
|  |   } : encode; | ||
|  | 
 | ||
|  |   return this._pairs.map(function each(pair) { | ||
|  |     return _encode(pair[0]) + '=' + _encode(pair[1]); | ||
|  |   }, '').join('&'); | ||
|  | }; | ||
|  | 
 | ||
|  | export default AxiosURLSearchParams; |