Fix most lint warnings
Summary: I noticed that after the typescript upgrade, I got several weird positives from ESLint (like unused parameters in a type definition, which are obviously always unused, e.g. `type onClick = (e: Event) => void`). After some investigation, it turned out these warnings are generated by eslint, but that those rules should be performaned by typescript/eslint instead. For future reference to which rules this applies: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/README.md#extension-rules Updated the config, and while at it, fixed all warnings in our codebase, except for `react-hooks/exhaustive-deps` warnings, since those require semantic changes. This reduces the amount of eslint warnings from 86 to 39. Reviewed By: passy Differential Revision: D23905630 fbshipit-source-id: 0557708fd9ec6b17840a3c191e7d3baf225bdf23
This commit is contained in:
committed by
Facebook GitHub Bot
parent
aaabe1cc82
commit
ecf4cff7cf
@@ -87,9 +87,16 @@ module.exports = {
|
||||
files: ['*.tsx', '*.ts'],
|
||||
parser: '@typescript-eslint/parser',
|
||||
rules: {
|
||||
'no-undef': 0, // taken care of by TypeScript already
|
||||
'import/no-unresolved': 0, // taken care of by TypeScript already
|
||||
'prettier/prettier': [2, {...prettierConfig, parser: 'typescript'}],
|
||||
// following rules are disabled because TS already handles it
|
||||
'no-undef': 0,
|
||||
'import/no-unresolved': 0,
|
||||
// following rules are disabled because they don't handle TS correctly,
|
||||
// while their @typescript-eslint counterpart does
|
||||
// for reference: https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/README.md#extension-rules
|
||||
'no-unused-vars': 0,
|
||||
'no-redeclare': 0,
|
||||
'@typescript-eslint/no-redeclare': 1,
|
||||
'@typescript-eslint/no-unused-vars': [
|
||||
1,
|
||||
{
|
||||
|
||||
@@ -63,7 +63,7 @@ import {useLocalStorage} from '../../utils/useLocalStorage';
|
||||
import {PluginDefinition, ClientPluginMap, DevicePluginMap} from '../../plugin';
|
||||
|
||||
type FlipperPlugins = PluginDefinition[];
|
||||
type PluginsByCategory = [string, FlipperPlugins][];
|
||||
type PluginsByCategoryType = [string, FlipperPlugins][];
|
||||
|
||||
type SectionLevel = 1 | 2 | 3;
|
||||
|
||||
@@ -398,10 +398,12 @@ function isStaticViewActive(
|
||||
return current && selected && current === selected;
|
||||
}
|
||||
|
||||
function groupPluginsByCategory(plugins: FlipperPlugins): PluginsByCategory {
|
||||
function groupPluginsByCategory(
|
||||
plugins: FlipperPlugins,
|
||||
): PluginsByCategoryType {
|
||||
const sortedPlugins = plugins.slice().sort(sortPluginsByName);
|
||||
const byCategory: {[cat: string]: FlipperPlugins} = {};
|
||||
const res: PluginsByCategory = [];
|
||||
const res: PluginsByCategoryType = [];
|
||||
sortedPlugins.forEach((plugin) => {
|
||||
const category = plugin.category || '';
|
||||
(byCategory[category] || (byCategory[category] = [])).push(plugin);
|
||||
@@ -477,7 +479,7 @@ const PluginList = memo(function PluginList({
|
||||
selectedApp?: null | string;
|
||||
}) {
|
||||
// client is a mutable structure, so we need the event emitter to detect the addition of plugins....
|
||||
const [_, setPluginsChanged] = useState(0);
|
||||
const [, setPluginsChanged] = useState(0);
|
||||
useEffect(() => {
|
||||
const listener = () => setPluginsChanged((v) => v + 1);
|
||||
client.on('plugins-change', listener);
|
||||
@@ -493,7 +495,7 @@ const PluginList = memo(function PluginList({
|
||||
plugin,
|
||||
});
|
||||
},
|
||||
[client],
|
||||
[client, starPlugin],
|
||||
);
|
||||
|
||||
const allPlugins = Array.from(clientPlugins.values()).filter(
|
||||
|
||||
@@ -227,7 +227,7 @@ class StripLogPrefix extends Transform {
|
||||
|
||||
_transform(
|
||||
data: any,
|
||||
encoding: string,
|
||||
_encoding: string,
|
||||
callback: (err?: Error, data?: any) => void,
|
||||
) {
|
||||
if (this.passedPrefix) {
|
||||
|
||||
@@ -17,10 +17,6 @@ import {
|
||||
TestUtils,
|
||||
} from 'flipper-plugin';
|
||||
|
||||
interface PersistedState {
|
||||
count: 1;
|
||||
}
|
||||
|
||||
const pluginDetails = TestUtils.createMockPluginDetails();
|
||||
|
||||
let initialized = false;
|
||||
|
||||
@@ -18,10 +18,6 @@ import {
|
||||
TestUtils,
|
||||
} from 'flipper-plugin';
|
||||
|
||||
interface PersistedState {
|
||||
count: 1;
|
||||
}
|
||||
|
||||
const pluginDetails = TestUtils.createMockPluginDetails();
|
||||
|
||||
let initialized = false;
|
||||
|
||||
@@ -358,7 +358,7 @@ class Server extends EventEmitter {
|
||||
};
|
||||
|
||||
_untrustedRequestHandler = (
|
||||
socket: ReactiveSocket<string, any>,
|
||||
_socket: ReactiveSocket<string, any>,
|
||||
payload: Payload<string, any>,
|
||||
): Partial<Responder<string, any>> => {
|
||||
if (!payload.data) {
|
||||
|
||||
@@ -35,7 +35,7 @@ function createHighlightManager(initialText: string = ''): HighlightManager {
|
||||
let currentFilter = initialText;
|
||||
|
||||
const Highlight: React.FC<{text: string}> = memo(({text}) => {
|
||||
const [_update, setUpdate] = useState(0);
|
||||
const [, setUpdate] = useState(0);
|
||||
const elem = useRef<HTMLSpanElement | null>(null);
|
||||
useEffect(() => {
|
||||
function onChange(prevHighlight: string, newHighlight: string) {
|
||||
|
||||
@@ -120,21 +120,12 @@ const TooltipTail = styled.div<{
|
||||
}));
|
||||
TooltipTail.displayName = 'TooltipProvider:TooltipTail';
|
||||
|
||||
type TooltipProps = {
|
||||
children: React.ReactNode;
|
||||
};
|
||||
|
||||
type TooltipObject = {
|
||||
rect: ClientRect;
|
||||
title: React.ReactNode;
|
||||
options: TooltipOptions;
|
||||
};
|
||||
|
||||
type TooltipState = {
|
||||
tooltip: TooltipObject | null | undefined;
|
||||
timeoutID: ReturnType<typeof setTimeout> | null | undefined;
|
||||
};
|
||||
|
||||
interface TooltipManager {
|
||||
open(
|
||||
container: HTMLDivElement,
|
||||
|
||||
@@ -539,8 +539,6 @@ function parseColor(
|
||||
return {a, b, g, r};
|
||||
}
|
||||
|
||||
const pencilStyle = {cursor: 'pointer', marginLeft: 8};
|
||||
|
||||
type Picker = {
|
||||
values: Set<string>;
|
||||
selected: string;
|
||||
|
||||
@@ -314,14 +314,6 @@ function isComponentExpanded(data: any, diffType: string, diffValue: any) {
|
||||
return false;
|
||||
}
|
||||
|
||||
type DataInspectorState = {
|
||||
shouldExpand: boolean;
|
||||
isExpanded: boolean;
|
||||
isExpandable: boolean;
|
||||
res: any;
|
||||
resDiff: any;
|
||||
};
|
||||
|
||||
const recursiveMarker = <RecursiveBaseWrapper>Recursive</RecursiveBaseWrapper>;
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,13 +8,7 @@
|
||||
*/
|
||||
|
||||
import * as React from 'react';
|
||||
import {
|
||||
render,
|
||||
fireEvent,
|
||||
waitFor,
|
||||
act,
|
||||
waitForElement,
|
||||
} from '@testing-library/react';
|
||||
import {render, fireEvent, waitFor, act} from '@testing-library/react';
|
||||
|
||||
import ManagedDataInspector from '../ManagedDataInspector';
|
||||
import {sleep} from '../../../../utils';
|
||||
|
||||
@@ -94,10 +94,6 @@ type ProcessNotificationStatesOptions = {
|
||||
statusUpdate?: (msg: string) => void;
|
||||
};
|
||||
|
||||
type SerializePluginStatesOptions = {
|
||||
pluginStates: PluginStatesState;
|
||||
};
|
||||
|
||||
type PluginsToProcess = {
|
||||
pluginKey: string;
|
||||
pluginId: string;
|
||||
|
||||
@@ -15,7 +15,6 @@ import {killOrphanedInstrumentsProcesses} from './processCleanup';
|
||||
import {reportPlatformFailures} from './metrics';
|
||||
import {promises, constants} from 'fs';
|
||||
import memoize from 'lodash.memoize';
|
||||
import GK from '../fb-stubs/GK';
|
||||
import {notNull} from './typeUtils';
|
||||
|
||||
// Use debug to get helpful logs when idb fails
|
||||
|
||||
@@ -27,7 +27,7 @@ export function deserialize(str: string): any {
|
||||
}
|
||||
|
||||
function processArray(
|
||||
element: any,
|
||||
_element: any,
|
||||
array: Array<any>,
|
||||
stack: Array<any>,
|
||||
dict: Map<any, any>,
|
||||
@@ -50,7 +50,7 @@ function processArray(
|
||||
}
|
||||
|
||||
function processKeyValuePair(
|
||||
element: any,
|
||||
_element: any,
|
||||
key: any,
|
||||
value: any,
|
||||
stack: Array<any>,
|
||||
|
||||
@@ -112,7 +112,7 @@ export function maybeSnapLeft(
|
||||
}
|
||||
|
||||
export function maybeSnapTop(
|
||||
props: Rect,
|
||||
_props: Rect,
|
||||
windows: Array<Rect>,
|
||||
top: number,
|
||||
): number {
|
||||
|
||||
@@ -188,9 +188,9 @@ export function startPlugin<Module extends FlipperPluginModule<any>>(
|
||||
pluginInstance.disconnect();
|
||||
},
|
||||
call(
|
||||
api: string,
|
||||
_api: string,
|
||||
method: string,
|
||||
fromPlugin: boolean,
|
||||
_fromPlugin: boolean,
|
||||
params?: Object,
|
||||
): Promise<Object> {
|
||||
return sendStub(method, params);
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
"detect-port": "^1.1.1",
|
||||
"electron": "10.1.1",
|
||||
"electron-builder": "^22.8.0",
|
||||
"eslint": "^7.4.0",
|
||||
"eslint": "^7.9.0",
|
||||
"eslint-config-fbjs": "^3.1.1",
|
||||
"eslint-config-prettier": "^6.10.1",
|
||||
"eslint-import-resolver-typescript": "^2.3.0",
|
||||
@@ -184,7 +184,7 @@
|
||||
"eslint-plugin-jsx-a11y": "^6.3.1",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-prettier": "^3.1.2",
|
||||
"eslint-plugin-react": "^7.20.0",
|
||||
"eslint-plugin-react": "^7.21.1",
|
||||
"eslint-plugin-react-hooks": "^4.0.4",
|
||||
"expand-tilde": "^2.0.2",
|
||||
"express": "^4.15.2",
|
||||
|
||||
@@ -387,7 +387,7 @@ function addFileWatcherForiOSCrashLogs(
|
||||
// Directory doesn't exist
|
||||
return;
|
||||
}
|
||||
fs.watch(dir, (eventType, filename) => {
|
||||
fs.watch(dir, (_eventType, filename) => {
|
||||
// We just parse the crash logs with extension `.crash`
|
||||
const checkFileExtension = /.crash$/.exec(filename);
|
||||
if (!filename || !checkFileExtension) {
|
||||
@@ -643,7 +643,7 @@ export default class CrashReporterPlugin extends FlipperDevicePlugin<
|
||||
const referenceDate = new Date();
|
||||
(function (
|
||||
store: Store,
|
||||
date: Date,
|
||||
_date: Date,
|
||||
setPersistedState: (
|
||||
pluginKey: string,
|
||||
newPluginState: Maybe<PersistedState>,
|
||||
|
||||
@@ -20,7 +20,6 @@ import {
|
||||
FlexColumn,
|
||||
LoadingIndicator,
|
||||
styled,
|
||||
Select,
|
||||
ToggleButton,
|
||||
Text,
|
||||
} from 'flipper';
|
||||
@@ -96,13 +95,6 @@ type ImagesCacheOverviewState = {
|
||||
size: number;
|
||||
};
|
||||
|
||||
const _StyledSelect = styled(Select)({
|
||||
marginLeft: 6,
|
||||
marginRight: 6,
|
||||
height: '100%',
|
||||
maxWidth: 164,
|
||||
});
|
||||
|
||||
export default class ImagesCacheOverview extends PureComponent<
|
||||
ImagesCacheOverviewProps,
|
||||
ImagesCacheOverviewState
|
||||
|
||||
@@ -79,12 +79,6 @@ const debugLog = (...args: any[]) => {
|
||||
}
|
||||
};
|
||||
|
||||
type ImagesMetaData = {
|
||||
levels: ImagesListResponse;
|
||||
events: Array<ImageEventWithId>;
|
||||
imageDataList: Array<ImageData>;
|
||||
};
|
||||
|
||||
export default class FlipperImagesPlugin extends FlipperPlugin<
|
||||
PluginState,
|
||||
BaseAction,
|
||||
|
||||
@@ -43,7 +43,5 @@ declare module 'firefox-client/lib/client-methods' {
|
||||
}
|
||||
|
||||
declare module 'firefox-client/lib/extend' {
|
||||
import FirefoxClient from 'firefox-client';
|
||||
|
||||
export default function extend(prototype: any, o: any): any;
|
||||
}
|
||||
|
||||
@@ -553,7 +553,7 @@ class JSONTextFormatter {
|
||||
);
|
||||
};
|
||||
|
||||
formatResponse = (request: Request, response: Response) => {
|
||||
formatResponse = (_request: Request, response: Response) => {
|
||||
return this.format(
|
||||
decodeBody(response),
|
||||
getHeaderValue(response.headers, 'content-type'),
|
||||
@@ -589,7 +589,7 @@ class XMLTextFormatter {
|
||||
);
|
||||
};
|
||||
|
||||
formatResponse = (request: Request, response: Response) => {
|
||||
formatResponse = (_request: Request, response: Response) => {
|
||||
return this.format(
|
||||
decodeBody(response),
|
||||
getHeaderValue(response.headers, 'content-type'),
|
||||
@@ -611,7 +611,7 @@ class JSONFormatter {
|
||||
);
|
||||
};
|
||||
|
||||
formatResponse = (request: Request, response: Response) => {
|
||||
formatResponse = (_request: Request, response: Response) => {
|
||||
return this.format(
|
||||
decodeBody(response),
|
||||
getHeaderValue(response.headers, 'content-type'),
|
||||
@@ -715,7 +715,7 @@ class GraphQLFormatter {
|
||||
}
|
||||
};
|
||||
|
||||
formatResponse = (request: Request, response: Response) => {
|
||||
formatResponse = (_request: Request, response: Response) => {
|
||||
return this.format(
|
||||
decodeBody(response),
|
||||
getHeaderValue(response.headers, 'content-type'),
|
||||
|
||||
@@ -85,7 +85,7 @@ const GrabMetroDevice = connect<
|
||||
}: GrabMetroDeviceStoreProps & GrabMetroDeviceOwnProps) {
|
||||
useEffect(() => {
|
||||
onHasDevice(metroDevice);
|
||||
}, [metroDevice]);
|
||||
}, [metroDevice, onHasDevice]);
|
||||
return null;
|
||||
});
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ function startAssetServer(
|
||||
): Promise<{app: Express; server: http.Server}> {
|
||||
const app = express();
|
||||
|
||||
app.use((req, res, next) => {
|
||||
app.use((req, _res, next) => {
|
||||
if (knownErrors[req.url] != null) {
|
||||
delete knownErrors[req.url];
|
||||
outputScreen();
|
||||
@@ -150,14 +150,14 @@ function startAssetServer(
|
||||
next();
|
||||
});
|
||||
|
||||
app.use((req, res, next) => {
|
||||
app.use((_req, res, next) => {
|
||||
res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
|
||||
res.header('Expires', '-1');
|
||||
res.header('Pragma', 'no-cache');
|
||||
next();
|
||||
});
|
||||
|
||||
app.post('/_restartElectron', (req, res) => {
|
||||
app.post('/_restartElectron', (_req, res) => {
|
||||
if (shutdownElectron) {
|
||||
shutdownElectron();
|
||||
}
|
||||
@@ -165,8 +165,8 @@ function startAssetServer(
|
||||
res.end();
|
||||
});
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
fs.readFile(path.join(staticDir, 'index.dev.html'), (err, content) => {
|
||||
app.get('/', (_req, res) => {
|
||||
fs.readFile(path.join(staticDir, 'index.dev.html'), (_err, content) => {
|
||||
res.end(content);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -12,7 +12,6 @@ import {ResizeObserver} from './ResizeObserver.d';
|
||||
import {Store} from '../app/src/reducers';
|
||||
|
||||
export {};
|
||||
type RequestIdleHandle = number;
|
||||
|
||||
declare global {
|
||||
interface StoreEnhancerStateSanitizer {
|
||||
|
||||
@@ -1345,6 +1345,22 @@
|
||||
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
|
||||
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
|
||||
|
||||
"@eslint/eslintrc@^0.1.3":
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085"
|
||||
integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==
|
||||
dependencies:
|
||||
ajv "^6.12.4"
|
||||
debug "^4.1.1"
|
||||
espree "^7.3.0"
|
||||
globals "^12.1.0"
|
||||
ignore "^4.0.6"
|
||||
import-fresh "^3.2.1"
|
||||
js-yaml "^3.13.1"
|
||||
lodash "^4.17.19"
|
||||
minimatch "^3.0.4"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@iarna/toml@^2.2.5":
|
||||
version "2.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
|
||||
@@ -2717,7 +2733,7 @@ acorn-walk@^7.1.1:
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e"
|
||||
integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==
|
||||
|
||||
acorn@7.1.1, acorn@^6.0.1, acorn@^7.1.0, acorn@^7.1.1, acorn@^7.2.0:
|
||||
acorn@7.1.1, acorn@^6.0.1, acorn@^7.1.0, acorn@^7.1.1, acorn@^7.2.0, acorn@^7.4.0:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
|
||||
integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==
|
||||
@@ -2785,6 +2801,16 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.2, ajv@^6.5.5:
|
||||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ajv@^6.12.4:
|
||||
version "6.12.5"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da"
|
||||
integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.1"
|
||||
fast-json-stable-stringify "^2.0.0"
|
||||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
algoliasearch@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.4.0.tgz#25c356d8bdcf7e3f941633f61e1ac111ddcba404"
|
||||
@@ -3114,6 +3140,15 @@ array.prototype.flat@^1.2.3:
|
||||
define-properties "^1.1.3"
|
||||
es-abstract "^1.17.0-next.1"
|
||||
|
||||
array.prototype.flatmap@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443"
|
||||
integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==
|
||||
dependencies:
|
||||
define-properties "^1.1.3"
|
||||
es-abstract "^1.17.0-next.1"
|
||||
function-bind "^1.1.1"
|
||||
|
||||
arraybuffer.slice@~0.0.7:
|
||||
version "0.0.7"
|
||||
resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
|
||||
@@ -5419,6 +5454,23 @@ eslint-plugin-react@^7.20.0:
|
||||
string.prototype.matchall "^4.0.2"
|
||||
xregexp "^4.3.0"
|
||||
|
||||
eslint-plugin-react@^7.21.1:
|
||||
version "7.21.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.21.1.tgz#3d9fe506eab78756f67c671bb2a9aa9c20990a39"
|
||||
integrity sha512-TGtWzWrFjZtrD1giMz0O6a9ul++YR9vZSzIL/a7qlb5I/ra/O5RkMGMJK+KKYnJrzz884kyAkEyWiU4Hg2HTrg==
|
||||
dependencies:
|
||||
array-includes "^3.1.1"
|
||||
array.prototype.flatmap "^1.2.3"
|
||||
doctrine "^2.1.0"
|
||||
has "^1.0.3"
|
||||
jsx-ast-utils "^2.4.1"
|
||||
object.entries "^1.1.2"
|
||||
object.fromentries "^2.0.2"
|
||||
object.values "^1.1.1"
|
||||
prop-types "^15.7.2"
|
||||
resolve "^1.17.0"
|
||||
string.prototype.matchall "^4.0.2"
|
||||
|
||||
eslint-rule-composer@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9"
|
||||
@@ -5439,6 +5491,13 @@ 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, eslint-visitor-keys@^1.2.0, 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"
|
||||
@@ -5491,6 +5550,49 @@ eslint@^7.4.0:
|
||||
text-table "^0.2.0"
|
||||
v8-compile-cache "^2.0.3"
|
||||
|
||||
eslint@^7.9.0:
|
||||
version "7.9.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337"
|
||||
integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@eslint/eslintrc" "^0.1.3"
|
||||
ajv "^6.10.0"
|
||||
chalk "^4.0.0"
|
||||
cross-spawn "^7.0.2"
|
||||
debug "^4.0.1"
|
||||
doctrine "^3.0.0"
|
||||
enquirer "^2.3.5"
|
||||
eslint-scope "^5.1.0"
|
||||
eslint-utils "^2.1.0"
|
||||
eslint-visitor-keys "^1.3.0"
|
||||
espree "^7.3.0"
|
||||
esquery "^1.2.0"
|
||||
esutils "^2.0.2"
|
||||
file-entry-cache "^5.0.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
glob-parent "^5.0.0"
|
||||
globals "^12.1.0"
|
||||
ignore "^4.0.6"
|
||||
import-fresh "^3.0.0"
|
||||
imurmurhash "^0.1.4"
|
||||
is-glob "^4.0.0"
|
||||
js-yaml "^3.13.1"
|
||||
json-stable-stringify-without-jsonify "^1.0.1"
|
||||
levn "^0.4.1"
|
||||
lodash "^4.17.19"
|
||||
minimatch "^3.0.4"
|
||||
natural-compare "^1.4.0"
|
||||
optionator "^0.9.1"
|
||||
progress "^2.0.0"
|
||||
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@^7.1.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-7.1.0.tgz#a9c7f18a752056735bf1ba14cb1b70adc3a5ce1c"
|
||||
@@ -5500,6 +5602,15 @@ espree@^7.1.0:
|
||||
acorn-jsx "^5.2.0"
|
||||
eslint-visitor-keys "^1.2.0"
|
||||
|
||||
espree@^7.3.0:
|
||||
version "7.3.0"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348"
|
||||
integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==
|
||||
dependencies:
|
||||
acorn "^7.4.0"
|
||||
acorn-jsx "^5.2.0"
|
||||
eslint-visitor-keys "^1.3.0"
|
||||
|
||||
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
||||
@@ -6685,7 +6796,7 @@ import-fresh@^2.0.0:
|
||||
caller-path "^2.0.0"
|
||||
resolve-from "^3.0.0"
|
||||
|
||||
import-fresh@^3.0.0, import-fresh@^3.1.0:
|
||||
import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
|
||||
integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
|
||||
@@ -9378,6 +9489,15 @@ object.entries@^1.1.1:
|
||||
function-bind "^1.1.1"
|
||||
has "^1.0.3"
|
||||
|
||||
object.entries@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add"
|
||||
integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==
|
||||
dependencies:
|
||||
define-properties "^1.1.3"
|
||||
es-abstract "^1.17.5"
|
||||
has "^1.0.3"
|
||||
|
||||
object.fromentries@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9"
|
||||
@@ -12048,6 +12168,11 @@ strip-json-comments@^3.1.0:
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
|
||||
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
|
||||
|
||||
strip-json-comments@^3.1.1:
|
||||
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==
|
||||
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user