Add Prettier (babel/babel-eslint#491)
This commit is contained in:
parent
001064885d
commit
94e69f399b
@ -1,9 +1,13 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
extends: "babel",
|
||||
"plugins": [
|
||||
"prettier"
|
||||
],
|
||||
rules: {
|
||||
"no-var": 0,
|
||||
"max-len": 0
|
||||
"max-len": 0,
|
||||
"prettier/prettier": ["error", { "trailingComma": "es5" }],
|
||||
},
|
||||
env: {
|
||||
node: true,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
// comment fixes
|
||||
module.exports = function (ast, comments, tokens) {
|
||||
module.exports = function(ast, comments, tokens) {
|
||||
if (comments.length) {
|
||||
var firstComment = comments[0];
|
||||
var lastComment = comments[comments.length - 1];
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = function (comments) {
|
||||
module.exports = function(comments) {
|
||||
for (var i = 0; i < comments.length; i++) {
|
||||
var comment = comments[i];
|
||||
if (comment.type === "CommentBlock") {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = function (tokens, tt) {
|
||||
module.exports = function(tokens, tt) {
|
||||
var startingToken = 0;
|
||||
var currentToken = 0;
|
||||
var numBraces = 0; // track use of {}
|
||||
@ -11,14 +11,15 @@ module.exports = function (tokens, tt) {
|
||||
}
|
||||
|
||||
function isTemplateStarter(token) {
|
||||
return isBackQuote(token) ||
|
||||
return (
|
||||
isBackQuote(token) ||
|
||||
// only can be a template starter when in a template already
|
||||
tokens[token].type === tt.braceR && numBackQuotes > 0;
|
||||
(tokens[token].type === tt.braceR && numBackQuotes > 0)
|
||||
);
|
||||
}
|
||||
|
||||
function isTemplateEnder(token) {
|
||||
return isBackQuote(token) ||
|
||||
tokens[token].type === tt.dollarBraceL;
|
||||
return isBackQuote(token) || tokens[token].type === tt.dollarBraceL;
|
||||
}
|
||||
|
||||
// append the values between start and end
|
||||
@ -44,8 +45,8 @@ module.exports = function (tokens, tt) {
|
||||
end: tokens[end].end,
|
||||
loc: {
|
||||
start: tokens[start].loc.start,
|
||||
end: tokens[end].loc.end
|
||||
}
|
||||
end: tokens[end].loc.end,
|
||||
},
|
||||
};
|
||||
|
||||
// put new token in place of old tokens
|
||||
@ -70,7 +71,10 @@ module.exports = function (tokens, tt) {
|
||||
currentToken = startingToken + 1;
|
||||
|
||||
// check if token after template start is "template"
|
||||
if (currentToken >= tokens.length - 1 || tokens[currentToken].type !== tt.template) {
|
||||
if (
|
||||
currentToken >= tokens.length - 1 ||
|
||||
tokens[currentToken].type !== tt.template
|
||||
) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ var convertComments = require("./convertComments");
|
||||
var toTokens = require("./toTokens");
|
||||
var toAST = require("./toAST");
|
||||
|
||||
module.exports = function (ast, traverse, tt, code) {
|
||||
module.exports = function(ast, traverse, tt, code) {
|
||||
// remove EOF token, eslint doesn't use this for anything and it interferes
|
||||
// with some rules see https://github.com/babel/babel-eslint/issues/2
|
||||
// todo: find a more elegant way to do this
|
||||
|
||||
@ -3,12 +3,18 @@
|
||||
var t = require("babel-types");
|
||||
var convertComments = require("./convertComments");
|
||||
|
||||
module.exports = function (ast, traverse, code) {
|
||||
module.exports = function(ast, traverse, code) {
|
||||
var state = { source: code };
|
||||
|
||||
// Monkey patch visitor keys in order to be able to traverse the estree nodes
|
||||
t.VISITOR_KEYS.Property = t.VISITOR_KEYS.ObjectProperty;
|
||||
t.VISITOR_KEYS.MethodDefinition = ["key", "value", "decorators", "returnType", "typeParameters"];
|
||||
t.VISITOR_KEYS.MethodDefinition = [
|
||||
"key",
|
||||
"value",
|
||||
"decorators",
|
||||
"returnType",
|
||||
"typeParameters",
|
||||
];
|
||||
|
||||
traverse(ast, astTransformVisitor, null, state);
|
||||
|
||||
@ -18,7 +24,7 @@ module.exports = function (ast, traverse, code) {
|
||||
|
||||
var astTransformVisitor = {
|
||||
noScope: true,
|
||||
enter (path) {
|
||||
enter(path) {
|
||||
var node = path.node;
|
||||
|
||||
// private var to track original node type
|
||||
@ -37,7 +43,7 @@ var astTransformVisitor = {
|
||||
convertComments(node.leadingComments);
|
||||
}
|
||||
},
|
||||
exit (path) {
|
||||
exit(path) {
|
||||
var node = path.node;
|
||||
|
||||
if (path.isJSXText()) {
|
||||
@ -49,11 +55,19 @@ var astTransformVisitor = {
|
||||
if (!node.shorthand) node.shorthand = false;
|
||||
}
|
||||
|
||||
if (path.isRestElement() && path.parent && path.parent.type === "ObjectPattern") {
|
||||
if (
|
||||
path.isRestElement() &&
|
||||
path.parent &&
|
||||
path.parent.type === "ObjectPattern"
|
||||
) {
|
||||
node.type = "ExperimentalRestProperty";
|
||||
}
|
||||
|
||||
if (path.isSpreadElement() && path.parent && path.parent.type === "ObjectExpression") {
|
||||
if (
|
||||
path.isSpreadElement() &&
|
||||
path.parent &&
|
||||
path.parent.type === "ObjectExpression"
|
||||
) {
|
||||
node.type = "ExperimentalSpreadProperty";
|
||||
}
|
||||
|
||||
@ -105,5 +119,5 @@ var astTransformVisitor = {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,29 +1,47 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = function (token, tt, source) {
|
||||
module.exports = function(token, tt, source) {
|
||||
var type = token.type;
|
||||
token.range = [token.start, token.end];
|
||||
|
||||
if (type === tt.name) {
|
||||
token.type = "Identifier";
|
||||
} else if (type === tt.semi || type === tt.comma ||
|
||||
type === tt.parenL || type === tt.parenR ||
|
||||
type === tt.braceL || type === tt.braceR ||
|
||||
type === tt.slash || type === tt.dot ||
|
||||
type === tt.bracketL || type === tt.bracketR ||
|
||||
type === tt.ellipsis || type === tt.arrow ||
|
||||
type === tt.star || type === tt.incDec ||
|
||||
type === tt.colon || type === tt.question ||
|
||||
type === tt.template || type === tt.backQuote ||
|
||||
type === tt.dollarBraceL || type === tt.at ||
|
||||
type === tt.logicalOR || type === tt.logicalAND ||
|
||||
type === tt.bitwiseOR || type === tt.bitwiseXOR ||
|
||||
type === tt.bitwiseAND || type === tt.equality ||
|
||||
type === tt.relational || type === tt.bitShift ||
|
||||
type === tt.plusMin || type === tt.modulo ||
|
||||
type === tt.exponent || type === tt.prefix ||
|
||||
} else if (
|
||||
type === tt.semi ||
|
||||
type === tt.comma ||
|
||||
type === tt.parenL ||
|
||||
type === tt.parenR ||
|
||||
type === tt.braceL ||
|
||||
type === tt.braceR ||
|
||||
type === tt.slash ||
|
||||
type === tt.dot ||
|
||||
type === tt.bracketL ||
|
||||
type === tt.bracketR ||
|
||||
type === tt.ellipsis ||
|
||||
type === tt.arrow ||
|
||||
type === tt.star ||
|
||||
type === tt.incDec ||
|
||||
type === tt.colon ||
|
||||
type === tt.question ||
|
||||
type === tt.template ||
|
||||
type === tt.backQuote ||
|
||||
type === tt.dollarBraceL ||
|
||||
type === tt.at ||
|
||||
type === tt.logicalOR ||
|
||||
type === tt.logicalAND ||
|
||||
type === tt.bitwiseOR ||
|
||||
type === tt.bitwiseXOR ||
|
||||
type === tt.bitwiseAND ||
|
||||
type === tt.equality ||
|
||||
type === tt.relational ||
|
||||
type === tt.bitShift ||
|
||||
type === tt.plusMin ||
|
||||
type === tt.modulo ||
|
||||
type === tt.exponent ||
|
||||
type === tt.prefix ||
|
||||
type === tt.doubleColon ||
|
||||
type.isAssign) {
|
||||
type.isAssign
|
||||
) {
|
||||
token.type = "Punctuator";
|
||||
if (!token.value) token.value = type.label;
|
||||
} else if (type === tt.jsxTagStart) {
|
||||
@ -53,7 +71,7 @@ module.exports = function (token, tt, source) {
|
||||
var value = token.value;
|
||||
token.regex = {
|
||||
pattern: value.pattern,
|
||||
flags: value.flags
|
||||
flags: value.flags,
|
||||
};
|
||||
token.value = `/${value.pattern}/${value.flags}`;
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
var convertTemplateType = require("./convertTemplateType");
|
||||
var toToken = require("./toToken");
|
||||
|
||||
module.exports = function (tokens, tt, code) {
|
||||
module.exports = function(tokens, tt, code) {
|
||||
// transform tokens to type "Template"
|
||||
convertTemplateType(tokens, tt);
|
||||
|
||||
|
||||
@ -30,7 +30,8 @@ function getModules() {
|
||||
|
||||
try {
|
||||
var escope = eslintMod.require("eslint-scope");
|
||||
var Definition = eslintMod.require("eslint-scope/lib/definition").Definition;
|
||||
var Definition = eslintMod.require("eslint-scope/lib/definition")
|
||||
.Definition;
|
||||
var referencer = eslintMod.require("eslint-scope/lib/referencer");
|
||||
} catch (err) {
|
||||
escope = eslintMod.require("escope");
|
||||
@ -61,7 +62,7 @@ function monkeypatch(modules) {
|
||||
estraverse.VisitorKeys.Property.push("decorators");
|
||||
|
||||
var analyze = escope.analyze;
|
||||
escope.analyze = function (ast, opts) {
|
||||
escope.analyze = function(ast, opts) {
|
||||
opts = opts || {};
|
||||
opts.ecmaVersion = eslintOptions.ecmaVersion;
|
||||
opts.sourceType = eslintOptions.sourceType;
|
||||
@ -94,7 +95,7 @@ function monkeypatch(modules) {
|
||||
"FunctionExpression",
|
||||
"Identifier",
|
||||
"ObjectPattern",
|
||||
"RestElement"
|
||||
"RestElement",
|
||||
]);
|
||||
var visitorKeysMap = Object.keys(t.VISITOR_KEYS).reduce(function(acc, key) {
|
||||
var value = t.VISITOR_KEYS[key];
|
||||
@ -120,7 +121,7 @@ function monkeypatch(modules) {
|
||||
// others
|
||||
typeAnnotation: { type: "typeAnnotation" },
|
||||
typeParameters: { type: "typeParameters" },
|
||||
id: { type: "id" }
|
||||
id: { type: "id" },
|
||||
};
|
||||
|
||||
function visitTypeAnnotation(node) {
|
||||
@ -182,7 +183,13 @@ function monkeypatch(modules) {
|
||||
|
||||
function nestTypeParamScope(manager, node) {
|
||||
var parentScope = manager.__currentScope;
|
||||
var scope = new escope.Scope(manager, "type-parameters", parentScope, node, false);
|
||||
var scope = new escope.Scope(
|
||||
manager,
|
||||
"type-parameters",
|
||||
parentScope,
|
||||
node,
|
||||
false
|
||||
);
|
||||
manager.__nestScope(scope);
|
||||
for (var j = 0; j < node.typeParameters.params.length; j++) {
|
||||
var name = node.typeParameters.params[j];
|
||||
@ -296,16 +303,10 @@ function monkeypatch(modules) {
|
||||
variableDeclaration.call(this, node);
|
||||
};
|
||||
|
||||
function createScopeVariable (node, name) {
|
||||
this.currentScope().variableScope.__define(name,
|
||||
new Definition(
|
||||
"Variable",
|
||||
function createScopeVariable(node, name) {
|
||||
this.currentScope().variableScope.__define(
|
||||
name,
|
||||
node,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
)
|
||||
new Definition("Variable", name, node, null, null, null)
|
||||
);
|
||||
}
|
||||
|
||||
@ -339,10 +340,9 @@ function monkeypatch(modules) {
|
||||
}
|
||||
};
|
||||
|
||||
referencer.prototype.DeclareModule =
|
||||
referencer.prototype.DeclareFunction =
|
||||
referencer.prototype.DeclareVariable =
|
||||
referencer.prototype.DeclareClass = function(node) {
|
||||
referencer.prototype.DeclareModule = referencer.prototype.DeclareFunction = referencer.prototype.DeclareVariable = referencer.prototype.DeclareClass = function(
|
||||
node
|
||||
) {
|
||||
if (node.id) {
|
||||
createScopeVariable.call(this, node, node.id);
|
||||
}
|
||||
@ -357,11 +357,13 @@ function monkeypatch(modules) {
|
||||
};
|
||||
}
|
||||
|
||||
exports.parse = function (code, options) {
|
||||
exports.parse = function(code, options) {
|
||||
options = options || {};
|
||||
eslintOptions.ecmaVersion = options.ecmaVersion = options.ecmaVersion || 6;
|
||||
eslintOptions.sourceType = options.sourceType = options.sourceType || "module";
|
||||
eslintOptions.allowImportExportEverywhere = options.allowImportExportEverywhere = options.allowImportExportEverywhere || false;
|
||||
eslintOptions.sourceType = options.sourceType =
|
||||
options.sourceType || "module";
|
||||
eslintOptions.allowImportExportEverywhere = options.allowImportExportEverywhere =
|
||||
options.allowImportExportEverywhere || false;
|
||||
if (options.sourceType === "module") {
|
||||
eslintOptions.globalReturn = false;
|
||||
} else {
|
||||
@ -381,7 +383,7 @@ exports.parse = function (code, options) {
|
||||
return exports.parseNoPatch(code, options);
|
||||
};
|
||||
|
||||
exports.parseNoPatch = function (code, options) {
|
||||
exports.parseNoPatch = function(code, options) {
|
||||
var opts = {
|
||||
codeFrame: options.hasOwnProperty("codeFrame") ? options.codeFrame : true,
|
||||
sourceType: options.sourceType,
|
||||
@ -410,7 +412,7 @@ exports.parseNoPatch = function (code, options) {
|
||||
"optionalChaining",
|
||||
"importMeta",
|
||||
"classPrivateProperties",
|
||||
]
|
||||
],
|
||||
};
|
||||
|
||||
var ast;
|
||||
@ -418,7 +420,6 @@ exports.parseNoPatch = function (code, options) {
|
||||
ast = parse(code, opts);
|
||||
} catch (err) {
|
||||
if (err instanceof SyntaxError) {
|
||||
|
||||
err.lineNumber = err.loc.line;
|
||||
err.column = err.loc.column;
|
||||
|
||||
@ -427,15 +428,23 @@ exports.parseNoPatch = function (code, options) {
|
||||
err.column = err.loc.column + 1;
|
||||
|
||||
// remove trailing "(LINE:COLUMN)" acorn message and add in esprima syntax error message start
|
||||
err.message = "Line " + err.lineNumber + ": " + err.message.replace(/ \((\d+):(\d+)\)$/, "") +
|
||||
err.message =
|
||||
"Line " +
|
||||
err.lineNumber +
|
||||
": " +
|
||||
err.message.replace(/ \((\d+):(\d+)\)$/, "") +
|
||||
// add codeframe
|
||||
"\n\n" +
|
||||
codeFrameColumns(code, {
|
||||
codeFrameColumns(
|
||||
code,
|
||||
{
|
||||
start: {
|
||||
line: err.lineNumber,
|
||||
column: err.column,
|
||||
},
|
||||
}, { highlightCode: true });
|
||||
},
|
||||
{ highlightCode: true }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
"test-only": "mocha",
|
||||
"lint": "eslint index.js babylon-to-espree test",
|
||||
"fix": "eslint index.js babylon-to-espree test --fix",
|
||||
"precommit": "lint-staged",
|
||||
"preversion": "npm test",
|
||||
"changelog": "git log `git describe --tags --abbrev=0`..HEAD --pretty=format:' * %s (%an)' | grep -v 'Merge pull request'"
|
||||
},
|
||||
@ -38,9 +39,19 @@
|
||||
"babel-eslint": "^7.0.0",
|
||||
"dedent": "^0.7.0",
|
||||
"eslint": "^3.18.0",
|
||||
"eslint-config-babel": "^6.0.0",
|
||||
"eslint-config-babel": "^7.0.1",
|
||||
"eslint-plugin-flowtype": "^2.30.3",
|
||||
"eslint-plugin-prettier": "^2.1.2",
|
||||
"espree": "^3.4.0",
|
||||
"mocha": "^3.0.0"
|
||||
"husky": "^0.13.2",
|
||||
"lint-staged": "^3.6.1",
|
||||
"mocha": "^3.0.0",
|
||||
"prettier": "1.4.4"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.js": [
|
||||
"eslint --format=codeframe --fix",
|
||||
"git add"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,9 +20,18 @@ function assertImplementsAST(target, source, path) {
|
||||
var typeA = target === null ? "null" : typeof target;
|
||||
var typeB = source === null ? "null" : typeof source;
|
||||
if (typeA !== typeB) {
|
||||
error(`have different types (${typeA} !== ${typeB}) (${target} !== ${source})`);
|
||||
} else if (typeA === "object" && ["RegExp"].indexOf(target.constructor.name) !== -1 && target.constructor.name !== source.constructor.name) {
|
||||
error(`object have different constructors (${target.constructor.name} !== ${source.constructor.name}`);
|
||||
error(
|
||||
`have different types (${typeA} !== ${typeB}) (${target} !== ${source})`
|
||||
);
|
||||
} else if (
|
||||
typeA === "object" &&
|
||||
["RegExp"].indexOf(target.constructor.name) !== -1 &&
|
||||
target.constructor.name !== source.constructor.name
|
||||
) {
|
||||
error(
|
||||
`object have different constructors (${target.constructor
|
||||
.name} !== ${source.constructor.name}`
|
||||
);
|
||||
} else if (typeA === "object") {
|
||||
var keysTarget = Object.keys(target);
|
||||
for (var i in keysTarget) {
|
||||
@ -32,15 +41,23 @@ function assertImplementsAST(target, source, path) {
|
||||
path.pop();
|
||||
}
|
||||
} else if (target !== source) {
|
||||
error(`are different (${JSON.stringify(target)} !== ${JSON.stringify(source)})`);
|
||||
error(
|
||||
`are different (${JSON.stringify(target)} !== ${JSON.stringify(source)})`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function lookup(obj, keypath, backwardsDepth) {
|
||||
if (!keypath) { return obj; }
|
||||
if (!keypath) {
|
||||
return obj;
|
||||
}
|
||||
|
||||
return keypath.split(".").slice(0, -1 * backwardsDepth)
|
||||
.reduce((base, segment) => { return base && base[segment], obj; });
|
||||
return keypath
|
||||
.split(".")
|
||||
.slice(0, -1 * backwardsDepth)
|
||||
.reduce((base, segment) => {
|
||||
return base && base[segment], obj;
|
||||
});
|
||||
}
|
||||
|
||||
function parseAndAssertSame(code) {
|
||||
@ -53,7 +70,7 @@ function parseAndAssertSame(code) {
|
||||
// enable implied strict mode (if ecmaVersion >= 5)
|
||||
impliedStrict: true,
|
||||
// allow experimental object rest/spread
|
||||
experimentalObjectRestSpread: true
|
||||
experimentalObjectRestSpread: true,
|
||||
},
|
||||
tokens: true,
|
||||
loc: true,
|
||||
@ -61,7 +78,7 @@ function parseAndAssertSame(code) {
|
||||
comment: true,
|
||||
attachComment: true,
|
||||
ecmaVersion: 8,
|
||||
sourceType: "module"
|
||||
sourceType: "module",
|
||||
});
|
||||
var babylonAST = babelEslint.parse(code);
|
||||
try {
|
||||
@ -76,9 +93,15 @@ function parseAndAssertSame(code) {
|
||||
}
|
||||
err.message += unpad(`
|
||||
espree:
|
||||
${util.inspect(lookup(esAST, traversal, 2), { depth: err.depth, colors: true })}
|
||||
${util.inspect(lookup(esAST, traversal, 2), {
|
||||
depth: err.depth,
|
||||
colors: true,
|
||||
})}
|
||||
babel-eslint:
|
||||
${util.inspect(lookup(babylonAST, traversal, 2), { depth: err.depth, colors: true })}
|
||||
${util.inspect(lookup(babylonAST, traversal, 2), {
|
||||
depth: err.depth,
|
||||
colors: true,
|
||||
})}
|
||||
`);
|
||||
throw err;
|
||||
}
|
||||
@ -90,9 +113,13 @@ describe("babylon-to-esprima", () => {
|
||||
it("should allow ast.analyze to be called without options", function() {
|
||||
var esAST = babelEslint.parse("`test`");
|
||||
|
||||
assert.doesNotThrow(() => {
|
||||
assert.doesNotThrow(
|
||||
() => {
|
||||
escope.analyze(esAST);
|
||||
}, TypeError, "Should allow no options argument.");
|
||||
},
|
||||
TypeError,
|
||||
"Should allow no options argument."
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@ -138,11 +165,15 @@ describe("babylon-to-esprima", () => {
|
||||
});
|
||||
|
||||
it("template with nested function/object", () => {
|
||||
parseAndAssertSame("`outer${{x: {y: 10}}}bar${`nested${function(){return 1;}}endnest`}end`");
|
||||
parseAndAssertSame(
|
||||
"`outer${{x: {y: 10}}}bar${`nested${function(){return 1;}}endnest`}end`"
|
||||
);
|
||||
});
|
||||
|
||||
it("template with braces inside and outside of template string #96", () => {
|
||||
parseAndAssertSame("if (a) { var target = `{}a:${webpackPort}{}}}}`; } else { app.use(); }");
|
||||
parseAndAssertSame(
|
||||
"if (a) { var target = `{}a:${webpackPort}{}}}}`; } else { app.use(); }"
|
||||
);
|
||||
});
|
||||
|
||||
it("template also with braces #96", () => {
|
||||
@ -218,19 +249,19 @@ describe("babylon-to-esprima", () => {
|
||||
});
|
||||
|
||||
it("default import", () => {
|
||||
parseAndAssertSame("import foo from \"foo\";");
|
||||
parseAndAssertSame('import foo from "foo";');
|
||||
});
|
||||
|
||||
it("import specifier", () => {
|
||||
parseAndAssertSame("import { foo } from \"foo\";");
|
||||
parseAndAssertSame('import { foo } from "foo";');
|
||||
});
|
||||
|
||||
it("import specifier with name", () => {
|
||||
parseAndAssertSame("import { foo as bar } from \"foo\";");
|
||||
parseAndAssertSame('import { foo as bar } from "foo";');
|
||||
});
|
||||
|
||||
it("import bare", () => {
|
||||
parseAndAssertSame("import \"foo\";");
|
||||
parseAndAssertSame('import "foo";');
|
||||
});
|
||||
|
||||
it("export default class declaration", () => {
|
||||
@ -250,7 +281,7 @@ describe("babylon-to-esprima", () => {
|
||||
});
|
||||
|
||||
it("export all", () => {
|
||||
parseAndAssertSame("export * from \"foo\";");
|
||||
parseAndAssertSame('export * from "foo";');
|
||||
});
|
||||
|
||||
it("export named", () => {
|
||||
@ -331,11 +362,11 @@ describe("babylon-to-esprima", () => {
|
||||
});
|
||||
|
||||
it("regexp in a template string", () => {
|
||||
parseAndAssertSame("`${/\\d/.exec(\"1\")[0]}`");
|
||||
parseAndAssertSame('`${/\\d/.exec("1")[0]}`');
|
||||
});
|
||||
|
||||
it("first line is empty", () => {
|
||||
parseAndAssertSame("\nimport Immutable from \"immutable\";");
|
||||
parseAndAssertSame('\nimport Immutable from "immutable";');
|
||||
});
|
||||
|
||||
it("empty", () => {
|
||||
@ -383,7 +414,9 @@ describe("babylon-to-esprima", () => {
|
||||
});
|
||||
|
||||
it("MethodDefinition 2", () => {
|
||||
parseAndAssertSame("export default class Bar { get bar() { return 42; }}");
|
||||
parseAndAssertSame(
|
||||
"export default class Bar { get bar() { return 42; }}"
|
||||
);
|
||||
});
|
||||
|
||||
it("ClassMethod", () => {
|
||||
@ -443,7 +476,7 @@ describe("babylon-to-esprima", () => {
|
||||
|
||||
it("do not allow import export everywhere", () => {
|
||||
assert.throws(() => {
|
||||
parseAndAssertSame("function F() { import a from \"a\"; }");
|
||||
parseAndAssertSame('function F() { import a from "a"; }');
|
||||
}, /SyntaxError: 'import' and 'export' may only appear at the top level/);
|
||||
});
|
||||
|
||||
|
||||
@ -13,8 +13,8 @@ var errorLevel = 2;
|
||||
var baseEslintOpts = {
|
||||
parser: require.resolve(".."),
|
||||
parserOptions: {
|
||||
sourceType: "script"
|
||||
}
|
||||
sourceType: "script",
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
@ -23,7 +23,7 @@ var baseEslintOpts = {
|
||||
* @param object opts
|
||||
* @param function done
|
||||
*/
|
||||
function lint (opts, done) {
|
||||
function lint(opts, done) {
|
||||
readFixture(opts.fixture, (err, src) => {
|
||||
if (err) return done(err);
|
||||
done(null, eslint.linter.verify(src, opts.eslint));
|
||||
@ -35,14 +35,10 @@ function lint (opts, done) {
|
||||
* @param string|array id
|
||||
* @param function done
|
||||
*/
|
||||
function readFixture (id, done) {
|
||||
function readFixture(id, done) {
|
||||
if (Array.isArray(id)) id = path.join.apply(path, id);
|
||||
if (!path.extname(id)) id += ".js";
|
||||
fs.readFile(
|
||||
path.join(paths.fixtures, id),
|
||||
encoding,
|
||||
done
|
||||
);
|
||||
fs.readFile(path.join(paths.fixtures, id), encoding, done);
|
||||
}
|
||||
// readFixture
|
||||
|
||||
@ -51,7 +47,7 @@ describe("Rules:", () => {
|
||||
});
|
||||
// describe
|
||||
|
||||
function strictSuite () {
|
||||
function strictSuite() {
|
||||
var ruleId = "strict";
|
||||
|
||||
describe("when set to 'never'", () => {
|
||||
@ -60,19 +56,20 @@ function strictSuite () {
|
||||
});
|
||||
eslintOpts.rules[ruleId] = [errorLevel, "never"];
|
||||
|
||||
["global-with", "function-with"].forEach((fixture) => {
|
||||
it(`should error on ${fixture.match(/^[^-]+/)[0]} directive`,
|
||||
(done) => {
|
||||
lint({
|
||||
["global-with", "function-with"].forEach(fixture => {
|
||||
it(`should error on ${fixture.match(/^[^-]+/)[0]} directive`, done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", fixture],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(report[0].ruleId === ruleId);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
});
|
||||
});
|
||||
@ -80,41 +77,49 @@ function strictSuite () {
|
||||
|
||||
describe("when set to 'global'", () => {
|
||||
var eslintOpts = Object.assign({}, baseEslintOpts, {
|
||||
rules: {}
|
||||
rules: {},
|
||||
});
|
||||
eslintOpts.rules[ruleId] = [errorLevel, "global"];
|
||||
|
||||
it("shouldn't error on single global directive", (done) => {
|
||||
lint({
|
||||
it("shouldn't error on single global directive", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", "global-with"],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(!report.length);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
|
||||
it("should error twice on global directive: no and function directive: yes", (done) => {
|
||||
lint({
|
||||
it("should error twice on global directive: no and function directive: yes", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", "function-with"],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
[0, 1].forEach((i) => {
|
||||
[0, 1].forEach(i => {
|
||||
assert(report[i].ruleId === ruleId);
|
||||
});
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
|
||||
it("should error on function directive", (done) => {
|
||||
lint({
|
||||
it("should error on function directive", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", "global-with-function-with"],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(report[0].ruleId === ruleId);
|
||||
|
||||
@ -124,19 +129,23 @@ function strictSuite () {
|
||||
// result of the previous assertion.
|
||||
assert(report[0].nodeType !== "Program");
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
|
||||
it("should error on no directive", (done) => {
|
||||
lint({
|
||||
it("should error on no directive", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", "none"],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(report[0].ruleId === ruleId);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
});
|
||||
@ -144,108 +153,130 @@ function strictSuite () {
|
||||
|
||||
describe("when set to 'function'", () => {
|
||||
var eslintOpts = Object.assign({}, baseEslintOpts, {
|
||||
rules: {}
|
||||
rules: {},
|
||||
});
|
||||
eslintOpts.rules[ruleId] = [errorLevel, "function"];
|
||||
|
||||
it("shouldn't error on single function directive", (done) => {
|
||||
lint({
|
||||
it("shouldn't error on single function directive", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", "function-with"],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(!report.length);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
|
||||
it("should error twice on function directive: no and global directive: yes", (done) => {
|
||||
lint({
|
||||
it("should error twice on function directive: no and global directive: yes", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", "global-with-function-without"],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
[0, 1].forEach((i) => {
|
||||
[0, 1].forEach(i => {
|
||||
assert(report[i].ruleId === ruleId);
|
||||
});
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
|
||||
it("should error on only global directive", (done) => {
|
||||
lint({
|
||||
it("should error on only global directive", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", "global-with"],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(report[0].ruleId === ruleId);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
|
||||
it("should error on extraneous global directive", (done) => {
|
||||
lint({
|
||||
it("should error on extraneous global directive", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["strict", "global-with-function-with"],
|
||||
eslint: eslintOpts,
|
||||
}, (err, report) => {
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(report[0].ruleId === ruleId);
|
||||
assert(report[0].nodeType.indexOf("Function") === -1);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
// it
|
||||
});
|
||||
// describe
|
||||
describe("When \"codeFrame\"", () => {
|
||||
describe('When "codeFrame"', () => {
|
||||
// Strip chalk colors, these are not relevant for the test
|
||||
const stripAnsi = (str) => str.replace(
|
||||
const stripAnsi = str =>
|
||||
str.replace(
|
||||
/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,
|
||||
""
|
||||
);
|
||||
|
||||
it("should display codeFrame when option is absent", (done) => {
|
||||
lint({
|
||||
it("should display codeFrame when option is absent", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["syntax-error"],
|
||||
eslint: baseEslintOpts
|
||||
}, (err, report) => {
|
||||
eslint: baseEslintOpts,
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(stripAnsi(report[0].message).indexOf("^\n 5 |") > -1);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it("should display codeFrame when option is true", (done) => {
|
||||
lint({
|
||||
it("should display codeFrame when option is true", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["syntax-error"],
|
||||
eslint: Object.assign({}, baseEslintOpts, {
|
||||
parserOptions: {
|
||||
codeFrame: true
|
||||
}
|
||||
})
|
||||
}, (err, report) => {
|
||||
codeFrame: true,
|
||||
},
|
||||
}),
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(stripAnsi(report[0].message).indexOf("^\n 5 |") > -1);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it("should not display codeFrame when option is false", (done) => {
|
||||
lint({
|
||||
it("should not display codeFrame when option is false", done => {
|
||||
lint(
|
||||
{
|
||||
fixture: ["syntax-error"],
|
||||
eslint: Object.assign({}, baseEslintOpts, {
|
||||
parserOptions: {
|
||||
codeFrame: false
|
||||
}
|
||||
})
|
||||
}, (err, report) => {
|
||||
codeFrame: false,
|
||||
},
|
||||
}),
|
||||
},
|
||||
(err, report) => {
|
||||
if (err) return done(err);
|
||||
assert(stripAnsi(report[0].message).indexOf("^\n 5 |") === -1);
|
||||
done();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@ -3,23 +3,29 @@
|
||||
var eslint = require("eslint");
|
||||
var unpad = require("dedent");
|
||||
|
||||
function verifyAndAssertMessages(code, rules, expectedMessages, sourceType, overrideConfig) {
|
||||
function verifyAndAssertMessages(
|
||||
code,
|
||||
rules,
|
||||
expectedMessages,
|
||||
sourceType,
|
||||
overrideConfig
|
||||
) {
|
||||
var config = {
|
||||
parser: require.resolve(".."),
|
||||
rules,
|
||||
env: {
|
||||
node: true,
|
||||
es6: true
|
||||
es6: true,
|
||||
},
|
||||
parserOptions: {
|
||||
ecmaVersion: 8,
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
experimentalObjectRestSpread: true,
|
||||
globalReturn: true
|
||||
globalReturn: true,
|
||||
},
|
||||
sourceType,
|
||||
},
|
||||
sourceType
|
||||
}
|
||||
};
|
||||
|
||||
if (overrideConfig) {
|
||||
@ -31,11 +37,19 @@ function verifyAndAssertMessages(code, rules, expectedMessages, sourceType, over
|
||||
var messages = eslint.linter.verify(code, config);
|
||||
|
||||
if (messages.length !== expectedMessages.length) {
|
||||
throw new Error(`Expected ${expectedMessages.length} message(s), got ${messages.length}\n${JSON.stringify(messages, null, 2)}`);
|
||||
throw new Error(
|
||||
`Expected ${expectedMessages.length} message(s), got ${messages.length}\n${JSON.stringify(
|
||||
messages,
|
||||
null,
|
||||
2
|
||||
)}`
|
||||
);
|
||||
}
|
||||
|
||||
messages.forEach((message, i) => {
|
||||
var formatedMessage = `${message.line}:${message.column} ${message.message}${(message.ruleId ? ` ${message.ruleId}` : "")}`;
|
||||
var formatedMessage = `${message.line}:${message.column} ${message.message}${message.ruleId
|
||||
? ` ${message.ruleId}`
|
||||
: ""}`;
|
||||
if (formatedMessage !== expectedMessages[i]) {
|
||||
throw new Error(
|
||||
unpad(`
|
||||
@ -50,27 +64,21 @@ function verifyAndAssertMessages(code, rules, expectedMessages, sourceType, over
|
||||
|
||||
describe("verify", () => {
|
||||
it("arrow function support (issue #1)", () => {
|
||||
verifyAndAssertMessages(
|
||||
"describe('stuff', () => {});",
|
||||
{},
|
||||
[]
|
||||
);
|
||||
verifyAndAssertMessages("describe('stuff', () => {});", {}, []);
|
||||
});
|
||||
|
||||
it("EOL validation (issue #2)", () => {
|
||||
verifyAndAssertMessages(
|
||||
"module.exports = \"something\";",
|
||||
{ "eol-last": 1, "semi": 1 },
|
||||
[ "1:30 Newline required at end of file but not found. eol-last" ]
|
||||
'module.exports = "something";',
|
||||
{ "eol-last": 1, semi: 1 },
|
||||
["1:30 Newline required at end of file but not found. eol-last"]
|
||||
);
|
||||
});
|
||||
|
||||
xit("Readable error messages (issue #3)", () => {
|
||||
verifyAndAssertMessages(
|
||||
"{ , res }",
|
||||
{},
|
||||
[ "1:3 Parsing error: Unexpected token" ]
|
||||
);
|
||||
verifyAndAssertMessages("{ , res }", {}, [
|
||||
"1:3 Parsing error: Unexpected token",
|
||||
]);
|
||||
});
|
||||
|
||||
it("Modules support (issue #5)", () => {
|
||||
@ -120,7 +128,7 @@ describe("verify", () => {
|
||||
|
||||
it("JSX attribute names marked as variables (issue #12)", () => {
|
||||
verifyAndAssertMessages(
|
||||
"module.exports = <div className=\"foo\" />",
|
||||
'module.exports = <div className="foo" />',
|
||||
{ "no-undef": 1 },
|
||||
[]
|
||||
);
|
||||
@ -136,8 +144,8 @@ describe("verify", () => {
|
||||
|
||||
it("Arrow function with non-block bodies (issue #20)", () => {
|
||||
verifyAndAssertMessages(
|
||||
"\"use strict\"; () => 1",
|
||||
{ "strict": [1, "global"] },
|
||||
'"use strict"; () => 1',
|
||||
{ strict: [1, "global"] },
|
||||
[],
|
||||
"script"
|
||||
);
|
||||
@ -145,7 +153,7 @@ describe("verify", () => {
|
||||
|
||||
it("#242", () => {
|
||||
verifyAndAssertMessages(
|
||||
"\"use strict\"; asdf;",
|
||||
'"use strict"; asdf;',
|
||||
{ "no-irregular-whitespace": 1 },
|
||||
[],
|
||||
{}
|
||||
@ -191,19 +199,11 @@ describe("verify", () => {
|
||||
});
|
||||
|
||||
it("type alias", () => {
|
||||
verifyAndAssertMessages(
|
||||
"type SomeNewType = any;",
|
||||
{ "no-undef": 1 },
|
||||
[]
|
||||
);
|
||||
verifyAndAssertMessages("type SomeNewType = any;", { "no-undef": 1 }, []);
|
||||
});
|
||||
|
||||
it("type cast expression #102", () => {
|
||||
verifyAndAssertMessages(
|
||||
"for (let a of (a: Array)) {}",
|
||||
{},
|
||||
[]
|
||||
);
|
||||
verifyAndAssertMessages("for (let a of (a: Array)) {}", {}, []);
|
||||
});
|
||||
|
||||
it("multiple nullable type annotations and return #108", () => {
|
||||
@ -231,7 +231,7 @@ describe("verify", () => {
|
||||
};
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "2:11 'Bar' is defined but never used. no-unused-vars" ]
|
||||
["2:11 'Bar' is defined but never used. no-unused-vars"]
|
||||
);
|
||||
});
|
||||
|
||||
@ -246,7 +246,7 @@ describe("verify", () => {
|
||||
new Log();
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "3:34 'T4' is defined but never used. no-unused-vars" ]
|
||||
["3:34 'T4' is defined but never used. no-unused-vars"]
|
||||
);
|
||||
});
|
||||
|
||||
@ -259,9 +259,11 @@ describe("verify", () => {
|
||||
new Foo();
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "1:1 'T' is not defined. no-undef",
|
||||
[
|
||||
"1:1 'T' is not defined. no-undef",
|
||||
"2:11 'T' is defined but never used. no-unused-vars",
|
||||
"3:1 'T' is not defined. no-undef" ]
|
||||
"3:1 'T' is not defined. no-undef",
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
@ -274,8 +276,10 @@ describe("verify", () => {
|
||||
}
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "2:11 'Log' is defined but never used. no-unused-vars",
|
||||
"2:38 'T4' is defined but never used. no-unused-vars" ]
|
||||
[
|
||||
"2:11 'Log' is defined but never used. no-unused-vars",
|
||||
"2:38 'T4' is defined but never used. no-unused-vars",
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
@ -288,9 +292,11 @@ describe("verify", () => {
|
||||
Foo;
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "1:1 'T' is not defined. no-undef",
|
||||
[
|
||||
"1:1 'T' is not defined. no-undef",
|
||||
"2:15 'T' is defined but never used. no-unused-vars",
|
||||
"3:1 'T' is not defined. no-undef" ]
|
||||
"3:1 'T' is not defined. no-undef",
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
@ -304,8 +310,10 @@ describe("verify", () => {
|
||||
};
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "2:6 'Log' is defined but never used. no-unused-vars",
|
||||
"2:29 'T3' is defined but never used. no-unused-vars" ]
|
||||
[
|
||||
"2:6 'Log' is defined but never used. no-unused-vars",
|
||||
"2:29 'T3' is defined but never used. no-unused-vars",
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
@ -318,9 +326,11 @@ describe("verify", () => {
|
||||
Foo;
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "1:1 'T' is not defined. no-undef",
|
||||
[
|
||||
"1:1 'T' is not defined. no-undef",
|
||||
"2:10 'T' is defined but never used. no-unused-vars",
|
||||
"3:1 'T' is not defined. no-undef" ]
|
||||
"3:1 'T' is not defined. no-undef",
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
@ -333,7 +343,7 @@ describe("verify", () => {
|
||||
log(1, 2);
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "3:37 'T4' is defined but never used. no-unused-vars" ]
|
||||
["3:37 'T4' is defined but never used. no-unused-vars"]
|
||||
);
|
||||
});
|
||||
|
||||
@ -346,9 +356,11 @@ describe("verify", () => {
|
||||
log;
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "1:1 'T' is not defined. no-undef",
|
||||
[
|
||||
"1:1 'T' is not defined. no-undef",
|
||||
"2:14 'T' is defined but never used. no-unused-vars",
|
||||
"3:1 'T' is not defined. no-undef" ]
|
||||
"3:1 'T' is not defined. no-undef",
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
@ -544,8 +556,10 @@ describe("verify", () => {
|
||||
var b: T = 1; b;
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "1:21 'T' is defined but never used. no-unused-vars",
|
||||
"2:8 'T' is not defined. no-undef" ]
|
||||
[
|
||||
"1:21 'T' is defined but never used. no-unused-vars",
|
||||
"2:8 'T' is not defined. no-undef",
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
@ -556,7 +570,7 @@ describe("verify", () => {
|
||||
export class Foo extends Bar<T> {}
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ "2:30 'T' is not defined. no-undef" ]
|
||||
["2:30 'T' is not defined. no-undef"]
|
||||
);
|
||||
});
|
||||
|
||||
@ -581,8 +595,10 @@ describe("verify", () => {
|
||||
type T = {a: number, ...U, ...V};
|
||||
`),
|
||||
{ "no-undef": 1, "no-unused-vars": 1 },
|
||||
[ "2:6 'T' is defined but never used. no-unused-vars",
|
||||
"2:31 'V' is not defined. no-undef" ]
|
||||
[
|
||||
"2:6 'T' is defined but never used. no-unused-vars",
|
||||
"2:31 'V' is not defined. no-undef",
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
@ -1289,11 +1305,9 @@ describe("verify", () => {
|
||||
});
|
||||
|
||||
it("detects minimal no-unused-vars case #120", () => {
|
||||
verifyAndAssertMessages(
|
||||
"var unused;",
|
||||
{ "no-unused-vars": 1 },
|
||||
[ "1:5 'unused' is defined but never used. no-unused-vars" ]
|
||||
);
|
||||
verifyAndAssertMessages("var unused;", { "no-unused-vars": 1 }, [
|
||||
"1:5 'unused' is defined but never used. no-unused-vars",
|
||||
]);
|
||||
});
|
||||
|
||||
// This two tests are disabled, as the feature to visit properties when
|
||||
@ -1343,7 +1357,7 @@ describe("verify", () => {
|
||||
verifyAndAssertMessages(
|
||||
"const {Bacona} = require('baconjs')",
|
||||
{ "no-undef": 1, "no-unused-vars": 1 },
|
||||
[ "1:8 'Bacona' is assigned a value but never used. no-unused-vars" ]
|
||||
["1:8 'Bacona' is assigned a value but never used. no-unused-vars"]
|
||||
);
|
||||
});
|
||||
|
||||
@ -1407,7 +1421,7 @@ describe("verify", () => {
|
||||
});
|
||||
`),
|
||||
{ "space-in-parens": 1 },
|
||||
[ ]
|
||||
[]
|
||||
);
|
||||
});
|
||||
|
||||
@ -1425,21 +1439,23 @@ describe("verify", () => {
|
||||
});
|
||||
`),
|
||||
{ "space-in-parens": 1 },
|
||||
[ ]
|
||||
[]
|
||||
);
|
||||
});
|
||||
|
||||
it("no no-undef error with rest #11", () => {
|
||||
verifyAndAssertMessages("const [a, ...rest] = ['1', '2', '3']; a; rest;",
|
||||
verifyAndAssertMessages(
|
||||
"const [a, ...rest] = ['1', '2', '3']; a; rest;",
|
||||
{ "no-undef": 1, "no-unused-vars": 1 },
|
||||
[ ]
|
||||
[]
|
||||
);
|
||||
});
|
||||
|
||||
it("async function with space-before-function-paren #168", () => {
|
||||
verifyAndAssertMessages("it('handles updates', async function() {});",
|
||||
verifyAndAssertMessages(
|
||||
"it('handles updates', async function() {});",
|
||||
{ "space-before-function-paren": [1, "never"] },
|
||||
[ ]
|
||||
[]
|
||||
);
|
||||
});
|
||||
|
||||
@ -1458,7 +1474,7 @@ describe("verify", () => {
|
||||
}
|
||||
`),
|
||||
{ "no-unused-vars": 1, "no-undef": 1 },
|
||||
[ ]
|
||||
[]
|
||||
);
|
||||
});
|
||||
|
||||
@ -1469,16 +1485,12 @@ describe("verify", () => {
|
||||
var x = 1;
|
||||
`),
|
||||
{ "no-use-before-define": 1 },
|
||||
[ "1:13 'x' was used before it was defined. no-use-before-define" ]
|
||||
["1:13 'x' was used before it was defined. no-use-before-define"]
|
||||
);
|
||||
});
|
||||
|
||||
it("jsx and stringliteral #216", () => {
|
||||
verifyAndAssertMessages(
|
||||
"<div className=''></div>",
|
||||
{},
|
||||
[]
|
||||
);
|
||||
verifyAndAssertMessages("<div className=''></div>", {}, []);
|
||||
});
|
||||
|
||||
it("getter/setter #218", () => {
|
||||
@ -1488,7 +1500,11 @@ describe("verify", () => {
|
||||
set a (v) { }
|
||||
}
|
||||
`),
|
||||
{ "space-before-function-paren": 1, "keyword-spacing": [1, { "before": true }], "indent": 1 },
|
||||
{
|
||||
"space-before-function-paren": 1,
|
||||
"keyword-spacing": [1, { before: true }],
|
||||
indent: 1,
|
||||
},
|
||||
[]
|
||||
);
|
||||
});
|
||||
@ -1531,7 +1547,7 @@ describe("verify", () => {
|
||||
var a = 123;
|
||||
`),
|
||||
{ "no-redeclare": 1 },
|
||||
[ "2:5 'a' is already defined. no-redeclare" ],
|
||||
["2:5 'a' is already defined. no-redeclare"],
|
||||
"script"
|
||||
);
|
||||
});
|
||||
@ -1543,7 +1559,7 @@ describe("verify", () => {
|
||||
var a = 123;
|
||||
`),
|
||||
{ "no-redeclare": 1 },
|
||||
[ "2:5 'a' is already defined. no-redeclare" ],
|
||||
["2:5 'a' is already defined. no-redeclare"],
|
||||
"module"
|
||||
);
|
||||
});
|
||||
@ -1552,11 +1568,13 @@ describe("verify", () => {
|
||||
verifyAndAssertMessages(
|
||||
"var leakedGlobal = 1;",
|
||||
{ "no-implicit-globals": 1 },
|
||||
[ "1:5 Implicit global variable, assign as global property instead. no-implicit-globals" ],
|
||||
[
|
||||
"1:5 Implicit global variable, assign as global property instead. no-implicit-globals",
|
||||
],
|
||||
"script",
|
||||
{
|
||||
env: {},
|
||||
parserOptions: { ecmaVersion: 6, sourceType: "script" }
|
||||
parserOptions: { ecmaVersion: 6, sourceType: "script" },
|
||||
}
|
||||
);
|
||||
});
|
||||
@ -1569,7 +1587,7 @@ describe("verify", () => {
|
||||
"module",
|
||||
{
|
||||
env: {},
|
||||
parserOptions: { ecmaVersion: 6, sourceType: "module" }
|
||||
parserOptions: { ecmaVersion: 6, sourceType: "module" },
|
||||
}
|
||||
);
|
||||
});
|
||||
@ -1582,7 +1600,7 @@ describe("verify", () => {
|
||||
null,
|
||||
{
|
||||
env: {},
|
||||
parserOptions: { ecmaVersion: 6 }
|
||||
parserOptions: { ecmaVersion: 6 },
|
||||
}
|
||||
);
|
||||
});
|
||||
@ -1599,26 +1617,23 @@ describe("verify", () => {
|
||||
"module",
|
||||
{
|
||||
env: {},
|
||||
parserOptions: { ecmaVersion: 6, sourceType: "module", allowImportExportEverywhere: true }
|
||||
parserOptions: {
|
||||
ecmaVersion: 6,
|
||||
sourceType: "module",
|
||||
allowImportExportEverywhere: true,
|
||||
},
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it("with does not crash parsing in script mode (strict off) #171", () => {
|
||||
verifyAndAssertMessages(
|
||||
"with (arguments) { length; }",
|
||||
{},
|
||||
[],
|
||||
"script"
|
||||
);
|
||||
verifyAndAssertMessages("with (arguments) { length; }", {}, [], "script");
|
||||
});
|
||||
|
||||
xit("with does crash parsing in module mode (strict on) #171", () => {
|
||||
verifyAndAssertMessages(
|
||||
"with (arguments) { length; }",
|
||||
{},
|
||||
[ "1:1 Parsing error: 'with' in strict mode" ]
|
||||
);
|
||||
verifyAndAssertMessages("with (arguments) { length; }", {}, [
|
||||
"1:1 Parsing error: 'with' in strict mode",
|
||||
]);
|
||||
});
|
||||
|
||||
it("new.target is not reported as undef #235", () => {
|
||||
@ -1638,7 +1653,7 @@ describe("verify", () => {
|
||||
}
|
||||
`),
|
||||
{ "no-undef": 1 },
|
||||
[ "2:4 'test' is not defined. no-undef" ]
|
||||
["2:4 'test' is not defined. no-undef"]
|
||||
);
|
||||
});
|
||||
|
||||
@ -1723,24 +1738,18 @@ describe("verify", () => {
|
||||
new A
|
||||
`),
|
||||
{ "no-undef": 1, "no-unused-vars": 1, "no-redeclare": 1 },
|
||||
[
|
||||
"5:11 'b' is not defined. no-undef"
|
||||
]
|
||||
["5:11 'b' is not defined. no-undef"]
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
it("dynamic import support", () => {
|
||||
verifyAndAssertMessages(
|
||||
"import('test-module').then(() => {})",
|
||||
{},
|
||||
[]
|
||||
);
|
||||
verifyAndAssertMessages("import('test-module').then(() => {})", {}, []);
|
||||
});
|
||||
|
||||
it("regex with es6 unicodeCodePointEscapes", () => {
|
||||
verifyAndAssertMessages(
|
||||
"string.replace(/[\u{0000A0}-\u{10FFFF}<>\&]/gmiu, (char) => `&#x${char.codePointAt(0).toString(16)};`);",
|
||||
"string.replace(/[\u{0000A0}-\u{10FFFF}<>&]/gmiu, (char) => `&#x${char.codePointAt(0).toString(16)};`);",
|
||||
{},
|
||||
[]
|
||||
);
|
||||
|
||||
@ -27,7 +27,7 @@ ajv@^4.7.0:
|
||||
co "^4.6.0"
|
||||
json-stable-stringify "^1.0.1"
|
||||
|
||||
ansi-escapes@^1.1.0:
|
||||
ansi-escapes@^1.0.0, ansi-escapes@^1.1.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
|
||||
|
||||
@ -39,6 +39,10 @@ ansi-styles@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
|
||||
|
||||
app-root-path@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46"
|
||||
|
||||
argparse@^1.0.7:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
|
||||
@ -259,16 +263,31 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
|
||||
strip-ansi "^3.0.0"
|
||||
supports-color "^2.0.0"
|
||||
|
||||
ci-info@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
|
||||
|
||||
circular-json@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
|
||||
|
||||
cli-cursor@^1.0.1:
|
||||
cli-cursor@^1.0.1, cli-cursor@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
|
||||
dependencies:
|
||||
restore-cursor "^1.0.1"
|
||||
|
||||
cli-spinners@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
|
||||
|
||||
cli-truncate@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
|
||||
dependencies:
|
||||
slice-ansi "0.0.4"
|
||||
string-width "^1.0.1"
|
||||
|
||||
cli-width@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
|
||||
@ -281,7 +300,7 @@ code-point-at@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
||||
|
||||
commander@2.9.0:
|
||||
commander@2.9.0, commander@^2.9.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
|
||||
dependencies:
|
||||
@ -307,12 +326,37 @@ core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
|
||||
cosmiconfig@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-1.1.0.tgz#0dea0f9804efdfb929fbb1b188e25553ea053d37"
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
js-yaml "^3.4.3"
|
||||
minimist "^1.2.0"
|
||||
object-assign "^4.0.1"
|
||||
os-homedir "^1.0.1"
|
||||
parse-json "^2.2.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
require-from-string "^1.1.0"
|
||||
|
||||
cross-spawn@^5.0.1:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
|
||||
dependencies:
|
||||
lru-cache "^4.0.1"
|
||||
shebang-command "^1.2.0"
|
||||
which "^1.2.9"
|
||||
|
||||
d@1:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
|
||||
dependencies:
|
||||
es5-ext "^0.10.9"
|
||||
|
||||
date-fns@^1.27.2:
|
||||
version "1.28.5"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.5.tgz#257cfc45d322df45ef5658665967ee841cd73faf"
|
||||
|
||||
debug@2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
|
||||
@ -356,6 +400,16 @@ doctrine@^2.0.0:
|
||||
esutils "^2.0.2"
|
||||
isarray "^1.0.0"
|
||||
|
||||
elegant-spinner@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
|
||||
|
||||
error-ex@^1.2.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
|
||||
dependencies:
|
||||
is-arrayish "^0.2.1"
|
||||
|
||||
es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
|
||||
version "0.10.15"
|
||||
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6"
|
||||
@ -421,9 +475,9 @@ escope@^3.6.0:
|
||||
esrecurse "^4.1.0"
|
||||
estraverse "^4.1.1"
|
||||
|
||||
eslint-config-babel@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-babel/-/eslint-config-babel-6.0.0.tgz#66feedf6ce6e04abe585cec1a65b5bcc96bed50a"
|
||||
eslint-config-babel@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-babel/-/eslint-config-babel-7.0.1.tgz#aac7b79f2f06f52358a5a764fdc01fde23718572"
|
||||
|
||||
eslint-plugin-flowtype@^2.30.3:
|
||||
version "2.30.3"
|
||||
@ -431,6 +485,13 @@ eslint-plugin-flowtype@^2.30.3:
|
||||
dependencies:
|
||||
lodash "^4.15.0"
|
||||
|
||||
eslint-plugin-prettier@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.1.2.tgz#4b90f4ee7f92bfbe2e926017e1ca40eb628965ea"
|
||||
dependencies:
|
||||
fast-diff "^1.1.1"
|
||||
jest-docblock "^20.0.1"
|
||||
|
||||
eslint@^3.18.0:
|
||||
version "3.18.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.18.0.tgz#647e985c4ae71502d20ac62c109f66d5104c8a4b"
|
||||
@ -514,15 +575,31 @@ event-emitter@~0.3.5:
|
||||
d "1"
|
||||
es5-ext "~0.10.14"
|
||||
|
||||
execa@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
|
||||
dependencies:
|
||||
cross-spawn "^5.0.1"
|
||||
get-stream "^3.0.0"
|
||||
is-stream "^1.1.0"
|
||||
npm-run-path "^2.0.0"
|
||||
p-finally "^1.0.0"
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
exit-hook@^1.0.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
|
||||
|
||||
fast-diff@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.1.tgz#0aea0e4e605b6a2189f0e936d4b7fbaf1b7cfd9b"
|
||||
|
||||
fast-levenshtein@~2.0.4:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
||||
|
||||
figures@^1.3.5:
|
||||
figures@^1.3.5, figures@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
|
||||
dependencies:
|
||||
@ -536,6 +613,10 @@ file-entry-cache@^2.0.0:
|
||||
flat-cache "^1.2.1"
|
||||
object-assign "^4.0.1"
|
||||
|
||||
find-parent-dir@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
|
||||
|
||||
flat-cache@^1.2.1:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
|
||||
@ -559,6 +640,10 @@ generate-object-property@^1.1.0:
|
||||
dependencies:
|
||||
is-property "^1.0.0"
|
||||
|
||||
get-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||
|
||||
glob@7.0.5:
|
||||
version "7.0.5"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.5.tgz#b4202a69099bbb4d292a7c1b95b6682b67ebdc95"
|
||||
@ -618,6 +703,15 @@ has-flag@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
|
||||
|
||||
husky@^0.13.2:
|
||||
version "0.13.4"
|
||||
resolved "https://registry.yarnpkg.com/husky/-/husky-0.13.4.tgz#48785c5028de3452a51c48c12c4f94b2124a1407"
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
find-parent-dir "^0.3.0"
|
||||
is-ci "^1.0.9"
|
||||
normalize-path "^1.0.0"
|
||||
|
||||
ignore@^3.2.0:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c"
|
||||
@ -626,6 +720,16 @@ imurmurhash@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
|
||||
indent-string@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
|
||||
dependencies:
|
||||
repeating "^2.0.0"
|
||||
|
||||
indent-string@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d"
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
@ -665,6 +769,22 @@ invariant@^2.2.0:
|
||||
dependencies:
|
||||
loose-envify "^1.0.0"
|
||||
|
||||
is-arrayish@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||
|
||||
is-ci@^1.0.9:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
|
||||
dependencies:
|
||||
ci-info "^1.0.0"
|
||||
|
||||
is-finite@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
|
||||
dependencies:
|
||||
number-is-nan "^1.0.0"
|
||||
|
||||
is-fullwidth-code-point@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
|
||||
@ -700,6 +820,10 @@ is-path-inside@^1.0.0:
|
||||
dependencies:
|
||||
path-is-inside "^1.0.1"
|
||||
|
||||
is-promise@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
|
||||
|
||||
is-property@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
|
||||
@ -710,15 +834,27 @@ is-resolvable@^1.0.0:
|
||||
dependencies:
|
||||
tryit "^1.0.1"
|
||||
|
||||
is-stream@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
|
||||
isarray@^1.0.0, isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
|
||||
jest-docblock@^20.0.1:
|
||||
version "20.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712"
|
||||
|
||||
js-tokens@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
|
||||
|
||||
js-yaml@^3.5.1:
|
||||
js-yaml@^3.4.3, js-yaml@^3.5.1:
|
||||
version "3.8.2"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.2.tgz#02d3e2c0f6beab20248d412c352203827d786721"
|
||||
dependencies:
|
||||
@ -750,6 +886,67 @@ levn@^0.3.0, levn@~0.3.0:
|
||||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
lint-staged@^3.6.1:
|
||||
version "3.6.1"
|
||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-3.6.1.tgz#24423c8b7bd99d96e15acd1ac8cb392a78e58582"
|
||||
dependencies:
|
||||
app-root-path "^2.0.0"
|
||||
cosmiconfig "^1.1.0"
|
||||
execa "^0.7.0"
|
||||
listr "^0.12.0"
|
||||
lodash.chunk "^4.2.0"
|
||||
minimatch "^3.0.0"
|
||||
npm-which "^3.0.1"
|
||||
p-map "^1.1.1"
|
||||
staged-git-files "0.0.4"
|
||||
|
||||
listr-silent-renderer@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
|
||||
|
||||
listr-update-renderer@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9"
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
cli-truncate "^0.2.1"
|
||||
elegant-spinner "^1.0.1"
|
||||
figures "^1.7.0"
|
||||
indent-string "^3.0.0"
|
||||
log-symbols "^1.0.2"
|
||||
log-update "^1.0.2"
|
||||
strip-ansi "^3.0.1"
|
||||
|
||||
listr-verbose-renderer@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz#44dc01bb0c34a03c572154d4d08cde9b1dc5620f"
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
cli-cursor "^1.0.2"
|
||||
date-fns "^1.27.2"
|
||||
figures "^1.7.0"
|
||||
|
||||
listr@^0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a"
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
cli-truncate "^0.2.1"
|
||||
figures "^1.7.0"
|
||||
indent-string "^2.1.0"
|
||||
is-promise "^2.1.0"
|
||||
is-stream "^1.1.0"
|
||||
listr-silent-renderer "^1.1.1"
|
||||
listr-update-renderer "^0.2.0"
|
||||
listr-verbose-renderer "^0.4.0"
|
||||
log-symbols "^1.0.2"
|
||||
log-update "^1.0.2"
|
||||
ora "^0.2.3"
|
||||
p-map "^1.1.1"
|
||||
rxjs "^5.0.0-beta.11"
|
||||
stream-to-observable "^0.1.0"
|
||||
strip-ansi "^3.0.1"
|
||||
|
||||
lodash._baseassign@^3.0.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
|
||||
@ -773,6 +970,10 @@ lodash._isiterateecall@^3.0.0:
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
|
||||
|
||||
lodash.chunk@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc"
|
||||
|
||||
lodash.create@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
|
||||
@ -805,13 +1006,33 @@ lodash@^4.0.0, lodash@^4.15.0, lodash@^4.2.0, lodash@^4.3.0:
|
||||
version "4.17.4"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
|
||||
|
||||
log-symbols@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
|
||||
dependencies:
|
||||
chalk "^1.0.0"
|
||||
|
||||
log-update@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1"
|
||||
dependencies:
|
||||
ansi-escapes "^1.0.0"
|
||||
cli-cursor "^1.0.2"
|
||||
|
||||
loose-envify@^1.0.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
|
||||
dependencies:
|
||||
js-tokens "^3.0.0"
|
||||
|
||||
minimatch@^3.0.2:
|
||||
lru-cache@^4.0.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55"
|
||||
dependencies:
|
||||
pseudomap "^1.0.2"
|
||||
yallist "^2.1.2"
|
||||
|
||||
minimatch@^3.0.0, minimatch@^3.0.2:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
|
||||
dependencies:
|
||||
@ -821,6 +1042,10 @@ minimist@0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
|
||||
|
||||
minimist@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
||||
|
||||
mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
||||
@ -859,6 +1084,30 @@ natural-compare@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
|
||||
normalize-path@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379"
|
||||
|
||||
npm-path@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.3.tgz#15cff4e1c89a38da77f56f6055b24f975dfb2bbe"
|
||||
dependencies:
|
||||
which "^1.2.10"
|
||||
|
||||
npm-run-path@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
||||
dependencies:
|
||||
path-key "^2.0.0"
|
||||
|
||||
npm-which@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
|
||||
dependencies:
|
||||
commander "^2.9.0"
|
||||
npm-path "^2.0.2"
|
||||
which "^1.2.10"
|
||||
|
||||
number-is-nan@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||
@ -888,10 +1137,33 @@ optionator@^0.8.2:
|
||||
type-check "~0.3.2"
|
||||
wordwrap "~1.0.0"
|
||||
|
||||
os-homedir@^1.0.0:
|
||||
ora@^0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
|
||||
dependencies:
|
||||
chalk "^1.1.1"
|
||||
cli-cursor "^1.0.2"
|
||||
cli-spinners "^0.1.2"
|
||||
object-assign "^4.0.1"
|
||||
|
||||
os-homedir@^1.0.0, os-homedir@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
|
||||
p-finally@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
||||
|
||||
p-map@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a"
|
||||
|
||||
parse-json@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
||||
dependencies:
|
||||
error-ex "^1.2.0"
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
@ -900,6 +1172,10 @@ path-is-inside@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
|
||||
|
||||
path-key@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||
|
||||
path-parse@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
|
||||
@ -926,6 +1202,10 @@ prelude-ls@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
|
||||
prettier@1.4.4:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.4.4.tgz#a8d1447b14c9bf67e6d420dcadd10fb9a4fad65a"
|
||||
|
||||
process-nextick-args@~1.0.6:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
|
||||
@ -934,6 +1214,10 @@ progress@^1.1.8:
|
||||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
|
||||
|
||||
pseudomap@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||
|
||||
readable-stream@^2.2.2:
|
||||
version "2.2.6"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816"
|
||||
@ -964,6 +1248,16 @@ regenerator-runtime@^0.10.0:
|
||||
version "0.10.3"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e"
|
||||
|
||||
repeating@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
|
||||
dependencies:
|
||||
is-finite "^1.0.0"
|
||||
|
||||
require-from-string@^1.1.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
|
||||
|
||||
require-uncached@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
|
||||
@ -1004,6 +1298,22 @@ rx-lite@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
|
||||
|
||||
rxjs@^5.0.0-beta.11:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.1.tgz#b62f757f279445d265a18a58fb0a70dc90e91626"
|
||||
dependencies:
|
||||
symbol-observable "^1.0.1"
|
||||
|
||||
shebang-command@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
|
||||
dependencies:
|
||||
shebang-regex "^1.0.0"
|
||||
|
||||
shebang-regex@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
||||
|
||||
shelljs@^0.7.5:
|
||||
version "0.7.7"
|
||||
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1"
|
||||
@ -1012,6 +1322,10 @@ shelljs@^0.7.5:
|
||||
interpret "^1.0.0"
|
||||
rechoir "^0.6.2"
|
||||
|
||||
signal-exit@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||
|
||||
slice-ansi@0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
|
||||
@ -1020,6 +1334,14 @@ sprintf-js@~1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
|
||||
staged-git-files@0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35"
|
||||
|
||||
stream-to-observable@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"
|
||||
|
||||
string-width@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
||||
@ -1039,7 +1361,7 @@ string_decoder@~0.10.x:
|
||||
version "0.10.31"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
||||
|
||||
strip-ansi@^3.0.0:
|
||||
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
||||
dependencies:
|
||||
@ -1049,6 +1371,10 @@ strip-bom@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
|
||||
|
||||
strip-eof@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
@ -1063,6 +1389,10 @@ supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
|
||||
symbol-observable@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
|
||||
|
||||
table@^3.7.8:
|
||||
version "3.8.3"
|
||||
resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
|
||||
@ -1110,6 +1440,12 @@ util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
|
||||
which@^1.2.10, which@^1.2.9:
|
||||
version "1.2.14"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
wordwrap@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
@ -1127,3 +1463,7 @@ write@^0.2.1:
|
||||
xtend@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
||||
|
||||
yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user