get-intrinsic
Advanced tools
Comparing version 1.0.1 to 1.0.2
28
index.js
@@ -190,2 +190,3 @@ 'use strict'; | ||
var $replace = bind.call(Function.call, String.prototype.replace); | ||
var $strSlice = bind.call(Function.call, String.prototype.slice); | ||
@@ -196,2 +197,9 @@ /* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ | ||
var stringToPath = function stringToPath(string) { | ||
var first = $strSlice(string, 0, 1); | ||
var last = $strSlice(string, -1); | ||
if (first === '%' && last !== '%') { | ||
throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); | ||
} else if (last === '%' && first !== '%') { | ||
throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); | ||
} | ||
var result = []; | ||
@@ -253,2 +261,13 @@ $replace(string, rePropName, function (match, number, quote, subString) { | ||
var part = parts[i]; | ||
var first = $strSlice(part, 0, 1); | ||
var last = $strSlice(part, -1); | ||
if ( | ||
( | ||
(first === '"' || first === "'" || first === '`') | ||
|| (last === '"' || last === "'" || last === '`') | ||
) | ||
&& first !== last | ||
) { | ||
throw new $SyntaxError('property names with quotes must have matching quotes'); | ||
} | ||
if (part === 'constructor' || !isOwn) { | ||
@@ -264,2 +283,8 @@ skipFurtherCaching = true; | ||
} else if (value != null) { | ||
if (!(part in value)) { | ||
if (!allowMissing) { | ||
throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); | ||
} | ||
return void undefined; | ||
} | ||
if ($gOPD && (i + 1) >= parts.length) { | ||
@@ -269,5 +294,2 @@ var desc = $gOPD(value, part); | ||
if (!allowMissing && !(part in value)) { | ||
throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); | ||
} | ||
// By convention, when a data property is converted to an accessor | ||
@@ -274,0 +296,0 @@ // property to emulate a data property that does not suffer from |
{ | ||
"name": "get-intrinsic", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Get and robustly cache all JS language-level intrinsics at first require time", | ||
@@ -46,10 +46,10 @@ "main": "index.js", | ||
"devDependencies": { | ||
"@ljharb/eslint-config": "^17.2.0", | ||
"aud": "^1.1.2", | ||
"@ljharb/eslint-config": "^17.3.0", | ||
"aud": "^1.1.3", | ||
"auto-changelog": "^2.2.1", | ||
"es-abstract": "^1.18.0-next.1", | ||
"es-value-fixtures": "^1.0.0", | ||
"eslint": "^7.12.1", | ||
"eslint": "^7.15.0", | ||
"foreach": "^2.0.5", | ||
"has-bigints": "^1.0.0", | ||
"has-bigints": "^1.0.1", | ||
"make-async-function": "^1.0.0", | ||
@@ -59,3 +59,3 @@ "make-async-generator-function": "^1.0.0", | ||
"nyc": "^10.3.2", | ||
"object-inspect": "^1.8.0", | ||
"object-inspect": "^1.9.0", | ||
"tape": "^5.0.1" | ||
@@ -62,0 +62,0 @@ }, |
@@ -45,2 +45,26 @@ 'use strict'; | ||
t['throws']( | ||
function () { GetIntrinsic('%String'); }, | ||
SyntaxError, | ||
'Leading % without trailing % throws a syntax error' | ||
); | ||
t['throws']( | ||
function () { GetIntrinsic('String%'); }, | ||
SyntaxError, | ||
'Trailing % without leading % throws a syntax error' | ||
); | ||
t['throws']( | ||
function () { GetIntrinsic("String['prototype]"); }, | ||
SyntaxError, | ||
'Dynamic property access is disallowed for intrinsics (unterminated string)' | ||
); | ||
t['throws']( | ||
function () { GetIntrinsic('%Proxy.prototype.undefined%'); }, | ||
TypeError, | ||
"Throws when middle part doesn't exist (%Proxy.prototype.undefined%)" | ||
); | ||
forEach(v.nonStrings, function (nonString) { | ||
@@ -47,0 +71,0 @@ t['throws']( |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
92891
13
473