UNPKG

core-js

Version:
17 lines (16 loc) 837 B
var toInteger = require('../internals/to-integer'); var requireObjectCoercible = require('../internals/require-object-coercible'); // CONVERT_TO_STRING: true -> String#at // CONVERT_TO_STRING: false -> String#codePointAt module.exports = function (that, pos, CONVERT_TO_STRING) { var S = String(requireObjectCoercible(that)); var position = toInteger(pos); var size = S.length; var first, second; if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; first = S.charCodeAt(position); return first < 0xd800 || first > 0xdbff || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xdc00 || second > 0xdfff ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xd800 << 10) + (second - 0xdc00) + 0x10000; };