Comparing version 5.0.1 to 6.0.0-alpha.0
@@ -0,1 +1,5 @@ | ||
v6.0.0-alpha.0 - April 12, 2019 | ||
* [`493d464`](https://github.com/eslint/espree/commit/493d464e1564aea0ea33000389771d42ddece2cb) Breaking: validate parser options (fixes #384) (#412) (薛定谔的猫) | ||
v5.0.1 - February 15, 2019 | ||
@@ -2,0 +6,0 @@ |
@@ -13,8 +13,10 @@ "use strict"; | ||
/** | ||
* Normalize ECMAScript version from the initial config | ||
* @param {number} ecmaVersion ECMAScript version from the initial config | ||
* @throws {Error} throws an error if the ecmaVersion is invalid. | ||
* @returns {number} normalized ECMAScript version | ||
*/ | ||
function normalizeEcmaVersion(ecmaVersion) { | ||
function normalizeEcmaVersion(ecmaVersion = DEFAULT_ECMA_VERSION) { | ||
if (typeof ecmaVersion === "number") { | ||
@@ -39,11 +41,41 @@ let version = ecmaVersion; | ||
default: | ||
throw new Error("Invalid ecmaVersion."); | ||
// no default | ||
} | ||
} else { | ||
return DEFAULT_ECMA_VERSION; | ||
} | ||
throw new Error("Invalid ecmaVersion."); | ||
} | ||
/** | ||
* Normalize sourceType from the initial config | ||
* @param {string} sourceType to normalize | ||
* @throws {Error} throw an error if sourceType is invalid | ||
* @returns {string} normalized sourceType | ||
*/ | ||
function normalizeSourceType(sourceType = "script") { | ||
if (sourceType === "script" || sourceType === "module") { | ||
return sourceType; | ||
} | ||
throw new Error("Invalid sourceType."); | ||
} | ||
/** | ||
* Normalize parserOptions | ||
* @param {Object} options the parser options to normalize | ||
* @throws {Error} throw an error if found invalid option. | ||
* @returns {Object} normalized options | ||
*/ | ||
function normalizeOptions(options) { | ||
const ecmaVersion = normalizeEcmaVersion(options.ecmaVersion); | ||
const sourceType = normalizeSourceType(options.sourceType); | ||
const ranges = options.range === true; | ||
const locations = options.loc === true; | ||
if (sourceType === "module" && ecmaVersion < 6) { | ||
throw new Error("sourceType 'module' is not supported when ecmaVersion < 2015. Consider adding `{ ecmaVersion: 2015 }` to the parser options."); | ||
} | ||
return Object.assign({}, options, { ecmaVersion, sourceType, ranges, locations }); | ||
} | ||
/** | ||
* Converts an Acorn comment to a Esprima comment. | ||
@@ -82,5 +114,5 @@ * @param {boolean} block True if it's a block comment, false if not. | ||
module.exports = () => Parser => class Espree extends Parser { | ||
constructor(options, code) { | ||
if (typeof options !== "object" || options === null) { | ||
options = {}; | ||
constructor(opts, code) { | ||
if (typeof opts !== "object" || opts === null) { | ||
opts = {}; | ||
} | ||
@@ -91,5 +123,4 @@ if (typeof code !== "string" && !(code instanceof String)) { | ||
const options = normalizeOptions(opts); | ||
const ecmaFeatures = options.ecmaFeatures || {}; | ||
const ecmaVersion = normalizeEcmaVersion(options.ecmaVersion); | ||
const isModule = options.sourceType === "module"; | ||
const tokenTranslator = | ||
@@ -102,7 +133,9 @@ options.tokens === true | ||
super({ | ||
ecmaVersion: isModule ? Math.max(6, ecmaVersion) : ecmaVersion, | ||
sourceType: isModule ? "module" : "script", | ||
ranges: options.range === true, | ||
locations: options.loc === true, | ||
// TODO: use {...options} when spread is supported(Node.js >= 8.3.0). | ||
ecmaVersion: options.ecmaVersion, | ||
sourceType: options.sourceType, | ||
ranges: options.ranges, | ||
locations: options.locations, | ||
// Truthy value is true for backward compatibility. | ||
@@ -109,0 +142,0 @@ allowReturnOutsideFunction: Boolean(ecmaFeatures.globalReturn), |
@@ -7,3 +7,3 @@ { | ||
"main": "espree.js", | ||
"version": "5.0.1", | ||
"version": "6.0.0-alpha.0", | ||
"files": [ | ||
@@ -10,0 +10,0 @@ "lib", |
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
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
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
64684
876
1