lib/index.esm.js
function (TO_STRING) {
  return function (that, pos) {
    var s = String(_defined(that));
    var i = _toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
}
function (TO_STRING) {
  return function (that, pos) {
    var s = String(_defined(that));
    var i = _toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
}
function ( TO_STRING ) { return function ( that , pos ) { var s = String ( _defined ( that ) ) ; var i = _toInteger ( pos ) ; var l = s . length ; var a , b ; if ( i < 0 || i >= l ) return TO_STRING ? '' : undefined ; a = s . charCodeAt ( i ) ; return a < 0xd800 || a > 0xdbff || i + 1 === l || ( b = s . charCodeAt ( i + 1 ) ) < 0xdc00 || b > 0xdfff ? TO_STRING ? s . charAt ( i ) : a : TO_STRING ? s . slice ( i , i + 2 ) : ( a - 0xd800 << 10 ) + ( b - 0xdc00 ) + 0x10000 ; } ; }
true  -> String#at false -> String#codePointAt
true - > String#at false - > String#codePointAt