mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Merge pull request #265 from javascript-obfuscator/object-keys-member-expressions
Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/…
This commit is contained in:
@@ -3,6 +3,7 @@ Change Log
|
||||
v0.17.0
|
||||
---
|
||||
* **Browser version**: Added browser version dist
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/264
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/260
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/252
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/247
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+5
-5
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "javascript-obfuscator",
|
||||
"version": "0.17.0-dev.0",
|
||||
"version": "0.17.0-dev.1",
|
||||
"description": "JavaScript obfuscator",
|
||||
"keywords": [
|
||||
"obfuscator",
|
||||
@@ -54,17 +54,17 @@
|
||||
"@types/mkdirp": "0.5.2",
|
||||
"@types/mocha": "5.2.0",
|
||||
"@types/multimatch": "2.1.2",
|
||||
"@types/node": "10.1.1",
|
||||
"@types/node": "10.1.2",
|
||||
"@types/rimraf": "2.0.2",
|
||||
"@types/sinon": "4.3.3",
|
||||
"@types/string-template": "1.0.2",
|
||||
"@types/webpack-env": "1.13.6",
|
||||
"awesome-typescript-loader": "5.0.0",
|
||||
"babel-loader": "8.0.0-beta.2",
|
||||
"babel-loader": "8.0.0-beta.3",
|
||||
"chai": "4.1.2",
|
||||
"coveralls": "3.0.1",
|
||||
"istanbul": "1.1.0-alpha.1",
|
||||
"mocha": "5.1.1",
|
||||
"mocha": "5.2.0",
|
||||
"pjson": "1.0.9",
|
||||
"pre-commit": "1.2.2",
|
||||
"rimraf": "2.6.2",
|
||||
@@ -78,7 +78,7 @@
|
||||
"tslint-webpack-plugin": "1.2.2",
|
||||
"typescript": "2.8.3",
|
||||
"webpack": "4.8.3",
|
||||
"webpack-cli": "2.1.3",
|
||||
"webpack-cli": "2.1.4",
|
||||
"webpack-node-externals": "1.7.2"
|
||||
},
|
||||
"repository": {
|
||||
|
||||
@@ -20,9 +20,9 @@ import { NodeUtils } from '../../node/NodeUtils';
|
||||
@injectable()
|
||||
export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
/**
|
||||
* @type {Map<VariableDeclarator, TNodeWithScope>}
|
||||
* @type {Map<Node, TNodeWithScope>}
|
||||
*/
|
||||
private readonly cachedScopeNodesMap: Map <ESTree.VariableDeclarator, TNodeWithScope> = new Map();
|
||||
private readonly cachedScopeNodesMap: Map <ESTree.Node, TNodeWithScope> = new Map();
|
||||
|
||||
/**
|
||||
* @param {IRandomGenerator} randomGenerator
|
||||
@@ -36,22 +36,23 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {TNodeWithScope} scopeNode
|
||||
* @param {ExpressionStatement[]} expressionStatements
|
||||
* @param {Node} variableDeclarator
|
||||
* Returns host statement of object expression node
|
||||
*
|
||||
* @param {NodeGuards} node
|
||||
* @returns {Node}
|
||||
*/
|
||||
private static appendExpressionStatements (
|
||||
scopeNode: TNodeWithScope,
|
||||
expressionStatements: ESTree.ExpressionStatement[],
|
||||
variableDeclarator: ESTree.Node
|
||||
): void {
|
||||
const variableDeclaration: ESTree.Node | undefined = variableDeclarator.parentNode;
|
||||
public static getHostStatement (node: ESTree.Node): ESTree.Statement {
|
||||
const parentNode: ESTree.Node | undefined = node.parentNode;
|
||||
|
||||
if (!variableDeclaration || !NodeGuards.isVariableDeclarationNode(variableDeclaration)) {
|
||||
throw new Error('Cannot find variable declaration for variable declarator');
|
||||
if (!parentNode) {
|
||||
throw new ReferenceError('`parentNode` property of given node is `undefined`');
|
||||
}
|
||||
|
||||
NodeAppender.insertNodeAfter(scopeNode, expressionStatements, variableDeclaration);
|
||||
if (!NodeGuards.isNodeHasScope(parentNode)) {
|
||||
return ObjectExpressionKeysTransformer.getHostStatement(parentNode);
|
||||
}
|
||||
|
||||
return <ESTree.Statement>node;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -63,6 +64,21 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
return properties.filter((property: ESTree.Property, index: number) => !removablePropertyIds.includes(index));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {TNodeWithScope} scopeNode
|
||||
* @param {Node} hostNode
|
||||
* @param {ExpressionStatement[]} expressionStatements
|
||||
*/
|
||||
private static appendExpressionStatements (
|
||||
scopeNode: TNodeWithScope,
|
||||
hostNode: ESTree.Node,
|
||||
expressionStatements: ESTree.ExpressionStatement[]
|
||||
): void {
|
||||
const hostNodeScope: ESTree.Node = ObjectExpressionKeysTransformer.getHostStatement(hostNode);
|
||||
|
||||
NodeAppender.insertNodeAfter(scopeNode, expressionStatements, hostNodeScope);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Property} propertyNode
|
||||
* @returns {string | null}
|
||||
@@ -85,13 +101,13 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
|
||||
/**
|
||||
* @param {Expression | Pattern} propertyValueNode
|
||||
* @returns {boolean}
|
||||
* @returns {propertyValueNode is Expression}
|
||||
*/
|
||||
private static isValidPropertyValueNode (propertyValueNode: ESTree.Expression | ESTree.Pattern): propertyValueNode is ESTree.Expression {
|
||||
private static isValidExpressionNode (propertyValueNode: ESTree.Expression | ESTree.Pattern): propertyValueNode is ESTree.Expression {
|
||||
return !NodeGuards.isObjectPatternNode(propertyValueNode)
|
||||
&& !NodeGuards.isArrayPatternNode(propertyValueNode)
|
||||
&& !NodeGuards.isAssignmentPatternNode(propertyValueNode)
|
||||
&& !NodeGuards.isRestElementNode(propertyValueNode);
|
||||
&& !NodeGuards.isArrayPatternNode(propertyValueNode)
|
||||
&& !NodeGuards.isAssignmentPatternNode(propertyValueNode)
|
||||
&& !NodeGuards.isRestElementNode(propertyValueNode);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -107,7 +123,6 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
this.options.transformObjectKeys
|
||||
&& parentNode
|
||||
&& NodeGuards.isObjectExpressionNode(node)
|
||||
&& NodeGuards.isVariableDeclaratorNode(parentNode)
|
||||
) {
|
||||
return this.transformNode(node, parentNode);
|
||||
}
|
||||
@@ -132,40 +147,90 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
* object['bar'] = 2;
|
||||
*
|
||||
* @param {MemberExpression} objectExpressionNode
|
||||
* @param {NodeGuards} variableDeclarator
|
||||
* @param {Node} parentNode
|
||||
* @returns {NodeGuards}
|
||||
*/
|
||||
public transformNode (objectExpressionNode: ESTree.ObjectExpression, variableDeclarator: ESTree.VariableDeclarator): ESTree.Node {
|
||||
public transformNode (objectExpressionNode: ESTree.ObjectExpression, parentNode: ESTree.Node): ESTree.Node {
|
||||
if (NodeGuards.isVariableDeclaratorNode(parentNode)) {
|
||||
return this.transformVariableDeclaratorHostObjectExpression(objectExpressionNode, parentNode);
|
||||
}
|
||||
|
||||
if (NodeGuards.isAssignmentExpressionNode(parentNode)) {
|
||||
return this.transformAssignmentExpressionHostObjectExpression(objectExpressionNode, parentNode);
|
||||
}
|
||||
|
||||
return objectExpressionNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectExpression} objectExpressionNode
|
||||
* @param {VariableDeclarator} variableDeclaratorNode
|
||||
* @returns {Node}
|
||||
*/
|
||||
private transformVariableDeclaratorHostObjectExpression(
|
||||
objectExpressionNode: ESTree.ObjectExpression,
|
||||
variableDeclaratorNode: ESTree.VariableDeclarator
|
||||
): ESTree.Node {
|
||||
// should pass only Expression nodes as MemberExpression.object value
|
||||
if (!NodeGuards.isIdentifierNode(variableDeclarator.id)) {
|
||||
if (!NodeGuards.isIdentifierNode(variableDeclaratorNode.id)) {
|
||||
return objectExpressionNode;
|
||||
}
|
||||
|
||||
const scopeNode: TNodeWithScope | null = NodeUtils.getScopeOfNode(variableDeclarator);
|
||||
const scopeNode: TNodeWithScope | null = NodeUtils.getScopeOfNode(variableDeclaratorNode);
|
||||
|
||||
if (!scopeNode || !NodeGuards.isNodeHasScope(scopeNode)) {
|
||||
return objectExpressionNode;
|
||||
}
|
||||
|
||||
this.cachedScopeNodesMap.set(variableDeclarator, scopeNode);
|
||||
this.cachedScopeNodesMap.set(variableDeclaratorNode, scopeNode);
|
||||
|
||||
return this.transformObjectExpressionNode(
|
||||
objectExpressionNode,
|
||||
variableDeclarator.id,
|
||||
variableDeclarator
|
||||
variableDeclaratorNode.id,
|
||||
variableDeclaratorNode
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectExpression} objectExpressionNode
|
||||
* @param {AssignmentExpression} assignmentExpressionNode
|
||||
* @returns {Node}
|
||||
*/
|
||||
private transformAssignmentExpressionHostObjectExpression(
|
||||
objectExpressionNode: ESTree.ObjectExpression,
|
||||
assignmentExpressionNode: ESTree.AssignmentExpression
|
||||
): ESTree.Node {
|
||||
const leftNode: ESTree.MemberExpression | ESTree.Pattern = assignmentExpressionNode.left;
|
||||
|
||||
if (!ObjectExpressionKeysTransformer.isValidExpressionNode(leftNode)) {
|
||||
return objectExpressionNode;
|
||||
}
|
||||
|
||||
const scopeNode: TNodeWithScope | null = NodeUtils.getScopeOfNode(assignmentExpressionNode);
|
||||
|
||||
if (!scopeNode || !NodeGuards.isNodeHasScope(scopeNode)) {
|
||||
return objectExpressionNode;
|
||||
}
|
||||
|
||||
this.cachedScopeNodesMap.set(assignmentExpressionNode, scopeNode);
|
||||
|
||||
return this.transformObjectExpressionNode(
|
||||
objectExpressionNode,
|
||||
leftNode,
|
||||
assignmentExpressionNode
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Property[]} properties
|
||||
* @param {Expression} memberExpressionObject
|
||||
* @param {VariableDeclarator} variableDeclarator
|
||||
* @param {Node} hostNode
|
||||
* @returns {[ExpressionStatement[] , number[]]}
|
||||
*/
|
||||
private extractPropertiesToExpressionStatements (
|
||||
properties: ESTree.Property[],
|
||||
memberExpressionObject: ESTree.Expression,
|
||||
variableDeclarator: ESTree.VariableDeclarator
|
||||
hostNode: ESTree.Node
|
||||
): [ESTree.ExpressionStatement[], number[]] {
|
||||
const propertiesLength: number = properties.length;
|
||||
const expressionStatements: ESTree.ExpressionStatement[] = [];
|
||||
@@ -176,7 +241,7 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
const propertyValue: ESTree.Expression | ESTree.Pattern = property.value;
|
||||
|
||||
// invalid property nodes
|
||||
if (!ObjectExpressionKeysTransformer.isValidPropertyValueNode(propertyValue)) {
|
||||
if (!ObjectExpressionKeysTransformer.isValidExpressionNode(propertyValue)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -207,7 +272,7 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
* Stage 3: recursively processing nested object expressions
|
||||
*/
|
||||
if (NodeGuards.isObjectExpressionNode(property.value)) {
|
||||
this.transformObjectExpressionNode(property.value, memberExpressionNode, variableDeclarator);
|
||||
this.transformObjectExpressionNode(property.value, memberExpressionNode, hostNode);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -223,13 +288,13 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
/**
|
||||
* @param {ObjectExpression} objectExpressionNode
|
||||
* @param {Expression} memberExpressionObjectNode
|
||||
* @param {VariableDeclarator} variableDeclarator
|
||||
* @param {Node} hostNode
|
||||
* @returns {Node}
|
||||
*/
|
||||
private transformObjectExpressionNode (
|
||||
objectExpressionNode: ESTree.ObjectExpression,
|
||||
memberExpressionObjectNode: ESTree.Expression,
|
||||
variableDeclarator: ESTree.VariableDeclarator
|
||||
hostNode: ESTree.Node
|
||||
): ESTree.Node {
|
||||
const properties: ESTree.Property[] = objectExpressionNode.properties;
|
||||
|
||||
@@ -237,19 +302,19 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
|
||||
return objectExpressionNode;
|
||||
}
|
||||
|
||||
const scopeNode: TNodeWithScope | undefined = this.cachedScopeNodesMap.get(variableDeclarator);
|
||||
const scopeNode: TNodeWithScope | undefined = this.cachedScopeNodesMap.get(hostNode);
|
||||
|
||||
if (!scopeNode) {
|
||||
return objectExpressionNode;
|
||||
}
|
||||
|
||||
const [expressionStatements, removablePropertyIds]: [ESTree.ExpressionStatement[], number[]] = this
|
||||
.extractPropertiesToExpressionStatements(properties, memberExpressionObjectNode, variableDeclarator);
|
||||
.extractPropertiesToExpressionStatements(properties, memberExpressionObjectNode, hostNode);
|
||||
|
||||
objectExpressionNode.properties = ObjectExpressionKeysTransformer
|
||||
.filterObjectExpressionProperties(properties, removablePropertyIds);
|
||||
ObjectExpressionKeysTransformer
|
||||
.appendExpressionStatements(scopeNode, expressionStatements, variableDeclarator);
|
||||
.appendExpressionStatements(scopeNode, objectExpressionNode, expressionStatements);
|
||||
|
||||
return objectExpressionNode;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,14 @@ export class NodeGuards {
|
||||
return node.type === NodeType.ArrowFunctionExpression;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @returns {boolean}
|
||||
*/
|
||||
public static isAssignmentExpressionNode (node: ESTree.Node): node is ESTree.AssignmentExpression {
|
||||
return node.type === NodeType.AssignmentExpression;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Node} node
|
||||
* @returns {boolean}
|
||||
|
||||
+87
-30
@@ -134,6 +134,93 @@ describe('ObjectExpressionKeysTransformer', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Variant #5: variable declaration without initialization', () => {
|
||||
const match: string = `` +
|
||||
`var *${variableMatch};` +
|
||||
`${variableMatch} *= *{};` +
|
||||
`${variableMatch}\\['foo'] *= *'bar';` +
|
||||
`${variableMatch}\\['baz'] *= *'bark';` +
|
||||
``;
|
||||
const regExp: RegExp = new RegExp(match);
|
||||
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/variable-declaration-without-initialization.js');
|
||||
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
transformObjectKeys: true
|
||||
}
|
||||
);
|
||||
|
||||
obfuscatedCode = obfuscationResult.getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('shouldn\'t transform object keys', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('member expression as host of object expression', () => {
|
||||
describe('Variant #1: simple', () => {
|
||||
const match: string = `` +
|
||||
`this\\['state'] *= *{};` +
|
||||
`this\\['state']\\['foo'] *= *'bar';` +
|
||||
`this\\['state']\\['baz'] *= *'bark';` +
|
||||
``;
|
||||
const regExp: RegExp = new RegExp(match);
|
||||
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/member-expression-host-1.js');
|
||||
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
transformObjectKeys: true
|
||||
}
|
||||
);
|
||||
|
||||
obfuscatedCode = obfuscationResult.getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('should correctly transform object keys', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Variant #2: long members chain', () => {
|
||||
const match: string = `` +
|
||||
`this\\['state']\\['foo'] *= *{};` +
|
||||
`this\\['state']\\['foo']\\['foo'] *= *'bar';` +
|
||||
`this\\['state']\\['foo']\\['baz'] *= *'bark';` +
|
||||
``;
|
||||
const regExp: RegExp = new RegExp(match);
|
||||
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/member-expression-host-2.js');
|
||||
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
transformObjectKeys: true
|
||||
}
|
||||
);
|
||||
|
||||
obfuscatedCode = obfuscationResult.getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('should correctly transform object keys', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('correct placement of expression statements', () => {
|
||||
@@ -285,35 +372,5 @@ describe('ObjectExpressionKeysTransformer', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Variant #2: variable declaration without initialization', () => {
|
||||
const match: string = `` +
|
||||
`var *${variableMatch};` +
|
||||
`${variableMatch} *= *{` +
|
||||
`'foo': *'bar',` +
|
||||
`'baz': *'bark'` +
|
||||
`}` +
|
||||
``;
|
||||
const regExp: RegExp = new RegExp(match);
|
||||
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/variable-declaration-without-initialization.js');
|
||||
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
transformObjectKeys: true
|
||||
}
|
||||
);
|
||||
|
||||
obfuscatedCode = obfuscationResult.getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('shouldn\'t transform object keys', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
(function(){
|
||||
this.state = {
|
||||
foo: 'bar',
|
||||
baz: 'bark'
|
||||
};
|
||||
})();
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
(function(){
|
||||
this.state.foo = {
|
||||
foo: 'bar',
|
||||
baz: 'bark'
|
||||
};
|
||||
var foo = 1;
|
||||
})();
|
||||
@@ -540,6 +540,12 @@
|
||||
call-me-maybe "^1.0.1"
|
||||
glob-to-regexp "^0.3.0"
|
||||
|
||||
"@samverschueren/stream-to-observable@^0.3.0":
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
|
||||
dependencies:
|
||||
any-observable "^0.3.0"
|
||||
|
||||
"@sindresorhus/is@^0.7.0":
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
|
||||
@@ -612,9 +618,9 @@
|
||||
version "10.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.0.3.tgz#1f89840c7aac2406cc43a2ecad98fc02a8e130e4"
|
||||
|
||||
"@types/node@10.1.1":
|
||||
version "10.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.1.1.tgz#ca39d8607fa1fcb146b0530420b93f1dd4802f6c"
|
||||
"@types/node@10.1.2":
|
||||
version "10.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.1.2.tgz#1b928a0baa408fc8ae3ac012cc81375addc147c6"
|
||||
|
||||
"@types/rimraf@2.0.2":
|
||||
version "2.0.2"
|
||||
@@ -839,9 +845,9 @@ ansi-styles@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178"
|
||||
|
||||
any-observable@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242"
|
||||
any-observable@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
|
||||
|
||||
anymatch@^2.0.0:
|
||||
version "2.0.0"
|
||||
@@ -1160,13 +1166,14 @@ babel-helpers@^6.24.1:
|
||||
babel-runtime "^6.22.0"
|
||||
babel-template "^6.24.1"
|
||||
|
||||
babel-loader@8.0.0-beta.2:
|
||||
version "8.0.0-beta.2"
|
||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.0-beta.2.tgz#4d5b67c964dc8c9cba866fd13d6b90df3acf8723"
|
||||
babel-loader@8.0.0-beta.3:
|
||||
version "8.0.0-beta.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.0-beta.3.tgz#49efeea6e8058d5af860a18a6de88b8c1450645b"
|
||||
dependencies:
|
||||
find-cache-dir "^1.0.0"
|
||||
loader-utils "^1.0.2"
|
||||
mkdirp "^0.5.1"
|
||||
util.promisify "^1.0.0"
|
||||
|
||||
babel-messages@^6.23.0:
|
||||
version "6.23.0"
|
||||
@@ -1882,7 +1889,7 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
|
||||
strip-ansi "^3.0.0"
|
||||
supports-color "^2.0.0"
|
||||
|
||||
chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2:
|
||||
chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
|
||||
dependencies:
|
||||
@@ -2084,10 +2091,6 @@ combined-stream@1.0.6, combined-stream@~1.0.5:
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@2.11.0:
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
|
||||
|
||||
commander@2.15.1, commander@^2.12.1, commander@^2.8.1:
|
||||
version "2.15.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
|
||||
@@ -2316,6 +2319,13 @@ default-require-extensions@^1.0.0:
|
||||
dependencies:
|
||||
strip-bom "^2.0.0"
|
||||
|
||||
define-properties@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
|
||||
dependencies:
|
||||
foreach "^2.0.5"
|
||||
object-keys "^1.0.8"
|
||||
|
||||
define-property@^0.2.5:
|
||||
version "0.2.5"
|
||||
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
|
||||
@@ -2465,9 +2475,9 @@ enhanced-resolve@^4.0.0:
|
||||
memory-fs "^0.4.0"
|
||||
tapable "^1.0.0"
|
||||
|
||||
envinfo@^4.4.2:
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-4.4.2.tgz#472c49f3a8b9bca73962641ce7cb692bf623cd1c"
|
||||
envinfo@^5.7.0:
|
||||
version "5.7.0"
|
||||
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.7.0.tgz#690e5fdf30aa75dda19c0c5338d0a48a48f1e998"
|
||||
|
||||
errno@^0.1.3, errno@~0.1.7:
|
||||
version "0.1.7"
|
||||
@@ -2488,6 +2498,24 @@ error@^7.0.2:
|
||||
string-template "~0.2.1"
|
||||
xtend "~4.0.0"
|
||||
|
||||
es-abstract@^1.5.1:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681"
|
||||
dependencies:
|
||||
es-to-primitive "^1.1.1"
|
||||
function-bind "^1.1.1"
|
||||
has "^1.0.1"
|
||||
is-callable "^1.1.3"
|
||||
is-regex "^1.0.4"
|
||||
|
||||
es-to-primitive@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
|
||||
dependencies:
|
||||
is-callable "^1.1.1"
|
||||
is-date-object "^1.0.1"
|
||||
is-symbol "^1.0.1"
|
||||
|
||||
escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
@@ -2766,6 +2794,10 @@ for-own@^0.1.4:
|
||||
dependencies:
|
||||
for-in "^1.0.1"
|
||||
|
||||
foreach@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
|
||||
|
||||
forever-agent@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||
@@ -2821,6 +2853,10 @@ fsevents@^1.1.2:
|
||||
nan "^2.9.2"
|
||||
node-pre-gyp "^0.9.0"
|
||||
|
||||
function-bind@^1.0.2, function-bind@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
|
||||
gauge@~2.7.3:
|
||||
version "2.7.4"
|
||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
|
||||
@@ -2947,7 +2983,7 @@ globby@^6.1.0:
|
||||
pify "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
globby@^8.0.0:
|
||||
globby@^8.0.0, globby@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50"
|
||||
dependencies:
|
||||
@@ -2978,7 +3014,7 @@ got@^7.0.0:
|
||||
url-parse-lax "^1.0.0"
|
||||
url-to-options "^1.0.1"
|
||||
|
||||
got@^8.2.0:
|
||||
got@^8.3.1:
|
||||
version "8.3.1"
|
||||
resolved "https://registry.yarnpkg.com/got/-/got-8.3.1.tgz#093324403d4d955f5a16a7a8d39955d055ae10ed"
|
||||
dependencies:
|
||||
@@ -3010,9 +3046,9 @@ grouped-queue@^0.3.3:
|
||||
dependencies:
|
||||
lodash "^4.17.2"
|
||||
|
||||
growl@1.10.3:
|
||||
version "1.10.3"
|
||||
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f"
|
||||
growl@1.10.5:
|
||||
version "1.10.5"
|
||||
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
|
||||
|
||||
handlebars@^4.0.3:
|
||||
version "4.0.11"
|
||||
@@ -3049,10 +3085,6 @@ has-flag@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
|
||||
|
||||
has-flag@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
|
||||
|
||||
has-flag@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||
@@ -3098,6 +3130,12 @@ has-values@^1.0.0:
|
||||
is-number "^3.0.0"
|
||||
kind-of "^4.0.0"
|
||||
|
||||
has@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
|
||||
dependencies:
|
||||
function-bind "^1.0.2"
|
||||
|
||||
hash-base@^3.0.0:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
|
||||
@@ -3275,7 +3313,7 @@ inquirer@^3.3.0:
|
||||
strip-ansi "^4.0.0"
|
||||
through "^2.3.6"
|
||||
|
||||
inquirer@^5.1.0:
|
||||
inquirer@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726"
|
||||
dependencies:
|
||||
@@ -3293,7 +3331,7 @@ inquirer@^5.1.0:
|
||||
strip-ansi "^4.0.0"
|
||||
through "^2.3.6"
|
||||
|
||||
interpret@^1.0.0, interpret@^1.0.4:
|
||||
interpret@^1.0.0, interpret@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
|
||||
|
||||
@@ -3350,6 +3388,10 @@ is-builtin-module@^1.0.0:
|
||||
dependencies:
|
||||
builtin-modules "^1.0.0"
|
||||
|
||||
is-callable@^1.1.1, is-callable@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
|
||||
|
||||
is-data-descriptor@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
|
||||
@@ -3362,6 +3404,10 @@ is-data-descriptor@^1.0.0:
|
||||
dependencies:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-date-object@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
|
||||
|
||||
is-descriptor@^0.1.0:
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
|
||||
@@ -3460,11 +3506,11 @@ is-object@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
|
||||
|
||||
is-observable@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2"
|
||||
is-observable@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
|
||||
dependencies:
|
||||
symbol-observable "^0.2.2"
|
||||
symbol-observable "^1.1.0"
|
||||
|
||||
is-odd@^2.0.0:
|
||||
version "2.0.0"
|
||||
@@ -3494,6 +3540,12 @@ is-promise@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
|
||||
|
||||
is-regex@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
|
||||
dependencies:
|
||||
has "^1.0.1"
|
||||
|
||||
is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
|
||||
@@ -3508,6 +3560,10 @@ is-stream@^1.0.0, is-stream@^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"
|
||||
|
||||
is-symbol@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
|
||||
|
||||
is-typedarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||
@@ -3827,15 +3883,15 @@ listr-verbose-renderer@^0.4.0:
|
||||
date-fns "^1.27.2"
|
||||
figures "^1.7.0"
|
||||
|
||||
listr@^0.13.0:
|
||||
version "0.13.0"
|
||||
resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d"
|
||||
listr@^0.14.1:
|
||||
version "0.14.1"
|
||||
resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.1.tgz#8a7afa4a7135cee4c921d128e0b7dfc6e522d43d"
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
"@samverschueren/stream-to-observable" "^0.3.0"
|
||||
cli-truncate "^0.2.1"
|
||||
figures "^1.7.0"
|
||||
indent-string "^2.1.0"
|
||||
is-observable "^0.2.0"
|
||||
is-observable "^1.1.0"
|
||||
is-promise "^2.1.0"
|
||||
is-stream "^1.1.0"
|
||||
listr-silent-renderer "^1.1.1"
|
||||
@@ -3845,8 +3901,7 @@ listr@^0.13.0:
|
||||
log-update "^1.0.2"
|
||||
ora "^0.2.3"
|
||||
p-map "^1.1.1"
|
||||
rxjs "^5.4.2"
|
||||
stream-to-observable "^0.2.0"
|
||||
rxjs "^6.1.0"
|
||||
strip-ansi "^3.0.1"
|
||||
|
||||
load-json-file@^4.0.0:
|
||||
@@ -4149,21 +4204,21 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0:
|
||||
dependencies:
|
||||
minimist "0.0.8"
|
||||
|
||||
mocha@5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.1.1.tgz#b774c75609dac05eb48f4d9ba1d827b97fde8a7b"
|
||||
mocha@5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"
|
||||
dependencies:
|
||||
browser-stdout "1.3.1"
|
||||
commander "2.11.0"
|
||||
commander "2.15.1"
|
||||
debug "3.1.0"
|
||||
diff "3.5.0"
|
||||
escape-string-regexp "1.0.5"
|
||||
glob "7.1.2"
|
||||
growl "1.10.3"
|
||||
growl "1.10.5"
|
||||
he "1.1.1"
|
||||
minimatch "3.0.4"
|
||||
mkdirp "0.5.1"
|
||||
supports-color "4.4.0"
|
||||
supports-color "5.4.0"
|
||||
|
||||
mock-require@^2.0.2:
|
||||
version "2.0.2"
|
||||
@@ -4393,12 +4448,23 @@ object-copy@^0.1.0:
|
||||
define-property "^0.2.5"
|
||||
kind-of "^3.0.3"
|
||||
|
||||
object-keys@^1.0.8:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
|
||||
|
||||
object-visit@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
|
||||
dependencies:
|
||||
isobject "^3.0.0"
|
||||
|
||||
object.getownpropertydescriptors@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
|
||||
dependencies:
|
||||
define-properties "^1.1.2"
|
||||
es-abstract "^1.5.1"
|
||||
|
||||
object.omit@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
|
||||
@@ -4730,7 +4796,7 @@ preserve@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
|
||||
|
||||
prettier@^1.5.3:
|
||||
prettier@^1.12.1:
|
||||
version "1.12.1"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325"
|
||||
|
||||
@@ -5196,12 +5262,18 @@ rx@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
|
||||
|
||||
rxjs@^5.4.2, rxjs@^5.5.2:
|
||||
rxjs@^5.5.2:
|
||||
version "5.5.10"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.10.tgz#fde02d7a614f6c8683d0d1957827f492e09db045"
|
||||
dependencies:
|
||||
symbol-observable "1.0.1"
|
||||
|
||||
rxjs@^6.1.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.0.tgz#e024d0e180b72756a83c2aaea8f25423751ba978"
|
||||
dependencies:
|
||||
tslib "^1.9.0"
|
||||
|
||||
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
@@ -5521,12 +5593,6 @@ stream-shift@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
|
||||
|
||||
stream-to-observable@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10"
|
||||
dependencies:
|
||||
any-observable "^0.2.0"
|
||||
|
||||
strict-uri-encode@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
|
||||
@@ -5605,11 +5671,11 @@ 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"
|
||||
|
||||
supports-color@4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
|
||||
supports-color@5.4.0, supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0:
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
|
||||
dependencies:
|
||||
has-flag "^2.0.0"
|
||||
has-flag "^3.0.0"
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
@@ -5621,19 +5687,13 @@ supports-color@^3.1.2:
|
||||
dependencies:
|
||||
has-flag "^1.0.0"
|
||||
|
||||
supports-color@^5.1.0, supports-color@^5.3.0:
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
|
||||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
symbol-observable@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
|
||||
|
||||
symbol-observable@^0.2.2:
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40"
|
||||
symbol-observable@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
|
||||
|
||||
tapable@^1.0.0:
|
||||
version "1.0.0"
|
||||
@@ -5765,7 +5825,7 @@ tslib@1.9.0, tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1:
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
|
||||
|
||||
tslib@1.9.1:
|
||||
tslib@1.9.1, tslib@^1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.1.tgz#a5d1f0532a49221c87755cfcc89ca37197242ba7"
|
||||
|
||||
@@ -5991,6 +6051,13 @@ util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
|
||||
util.promisify@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
|
||||
dependencies:
|
||||
define-properties "^1.1.2"
|
||||
object.getownpropertydescriptors "^2.0.3"
|
||||
|
||||
util@0.10.3, util@^0.10.3:
|
||||
version "0.10.3"
|
||||
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
|
||||
@@ -6001,9 +6068,9 @@ uuid@^3.1.0:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14"
|
||||
|
||||
v8-compile-cache@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4"
|
||||
v8-compile-cache@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a"
|
||||
|
||||
validate-npm-package-license@^3.0.1:
|
||||
version "3.0.3"
|
||||
@@ -6084,36 +6151,36 @@ webpack-addons@^1.1.5:
|
||||
dependencies:
|
||||
jscodeshift "^0.4.0"
|
||||
|
||||
webpack-cli@2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.3.tgz#65d166851abaa56067ef3f716b02a97ba6bbe84d"
|
||||
webpack-cli@2.1.4:
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.4.tgz#cab81e79249127384fb69b2fdfe2055f9c771b76"
|
||||
dependencies:
|
||||
chalk "^2.3.2"
|
||||
chalk "^2.4.1"
|
||||
cross-spawn "^6.0.5"
|
||||
diff "^3.5.0"
|
||||
enhanced-resolve "^4.0.0"
|
||||
envinfo "^4.4.2"
|
||||
envinfo "^5.7.0"
|
||||
glob-all "^3.1.0"
|
||||
global-modules "^1.0.0"
|
||||
got "^8.2.0"
|
||||
got "^8.3.1"
|
||||
import-local "^1.0.0"
|
||||
inquirer "^5.1.0"
|
||||
interpret "^1.0.4"
|
||||
inquirer "^5.2.0"
|
||||
interpret "^1.1.0"
|
||||
jscodeshift "^0.5.0"
|
||||
listr "^0.13.0"
|
||||
listr "^0.14.1"
|
||||
loader-utils "^1.1.0"
|
||||
lodash "^4.17.5"
|
||||
lodash "^4.17.10"
|
||||
log-symbols "^2.2.0"
|
||||
mkdirp "^0.5.1"
|
||||
p-each-series "^1.0.0"
|
||||
p-lazy "^1.0.0"
|
||||
prettier "^1.5.3"
|
||||
supports-color "^5.3.0"
|
||||
v8-compile-cache "^1.1.2"
|
||||
prettier "^1.12.1"
|
||||
supports-color "^5.4.0"
|
||||
v8-compile-cache "^2.0.0"
|
||||
webpack-addons "^1.1.5"
|
||||
yargs "^11.1.0"
|
||||
yeoman-environment "^2.0.0"
|
||||
yeoman-generator "^2.0.4"
|
||||
yeoman-environment "^2.1.1"
|
||||
yeoman-generator "^2.0.5"
|
||||
|
||||
webpack-node-externals@1.7.2:
|
||||
version "1.7.2"
|
||||
@@ -6274,7 +6341,7 @@ yargs@~3.10.0:
|
||||
decamelize "^1.0.0"
|
||||
window-size "0.1.0"
|
||||
|
||||
yeoman-environment@^2.0.0, yeoman-environment@^2.0.5:
|
||||
yeoman-environment@^2.0.5:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.6.tgz#ae1b21d826b363f3d637f88a7fc9ea7414cb5377"
|
||||
dependencies:
|
||||
@@ -6292,7 +6359,27 @@ yeoman-environment@^2.0.0, yeoman-environment@^2.0.5:
|
||||
text-table "^0.2.0"
|
||||
untildify "^3.0.2"
|
||||
|
||||
yeoman-generator@^2.0.4:
|
||||
yeoman-environment@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.1.1.tgz#10a045f7fc4397873764882eae055a33e56ee1c5"
|
||||
dependencies:
|
||||
chalk "^2.1.0"
|
||||
cross-spawn "^6.0.5"
|
||||
debug "^3.1.0"
|
||||
diff "^3.3.1"
|
||||
escape-string-regexp "^1.0.2"
|
||||
globby "^8.0.1"
|
||||
grouped-queue "^0.3.3"
|
||||
inquirer "^5.2.0"
|
||||
is-scoped "^1.0.0"
|
||||
lodash "^4.17.10"
|
||||
log-symbols "^2.1.0"
|
||||
mem-fs "^1.1.0"
|
||||
strip-ansi "^4.0.0"
|
||||
text-table "^0.2.0"
|
||||
untildify "^3.0.2"
|
||||
|
||||
yeoman-generator@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.5.tgz#57b0b3474701293cc9ec965288f3400b00887c81"
|
||||
dependencies:
|
||||
|
||||
Reference in New Issue
Block a user