| 12345678910111213141516171819202122232425262728293031323334353637383940 | 'use strict';var $ = require('../internals/export');var createIteratorConstructor = require('../internals/iterator-create-constructor');var createIterResultObject = require('../internals/create-iter-result-object');var requireObjectCoercible = require('../internals/require-object-coercible');var toString = require('../internals/to-string');var InternalStateModule = require('../internals/internal-state');var StringMultibyteModule = require('../internals/string-multibyte');var codeAt = StringMultibyteModule.codeAt;var charAt = StringMultibyteModule.charAt;var STRING_ITERATOR = 'String Iterator';var setInternalState = InternalStateModule.set;var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);// TODO: unify with String#@@iteratorvar $StringIterator = createIteratorConstructor(function StringIterator(string) {  setInternalState(this, {    type: STRING_ITERATOR,    string: string,    index: 0  });}, 'String', function next() {  var state = getInternalState(this);  var string = state.string;  var index = state.index;  var point;  if (index >= string.length) return createIterResultObject(undefined, true);  point = charAt(string, index);  state.index += point.length;  return createIterResultObject({ codePoint: codeAt(point, 0), position: index }, false);});// `String.prototype.codePoints` method// https://github.com/tc39/proposal-string-prototype-codepoints$({ target: 'String', proto: true, forced: true }, {  codePoints: function codePoints() {    return new $StringIterator(toString(requireObjectCoercible(this)));  }});
 |