diff --git a/__ts-tests__/react.test.tsx b/__ts-tests__/react.test.tsx
index e310c2d5a..63c6552f6 100644
--- a/__ts-tests__/react.test.tsx
+++ b/__ts-tests__/react.test.tsx
@@ -26,7 +26,7 @@ const Button = styled.button`
`;
const ColoredButton = styled.button<{ background: string; children: string }>`
- background-color: ${props => props.background};
+ background-color: ${(props) => props.background};
`;
const CustomButton = styled(Button)`
diff --git a/package.json b/package.json
index d4b1b02df..a6f4fee33 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"@babel/preset-env": "^7.9.0",
"@babel/preset-react": "^7.9.4",
"@babel/preset-typescript": "^7.9.0",
- "@callstack/eslint-config": "^9.1.0",
+ "@callstack/eslint-config": "^10.0.1",
"@commitlint/config-conventional": "^8.3.4",
"@release-it/conventional-changelog": "^1.1.0",
"@types/babel__core": "^7.1.7",
@@ -72,27 +72,27 @@
"@types/loader-utils": "^1.1.3",
"@types/mkdirp": "^0.5.2",
"@types/normalize-path": "^3.0.0",
- "@types/prettier": "^1.19.1",
+ "@types/prettier": "^2.0.2",
"@types/react": "^16.9.25",
"@types/react-is": "^16.7.1",
"@types/strip-ansi": "^5.2.1",
- "@typescript-eslint/eslint-plugin": "^2.25.0",
- "@typescript-eslint/parser": "^2.25.0",
+ "@typescript-eslint/eslint-plugin": "^3.9.0",
+ "@typescript-eslint/parser": "^3.9.0",
"all-contributors-cli": "^6.1.1",
"babel-jest": "^24.5.0",
"codecov": "^3.2.0",
"commitlint": "^8.3.5",
"del-cli": "^1.1.0",
"dtslint": "^0.9.8",
- "eslint": "^6.8.0",
- "eslint-plugin-prettier": "^3.1.2",
+ "eslint": "^7.6.0",
+ "eslint-plugin-prettier": "^3.1.4",
"husky": "^1.3.1",
"jest": "^24.7.1",
- "prettier": "^1.16.4",
+ "prettier": "^2.0.5",
"react": "^16.8.3",
"react-test-renderer": "^16.8.3",
"release-it": "^12.4.3",
- "typescript": "^3.8.3"
+ "typescript": "^3.9.7"
},
"dependencies": {
"@babel/core": "^7.9.0",
diff --git a/src/__tests__/babel.test.ts b/src/__tests__/babel.test.ts
index a2238041c..16aba41b2 100644
--- a/src/__tests__/babel.test.ts
+++ b/src/__tests__/babel.test.ts
@@ -1,6 +1,6 @@
+import { join } from 'path';
import * as babel from '@babel/core';
import dedent from 'dedent';
-import { join } from 'path';
import stripAnsi from 'strip-ansi';
import serializer from '../__utils__/linaria-snapshot-serializer';
import { StrictOptions } from '../babel/types';
diff --git a/src/__tests__/detect-core-js.test.js b/src/__tests__/detect-core-js.test.js
index ce2db78cf..7daa1ba26 100644
--- a/src/__tests__/detect-core-js.test.js
+++ b/src/__tests__/detect-core-js.test.js
@@ -1,9 +1,9 @@
import cp from 'child_process';
-const waitForProcess = async process => {
- return new Promise(resolve => {
+const waitForProcess = async (process) => {
+ return new Promise((resolve) => {
let output = '';
- process.stdout.on('data', chunk => {
+ process.stdout.on('data', (chunk) => {
output += chunk.toString();
});
process.on('close', () => {
diff --git a/src/__tests__/evaluators/extractor.test.ts b/src/__tests__/evaluators/extractor.test.ts
index dd15bc7ab..5d144ef37 100644
--- a/src/__tests__/evaluators/extractor.test.ts
+++ b/src/__tests__/evaluators/extractor.test.ts
@@ -1,6 +1,6 @@
+import path from 'path';
import dedent from 'dedent';
import * as babel from '@babel/core';
-import path from 'path';
import exctract from '../../babel/evaluators/extractor';
function getFileName() {
diff --git a/src/__tests__/evaluators/preeval.test.ts b/src/__tests__/evaluators/preeval.test.ts
index fd92a6e2c..5f2406ce2 100644
--- a/src/__tests__/evaluators/preeval.test.ts
+++ b/src/__tests__/evaluators/preeval.test.ts
@@ -1,6 +1,6 @@
+import { join } from 'path';
import * as babel from '@babel/core';
import dedent from 'dedent';
-import { join } from 'path';
import serializer from '../../__utils__/linaria-snapshot-serializer';
import { StrictOptions } from '../../babel/types';
diff --git a/src/__tests__/evaluators/shaker.test.ts b/src/__tests__/evaluators/shaker.test.ts
index 98d47aac9..337d706c7 100644
--- a/src/__tests__/evaluators/shaker.test.ts
+++ b/src/__tests__/evaluators/shaker.test.ts
@@ -1,7 +1,7 @@
+import path from 'path';
import dedent from 'dedent';
import * as babel from '@babel/core';
import shake from '../../babel/evaluators/shaker';
-import path from 'path';
function getFileName() {
return path.resolve(__dirname, `../__fixtures__/test.js`);
diff --git a/src/__tests__/module.test.ts b/src/__tests__/module.test.ts
index 7a7f11c71..ac5f7b454 100644
--- a/src/__tests__/module.test.ts
+++ b/src/__tests__/module.test.ts
@@ -291,7 +291,7 @@ it('has global objects available without referencing global', () => {
it('changes resolve behaviour on overriding _resolveFilename', () => {
const originalResolveFilename = Module._resolveFilename;
- Module._resolveFilename = id => (id === 'foo' ? 'bar' : id);
+ Module._resolveFilename = (id) => (id === 'foo' ? 'bar' : id);
const mod = new Module(getFileName(), options);
diff --git a/src/__tests__/preval.test.ts b/src/__tests__/preval.test.ts
index 62a622c9a..33536b585 100644
--- a/src/__tests__/preval.test.ts
+++ b/src/__tests__/preval.test.ts
@@ -1,6 +1,6 @@
+import { join, resolve } from 'path';
import * as babel from '@babel/core';
import dedent from 'dedent';
-import { join, resolve } from 'path';
import stripAnsi from 'strip-ansi';
import Module from '../babel/module';
@@ -70,7 +70,7 @@ function run(
const transpile: TranspileFn = async (
input: string,
- conf: (original: typeof babelrc) => typeof babelrc = i => i
+ conf: (original: typeof babelrc) => typeof babelrc = (i) => i
) => {
const { code, metadata } = await transformAsync(input, {
...conf(babelrc),
@@ -186,7 +186,7 @@ function run(
color: ${'${Colors.BLUE}'};
\`;
`,
- config => ({
+ (config) => ({
...config,
plugins: [
'@babel/plugin-transform-typescript',
@@ -557,7 +557,7 @@ function run(
color: blue;
\`;
`,
- config => ({
+ (config) => ({
...config,
plugins: ['@babel/plugin-syntax-jsx', ...(config.plugins || [])],
})
@@ -975,7 +975,7 @@ function run(
}
describe('shaker', () => {
- run(require('../babel/evaluators/shaker').default, transpile => {
+ run(require('../babel/evaluators/shaker').default, (transpile) => {
it('should work with wildcard imports', async () => {
const { code, metadata } = await transpile(
dedent`
diff --git a/src/__tests__/styled.test.js b/src/__tests__/styled.test.js
index 4d501f451..551fbce2c 100644
--- a/src/__tests__/styled.test.js
+++ b/src/__tests__/styled.test.js
@@ -18,7 +18,7 @@ it('renders tag with display name and class name', () => {
});
it('renders component with display name and class name', () => {
- const Custom = props =>
;
+ const Custom = (props) => ;
const Test = styled(Custom)({
name: 'TestComponent',
@@ -41,7 +41,7 @@ it('applies CSS variables in style prop', () => {
vars: {
foo: ['tomato'],
bar: [20, 'px'],
- baz: [props => props.size, 'px'],
+ baz: [(props) => props.size, 'px'],
},
});
@@ -104,7 +104,7 @@ it('replaces simple component with as prop', () => {
});
it('replaces custom component with as prop for primitive', () => {
- const Custom = props => ;
+ const Custom = (props) => ;
const Test = styled(Custom)({
name: 'TestComponent',
@@ -121,7 +121,7 @@ it('replaces custom component with as prop for primitive', () => {
});
it('replaces primitive with as prop for custom component', () => {
- const Custom = props => ;
+ const Custom = (props) => ;
const Test = styled('div')({
name: 'TestComponent',
@@ -196,7 +196,7 @@ it('does not filter attributes for custom elements', () => {
});
it('does not filter attributes for components', () => {
- const Custom = props => {props.unknownAttribute}
;
+ const Custom = (props) => {props.unknownAttribute}
;
const Test = styled(Custom)({
name: 'TestComponent',
@@ -211,7 +211,7 @@ it('does not filter attributes for components', () => {
});
it('provides linaria component className for composition as last item in props.className', () => {
- const Custom = props => {
+ const Custom = (props) => {
const classnames = props.className.split(' ');
const linariaClassName = classnames[classnames.length - 1];
const newClassNames = [
diff --git a/src/__tests__/transform.test.ts b/src/__tests__/transform.test.ts
index b18411e37..171a22f6d 100644
--- a/src/__tests__/transform.test.ts
+++ b/src/__tests__/transform.test.ts
@@ -1,7 +1,7 @@
/* eslint-disable no-template-curly-in-string */
-import dedent from 'dedent';
import path from 'path';
+import dedent from 'dedent';
import transform, { transformUrl } from '../transform';
import evaluator from '../babel/evaluators/extractor';
diff --git a/src/__utils__/linaria-snapshot-serializer.ts b/src/__utils__/linaria-snapshot-serializer.ts
index 253553290..e157048a0 100644
--- a/src/__utils__/linaria-snapshot-serializer.ts
+++ b/src/__utils__/linaria-snapshot-serializer.ts
@@ -16,7 +16,7 @@ export default {
CSS:
${Object.keys(linaria.rules)
- .map(selector => `${selector} {${linaria.rules[selector].cssText}}`)
+ .map((selector) => `${selector} {${linaria.rules[selector].cssText}}`)
.join('\n')}
Dependencies: ${
diff --git a/src/babel/eval-cache.ts b/src/babel/eval-cache.ts
index bc66f008b..b60fdae28 100644
--- a/src/babel/eval-cache.ts
+++ b/src/babel/eval-cache.ts
@@ -6,15 +6,12 @@ const fileHashes = new Map();
const evalCache = new Map();
const fileKeys = new Map();
-const hash = (text: string) =>
- createHash('sha1')
- .update(text)
- .digest('base64');
+const hash = (text: string) => createHash('sha1').update(text).digest('base64');
let lastText: string = '';
let lastHash: string = hash(lastText);
-const memoizedHash: typeof hash = text => {
+const memoizedHash: typeof hash = (text) => {
if (lastText !== text) {
lastHash = hash(text);
lastText = text;
diff --git a/src/babel/evaluators/buildOptions.ts b/src/babel/evaluators/buildOptions.ts
index c8602f15c..2647a816f 100644
--- a/src/babel/evaluators/buildOptions.ts
+++ b/src/babel/evaluators/buildOptions.ts
@@ -33,7 +33,7 @@ export default function buildOptions(
],
],
plugins: [
- ...plugins.map(name => require.resolve(name as string)),
+ ...plugins.map((name) => require.resolve(name as string)),
// We don't support dynamic imports when evaluating, but don't wanna syntax error
// This will replace dynamic imports with an object that does nothing
require.resolve('../dynamic-import-noop'),
@@ -51,7 +51,7 @@ export default function buildOptions(
'presets',
'plugins',
];
- keys.forEach(field => {
+ keys.forEach((field) => {
babelOptions[field] = babelOptions[field]
? babelOptions[field]!.filter((item: PluginItem) => {
// If item is an array it's a preset/plugin with options ([preset, options])
@@ -73,7 +73,7 @@ export default function buildOptions(
}
// Loop through the default presets/plugins to see if it already exists
- return !defaults[field].some(it =>
+ return !defaults[field].some((it) =>
// The default presets/plugins can also have nested arrays,
Array.isArray(it) ? it[0] === name : it === name
);
diff --git a/src/babel/evaluators/extractor/RequirementsResolver.ts b/src/babel/evaluators/extractor/RequirementsResolver.ts
index 61d674734..64d7b16d3 100644
--- a/src/babel/evaluators/extractor/RequirementsResolver.ts
+++ b/src/babel/evaluators/extractor/RequirementsResolver.ts
@@ -19,7 +19,7 @@ export default class RequirementsResolver {
): t.Statement[] {
const resolver = new RequirementsResolver();
if (Array.isArray(path)) {
- path.forEach(p => this.resolve(p));
+ path.forEach((p) => this.resolve(p));
} else {
resolver.resolve(path);
}
@@ -33,7 +33,7 @@ export default class RequirementsResolver {
* Checks that specified node or one of its ancestors is already added
*/
private isAdded(path: NodePath): boolean {
- if (this.requirements.some(req => req.path === path)) {
+ if (this.requirements.some((req) => req.path === path)) {
return true;
}
@@ -143,7 +143,7 @@ export default class RequirementsResolver {
}
path.traverse({
- Identifier: p => {
+ Identifier: (p) => {
const binding = this.resolveIdentifier(p);
if (binding !== null) {
set.add(binding.path);
@@ -182,11 +182,11 @@ export default class RequirementsResolver {
throw new Error('Circular dependency');
}
- statements.push(...zeroDeps.map(req => req.result));
+ statements.push(...zeroDeps.map((req) => req.result));
// Let's remove already added statements from the requirements of the rest of the list.
- requirements = rest.map(req => {
+ requirements = rest.map((req) => {
const reqs = new Set(req.requirements);
- zeroDeps.forEach(r => reqs.delete(r.path));
+ zeroDeps.forEach((r) => reqs.delete(r.path));
return {
...req,
requirements: reqs,
diff --git a/src/babel/evaluators/preeval.ts b/src/babel/evaluators/preeval.ts
index eff7ff3bc..8b92840f0 100644
--- a/src/babel/evaluators/preeval.ts
+++ b/src/babel/evaluators/preeval.ts
@@ -6,10 +6,10 @@ import { NodePath } from '@babel/traverse';
import { types } from '@babel/core';
import GenerateClassNames from '../visitors/GenerateClassNames';
import DetectStyledImportName from '../visitors/DetectStyledImportName';
+import { State, StrictOptions } from '../types';
import JSXElement from './visitors/JSXElement';
import ProcessStyled from './visitors/ProcessStyled';
import ProcessCSS from './visitors/ProcessCSS';
-import { State, StrictOptions } from '../types';
function preeval(_babel: any, options: StrictOptions) {
return {
@@ -26,8 +26,8 @@ function preeval(_babel: any, options: StrictOptions) {
// We need our transforms to run before anything else
// So we traverse here instead of a in a visitor
path.traverse({
- ImportDeclaration: p => DetectStyledImportName(p, state),
- TaggedTemplateExpression: p =>
+ ImportDeclaration: (p) => DetectStyledImportName(p, state),
+ TaggedTemplateExpression: (p) =>
GenerateClassNames(p, state, options),
JSXElement,
});
diff --git a/src/babel/evaluators/shaker/DepsGraph.ts b/src/babel/evaluators/shaker/DepsGraph.ts
index 7b1d19db7..9a2ed49c7 100644
--- a/src/babel/evaluators/shaker/DepsGraph.ts
+++ b/src/babel/evaluators/shaker/DepsGraph.ts
@@ -59,7 +59,7 @@ export default class DepsGraph {
const allReferences = [
...Array.from(this.dependencies.get(declaration) || []),
...Array.from(this.dependents.get(declaration) || []),
- ].filter(i => t.isIdentifier(i) && i.name === name) as t.Identifier[];
+ ].filter((i) => t.isIdentifier(i) && i.name === name) as t.Identifier[];
allReferences.push(declaration);
return allReferences;
}
@@ -125,7 +125,7 @@ export default class DepsGraph {
getLeafs(only: string[] | null): Array {
this.processQueue();
return only
- ? only.map(name => this.exports.get(name))
+ ? only.map((name) => this.exports.get(name))
: Array.from(this.exports.values());
}
}
diff --git a/src/babel/evaluators/shaker/GraphBuilderState.ts b/src/babel/evaluators/shaker/GraphBuilderState.ts
index 3263ef550..167b40f3e 100644
--- a/src/babel/evaluators/shaker/GraphBuilderState.ts
+++ b/src/babel/evaluators/shaker/GraphBuilderState.ts
@@ -27,7 +27,7 @@ export default abstract class GraphBuilderState {
public onVisit(callback: OnVisitCallback) {
this.callbacks.push(callback);
return () => {
- this.callbacks = this.callbacks.filter(c => c !== callback);
+ this.callbacks = this.callbacks.filter((c) => c !== callback);
};
}
diff --git a/src/babel/evaluators/shaker/Visitors.ts b/src/babel/evaluators/shaker/Visitors.ts
index 92157dd5e..948d8d4d9 100644
--- a/src/babel/evaluators/shaker/Visitors.ts
+++ b/src/babel/evaluators/shaker/Visitors.ts
@@ -1,11 +1,11 @@
import { types as t } from '@babel/core';
import peek from '../../utils/peek';
+import { warn } from '../../utils/logger';
import GraphBuilderState from './GraphBuilderState';
import identifierHandlers from './identifierHandlers';
import { Visitor, Visitors } from './types';
import { visitors as core } from './langs/core';
-import { warn } from '../../utils/logger';
const visitors: Visitors = {
Identifier(
@@ -75,10 +75,10 @@ export function getVisitors(
): Visitor[] {
const aliases: Array = t.ALIAS_KEYS[node.type] || [];
const aliasVisitors = aliases
- .map(type => visitors[type])
- .filter(i => i) as Visitor[];
+ .map((type) => visitors[type])
+ .filter((i) => i) as Visitor[];
return [...aliasVisitors, visitors[node.type] as Visitor].filter(
- v => v
+ (v) => v
);
}
diff --git a/src/babel/evaluators/shaker/graphBuilder.ts b/src/babel/evaluators/shaker/graphBuilder.ts
index b6a17c480..0c103912b 100644
--- a/src/babel/evaluators/shaker/graphBuilder.ts
+++ b/src/babel/evaluators/shaker/graphBuilder.ts
@@ -95,10 +95,10 @@ class GraphBuilder extends GraphBuilderState {
}
if (isExpression && !ignoreDeps) {
- dependencies.forEach(dep => this.graph.addEdge(node, dep));
+ dependencies.forEach((dep) => this.graph.addEdge(node, dep));
}
- this.callbacks.forEach(callback => callback(node));
+ this.callbacks.forEach((callback) => callback(node));
}
visit(
@@ -126,7 +126,7 @@ class GraphBuilder extends GraphBuilderState {
// Each property of the assigned object is independent named export.
// We also need to specify all dependencies and call `visit` for every value.
this.visit(node.left, node, 'left');
- node.right.properties.forEach(prop => {
+ node.right.properties.forEach((prop) => {
if (t.isObjectProperty(prop) && t.isIdentifier(prop.key)) {
this.visit(prop.value, prop, 'value');
this.graph.addExport(prop.key.name, prop);
diff --git a/src/babel/evaluators/shaker/identifierHandlers.ts b/src/babel/evaluators/shaker/identifierHandlers.ts
index 938772b69..b69443048 100644
--- a/src/babel/evaluators/shaker/identifierHandlers.ts
+++ b/src/babel/evaluators/shaker/identifierHandlers.ts
@@ -1,6 +1,6 @@
import { types as t } from '@babel/core';
-import GraphBuilderState from './GraphBuilderState';
import peek from '../../utils/peek';
+import GraphBuilderState from './GraphBuilderState';
import { IdentifierHandlerType, NodeType } from './types';
import { identifierHandlers as core } from './langs/core';
import ScopeManager from './scope';
@@ -41,7 +41,7 @@ export function batchDefineHandlers(
handler: IdentifierHandlerType
) {
typesAndFields.forEach(([type, ...fields]) =>
- fields.forEach(field => defineHandler(type, field, handler))
+ fields.forEach((field) => defineHandler(type, field, handler))
);
}
diff --git a/src/babel/evaluators/shaker/index.ts b/src/babel/evaluators/shaker/index.ts
index d55bd3e3e..07817695f 100644
--- a/src/babel/evaluators/shaker/index.ts
+++ b/src/babel/evaluators/shaker/index.ts
@@ -1,9 +1,9 @@
-import shake from './shaker';
-import { debug } from '../../utils/logger';
import generator from '@babel/generator';
-import { Evaluator, StrictOptions } from '../../types';
import { transformSync, types } from '@babel/core';
+import { debug } from '../../utils/logger';
+import { Evaluator, StrictOptions } from '../../types';
import buildOptions from '../buildOptions';
+import shake from './shaker';
function prepareForShake(
filename: string,
diff --git a/src/babel/evaluators/shaker/langs/core.ts b/src/babel/evaluators/shaker/langs/core.ts
index 03401bbe3..b96bbd695 100644
--- a/src/babel/evaluators/shaker/langs/core.ts
+++ b/src/babel/evaluators/shaker/langs/core.ts
@@ -28,7 +28,7 @@ const sideEffects: SideEffect[] = [
[
// if the first argument of forEach is required, mark forEach as required
{
- callee: node =>
+ callee: (node) =>
t.isMemberExpression(node) &&
t.isIdentifier(node.property) &&
node.property.name === 'forEach',
@@ -123,7 +123,7 @@ export const visitors: Visitors = {
* In real life, some of the parameters can be omitted, but it's not trivial to implement that type of tree shaking.
*/
Function(this: GraphBuilderState, node: t.Function) {
- const unsubscribe = this.onVisit(descendant =>
+ const unsubscribe = this.onVisit((descendant) =>
this.graph.addEdge(node, descendant)
);
this.baseVisit(node, true); // ignoreDeps=true prevents default dependency resolving
@@ -132,7 +132,7 @@ export const visitors: Visitors = {
this.graph.addEdge(node, node.body);
this.graph.addEdge(node.body, node);
- node.params.forEach(param => this.graph.addEdge(node.body, param));
+ node.params.forEach((param) => this.graph.addEdge(node.body, param));
if (t.isFunctionDeclaration(node) && node.id !== null) {
// `id` is an identifier which depends on the function declaration
this.graph.addEdge(node.id, node);
@@ -166,10 +166,12 @@ export const visitors: Visitors = {
if (t.isProgram(node)) {
const exportsDeclaration = this.scope.getDeclaration('global:exports')!;
this.graph.addEdge(node, exportsDeclaration);
- node.directives.forEach(directive => this.graph.addEdge(node, directive));
+ node.directives.forEach((directive) =>
+ this.graph.addEdge(node, directive)
+ );
}
- node.body.forEach(exp => {
+ node.body.forEach((exp) => {
this.graph.addEdge(exp, node);
});
},
@@ -187,7 +189,7 @@ export const visitors: Visitors = {
*/
TryStatement(this: GraphBuilderState, node: t.TryStatement) {
this.baseVisit(node);
- [node.handler, node.finalizer].forEach(statement => {
+ [node.handler, node.finalizer].forEach((statement) => {
if (statement) {
this.graph.addEdge(node.block, statement);
this.graph.addEdge(statement, node.block);
@@ -199,7 +201,7 @@ export const visitors: Visitors = {
IfStatement(this: GraphBuilderState, node: t.IfStatement) {
this.baseVisit(node);
- [node.consequent, node.alternate].forEach(statement => {
+ [node.consequent, node.alternate].forEach((statement) => {
if (statement) {
this.graph.addEdge(statement, node);
}
@@ -223,7 +225,7 @@ export const visitors: Visitors = {
SwitchCase(this: GraphBuilderState, node: t.SwitchCase) {
this.baseVisit(node);
- node.consequent.forEach(statement => this.graph.addEdge(statement, node));
+ node.consequent.forEach((statement) => this.graph.addEdge(statement, node));
if (node.test) {
this.graph.addEdge(node, node.test);
}
@@ -231,7 +233,7 @@ export const visitors: Visitors = {
SwitchStatement(this: GraphBuilderState, node: t.SwitchStatement) {
this.baseVisit(node);
- node.cases.forEach(c => this.graph.addEdge(c, node));
+ node.cases.forEach((c) => this.graph.addEdge(c, node));
this.graph.addEdge(node, node.discriminant);
},
@@ -242,7 +244,7 @@ export const visitors: Visitors = {
this.graph.addEdge(node.body, node);
}
- [node.init, node.test, node.update, node.body].forEach(child => {
+ [node.init, node.test, node.update, node.body].forEach((child) => {
if (child) {
this.graph.addEdge(node, child);
}
@@ -297,7 +299,7 @@ export const visitors: Visitors = {
ObjectExpression(this: GraphBuilderState, node: t.ObjectExpression) {
this.context.push('expression');
this.baseVisit(node);
- node.properties.forEach(prop => {
+ node.properties.forEach((prop) => {
this.graph.addEdge(node, prop);
if (t.isObjectMethod(prop)) {
this.graph.addEdge(prop, prop.key);
@@ -413,7 +415,7 @@ export const visitors: Visitors = {
VariableDeclaration(this: GraphBuilderState, node: t.VariableDeclaration) {
this.meta.set('kind-of-declaration', node.kind);
this.baseVisit(node);
- node.declarations.forEach(declaration =>
+ node.declarations.forEach((declaration) =>
this.graph.addEdge(declaration, node)
);
this.meta.delete('kind-of-declaration');
@@ -510,7 +512,7 @@ export const visitors: Visitors = {
return callback(node, this);
});
- getAffectedNodes(node, this).forEach(affectedNode => {
+ getAffectedNodes(node, this).forEach((affectedNode) => {
this.graph.addEdge(affectedNode, node);
if (t.isIdentifier(affectedNode)) {
this.graph.addEdge(
diff --git a/src/babel/evaluators/shaker/scope.ts b/src/babel/evaluators/shaker/scope.ts
index cc4263a6c..84bc4fde9 100644
--- a/src/babel/evaluators/shaker/scope.ts
+++ b/src/babel/evaluators/shaker/scope.ts
@@ -85,7 +85,7 @@ export default class ScopeManager {
const idName = identifier.name;
const scope = this.stack
.slice(stack)
- .find(s => !isHoistable || functionScopes.has(s))!;
+ .find((s) => !isHoistable || functionScopes.has(s))!;
if (this.global.has(idName)) {
// It's probably a declaration of a previous referenced identifier
// Let's use naïve implementation of hoisting
@@ -104,12 +104,12 @@ export default class ScopeManager {
this.declarations.set(getId(scope, identifier), identifier);
const handlers = this.handlers.get(scopeIds.get(scope)!)!;
- handlers.forEach(handler => handler(identifier, from));
+ handlers.forEach((handler) => handler(identifier, from));
}
addReference(identifier: Identifier): Identifier | PromisedNode {
const name = identifier.name;
- const scope = this.stack.find(s => s.has(name)) || this.global;
+ const scope = this.stack.find((s) => s.has(name)) || this.global;
const id = getId(scope, identifier);
if (scope === this.global && !scope.has(name)) {
scope.set(name, new Set());
@@ -123,7 +123,7 @@ export default class ScopeManager {
whereIsDeclared(identifier: Identifier): ScopeId | undefined {
const name = identifier.name;
const scope = this.stack.find(
- s => s.has(name) && s.get(name)!.has(identifier)
+ (s) => s.has(name) && s.get(name)!.has(identifier)
);
if (scope) {
return scopeIds.get(scope);
@@ -158,7 +158,7 @@ export default class ScopeManager {
const scopeId = scopeIds.get(this.stack[0])!;
this.handlers.get(scopeId)!.push(handler);
return () => {
- const handlers = this.handlers.get(scopeId)!.filter(h => h !== handler);
+ const handlers = this.handlers.get(scopeId)!.filter((h) => h !== handler);
this.handlers.set(scopeId, handlers);
};
}
diff --git a/src/babel/evaluators/shaker/shaker.ts b/src/babel/evaluators/shaker/shaker.ts
index 027baecfe..6d403c959 100644
--- a/src/babel/evaluators/shaker/shaker.ts
+++ b/src/babel/evaluators/shaker/shaker.ts
@@ -1,9 +1,9 @@
import { types as t } from '@babel/core';
import generator from '@babel/generator';
-import build from './graphBuilder';
import isNode from '../../utils/isNode';
import getVisitorKeys from '../../utils/getVisitorKeys';
import { debug } from '../../utils/logger';
+import build from './graphBuilder';
import dumpNode from './dumpNode';
/*
@@ -74,13 +74,13 @@ export default function shake(
const depsGraph = build(rootPath);
const alive = new Set();
- let deps: t.Node[] = depsGraph.getLeafs(exports).map(i => i) as t.Node[];
+ let deps: t.Node[] = depsGraph.getLeafs(exports).map((i) => i) as t.Node[];
while (deps.length > 0) {
// Mark all dependencies as alive
- deps.forEach(d => alive.add(d));
+ deps.forEach((d) => alive.add(d));
// Collect new dependencies of dependencies
- deps = depsGraph.getDependencies(deps).filter(d => !alive.has(d));
+ deps = depsGraph.getDependencies(deps).filter((d) => !alive.has(d));
}
const shaken = shakeNode(rootPath, alive) as t.Program;
@@ -95,7 +95,7 @@ export default function shake(
const defaultMembers =
depsGraph.importTypes.get(source) === 'wildcard' ? ['*'] : [];
const aliveMembers = new Set(
- members.filter(i => alive.has(i)).map(i => i.name)
+ members.filter((i) => alive.has(i)).map((i) => i.name)
);
imports.set(
diff --git a/src/babel/evaluators/templateProcessor.ts b/src/babel/evaluators/templateProcessor.ts
index 5fd0efa94..af3f3069c 100644
--- a/src/babel/evaluators/templateProcessor.ts
+++ b/src/babel/evaluators/templateProcessor.ts
@@ -60,7 +60,7 @@ export default function getTemplateProcessor(options: StrictOptions) {
const [slug, displayName, className] = getLinariaComment(path);
const parent = path.findParent(
- p =>
+ (p) =>
types.isObjectProperty(p) ||
types.isJSXOpeningElement(p) ||
types.isVariableDeclarator(p)
@@ -243,7 +243,7 @@ export default function getTemplateProcessor(options: StrictOptions) {
// we don't need to use 2 custom properties for them, we can use a single one
const result: { [key: string]: Interpolation } = {};
- interpolations.forEach(it => {
+ interpolations.forEach((it) => {
const key = it.source + it.unit;
if (key in result) {
@@ -260,7 +260,7 @@ export default function getTemplateProcessor(options: StrictOptions) {
types.objectProperty(
types.identifier('vars'),
types.objectExpression(
- Object.keys(result).map(key => {
+ Object.keys(result).map((key) => {
const { id, node, unit } = result[key];
const items = [node];
@@ -306,7 +306,7 @@ export default function getTemplateProcessor(options: StrictOptions) {
cssText,
className: className!,
displayName: displayName!,
- start: path.parent && path.parent.loc ? path.parent.loc.start : null,
+ start: path.parent?.loc?.start ?? null,
};
};
}
diff --git a/src/babel/evaluators/visitors/JSXElement.ts b/src/babel/evaluators/visitors/JSXElement.ts
index 6364d5e6b..93c01d7f4 100644
--- a/src/babel/evaluators/visitors/JSXElement.ts
+++ b/src/babel/evaluators/visitors/JSXElement.ts
@@ -27,7 +27,7 @@ export default function JSXElement(path: NodePath) {
// Is it not just a function, but a method `render`?
if (getFunctionName(scopePath) === 'render') {
- const decl = scopePath.findParent(p => p.isClassDeclaration());
+ const decl = scopePath.findParent((p) => p.isClassDeclaration());
// Replace the whole component
if (decl?.isClassDeclaration()) {
diff --git a/src/babel/evaluators/visitors/ProcessStyled.ts b/src/babel/evaluators/visitors/ProcessStyled.ts
index 1d51876ae..c93440d4e 100644
--- a/src/babel/evaluators/visitors/ProcessStyled.ts
+++ b/src/babel/evaluators/visitors/ProcessStyled.ts
@@ -9,8 +9,8 @@
import { NodePath } from '@babel/traverse';
import { types } from '@babel/core';
-import getLinariaComment from '../../utils/getLinariaComment';
import { expression } from '@babel/template';
+import getLinariaComment from '../../utils/getLinariaComment';
const linariaComponentTpl = expression(
`{
diff --git a/src/babel/extract.ts b/src/babel/extract.ts
index c974308b8..95794860d 100644
--- a/src/babel/extract.ts
+++ b/src/babel/extract.ts
@@ -78,7 +78,7 @@ function addLinariaPreval(
expressionWrapperTpl({ wrapName }),
exportsLinariaPrevalTpl({
expressions: types.arrayExpression(
- lazyDeps.map(expression => expressionTpl({ expression, wrapName }))
+ lazyDeps.map((expression) => expressionTpl({ expression, wrapName }))
),
}),
];
@@ -113,8 +113,8 @@ export default function extract(_babel: any, options: StrictOptions) {
// We need our transforms to run before anything else
// So we traverse here instead of a in a visitor
path.traverse({
- ImportDeclaration: p => DetectStyledImportName(p, state),
- TaggedTemplateExpression: p => {
+ ImportDeclaration: (p) => DetectStyledImportName(p, state),
+ TaggedTemplateExpression: (p) => {
GenerateClassNames(p, state, options);
CollectDependencies(p, state, options);
},
@@ -128,10 +128,10 @@ export default function extract(_babel: any, options: StrictOptions) {
[] as LazyValue[]
);
- const expressionsToEvaluate = lazyDeps.map(v =>
+ const expressionsToEvaluate = lazyDeps.map((v) =>
isNodePath(v.ex) ? v.ex.node : v.ex
);
- const originalLazyExpressions = lazyDeps.map(v =>
+ const originalLazyExpressions = lazyDeps.map((v) =>
isNodePath(v.originalEx) ? v.originalEx.node : v.originalEx
);
@@ -142,13 +142,13 @@ export default function extract(_babel: any, options: StrictOptions) {
if (expressionsToEvaluate.length > 0) {
debug(
'lazy-deps:original-expressions-list',
- originalLazyExpressions.map(node =>
+ originalLazyExpressions.map((node) =>
typeof node !== 'string' ? generator(node).code : node
)
);
debug(
'lazy-deps:expressions-to-eval-list',
- expressionsToEvaluate.map(node =>
+ expressionsToEvaluate.map((node) =>
typeof node !== 'string' ? generator(node).code : node
)
);
@@ -182,7 +182,7 @@ export default function extract(_babel: any, options: StrictOptions) {
originalLazyExpressions.forEach((key, idx) =>
valueCache.set(key, lazyValues[idx])
);
- state.queue.forEach(item => process(item, state, valueCache));
+ state.queue.forEach((item) => process(item, state, valueCache));
},
exit(_: any, state: State) {
if (Object.keys(state.rules).length) {
diff --git a/src/babel/module.ts b/src/babel/module.ts
index fe7555418..e3d837799 100644
--- a/src/babel/module.ts
+++ b/src/babel/module.ts
@@ -144,7 +144,7 @@ class Module {
try {
// Check for supported extensions
- this.extensions.forEach(ext => {
+ this.extensions.forEach((ext) => {
if (ext in extensions) {
return;
}
@@ -159,7 +159,7 @@ class Module {
return Module._resolveFilename(id, this);
} finally {
// Cleanup the extensions we added to restore previous behaviour
- added.forEach(ext => delete extensions[ext]);
+ added.forEach((ext) => delete extensions[ext]);
}
};
@@ -191,11 +191,11 @@ class Module {
);
}
- this.dependencies && this.dependencies.push(id);
+ this.dependencies?.push(id);
let cacheKey = filename;
let only: string[] = [];
- if (this.imports && this.imports.has(id)) {
+ if (this.imports?.has(id)) {
// We know what exactly we need from this module. Let's shake it!
only = this.imports.get(id)!.sort();
if (only.length === 0) {
diff --git a/src/babel/utils/getLinariaComment.ts b/src/babel/utils/getLinariaComment.ts
index 8f74d0186..1ed3b7c9e 100644
--- a/src/babel/utils/getLinariaComment.ts
+++ b/src/babel/utils/getLinariaComment.ts
@@ -12,7 +12,7 @@ export default function getLinariaComment(
return [null, null, null];
}
- const idx = comments.findIndex(comment => pattern.test(comment.value));
+ const idx = comments.findIndex((comment) => pattern.test(comment.value));
if (idx === -1) {
return [null, null, null];
}
@@ -26,5 +26,5 @@ export default function getLinariaComment(
path.node.leadingComments = comments.filter((_, i) => i !== idx);
}
- return matched[1].split(' ').map(i => (i ? i : null));
+ return matched[1].split(' ').map((i) => (i ? i : null));
}
diff --git a/src/babel/utils/isSerializable.ts b/src/babel/utils/isSerializable.ts
index b9443a757..cb5b8a475 100644
--- a/src/babel/utils/isSerializable.ts
+++ b/src/babel/utils/isSerializable.ts
@@ -1,5 +1,5 @@
-import isBoxedPrimitive from './isBoxedPrimitive';
import { Serializable } from '../types';
+import isBoxedPrimitive from './isBoxedPrimitive';
export default function isSerializable(o: any): o is Serializable {
return (
diff --git a/src/babel/utils/isStyledOrCss.ts b/src/babel/utils/isStyledOrCss.ts
index 297711d57..2b69ce941 100644
--- a/src/babel/utils/isStyledOrCss.ts
+++ b/src/babel/utils/isStyledOrCss.ts
@@ -1,7 +1,7 @@
import { types as t } from '@babel/core';
import { NodePath } from '@babel/traverse';
-import hasImport from './hasImport';
import { State, TemplateExpression } from '../types';
+import hasImport from './hasImport';
type Result = NonNullable | 'css' | null;
diff --git a/src/babel/utils/throwIfInvalid.ts b/src/babel/utils/throwIfInvalid.ts
index 8f39df09d..0f7a3fa58 100644
--- a/src/babel/utils/throwIfInvalid.ts
+++ b/src/babel/utils/throwIfInvalid.ts
@@ -1,6 +1,6 @@
import generator from '@babel/generator';
-import isSerializable from './isSerializable';
import { Serializable } from '../types';
+import isSerializable from './isSerializable';
// Throw if we can't handle the interpolated value
function throwIfInvalid(
diff --git a/src/babel/utils/toCSS.ts b/src/babel/utils/toCSS.ts
index c4d430354..4383f5f20 100644
--- a/src/babel/utils/toCSS.ts
+++ b/src/babel/utils/toCSS.ts
@@ -1,8 +1,8 @@
// TypeScript Version: 3.2
-import isSerializable from './isSerializable';
import { unitless } from '../units';
import { JSONValue } from '../types';
+import isSerializable from './isSerializable';
import isBoxedPrimitive from './isBoxedPrimitive';
const hyphenate = (s: string) =>
diff --git a/src/babel/visitors/CollectDependencies.ts b/src/babel/visitors/CollectDependencies.ts
index 76fd4a033..c00583b95 100644
--- a/src/babel/visitors/CollectDependencies.ts
+++ b/src/babel/visitors/CollectDependencies.ts
@@ -31,7 +31,7 @@ function hoist(ex: NodePath) {
hoist(initPath);
initPath.hoist(scope);
if (initPath.isIdentifier()) {
- referencePaths.forEach(referencePath => {
+ referencePaths.forEach((referencePath) => {
referencePath.replaceWith(t.identifier(initPath.node.name));
// referencePath.node.name = initPath.node.name;
});
@@ -92,7 +92,7 @@ export default function CollectDependencies(
debug(
'template-parse:evaluate-expressions',
- expressionValues.map(expressionValue =>
+ expressionValues.map((expressionValue) =>
expressionValue.kind === ValueType.VALUE ? expressionValue.value : 'lazy'
)
);
diff --git a/src/babel/visitors/DetectStyledImportName.ts b/src/babel/visitors/DetectStyledImportName.ts
index 878c0d117..3335f2405 100644
--- a/src/babel/visitors/DetectStyledImportName.ts
+++ b/src/babel/visitors/DetectStyledImportName.ts
@@ -15,7 +15,7 @@ export default function DetectStyledImportName(
return;
}
- path.node.specifiers.forEach(specifier => {
+ path.node.specifiers.forEach((specifier) => {
if (!t.isImportSpecifier(specifier)) {
return;
}
diff --git a/src/babel/visitors/GenerateClassNames.ts b/src/babel/visitors/GenerateClassNames.ts
index a430d98e1..82c7ede87 100644
--- a/src/babel/visitors/GenerateClassNames.ts
+++ b/src/babel/visitors/GenerateClassNames.ts
@@ -37,7 +37,7 @@ export default function GenerateClassNames(
let [slug, displayName, predefinedClassName] = getLinariaComment(path);
const parent = path.findParent(
- p =>
+ (p) =>
t.isObjectProperty(p) ||
t.isJSXOpeningElement(p) ||
t.isVariableDeclarator(p)
diff --git a/src/cli.ts b/src/cli.ts
index 89e68a4c4..97035622d 100644
--- a/src/cli.ts
+++ b/src/cli.ts
@@ -3,8 +3,8 @@
*/
import path from 'path';
-import normalize from 'normalize-path';
import fs from 'fs';
+import normalize from 'normalize-path';
import mkdirp from 'mkdirp';
import glob from 'glob';
import yargs from 'yargs';
@@ -84,7 +84,7 @@ function processFiles(files: string[], options: Options) {
[] as string[]
);
- resolvedFiles.forEach(filename => {
+ resolvedFiles.forEach((filename) => {
const outputFilename = resolveOutputFilename(filename, options.outDir);
const { cssText, sourceMap, cssSourceMapText } = transform(
diff --git a/src/loader.ts b/src/loader.ts
index ac1ecf279..671b85561 100644
--- a/src/loader.ts
+++ b/src/loader.ts
@@ -13,11 +13,11 @@ import enhancedResolve from 'enhanced-resolve';
import findYarnWorkspaceRoot from 'find-yarn-workspace-root';
import { loader as webpackLoader } from 'webpack';
import { RawSourceMap } from 'source-map';
+import cosmiconfig from 'cosmiconfig';
import * as EvalCache from './babel/eval-cache';
import Module from './babel/module';
import { debug } from './babel/utils/logger';
import transform from './transform';
-import cosmiconfig from 'cosmiconfig';
const workspaceRoot = findYarnWorkspaceRoot();
const lernaConfig = cosmiconfig('lerna', {
@@ -68,7 +68,7 @@ export default function loader(
// There is this.resolve, but it's asynchronous
// Another option is to read the webpack.config.js, but it won't work for programmatic usage
// This API is used by many loaders/plugins, so hope we're safe for a while
- this._compilation && this._compilation.options.resolve
+ this._compilation?.options.resolve
? {
...resolveOptions,
alias: this._compilation.options.resolve.alias,
@@ -107,8 +107,8 @@ export default function loader(
).toString('base64')}*/`;
}
- if (result.dependencies && result.dependencies.length) {
- result.dependencies.forEach(dep => {
+ if (result.dependencies?.length) {
+ result.dependencies.forEach((dep) => {
try {
const f = resolveSync(path.dirname(this.resourcePath), dep);
diff --git a/src/react/styled.ts b/src/react/styled.ts
index e45e91662..5340ca405 100644
--- a/src/react/styled.ts
+++ b/src/react/styled.ts
@@ -26,7 +26,7 @@ const restOp = (
keysToExclude: string[]
): { [key: string]: any } =>
Object.keys(obj)
- .filter(prop => !keysToExclude.includes(prop))
+ .filter((prop) => !keysToExclude.includes(prop))
.reduce((acc, curr) => Object.assign(acc, { [curr]: obj[curr] }), {}); // rest operator workaround
const warnIfInvalid = (value: any, componentName: string) => {
diff --git a/src/server/collect.ts b/src/server/collect.ts
index 75c2c0e68..1dc985703 100644
--- a/src/server/collect.ts
+++ b/src/server/collect.ts
@@ -28,7 +28,7 @@ export default function collect(html: string, css: string): CollectResult {
const handleAtRule = (rule: AtRule) => {
let addedToCritical = false;
- rule.each(childRule => {
+ rule.each((childRule) => {
if (isCritical(childRule) && !addedToCritical) {
critical.append(rule.clone());
addedToCritical = true;
@@ -46,7 +46,7 @@ export default function collect(html: string, css: string): CollectResult {
}
};
- stylesheet.walkAtRules('font-face', rule => {
+ stylesheet.walkAtRules('font-face', (rule) => {
/**
* @font-face rules may be defined also in CSS conditional groups (eg. @media)
* we want only handle those from top-level, rest will be handled in stylesheet.walkRules
@@ -58,7 +58,7 @@ export default function collect(html: string, css: string): CollectResult {
const walkedAtRules = new Set();
- stylesheet.walkRules(rule => {
+ stylesheet.walkRules((rule) => {
if ('name' in rule.parent && rule.parent.name === 'keyframes') {
return;
}
@@ -78,11 +78,11 @@ export default function collect(html: string, css: string): CollectResult {
}
});
- critical.walkDecls(/animation/, decl => {
+ critical.walkDecls(/animation/, (decl) => {
animations.add(decl.value.split(' ')[0]);
});
- stylesheet.walkAtRules('keyframes', rule => {
+ stylesheet.walkAtRules('keyframes', (rule) => {
if (animations.has(rule.params)) {
critical.append(rule);
}
@@ -100,7 +100,7 @@ const extractClassesFromHtml = (html: string): RegExp => {
let match = regex.exec(html);
while (match !== null) {
- match[1].split(' ').forEach(className => htmlClasses.push(className));
+ match[1].split(' ').forEach((className) => htmlClasses.push(className));
match = regex.exec(html);
}
diff --git a/src/stylelint/preprocessor.ts b/src/stylelint/preprocessor.ts
index f1d19c186..f45203828 100644
--- a/src/stylelint/preprocessor.ts
+++ b/src/stylelint/preprocessor.ts
@@ -68,7 +68,7 @@ function preprocessor() {
// Construct a CSS-ish file from the unprocessed style rules
let cssText = '';
- Object.keys(rules).forEach(selector => {
+ Object.keys(rules).forEach((selector) => {
const rule = rules[selector];
// Append new lines until we get to the start line number
@@ -116,17 +116,12 @@ function preprocessor() {
if (!loc) {
// If the error doesn't have location info, try to find it from the code frame
- const line = message.split('\n').find(l => l.startsWith('>'));
- const column = message.split('\n').find(l => l.includes('^'));
+ const line = message.split('\n').find((l) => l.startsWith('>'));
+ const column = message.split('\n').find((l) => l.includes('^'));
if (line && column) {
loc = {
- line: Number(
- line
- .replace(/^> /, '')
- .split('|')[0]
- .trim()
- ),
+ line: Number(line.replace(/^> /, '').split('|')[0].trim()),
column: column.replace(/[^|]+\|\s/, '').length,
};
}
@@ -153,7 +148,7 @@ function preprocessor() {
replacements.forEach(({ original, length }) => {
// If the warnings contain stuff that's been replaced,
// Correct the line and column numbers to what's replaced
- result.warnings.forEach(w => {
+ result.warnings.forEach((w) => {
/* eslint-disable no-param-reassign */
if (w.line === original.start.line) {
diff --git a/src/transform.ts b/src/transform.ts
index a171b9dc2..3564683ef 100644
--- a/src/transform.ts
+++ b/src/transform.ts
@@ -171,7 +171,7 @@ export default function transform(code: string, options: Options): Result {
file: options.filename.replace(/\.js$/, '.css'),
});
- mappings.forEach(mapping =>
+ mappings.forEach((mapping) =>
generator.addMapping(
Object.assign({}, mapping, { source: options.filename })
)
diff --git a/src/types.ts b/src/types.ts
index 5943cd139..974e3b17c 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,5 +1,5 @@
-import { PluginOptions } from './babel/utils/loadOptions';
import { RawSourceMap } from 'source-map';
+import { PluginOptions } from './babel/utils/loadOptions';
export type Replacement = {
original: { start: Location; end: Location };
diff --git a/types/styled.ts b/types/styled.ts
index 39c412881..62f1e85d2 100644
--- a/types/styled.ts
+++ b/types/styled.ts
@@ -10,7 +10,8 @@ function isExtends(arg1?: C, arg2?: T): C extends T ? 'extends' : never {
}
// tslint:disable-next-line no-unnecessary-generics
-const Fabric = (): React.FC => props => React.createElement('div', props);
+const Fabric = (): React.FC => (props) =>
+ React.createElement('div', props);
const Header = (p: { children: string }) => React.createElement('h1', p);
@@ -62,12 +63,12 @@ styled(Fabric<{ className: string; style: {} }>())`
styled(Fabric<{ className: string; style: {} }>())`
// color should be defined in props
// $ExpectError
- color: ${props => props.color};
+ color: ${(props) => props.color};
`;
styled(Fabric<{ className: string; style: {}; color: 'red' | 'blue' }>())`
& > ${SimplestComponent} {
- color: ${props => props.color};
+ color: ${(props) => props.color};
}
`;
@@ -86,7 +87,7 @@ styled.a`
((/* Issue #536 */) => {
const Title = styled.div<{ background: string }>`
- background: ${props => props.background};
+ background: ${(props) => props.background};
`;
// $ExpectType "extends"
@@ -102,15 +103,15 @@ styled.a`
((/* Issue #622 */) => {
const Wrapper = styled.div<{ prop1: boolean }>`
width: 1em;
- background-color: ${props => (props.prop1 ? 'transparent' : 'green')};
+ background-color: ${(props) => (props.prop1 ? 'transparent' : 'green')};
`;
const styledTag = styled(Wrapper);
const NewWrapper = styledTag<{ prop2: string }>`
width: 2em;
- background-color: ${props => (props.prop1 ? 'transparent' : 'red')};
- color: ${props => props.prop2};
+ background-color: ${(props) => (props.prop1 ? 'transparent' : 'red')};
+ color: ${(props) => props.prop2};
`;
// $ExpectType Validator | undefined
diff --git a/website/src/components/App.js b/website/src/components/App.js
index c55a8d9cf..7ffd28143 100644
--- a/website/src/components/App.js
+++ b/website/src/components/App.js
@@ -1,7 +1,7 @@
/* @flow */
-import React from 'react';
import { styled } from 'linaria/react';
+import React from 'react';
import Header from './Header';
import Hero from './Hero';
diff --git a/website/src/components/Header.js b/website/src/components/Header.js
index 9ba440764..2a1d356cb 100644
--- a/website/src/components/Header.js
+++ b/website/src/components/Header.js
@@ -1,10 +1,10 @@
/* @flow */
-import React from 'react';
import { styled } from 'linaria/react';
-import Container from './Container';
+import React from 'react';
import constants from '../styles/constants';
import { media } from '../styles/utils';
+import Container from './Container';
export default function Header() {
return (
diff --git a/website/src/components/Hero.js b/website/src/components/Hero.js
index 69e58d3d5..c81571dde 100644
--- a/website/src/components/Hero.js
+++ b/website/src/components/Hero.js
@@ -1,7 +1,7 @@
/* @flow */
-import React from 'react';
import { styled } from 'linaria/react';
+import React from 'react';
import { media } from '../styles/utils';
import Container from './Container';
diff --git a/website/src/server.js b/website/src/server.js
index c1f464eb1..b330c8978 100644
--- a/website/src/server.js
+++ b/website/src/server.js
@@ -2,19 +2,19 @@
import 'ignore-styles';
+import fs from 'fs';
+import path from 'path';
+import crypto from 'crypto';
+import { collect } from 'linaria/server'; // eslint-disable-line import/no-unresolved
import Koa from 'koa';
import Router from 'koa-router';
import compress from 'koa-compress';
import send from 'koa-send';
-import fs from 'fs';
-import path from 'path';
-import crypto from 'crypto';
import dedent from 'dedent';
import React from 'react';
import ReactDOMServer from 'react-dom/server';
-import { collect } from 'linaria/server'; // eslint-disable-line import/no-unresolved
-import App from './components/App';
import config from '../serve.config';
+import App from './components/App';
const cache = {};
const css = fs.readFileSync(path.join(__dirname, '../dist/styles.css'), 'utf8');
@@ -23,14 +23,11 @@ const router = new Router();
app.use(compress());
-router.get('/', async ctx => {
+router.get('/', async (ctx) => {
const html = ReactDOMServer.renderToStaticMarkup();
const { critical, other } = collect(html, css);
- const slug = crypto
- .createHash('md5')
- .update(other)
- .digest('hex');
+ const slug = crypto.createHash('md5').update(other).digest('hex');
cache[slug] = other;
@@ -59,11 +56,11 @@ router.get('/', async ctx => {
`;
});
-router.get('/dist/:path+', async ctx => {
+router.get('/dist/:path+', async (ctx) => {
await send(ctx, path.join('dist', ctx.params.path));
});
-router.get('/styles/:slug', async ctx => {
+router.get('/styles/:slug', async (ctx) => {
ctx.type = 'text/css';
ctx.body = cache[ctx.params.slug];
});
diff --git a/website/webpack.config.js b/website/webpack.config.js
index 5e12af88d..43467483f 100644
--- a/website/webpack.config.js
+++ b/website/webpack.config.js
@@ -1,5 +1,5 @@
-const webpack = require('webpack'); // eslint-disable-line import/no-extraneous-dependencies
const path = require('path');
+const webpack = require('webpack'); // eslint-disable-line import/no-extraneous-dependencies
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); // eslint-disable-line import/no-extraneous-dependencies
const dev = process.env.NODE_ENV !== 'production';
diff --git a/yarn.lock b/yarn.lock
index 20470e6be..89a1c08c5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -884,6 +884,13 @@
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.10.5":
+ version "7.11.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
+ integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4":
version "7.9.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
@@ -924,23 +931,26 @@
lodash "^4.17.13"
to-fast-properties "^2.0.0"
-"@callstack/eslint-config@^9.1.0":
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/@callstack/eslint-config/-/eslint-config-9.1.0.tgz#098e400f0d92be8cca375b8f03bb7594179e5856"
- integrity sha512-mesv2gOOkb+tf80LbCWd2A05cZ5W7U/UGTwJxxDoeU/rw9XI8qWsBWkwpuY73MxFH+zzSqqSsDn9O3UfOxhpeg==
+"@callstack/eslint-config@^10.0.1":
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/@callstack/eslint-config/-/eslint-config-10.0.1.tgz#aedd18706df5cea767778d6a62625c94f40426c7"
+ integrity sha512-CY/2HH5KpZrhZimcfR28FJDVwRTj3pgKFNBBfKwnk+zPXnl2HB7428rrhWUG8upFt+zZssBRy1rAhoMrFiI7eQ==
dependencies:
+ "@typescript-eslint/eslint-plugin" "^2.31.0"
+ "@typescript-eslint/parser" "^2.31.0"
babel-eslint "^10.0.3"
- eslint-config-prettier "^6.7.0"
+ eslint-config-prettier "^6.10.1"
eslint-plugin-flowtype "^4.5.2"
eslint-plugin-import "^2.19.1"
eslint-plugin-jest "^23.1.1"
- eslint-plugin-prettier "^3.1.1"
+ eslint-plugin-prettier "^3.1.3"
eslint-plugin-promise "^4.2.1"
eslint-plugin-react "^7.17.0"
- eslint-plugin-react-hooks "^2.3.0"
+ eslint-plugin-react-hooks "^4.0.0"
eslint-plugin-react-native "^3.8.1"
+ eslint-plugin-react-native-a11y "^2.0.0"
eslint-restricted-globals "^0.2.0"
- prettier "^1.19.1"
+ prettier "^2.0.4"
"@cnakazawa/watch@^1.0.3":
version "1.0.4"
@@ -1561,10 +1571,10 @@
resolved "https://registry.yarnpkg.com/@types/parsimmon/-/parsimmon-1.10.1.tgz#d46015ad91128fce06a1a688ab39a2516507f740"
integrity sha512-MoF2IC9oGSgArJwlxdst4XsvWuoYfNUWtBw0kpnCi6K05kV+Ecl7siEeJ40tgCbI9uqEMGQL/NlPMRv6KVkY5Q==
-"@types/prettier@^1.19.1":
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f"
- integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==
+"@types/prettier@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.2.tgz#5bb52ee68d0f8efa9cc0099920e56be6cc4e37f3"
+ integrity sha512-IkVfat549ggtkZUthUzEX49562eGikhSYeVGX97SkMFn+sTZrgRewXjQ4tPKFPCykZHkX1Zfd9OoELGqKU2jJA==
"@types/prop-types@*":
version "15.7.3"
@@ -1653,17 +1663,50 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/eslint-plugin@^2.25.0":
- version "2.25.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz#0b60917332f20dcff54d0eb9be2a9e9f4c9fbd02"
- integrity sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw==
+"@typescript-eslint/eslint-plugin@^2.31.0":
+ version "2.34.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9"
+ integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "2.34.0"
+ functional-red-black-tree "^1.0.1"
+ regexpp "^3.0.0"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/eslint-plugin@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.9.0.tgz#0fe529b33d63c9a94f7503ca2bb12c84b9477ff3"
+ integrity sha512-UD6b4p0/hSe1xdTvRCENSx7iQ+KR6ourlZFfYuPC7FlXEzdHuLPrEmuxZ23b2zW96KJX9Z3w05GE/wNOiEzrVg==
dependencies:
- "@typescript-eslint/experimental-utils" "2.25.0"
+ "@typescript-eslint/experimental-utils" "3.9.0"
+ debug "^4.1.1"
functional-red-black-tree "^1.0.1"
regexpp "^3.0.0"
+ semver "^7.3.2"
tsutils "^3.17.1"
-"@typescript-eslint/experimental-utils@2.25.0", "@typescript-eslint/experimental-utils@^2.5.0":
+"@typescript-eslint/experimental-utils@2.34.0":
+ version "2.34.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f"
+ integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/typescript-estree" "2.34.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/experimental-utils@3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.9.0.tgz#3171d8ddba0bf02a8c2034188593630914fcf5ee"
+ integrity sha512-/vSHUDYizSOhrOJdjYxPNGfb4a3ibO8zd4nUKo/QBFOmxosT3cVUV7KIg8Dwi6TXlr667G7YPqFK9+VSZOorNA==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/types" "3.9.0"
+ "@typescript-eslint/typescript-estree" "3.9.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^2.0.0"
+
+"@typescript-eslint/experimental-utils@^2.5.0":
version "2.25.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714"
integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw==
@@ -1673,16 +1716,32 @@
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
-"@typescript-eslint/parser@^2.25.0":
- version "2.25.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.25.0.tgz#abfb3d999084824d9a756d9b9c0f36fba03adb76"
- integrity sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg==
+"@typescript-eslint/parser@^2.31.0":
+ version "2.34.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8"
+ integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==
dependencies:
"@types/eslint-visitor-keys" "^1.0.0"
- "@typescript-eslint/experimental-utils" "2.25.0"
- "@typescript-eslint/typescript-estree" "2.25.0"
+ "@typescript-eslint/experimental-utils" "2.34.0"
+ "@typescript-eslint/typescript-estree" "2.34.0"
+ eslint-visitor-keys "^1.1.0"
+
+"@typescript-eslint/parser@^3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.9.0.tgz#344978a265d9a5c7c8f13e62c78172a4374dabea"
+ integrity sha512-rDHOKb6uW2jZkHQniUQVZkixQrfsZGUCNWWbKWep4A5hGhN5dLHMUCNAWnC4tXRlHedXkTDptIpxs6e4Pz8UfA==
+ dependencies:
+ "@types/eslint-visitor-keys" "^1.0.0"
+ "@typescript-eslint/experimental-utils" "3.9.0"
+ "@typescript-eslint/types" "3.9.0"
+ "@typescript-eslint/typescript-estree" "3.9.0"
eslint-visitor-keys "^1.1.0"
+"@typescript-eslint/types@3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.9.0.tgz#be9d0aa451e1bf3ce99f2e6920659e5b2e6bfe18"
+ integrity sha512-rb6LDr+dk9RVVXO/NJE8dT1pGlso3voNdEIN8ugm4CWM5w5GimbThCMiMl4da1t5u3YwPWEwOnKAULCZgBtBHg==
+
"@typescript-eslint/typescript-estree@2.25.0":
version "2.25.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c"
@@ -1696,6 +1755,40 @@
semver "^6.3.0"
tsutils "^3.17.1"
+"@typescript-eslint/typescript-estree@2.34.0":
+ version "2.34.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5"
+ integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==
+ dependencies:
+ debug "^4.1.1"
+ eslint-visitor-keys "^1.1.0"
+ glob "^7.1.6"
+ is-glob "^4.0.1"
+ lodash "^4.17.15"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/typescript-estree@3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.9.0.tgz#c6abbb50fa0d715cab46fef67ca6378bf2eaca13"
+ integrity sha512-N+158NKgN4rOmWVfvKOMoMFV5n8XxAliaKkArm/sOypzQ0bUL8MSnOEBW3VFIeffb/K5ce/cAV0yYhR7U4ALAA==
+ dependencies:
+ "@typescript-eslint/types" "3.9.0"
+ "@typescript-eslint/visitor-keys" "3.9.0"
+ debug "^4.1.1"
+ glob "^7.1.6"
+ is-glob "^4.0.1"
+ lodash "^4.17.15"
+ semver "^7.3.2"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/visitor-keys@3.9.0":
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.9.0.tgz#44de8e1b1df67adaf3b94d6b60b80f8faebc8dd3"
+ integrity sha512-O1qeoGqDbu0EZUC/MZ6F1WHTIzcBVhGqDj3LhTnj65WUA548RXVxUHbYhAW9bZWfb2rnX9QsbbP5nmeJ5Z4+ng==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
"@webassemblyjs/ast@1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@@ -1892,10 +1985,10 @@ acorn@^6.0.1, acorn@^6.2.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
-acorn@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
- integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==
+acorn@^7.3.1:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c"
+ integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==
add-stream@^1.0.0:
version "1.0.0"
@@ -1964,6 +2057,11 @@ ansi-align@^3.0.0:
dependencies:
string-width "^3.0.0"
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
ansi-escapes@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
@@ -2154,6 +2252,11 @@ assign-symbols@^1.0.0:
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+ast-types-flow@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
+ integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
+
astral-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
@@ -2668,7 +2771,7 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2:
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -2696,6 +2799,14 @@ chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
+chalk@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
+ integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
changelog-filename-regex@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/changelog-filename-regex/-/changelog-filename-regex-1.1.2.tgz#19e98e38248cff0c1cf3ae3bf51bfb22c48592d6"
@@ -3278,7 +3389,7 @@ cross-spawn@^5.0.1:
shebang-command "^1.2.0"
which "^1.2.9"
-cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
@@ -3289,6 +3400,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
+cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@@ -3422,7 +3542,7 @@ deep-extend@^0.6.0:
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-deep-is@~0.1.3:
+deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
@@ -3719,6 +3839,13 @@ enhanced-resolve@^4.1.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
+enquirer@^2.3.5:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
+
errno@^0.1.3, errno@~0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
@@ -3781,10 +3908,10 @@ escodegen@^1.9.1:
optionalDependencies:
source-map "~0.6.1"
-eslint-config-prettier@^6.7.0:
- version "6.10.1"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a"
- integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ==
+eslint-config-prettier@^6.10.1:
+ version "6.11.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1"
+ integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==
dependencies:
get-stdin "^6.0.0"
@@ -3836,10 +3963,10 @@ eslint-plugin-jest@^23.1.1:
dependencies:
"@typescript-eslint/experimental-utils" "^2.5.0"
-eslint-plugin-prettier@^3.1.1, eslint-plugin-prettier@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba"
- integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==
+eslint-plugin-prettier@^3.1.3, eslint-plugin-prettier@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2"
+ integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==
dependencies:
prettier-linter-helpers "^1.0.0"
@@ -3848,10 +3975,19 @@ eslint-plugin-promise@^4.2.1:
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==
-eslint-plugin-react-hooks@^2.3.0:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0"
- integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==
+eslint-plugin-react-hooks@^4.0.0:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.8.tgz#a9b1e3d57475ccd18276882eff3d6cba00da7a56"
+ integrity sha512-6SSb5AiMCPd8FDJrzah+Z4F44P2CdOaK026cXFV+o/xSRzfOiV1FNFeLl2z6xm3yqWOQEZ5OfVgiec90qV2xrQ==
+
+eslint-plugin-react-native-a11y@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-native-a11y/-/eslint-plugin-react-native-a11y-2.0.1.tgz#68892b35e7821feea8e1ced5be0b84dbab384e34"
+ integrity sha512-CoqjPDq19W2j8K5AqA/hR40uEH85gU/7Bc6mZCdrPxQjRcm51OBIf4ZUA09B9ddUnraHKnnxGzQJ9reBa/VesQ==
+ dependencies:
+ "@babel/runtime" "^7.10.5"
+ ast-types-flow "^0.0.7"
+ jsx-ast-utils "^2.4.1"
eslint-plugin-react-native-globals@^0.1.1:
version "0.1.2"
@@ -3904,12 +4040,13 @@ eslint-scope@^5.0.0:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-utils@^1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
- integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
+eslint-scope@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5"
+ integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==
dependencies:
- eslint-visitor-keys "^1.1.0"
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
eslint-utils@^2.0.0:
version "2.0.0"
@@ -3918,27 +4055,40 @@ eslint-utils@^2.0.0:
dependencies:
eslint-visitor-keys "^1.1.0"
+eslint-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
-eslint@^6.8.0:
- version "6.8.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
- integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==
+eslint-visitor-keys@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint@^7.6.0:
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.6.0.tgz#522d67cfaea09724d96949c70e7a0550614d64d6"
+ integrity sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w==
dependencies:
"@babel/code-frame" "^7.0.0"
ajv "^6.10.0"
- chalk "^2.1.0"
- cross-spawn "^6.0.5"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
debug "^4.0.1"
doctrine "^3.0.0"
- eslint-scope "^5.0.0"
- eslint-utils "^1.4.3"
- eslint-visitor-keys "^1.1.0"
- espree "^6.1.2"
- esquery "^1.0.1"
+ enquirer "^2.3.5"
+ eslint-scope "^5.1.0"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^1.3.0"
+ espree "^7.2.0"
+ esquery "^1.2.0"
esutils "^2.0.2"
file-entry-cache "^5.0.1"
functional-red-black-tree "^1.0.1"
@@ -3947,45 +4097,43 @@ eslint@^6.8.0:
ignore "^4.0.6"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
- inquirer "^7.0.0"
is-glob "^4.0.0"
js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
- levn "^0.3.0"
- lodash "^4.17.14"
+ levn "^0.4.1"
+ lodash "^4.17.19"
minimatch "^3.0.4"
- mkdirp "^0.5.1"
natural-compare "^1.4.0"
- optionator "^0.8.3"
+ optionator "^0.9.1"
progress "^2.0.0"
- regexpp "^2.0.1"
- semver "^6.1.2"
- strip-ansi "^5.2.0"
- strip-json-comments "^3.0.1"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
table "^5.2.3"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
-espree@^6.1.2:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
- integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
+espree@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69"
+ integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==
dependencies:
- acorn "^7.1.1"
+ acorn "^7.3.1"
acorn-jsx "^5.2.0"
- eslint-visitor-keys "^1.1.0"
+ eslint-visitor-keys "^1.3.0"
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esquery@^1.0.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe"
- integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==
+esquery@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
+ integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
dependencies:
- estraverse "^5.0.0"
+ estraverse "^5.1.0"
esrecurse@^4.1.0:
version "4.2.1"
@@ -3999,10 +4147,10 @@ estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
-estraverse@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22"
- integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==
+estraverse@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
estree-walker@^0.6.1:
version "0.6.1"
@@ -4168,7 +4316,7 @@ fast-json-stable-stringify@^2.0.0:
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fast-levenshtein@~2.0.6:
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
@@ -4983,7 +5131,7 @@ inquirer@7.0.4:
strip-ansi "^5.1.0"
through "^2.3.6"
-inquirer@^7.0.0, inquirer@^7.0.4:
+inquirer@^7.0.4:
version "7.1.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29"
integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==
@@ -5941,6 +6089,14 @@ jsx-ast-utils@^2.2.3:
array-includes "^3.0.3"
object.assign "^4.1.0"
+jsx-ast-utils@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e"
+ integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==
+ dependencies:
+ array-includes "^3.1.1"
+ object.assign "^4.1.0"
+
keyv@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
@@ -6015,7 +6171,15 @@ levenary@^1.1.1:
dependencies:
leven "^3.1.0"
-levn@^0.3.0, levn@~0.3.0:
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
@@ -6151,6 +6315,11 @@ lodash@4.17.15, lodash@^4.11.2, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.1
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+lodash@^4.17.19:
+ version "4.17.19"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
+ integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
+
log-symbols@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4"
@@ -6772,7 +6941,7 @@ optimist@^0.6.1:
minimist "~0.0.1"
wordwrap "~0.0.2"
-optionator@^0.8.1, optionator@^0.8.3:
+optionator@^0.8.1:
version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
@@ -6784,6 +6953,18 @@ optionator@^0.8.1, optionator@^0.8.3:
type-check "~0.3.2"
word-wrap "~1.2.3"
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
ora@4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.3.tgz#752a1b7b4be4825546a7a3d59256fa523b6b6d05"
@@ -7065,6 +7246,11 @@ path-key@^2.0.0, path-key@^2.0.1:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
@@ -7210,6 +7396,11 @@ postcss@^7.0.14:
source-map "^0.6.1"
supports-color "^6.1.0"
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -7239,10 +7430,10 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
-prettier@^1.16.4, prettier@^1.19.1:
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
- integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
+prettier@^2.0.4, prettier@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4"
+ integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==
pretty-format@^24.9.0:
version "24.9.0"
@@ -7639,16 +7830,16 @@ regexp.prototype.flags@^1.3.0:
define-properties "^1.1.3"
es-abstract "^1.17.0-next.1"
-regexpp@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
- integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
-
regexpp@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e"
integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==
+regexpp@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+ integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+
regexpu-core@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938"
@@ -8047,7 +8238,7 @@ semver-diff@^3.1.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
+semver@6.3.0, semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -8062,6 +8253,11 @@ semver@7.1.3:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6"
integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==
+semver@^7.2.1, semver@^7.3.2:
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
+ integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+
serialize-javascript@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
@@ -8102,11 +8298,23 @@ shebang-command@^1.2.0:
dependencies:
shebang-regex "^1.0.0"
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.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"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
shelljs@0.8.3:
version "0.8.3"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097"
@@ -8505,10 +8713,10 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-strip-json-comments@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
- integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
+strip-json-comments@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
stubs@^3.0.0:
version "3.0.0"
@@ -8821,6 +9029,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -8855,10 +9070,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@^3.8.3:
- version "3.8.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
- integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
+typescript@^3.9.7:
+ version "3.9.7"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
+ integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
typescript@next:
version "3.9.0-dev.20200324"
@@ -9235,6 +9450,13 @@ which@^1.2.9, which@^1.3.0:
dependencies:
isexe "^2.0.0"
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
widest-line@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
@@ -9264,7 +9486,7 @@ windows-release@^3.1.0:
dependencies:
execa "^1.0.0"
-word-wrap@~1.2.3:
+word-wrap@^1.2.3, word-wrap@~1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==