| | |
| | | var $ = require('../internals/export'); |
| | | var isArray = require('../internals/is-array'); |
| | | |
| | | // eslint-disable-next-line es/no-object-isfrozen -- safe |
| | | // eslint-disable-next-line es-x/no-object-isfrozen -- safe |
| | | var isFrozen = Object.isFrozen; |
| | | |
| | | var isFrozenStringArray = function (array, allowUndefined) { |
| | |
| | | var element; |
| | | while (index < length) { |
| | | element = array[index++]; |
| | | if (!(typeof element === 'string' || (allowUndefined && typeof element === 'undefined'))) { |
| | | if (!(typeof element == 'string' || (allowUndefined && typeof element == 'undefined'))) { |
| | | return false; |
| | | } |
| | | } return length !== 0; |
| | |
| | | |
| | | // `Array.isTemplateObject` method |
| | | // https://github.com/tc39/proposal-array-is-template-object |
| | | $({ target: 'Array', stat: true }, { |
| | | $({ target: 'Array', stat: true, sham: true, forced: true }, { |
| | | isTemplateObject: function isTemplateObject(value) { |
| | | if (!isFrozenStringArray(value, true)) return false; |
| | | var raw = value.raw; |
| | | if (raw.length !== value.length || !isFrozenStringArray(raw, false)) return false; |
| | | return true; |
| | | return raw.length === value.length && isFrozenStringArray(raw, false); |
| | | } |
| | | }); |