| '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; | 
|   } | 
| }); |