blob: 8e27a21e8105854b372157b89b45264c2ccc7d7f [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var GetIntrinsic = require('get-intrinsic');
4
5var $TypeError = GetIntrinsic('%TypeError%');
6
7var callBound = require('call-bind/callBound');
8
9var $push = callBound('Array.prototype.push');
10
11var CodePointAt = require('./CodePointAt');
12var Type = require('./Type');
13
14// https://262.ecma-international.org/11.0/#sec-utf16decodestring
15
16module.exports = function UTF16DecodeString(string) {
17 if (Type(string) !== 'String') {
18 throw new $TypeError('Assertion failed: `string` must be a String');
19 }
20 var codePoints = [];
21 var size = string.length;
22 var position = 0;
23 while (position < size) {
24 var cp = CodePointAt(string, position);
25 $push(codePoints, cp['[[CodePoint]]']);
26 position += cp['[[CodeUnitCount]]'];
27 }
28 return codePoints;
29};