'use strict'; 
 | 
var $ = require('../internals/export'); 
 | 
var uncurryThis = require('../internals/function-uncurry-this'); 
 | 
var toString = require('../internals/to-string'); 
 | 
  
 | 
var charAt = uncurryThis(''.charAt); 
 | 
var charCodeAt = uncurryThis(''.charCodeAt); 
 | 
var exec = uncurryThis(/./.exec); 
 | 
var numberToString = uncurryThis(1.0.toString); 
 | 
var toUpperCase = uncurryThis(''.toUpperCase); 
 | 
  
 | 
var raw = /[\w*+\-./@]/; 
 | 
  
 | 
var hex = function (code, length) { 
 | 
  var result = numberToString(code, 16); 
 | 
  while (result.length < length) result = '0' + result; 
 | 
  return result; 
 | 
}; 
 | 
  
 | 
// `escape` method 
 | 
// https://tc39.es/ecma262/#sec-escape-string 
 | 
$({ global: true }, { 
 | 
  escape: function escape(string) { 
 | 
    var str = toString(string); 
 | 
    var result = ''; 
 | 
    var length = str.length; 
 | 
    var index = 0; 
 | 
    var chr, code; 
 | 
    while (index < length) { 
 | 
      chr = charAt(str, index++); 
 | 
      if (exec(raw, chr)) { 
 | 
        result += chr; 
 | 
      } else { 
 | 
        code = charCodeAt(chr, 0); 
 | 
        if (code < 256) { 
 | 
          result += '%' + hex(code, 2); 
 | 
        } else { 
 | 
          result += '%u' + toUpperCase(hex(code, 4)); 
 | 
        } 
 | 
      } 
 | 
    } return result; 
 | 
  } 
 | 
}); 
 |