Sha256: b202779cd4ef4609c39098e7556c4c2def2f969a7ab67ca9e31745cac5ca018d

Contents?: true

Size: 993 Bytes

Versions: 81

Compression:

Stored size: 993 Bytes

Contents

'use strict';

var GetIntrinsic = require('get-intrinsic');

var CodePointAt = require('./CodePointAt');
var Type = require('./Type');

var isInteger = require('../helpers/isInteger');
var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');

var $TypeError = GetIntrinsic('%TypeError%');

// https://262.ecma-international.org/12.0/#sec-advancestringindex

module.exports = function AdvanceStringIndex(S, index, unicode) {
	if (Type(S) !== 'String') {
		throw new $TypeError('Assertion failed: `S` must be a String');
	}
	if (!isInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) {
		throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53');
	}
	if (Type(unicode) !== 'Boolean') {
		throw new $TypeError('Assertion failed: `unicode` must be a Boolean');
	}
	if (!unicode) {
		return index + 1;
	}
	var length = S.length;
	if ((index + 1) >= length) {
		return index + 1;
	}
	var cp = CodePointAt(S, index);
	return index + cp['[[CodeUnitCount]]'];
};

Version data entries

81 entries across 27 versions & 2 rubygems

Version Path
immosquare-cleaner-0.1.32 node_modules/es-abstract/2022/AdvanceStringIndex.js
immosquare-cleaner-0.1.32 node_modules/es-abstract/2021/AdvanceStringIndex.js
immosquare-cleaner-0.1.32 node_modules/es-abstract/2023/AdvanceStringIndex.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2021/AdvanceStringIndex.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2022/AdvanceStringIndex.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2023/AdvanceStringIndex.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2022/AdvanceStringIndex.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2023/AdvanceStringIndex.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2021/AdvanceStringIndex.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2023/AdvanceStringIndex.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2022/AdvanceStringIndex.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2021/AdvanceStringIndex.js
immosquare-cleaner-0.1.28 node_modules/es-abstract/2021/AdvanceStringIndex.js
immosquare-cleaner-0.1.28 node_modules/es-abstract/2023/AdvanceStringIndex.js
immosquare-cleaner-0.1.28 node_modules/es-abstract/2022/AdvanceStringIndex.js
immosquare-cleaner-0.1.27 node_modules/es-abstract/2021/AdvanceStringIndex.js
immosquare-cleaner-0.1.27 node_modules/es-abstract/2022/AdvanceStringIndex.js
immosquare-cleaner-0.1.27 node_modules/es-abstract/2023/AdvanceStringIndex.js
immosquare-cleaner-0.1.26 node_modules/es-abstract/2022/AdvanceStringIndex.js
immosquare-cleaner-0.1.26 node_modules/es-abstract/2023/AdvanceStringIndex.js