add eslint

This commit is contained in:
Bowen Tan 2021-09-15 14:08:37 +08:00
parent fabd5c8aaf
commit 36cbe2ae25
33 changed files with 445 additions and 99 deletions

33
.eslintrc.json Normal file
View File

@ -0,0 +1,33 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": ["react", "@typescript-eslint"],
"rules": {
"indent": ["error", 2, { "flatTernaryExpressions": true, "SwitchCase": 1 }],
"linebreak-style": ["error", "unix"],
"quotes": ["error", "single"],
"semi": ["error", "always"],
"react/prop-types": "off",
"no-case-declarations": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"react/display-name": "off"
},
"ignorePatterns": ["node_modules", "*.d.ts", "package.json", "*.html"]
}

View File

@ -7,5 +7,6 @@
"sourceMap": true,
"esModuleInterop": true,
"skipLibCheck": true
}
},
"exclude": ["node_modules", "*.d.ts"]
}

View File

@ -2,9 +2,15 @@
"name": "root",
"private": true,
"scripts": {
"lerna": "lerna"
"lerna": "lerna",
"lint": "eslint packages --ext .ts --ext .tsx",
"fix-lint": "eslint --fix packages --ext .ts --ext .tsx"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.31.1",
"@typescript-eslint/parser": "^4.31.1",
"eslint": "^7.32.0",
"eslint-plugin-react": "^7.25.1",
"husky": "^6.0.0",
"lerna": "^4.0.0",
"lint-staged": "^11.0.0",
@ -19,8 +25,9 @@
}
},
"lint-staged": {
"*.{ts,tsx,html,json}": [
"*.{ts,tsx,html}": [
"prettier --write",
"eslint --fix",
"git add"
]
}

View File

@ -1,27 +1,27 @@
import { createApplication } from "../src/application";
import { createApplication } from '../src/application';
describe("application", () => {
it("can create runtime application", () => {
describe('application', () => {
it('can create runtime application', () => {
expect(
createApplication({
version: "demo/v1",
version: 'demo/v1',
metadata: {
name: "test-app",
description: "first application",
name: 'test-app',
description: 'first application',
},
spec: {
components: [
{
id: "input1",
type: "core/v1/test_component",
id: 'input1',
type: 'core/v1/test_component',
properties: {
x: "foo",
x: 'foo',
},
traits: [
{
type: "core/v1/test_trait",
type: 'core/v1/test_trait',
properties: {
width: 2,
},

View File

@ -1,41 +1,41 @@
import { createComponent } from "../src/component";
import { createComponent } from '../src/component';
describe("component", () => {
it("can create runtime component", () => {
describe('component', () => {
it('can create runtime component', () => {
expect(
createComponent({
version: "core/v1",
version: 'core/v1',
metadata: {
name: "test_component",
name: 'test_component',
},
spec: {
properties: [
{
name: "x",
type: "string",
name: 'x',
type: 'string',
},
],
acceptTraits: [
{
name: "t1",
name: 't1',
},
],
state: {
type: "string",
type: 'string',
},
methods: [
{
name: "reset",
name: 'reset',
},
{
name: "add",
name: 'add',
parameters: {
type: "number",
type: 'number',
},
},
],

View File

@ -1,12 +1,12 @@
import { createScope } from "../src/scope";
import { createScope } from '../src/scope';
describe("scope", () => {
it("can create runtime scope", () => {
describe('scope', () => {
it('can create runtime scope', () => {
expect(
createScope({
version: "core/v1",
version: 'core/v1',
metadata: {
name: "test_scope",
name: 'test_scope',
},
})
).toMatchInlineSnapshot(`

View File

@ -1,25 +1,25 @@
import { createTrait } from "../src/trait";
import { createTrait } from '../src/trait';
describe("trait", () => {
it("can create runtime trait", () => {
describe('trait', () => {
it('can create runtime trait', () => {
expect(
createTrait({
version: "core/v1",
version: 'core/v1',
metadata: {
name: "test_trait",
name: 'test_trait',
},
spec: {
properties: [{ name: "width", type: "number" }],
properties: [{ name: 'width', type: 'number' }],
state: {
type: "string",
type: 'string',
},
methods: [
{
name: "times",
name: 'times',
parameters: {
type: "number",
type: 'number',
},
},
],

View File

@ -18,7 +18,7 @@ type ApplicationComponent = {
id: string;
type: string;
// do runtime type check
properties: object;
properties: Record<string, unknown>;
traits: ComponentTrait[];
// scopes TBD
};
@ -26,7 +26,7 @@ type ApplicationComponent = {
type ComponentTrait = {
type: string;
// do runtime type check
properties: object;
properties: Record<string, unknown>;
};
type VersionAndName = {
@ -60,7 +60,7 @@ function parseType(v: string): VersionAndName {
throw new Error(`Invalid type string: "${v}"`);
}
const [, version, name] = v.match(TYPE_REG)!;
const [, version, name] = v.match(TYPE_REG) ?? [];
return {
version,
name,

View File

@ -14,7 +14,7 @@ export function parseVersion(v: string): Version {
throw new Error(`Invalid version string: "${v}"`);
}
const [, category, value] = v.match(VERSION_REG)!;
const [, category, value] = v.match(VERSION_REG) || [];
return {
category,
value,

View File

@ -1,5 +1,4 @@
import { Type } from '@sinclair/typebox';
import { m } from 'framer-motion';
import { parseTypeBox } from '../src/utils/parseTypeBox';
describe('parseTypeBox function', () => {

View File

@ -11,7 +11,6 @@ import { apiService } from './api-service';
import { ContainerPropertySchema } from './traits/core/slot';
import { Static } from '@sinclair/typebox';
import { watch } from '@vue-reactivity/watch';
import _ from 'lodash';
import copy from 'copy-to-clipboard';
import { globalHandlerMap } from './handler';
import { initStateAndMethod } from './utils/initStateAndMethod';
@ -144,7 +143,7 @@ export const ImplWrapper = React.forwardRef<
const mergedProps = { ...evaledComponentProperties, ...propsFromTraits };
let C = (
const C = (
<Impl
key={c.id}
{...mergedProps}

View File

@ -1,7 +1,10 @@
import React from 'react';
class ErrorBoundary extends React.Component<{}, { error: unknown }> {
constructor(props: {}) {
class ErrorBoundary extends React.Component<
Record<string, unknown>,
{ error: unknown }
> {
constructor(props: Record<string, unknown>) {
super(props);
this.state = { error: null };
}

View File

@ -94,13 +94,11 @@ const Input: ComponentImplementation<{
<InputGroup size={size}>
{left ? (
left.type === 'addon' ? (
<InputLeftAddon children={left.children} />
<InputLeftAddon>{left.children}</InputLeftAddon>
) : (
<InputLeftElement
children={left.children}
fontSize={left.fontSize}
color={left.color}
/>
<InputLeftElement fontSize={left.fontSize} color={left.color}>
{left.children}
</InputLeftElement>
)
) : (
<></>
@ -116,13 +114,11 @@ const Input: ComponentImplementation<{
/>
{right ? (
right.type === 'addon' ? (
<InputRightAddon children={right.children} />
<InputRightAddon>{right.children}</InputRightAddon>
) : (
<InputRightElement
children={right.children}
fontSize={right.fontSize}
color={right.color}
/>
<InputRightElement fontSize={right.fontSize} color={right.color}>
{right.children}
</InputRightElement>
)
) : (
<></>

View File

@ -4,7 +4,9 @@ import { ComponentImplementation } from '../../registry';
import { createComponent } from '@meta-ui/core';
import Slot from '../_internal/Slot';
const Root: ComponentImplementation<{}> = ({ slotsMap }) => {
const Root: ComponentImplementation<Record<string, unknown>> = ({
slotsMap,
}) => {
return (
<ChakraProvider>
<Slot slotsMap={slotsMap} slot="root" />

View File

@ -1,4 +1,3 @@
import React, { useEffect } from 'react';
import { createComponent } from '@meta-ui/core';
const Dummy = () => {

View File

@ -191,7 +191,7 @@ type NestedProps = RouteLikeElement & { base: string };
// all route-like component must have path property, wouter use path to determined if a component match the route
// but we need path to match both nested router itself and its child route, so we need to have an alternative property called base as the real path of the nested router
// and used by its children
export const Nested: React.FC<NestedProps> = ({ children, path, base }) => {
export const Nested: React.FC<NestedProps> = ({ children, base }) => {
const router = useRouter();
const [parentLocation] = useLocation();
@ -237,7 +237,7 @@ export const Redirect: React.FC<RedirectProps> = props => {
// empty array means running the effect once, navRef is a ref so it never changes
useLayoutEffect(() => {
navRef.current!();
}, []); // eslint-disable-line react-hooks/exhaustive-deps
}, []);
return null;
};
@ -253,11 +253,11 @@ const flattenChildren = (
}
return Array.isArray(children)
? ([] as ReactElement<RouteProps>[]).concat(
...children.map(c =>
c.type === Fragment
? flattenChildren(c.props.children as ReactElement<RouteProps>)
: flattenChildren(c)
)
...children.map(c =>
c.type === Fragment
? flattenChildren(c.props.children as ReactElement<RouteProps>)
: flattenChildren(c)
)
)
: [children];
};

View File

@ -1,4 +1,4 @@
import React, {
import {
useState,
useCallback,
useEffect,
@ -7,7 +7,6 @@ import React, {
useContext,
} from 'react';
import useWouterLocation, { LocationHook } from 'wouter/use-location';
import { Wouter } from './component';
// hash location and hash hook
const currentLocation = (base: string, hash = location.hash) => {

View File

@ -3,7 +3,6 @@ import React from 'react';
import { createComponent } from '@meta-ui/core';
import { ComponentImplementation } from '../../../registry';
import { Switch } from './component';
import { useRouter } from './hooks';
const Router: ComponentImplementation<{
switchPolicy: Static<typeof SwitchPolicyPropertySchema>;

View File

@ -24,7 +24,7 @@ export function makeMatcher(): MatcherFn {
strict: boolean,
sensitive: boolean
) => WouterPTR = (path, exact, strict, sensitive) => {
let keys: Key[] = [];
const keys: Key[] = [];
const regexp = pathToRegexp(path, keys, { strict, end: exact, sensitive });
return { keys, regexp };

View File

@ -9,7 +9,7 @@ import { ComponentImplementation } from '../../registry';
import ErrorBoundary from '../_internal/ErrorBoundary';
import App from '../../App';
const Editor: ComponentImplementation<{}> = () => {
const Editor: ComponentImplementation<Record<string, unknown>> = () => {
const [code, setCode] = useState(
JSON.stringify(
{
@ -57,7 +57,9 @@ const Editor: ComponentImplementation<{}> = () => {
onClick={() => {
try {
setCode(JSON.stringify(JSON.parse(code), null, 2));
} catch {}
} catch {
return;
}
}}>
format
</Button>

View File

@ -103,7 +103,7 @@ class Registry {
if (!this.components.has(c.version)) {
this.components.set(c.version, new Map());
}
this.components.get(c.version)!.set(c.metadata.name, c);
this.components.get(c.version)?.set(c.metadata.name, c);
}
getComponent(version: string, name: string): ImplementedRuntimeComponent {
@ -123,7 +123,7 @@ class Registry {
if (!this.traits.has(t.version)) {
this.traits.set(t.version, new Map());
}
this.traits.get(t.version)!.set(t.metadata.name, t);
this.traits.get(t.version)?.set(t.metadata.name, t);
}
getTrait(version: string, name: string): ImplementedRuntimeTrait {

View File

@ -141,7 +141,7 @@ export const mapValuesDeep = (
};
export function deepEval(
obj: object,
obj: Record<string, unknown>,
watcher?: (params: { result: ReturnType<typeof mapValuesDeep> }) => void
) {
const stops: ReturnType<typeof watch>[] = [];

View File

@ -12,7 +12,7 @@ const ArrayStateTrait: TraitImplementation<{
initialValue: Static<typeof InitialValuePropertySchema>;
}> = ({ key, initialValue, componentId, mergeState, subscribeMethods }) => {
const hashId = `#${componentId}@${key}`;
let hasInitialized = HasInitializedMap.get(hashId);
const hasInitialized = HasInitializedMap.get(hashId);
if (!hasInitialized) {
mergeState({ [key]: initialValue });

View File

@ -33,10 +33,10 @@ const useEventTrait: TraitImplementation<{
event.wait.type === 'debounce'
? debounce(handler, event.wait.time)
: event.wait.type === 'throttle'
? throttle(handler, event.wait.time)
: event.wait.type === 'delay'
? () => delay(handler, event.wait.time)
: handler
? throttle(handler, event.wait.time)
: event.wait.type === 'delay'
? () => delay(handler, event.wait.time)
: handler
);
}

View File

@ -3,7 +3,7 @@ import { Static, Type } from '@sinclair/typebox';
import { apiService } from '../../api-service';
import { TraitImplementation } from '../../registry';
let hasFetchedMap = new Map<string, boolean>();
const hasFetchedMap = new Map<string, boolean>();
const useFetchTrait: TraitImplementation<FetchPropertySchema> = ({
url,

View File

@ -1,4 +1,4 @@
import React, { CSSProperties } from 'react';
import { CSSProperties } from 'react';
import { createTrait } from '@meta-ui/core';
import { Static, Type } from '@sinclair/typebox';
import { TraitImplementation } from '../../registry';

View File

@ -11,7 +11,7 @@ const useStateTrait: TraitImplementation<{
initialValue: Static<typeof InitialValuePropertySchema>;
}> = ({ key, initialValue, componentId, mergeState, subscribeMethods }) => {
const hashId = `#${componentId}@${key}`;
let hasInitialized = HasInitializedMap.get(hashId);
const hasInitialized = HasInitializedMap.get(hashId);
if (!hasInitialized) {
mergeState({ [key]: initialValue });

View File

@ -1,8 +1,6 @@
import React from 'react';
import { createTrait } from '@meta-ui/core';
import { Static, Type } from '@sinclair/typebox';
import { Type } from '@sinclair/typebox';
import { TraitImplementation } from '../../registry';
import { min } from 'lodash';
type ValidationResult = { isValid: boolean; errorMsg: string };
type ValidationRule = (text: string) => { isValid: boolean; errorMsg: string };
@ -12,10 +10,9 @@ const rules = new Map<string, ValidationRule>();
export function addValidationRule(name: string, rule: ValidationRule) {
rules.set(name, rule);
}
(window as any).rules = rules;
addValidationRule('email', text => {
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(text)) {
if (/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(text)) {
return {
isValid: true,
errorMsg: '',
@ -50,7 +47,7 @@ type ValidationProps = {
};
const useValidationTrait: TraitImplementation<ValidationProps> = props => {
const { value, minLength, maxLength, rule, mergeState } = props;
const { value, minLength, maxLength, rule } = props;
let result: ValidationResult = {
isValid: true,
errorMsg: '',

View File

@ -14,7 +14,6 @@ export function initStateAndMethod(
t.parsedType.version,
t.parsedType.name
).spec;
(window as any).parseTypeBox = parseTypeBox;
state = { ...state, ...parseTypeBox(tSpec.state as TSchema) };
});
const cSpec = registry.getComponent(

View File

@ -8,7 +8,7 @@ export function parseType(v: string) {
throw new Error(`Invalid type string: "${v}"`);
}
const [, version, name] = v.match(TYPE_REG)!;
const [, version, name] = v.match(TYPE_REG) ?? [];
return {
version,
name,

View File

@ -29,7 +29,7 @@ export function parseTypeBox(tSchema: TSchema): Static<typeof tSchema> {
case ObjectKind:
const obj: Static<typeof tSchema> = {};
for (let key in tSchema.properties) {
for (const key in tSchema.properties) {
obj[key] = parseTypeBox(tSchema.properties[key]);
}
return obj;

View File

@ -10,7 +10,7 @@ export default defineConfig({
},
esbuild: {
// https://dev.to/ajitsinghkamal/using-emotionjs-with-vite-2ndj
jsxFactory: `jsx`,
jsxInject: `import { jsx } from '@emotion/react'`,
jsxFactory: 'jsx',
jsxInject: 'import { jsx } from "@emotion/react"',
},
});

315
yarn.lock
View File

@ -1780,6 +1780,21 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
"@eslint/eslintrc@^0.4.3":
version "0.4.3"
resolved "http://192.168.26.29:7001/@eslint/eslintrc/download/@eslint/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
integrity sha1-nkKYHvA1vrPdSa3ResuW6P9vOUw=
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
espree "^7.3.0"
globals "^13.9.0"
ignore "^4.0.6"
import-fresh "^3.2.1"
js-yaml "^3.13.1"
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
"@humanwhocodes/config-array@^0.5.0":
version "0.5.0"
resolved "http://192.168.26.29:7001/@humanwhocodes/config-array/download/@humanwhocodes/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
@ -3293,6 +3308,19 @@
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/eslint-plugin@^4.31.1":
version "4.31.1"
resolved "http://192.168.26.29:7001/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-4.31.1.tgz#e938603a136f01dcabeece069da5fb2e331d4498"
integrity sha1-6ThgOhNvAdyr7s4GnaX7LjMdRJg=
dependencies:
"@typescript-eslint/experimental-utils" "4.31.1"
"@typescript-eslint/scope-manager" "4.31.1"
debug "^4.3.1"
functional-red-black-tree "^1.0.1"
regexpp "^3.1.0"
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/experimental-utils@4.28.3":
version "4.28.3"
resolved "http://192.168.26.29:7001/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-4.28.3.tgz#976f8c1191b37105fd06658ed57ddfee4be361ca"
@ -3305,6 +3333,18 @@
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
"@typescript-eslint/experimental-utils@4.31.1":
version "4.31.1"
resolved "http://192.168.26.29:7001/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-4.31.1.tgz#0c900f832f270b88e13e51753647b02d08371ce5"
integrity sha1-DJAPgy8nC4jhPlF1NkewLQg3HOU=
dependencies:
"@types/json-schema" "^7.0.7"
"@typescript-eslint/scope-manager" "4.31.1"
"@typescript-eslint/types" "4.31.1"
"@typescript-eslint/typescript-estree" "4.31.1"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
"@typescript-eslint/parser@^4.28.1":
version "4.28.3"
resolved "http://192.168.26.29:7001/@typescript-eslint/parser/download/@typescript-eslint/parser-4.28.3.tgz#95f1d475c08268edffdcb2779993c488b6434b44"
@ -3315,6 +3355,16 @@
"@typescript-eslint/typescript-estree" "4.28.3"
debug "^4.3.1"
"@typescript-eslint/parser@^4.31.1":
version "4.31.1"
resolved "http://192.168.26.29:7001/@typescript-eslint/parser/download/@typescript-eslint/parser-4.31.1.tgz#8f9a2672033e6f6d33b1c0260eebdc0ddf539064"
integrity sha1-j5omcgM+b20zscAmDuvcDd9TkGQ=
dependencies:
"@typescript-eslint/scope-manager" "4.31.1"
"@typescript-eslint/types" "4.31.1"
"@typescript-eslint/typescript-estree" "4.31.1"
debug "^4.3.1"
"@typescript-eslint/scope-manager@4.28.3":
version "4.28.3"
resolved "http://192.168.26.29:7001/@typescript-eslint/scope-manager/download/@typescript-eslint/scope-manager-4.28.3.tgz#c32ad4491b3726db1ba34030b59ea922c214e371"
@ -3323,11 +3373,24 @@
"@typescript-eslint/types" "4.28.3"
"@typescript-eslint/visitor-keys" "4.28.3"
"@typescript-eslint/scope-manager@4.31.1":
version "4.31.1"
resolved "http://192.168.26.29:7001/@typescript-eslint/scope-manager/download/@typescript-eslint/scope-manager-4.31.1.tgz#0c21e8501f608d6a25c842fcf59541ef4f1ab561"
integrity sha1-DCHoUB9gjWolyEL89ZVB708atWE=
dependencies:
"@typescript-eslint/types" "4.31.1"
"@typescript-eslint/visitor-keys" "4.31.1"
"@typescript-eslint/types@4.28.3":
version "4.28.3"
resolved "http://192.168.26.29:7001/@typescript-eslint/types/download/@typescript-eslint/types-4.28.3.tgz#8fffd436a3bada422c2c1da56060a0566a9506c7"
integrity sha1-j//UNqO62kIsLB2lYGCgVmqVBsc=
"@typescript-eslint/types@4.31.1":
version "4.31.1"
resolved "http://192.168.26.29:7001/@typescript-eslint/types/download/@typescript-eslint/types-4.31.1.tgz#5f255b695627a13401d2fdba5f7138bc79450d66"
integrity sha1-XyVbaVYnoTQB0v26X3E4vHlFDWY=
"@typescript-eslint/typescript-estree@4.28.3":
version "4.28.3"
resolved "http://192.168.26.29:7001/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-4.28.3.tgz#253d7088100b2a38aefe3c8dd7bd1f8232ec46fb"
@ -3341,6 +3404,19 @@
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/typescript-estree@4.31.1":
version "4.31.1"
resolved "http://192.168.26.29:7001/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-4.31.1.tgz#4a04d5232cf1031232b7124a9c0310b577a62d17"
integrity sha1-SgTVIyzxAxIytxJKnAMQtXemLRc=
dependencies:
"@typescript-eslint/types" "4.31.1"
"@typescript-eslint/visitor-keys" "4.31.1"
debug "^4.3.1"
globby "^11.0.3"
is-glob "^4.0.1"
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/visitor-keys@4.28.3":
version "4.28.3"
resolved "http://192.168.26.29:7001/@typescript-eslint/visitor-keys/download/@typescript-eslint/visitor-keys-4.28.3.tgz#26ac91e84b23529968361045829da80a4e5251c4"
@ -3349,6 +3425,14 @@
"@typescript-eslint/types" "4.28.3"
eslint-visitor-keys "^2.0.0"
"@typescript-eslint/visitor-keys@4.31.1":
version "4.31.1"
resolved "http://192.168.26.29:7001/@typescript-eslint/visitor-keys/download/@typescript-eslint/visitor-keys-4.31.1.tgz#f2e7a14c7f20c4ae07d7fc3c5878c4441a1da9cc"
integrity sha1-8uehTH8gxK4H1/w8WHjERBodqcw=
dependencies:
"@typescript-eslint/types" "4.31.1"
eslint-visitor-keys "^2.0.0"
"@vitejs/plugin-react-refresh@^1.3.1":
version "1.3.5"
resolved "http://192.168.26.29:7001/@vitejs/plugin-react-refresh/download/@vitejs/plugin-react-refresh-1.3.5.tgz#be47e56d9965423968c8a6b2d62e5014e1e24478"
@ -3568,11 +3652,32 @@ array-ify@^1.0.0:
resolved "http://192.168.26.29:7001/array-ify/download/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
array-includes@^3.1.2, array-includes@^3.1.3:
version "3.1.3"
resolved "http://192.168.26.29:7001/array-includes/download/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a"
integrity sha1-x/YZs4KtKvr1Mmzd/cCvxhr3aQo=
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.2"
get-intrinsic "^1.1.1"
is-string "^1.0.5"
array-union@^2.1.0:
version "2.1.0"
resolved "http://192.168.26.29:7001/array-union/download/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha1-t5hCCtvrHego2ErNii4j0+/oXo0=
array.prototype.flatmap@^1.2.4:
version "1.2.4"
resolved "http://192.168.26.29:7001/array.prototype.flatmap/download/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
integrity sha1-lM/UfMFVbsB0fZf3x3OMWBIgBMk=
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
function-bind "^1.1.1"
arrify@^1.0.1:
version "1.0.1"
resolved "http://192.168.26.29:7001/arrify/download/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@ -4473,6 +4578,13 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
doctrine@^2.1.0:
version "2.1.0"
resolved "http://192.168.26.29:7001/doctrine/download/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
integrity sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=
dependencies:
esutils "^2.0.2"
doctrine@^3.0.0:
version "3.0.0"
resolved "http://192.168.26.29:7001/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@ -4570,6 +4682,30 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.18.0-next.1, es-abstract@^1.18.2:
version "1.18.6"
resolved "http://192.168.26.29:7001/es-abstract/download/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456"
integrity sha1-LETj6npiVQORZNJlWXd6bZeMtFY=
dependencies:
call-bind "^1.0.2"
es-to-primitive "^1.2.1"
function-bind "^1.1.1"
get-intrinsic "^1.1.1"
get-symbol-description "^1.0.0"
has "^1.0.3"
has-symbols "^1.0.2"
internal-slot "^1.0.3"
is-callable "^1.2.4"
is-negative-zero "^2.0.1"
is-regex "^1.1.4"
is-string "^1.0.7"
object-inspect "^1.11.0"
object-keys "^1.1.1"
object.assign "^4.1.2"
string.prototype.trimend "^1.0.4"
string.prototype.trimstart "^1.0.4"
unbox-primitive "^1.0.1"
es-abstract@^1.18.0-next.2:
version "1.18.3"
resolved "http://192.168.26.29:7001/es-abstract/download/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0"
@ -4643,6 +4779,25 @@ eslint-config-prettier@^8.3.0:
resolved "http://192.168.26.29:7001/eslint-config-prettier/download/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a"
integrity sha1-90cbILb+ipqSVMxoRFQgKIai3Xo=
eslint-plugin-react@^7.25.1:
version "7.25.1"
resolved "http://192.168.26.29:7001/eslint-plugin-react/download/eslint-plugin-react-7.25.1.tgz#9286b7cd9bf917d40309760f403e53016eda8331"
integrity sha1-koa3zZv5F9QDCXYPQD5TAW7agzE=
dependencies:
array-includes "^3.1.3"
array.prototype.flatmap "^1.2.4"
doctrine "^2.1.0"
estraverse "^5.2.0"
has "^1.0.3"
jsx-ast-utils "^2.4.1 || ^3.0.0"
minimatch "^3.0.4"
object.entries "^1.1.4"
object.fromentries "^2.0.4"
object.values "^1.1.4"
prop-types "^15.7.2"
resolve "^2.0.0-next.3"
string.prototype.matchall "^4.0.5"
eslint-scope@^5.1.1:
version "5.1.1"
resolved "http://192.168.26.29:7001/eslint-scope/download/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
@ -4721,6 +4876,52 @@ eslint@^7.29.0:
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
eslint@^7.32.0:
version "7.32.0"
resolved "http://192.168.26.29:7001/eslint/download/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
integrity sha1-xtMooUvj+wjI0dIeEsAv23oqgS0=
dependencies:
"@babel/code-frame" "7.12.11"
"@eslint/eslintrc" "^0.4.3"
"@humanwhocodes/config-array" "^0.5.0"
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"
escape-string-regexp "^4.0.0"
eslint-scope "^5.1.1"
eslint-utils "^2.1.0"
eslint-visitor-keys "^2.0.0"
espree "^7.3.1"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
functional-red-black-tree "^1.0.1"
glob-parent "^5.1.2"
globals "^13.6.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.merge "^4.6.2"
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 "^6.0.9"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
espree@^7.3.0, espree@^7.3.1:
version "7.3.1"
resolved "http://192.168.26.29:7001/espree/download/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
@ -5059,7 +5260,7 @@ get-caller-file@^2.0.5:
resolved "http://192.168.26.29:7001/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=
get-intrinsic@^1.0.2, get-intrinsic@^1.1.1:
get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
version "1.1.1"
resolved "http://192.168.26.29:7001/get-intrinsic/download/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
integrity sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=
@ -5103,6 +5304,14 @@ get-stream@^6.0.0:
resolved "http://192.168.26.29:7001/get-stream/download/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
integrity sha1-omLY7vZ6ztV8KFKtYWdSakPL97c=
get-symbol-description@^1.0.0:
version "1.0.0"
resolved "http://192.168.26.29:7001/get-symbol-description/download/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
integrity sha1-f9uByQAQH71WTdXxowr1qtweWNY=
dependencies:
call-bind "^1.0.2"
get-intrinsic "^1.1.1"
getpass@^0.1.1:
version "0.1.7"
resolved "http://192.168.26.29:7001/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@ -5257,6 +5466,13 @@ has-symbols@^1.0.1, has-symbols@^1.0.2:
resolved "http://192.168.26.29:7001/has-symbols/download/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=
has-tostringtag@^1.0.0:
version "1.0.0"
resolved "http://192.168.26.29:7001/has-tostringtag/download/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
integrity sha1-fhM4GKfTlHNPlB5zw9P5KR5liyU=
dependencies:
has-symbols "^1.0.2"
has-unicode@^2.0.0, has-unicode@^2.0.1:
version "2.0.1"
resolved "http://192.168.26.29:7001/has-unicode/download/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@ -5471,6 +5687,15 @@ inquirer@^7.3.3:
strip-ansi "^6.0.0"
through "^2.3.6"
internal-slot@^1.0.3:
version "1.0.3"
resolved "http://192.168.26.29:7001/internal-slot/download/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
integrity sha1-c0fjB97uovqsKsYgXUvH00ln9Zw=
dependencies:
get-intrinsic "^1.1.0"
has "^1.0.3"
side-channel "^1.0.4"
invariant@^2.2.4:
version "2.2.4"
resolved "http://192.168.26.29:7001/invariant/download/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
@ -5523,6 +5748,11 @@ is-callable@^1.1.4, is-callable@^1.2.3:
resolved "http://192.168.26.29:7001/is-callable/download/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
integrity sha1-ix4FALc6HXbHBIdjbzaOUZ3o244=
is-callable@^1.2.4:
version "1.2.4"
resolved "http://192.168.26.29:7001/is-callable/download/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
integrity sha1-RzAdWN0CWUB4ZVR4U99tYf5HGUU=
is-ci@^2.0.0:
version "2.0.0"
resolved "http://192.168.26.29:7001/is-ci/download/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
@ -5658,6 +5888,14 @@ is-regex@^1.1.3:
call-bind "^1.0.2"
has-symbols "^1.0.2"
is-regex@^1.1.4:
version "1.1.4"
resolved "http://192.168.26.29:7001/is-regex/download/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
integrity sha1-7vVmPNWfpMCuM5UFMj32hUuxWVg=
dependencies:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
is-regexp@^1.0.0:
version "1.0.0"
resolved "http://192.168.26.29:7001/is-regexp/download/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
@ -5680,6 +5918,13 @@ is-string@^1.0.5, is-string@^1.0.6:
resolved "http://192.168.26.29:7001/is-string/download/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f"
integrity sha1-P+XVmS+w2TQE8yWE1LAXmnG1Sl8=
is-string@^1.0.7:
version "1.0.7"
resolved "http://192.168.26.29:7001/is-string/download/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
integrity sha1-DdEr8gBvJVu1j2lREO/3SR7rwP0=
dependencies:
has-tostringtag "^1.0.0"
is-symbol@^1.0.2, is-symbol@^1.0.3:
version "1.0.4"
resolved "http://192.168.26.29:7001/is-symbol/download/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
@ -6697,6 +6942,14 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
"jsx-ast-utils@^2.4.1 || ^3.0.0":
version "3.2.0"
resolved "http://192.168.26.29:7001/jsx-ast-utils/download/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82"
integrity sha1-QRCNLOxAjDRTwbvopKrp4eK9j4I=
dependencies:
array-includes "^3.1.2"
object.assign "^4.1.2"
kind-of@^6.0.2, kind-of@^6.0.3:
version "6.0.3"
resolved "http://192.168.26.29:7001/kind-of/download/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
@ -7541,7 +7794,7 @@ object-assign@^4.1.0, object-assign@^4.1.1:
resolved "http://192.168.26.29:7001/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
object-inspect@^1.10.3, object-inspect@^1.9.0:
object-inspect@^1.10.3, object-inspect@^1.11.0, object-inspect@^1.9.0:
version "1.11.0"
resolved "http://192.168.26.29:7001/object-inspect/download/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
integrity sha1-nc6xRs7dQUig2eUauI00z1CZIrE=
@ -7561,6 +7814,25 @@ object.assign@^4.1.0, object.assign@^4.1.2:
has-symbols "^1.0.1"
object-keys "^1.1.1"
object.entries@^1.1.4:
version "1.1.4"
resolved "http://192.168.26.29:7001/object.entries/download/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd"
integrity sha1-Q8z5pQvF/VtknUWrGlefJOCIyv0=
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.2"
object.fromentries@^2.0.4:
version "2.0.4"
resolved "http://192.168.26.29:7001/object.fromentries/download/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8"
integrity sha1-JuG6XEVxxcbwiQzvRHMGZFahILg=
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.2"
has "^1.0.3"
object.getownpropertydescriptors@^2.0.3:
version "2.1.2"
resolved "http://192.168.26.29:7001/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7"
@ -7570,6 +7842,15 @@ object.getownpropertydescriptors@^2.0.3:
define-properties "^1.1.3"
es-abstract "^1.18.0-next.2"
object.values@^1.1.4:
version "1.1.4"
resolved "http://192.168.26.29:7001/object.values/download/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30"
integrity sha1-DSc3YoM+gWtpOmN9MAc+cFFTWzA=
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.2"
once@^1.3.0, once@^1.4.0:
version "1.4.0"
resolved "http://192.168.26.29:7001/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@ -8362,6 +8643,14 @@ regenerator-transform@^0.14.2:
dependencies:
"@babel/runtime" "^7.8.4"
regexp.prototype.flags@^1.3.1:
version "1.3.1"
resolved "http://192.168.26.29:7001/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
integrity sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
regexpp@^3.1.0:
version "3.2.0"
resolved "http://192.168.26.29:7001/regexpp/download/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
@ -8466,6 +8755,14 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0:
is-core-module "^2.2.0"
path-parse "^1.0.6"
resolve@^2.0.0-next.3:
version "2.0.0-next.3"
resolved "http://192.168.26.29:7001/resolve/download/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46"
integrity sha1-1BAWKT1KhYajnKXZtfFcvqH1XkY=
dependencies:
is-core-module "^2.2.0"
path-parse "^1.0.6"
restore-cursor@^3.1.0:
version "3.1.0"
resolved "http://192.168.26.29:7001/restore-cursor/download/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
@ -8844,6 +9141,20 @@ string-width@^4.1.0, string-width@^4.2.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0"
string.prototype.matchall@^4.0.5:
version "4.0.5"
resolved "http://192.168.26.29:7001/string.prototype.matchall/download/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da"
integrity sha1-WTcGROHbfkwMBFJ3aQz3sBIDxNo=
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.18.2"
get-intrinsic "^1.1.1"
has-symbols "^1.0.2"
internal-slot "^1.0.3"
regexp.prototype.flags "^1.3.1"
side-channel "^1.0.4"
string.prototype.trimend@^1.0.4:
version "1.0.4"
resolved "http://192.168.26.29:7001/string.prototype.trimend/download/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"