59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'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;
 |