'use strict'; var GetIntrinsic = require('get-intrinsic'); var $TypeError = GetIntrinsic('%TypeError%'); var isPrefixOf = require('../helpers/isPrefixOf'); // var callBound = require('call-bind/callBound'); // var $charAt = callBound('String.prototype.charAt'); var Type = require('./Type'); // https://262.ecma-international.org/9.0/#sec-isstringprefix module.exports = function IsStringPrefix(p, q) { if (Type(p) !== 'String') { throw new $TypeError('Assertion failed: "p" must be a String'); } if (Type(q) !== 'String') { throw new $TypeError('Assertion failed: "q" must be a String'); } return isPrefixOf(p, q); /* if (p === q || p === '') { return true; } var pLength = p.length; var qLength = q.length; if (pLength >= qLength) { return false; } // assert: pLength < qLength for (var i = 0; i < pLength; i += 1) { if ($charAt(p, i) !== $charAt(q, i)) { return false; } } return true; */ };