build(deps): migrate eslint to new config
This commit is contained in:
-328
@@ -1,328 +0,0 @@
|
||||
root: true
|
||||
parser: "@typescript-eslint/parser"
|
||||
plugins:
|
||||
- "@typescript-eslint"
|
||||
- eslint-plugin-react
|
||||
- eslint-plugin-react-hooks
|
||||
# - eslint-plugin-tsdoc
|
||||
parserOptions:
|
||||
ecmaVersion: latest
|
||||
sourceType: module
|
||||
project: ./tsconfig.json
|
||||
ecmaFeatures:
|
||||
jsx: true
|
||||
env:
|
||||
commonjs: true
|
||||
node: true
|
||||
es6: true
|
||||
browser: true
|
||||
rules:
|
||||
# Possible errors
|
||||
for-direction: 2
|
||||
getter-return: 2
|
||||
no-async-promise-executor: 1
|
||||
no-compare-neg-zero: 1
|
||||
no-cond-assign: 2
|
||||
no-constant-condition: 2
|
||||
no-control-regex: 2
|
||||
no-debugger: 2
|
||||
no-duplicate-case: 2
|
||||
no-empty-character-class: 2
|
||||
no-ex-assign: 2
|
||||
no-inner-declarations: 1
|
||||
no-invalid-regexp: 2
|
||||
no-irregular-whitespace: 2
|
||||
no-misleading-character-class: 2
|
||||
no-prototype-builtins: 2
|
||||
no-regex-spaces: 2
|
||||
no-sparse-arrays: 2
|
||||
no-template-curly-in-string: 2
|
||||
no-unreachable: 2
|
||||
no-unsafe-finally: 2
|
||||
no-unsafe-negation: 2
|
||||
require-atomic-updates: 2
|
||||
use-isnan: 2
|
||||
|
||||
# Best Practices
|
||||
accessor-pairs: 2
|
||||
class-methods-use-this: 1
|
||||
# complexity: 2
|
||||
curly:
|
||||
- 2
|
||||
- all
|
||||
default-case: 2
|
||||
dot-location:
|
||||
- 2
|
||||
- property
|
||||
# dot-notation:
|
||||
# - 2
|
||||
# - allowKeywords: false
|
||||
eqeqeq: 2
|
||||
guard-for-in: 2
|
||||
no-alert: 2
|
||||
no-caller: 2
|
||||
no-case-declarations: 2
|
||||
no-div-regex: 2
|
||||
# no-else-return:
|
||||
# - 2
|
||||
# - allowElseIf: true
|
||||
# no-empty-function: 2
|
||||
no-empty-pattern: 2
|
||||
no-eq-null: 2
|
||||
no-eval: 2
|
||||
no-extend-native:
|
||||
- 2
|
||||
- exceptions:
|
||||
- "Array"
|
||||
- "Map"
|
||||
- "Set"
|
||||
no-extra-bind: 2
|
||||
no-extra-label: 2
|
||||
no-fallthrough: 2
|
||||
no-floating-decimal: 2
|
||||
no-global-assign: 2
|
||||
no-implicit-coercion:
|
||||
- 2
|
||||
- allow:
|
||||
- "!!"
|
||||
no-implied-eval: 2
|
||||
# no-invalid-this: 2
|
||||
no-iterator: 2
|
||||
no-labels: 2
|
||||
no-lone-blocks: 2
|
||||
no-loop-func: 2
|
||||
no-multi-spaces:
|
||||
- error
|
||||
- exceptions:
|
||||
Property: true
|
||||
SwitchCase: true
|
||||
no-multi-str: 2
|
||||
no-new: 2
|
||||
no-new-func: 2
|
||||
no-new-wrappers: 2
|
||||
no-octal: 2
|
||||
no-octal-escape: 2
|
||||
no-param-reassign: 2
|
||||
no-proto: 2
|
||||
no-redeclare: 0
|
||||
no-return-assign: 2
|
||||
no-script-url: 2
|
||||
no-self-assign: 2
|
||||
no-self-compare: 2
|
||||
no-throw-literal: 2
|
||||
no-unmodified-loop-condition: 2
|
||||
no-unused-labels: 2
|
||||
no-useless-call: 2
|
||||
no-useless-catch: 2
|
||||
no-useless-concat: 2
|
||||
no-useless-escape: 2
|
||||
no-useless-return: 2
|
||||
no-void: 2
|
||||
no-warning-comments: 1
|
||||
no-with: 2
|
||||
prefer-named-capture-group: 1
|
||||
prefer-promise-reject-errors: 2
|
||||
radix: 2
|
||||
require-unicode-regexp: 2
|
||||
wrap-iife: 2
|
||||
yoda: 2
|
||||
|
||||
# Variables
|
||||
init-declarations: 2
|
||||
no-delete-var: 2
|
||||
no-label-var: 2
|
||||
no-shadow: 0
|
||||
no-shadow-restricted-names: 2
|
||||
# no-undef: 2
|
||||
|
||||
# ECMAScript 6
|
||||
arrow-body-style: 2
|
||||
arrow-parens:
|
||||
- 2
|
||||
- as-needed
|
||||
arrow-spacing: 2
|
||||
constructor-super: 2
|
||||
generator-star-spacing: error
|
||||
no-class-assign: 2
|
||||
no-new-symbol: 2
|
||||
no-this-before-super: 2
|
||||
no-useless-computed-key: 2
|
||||
no-useless-rename: 2
|
||||
no-var: 2
|
||||
object-shorthand: 2
|
||||
prefer-arrow-callback: 2
|
||||
prefer-const: 2
|
||||
prefer-destructuring:
|
||||
- 2
|
||||
- VariableDeclarator:
|
||||
array: true
|
||||
object: true
|
||||
AssignmentExpression:
|
||||
array: false
|
||||
object: false
|
||||
prefer-numeric-literals: 2
|
||||
prefer-rest-params: 2
|
||||
prefer-spread: 2
|
||||
prefer-template: 2
|
||||
require-yield: 2
|
||||
rest-spread-spacing: 2
|
||||
# sort-imports:
|
||||
# - 2
|
||||
# - ignoreCase: true
|
||||
# ignoreMemberSort: true
|
||||
symbol-description: 2
|
||||
template-curly-spacing: 2
|
||||
yield-star-spacing:
|
||||
- 2
|
||||
- after
|
||||
|
||||
# TypeScript
|
||||
"@typescript-eslint/adjacent-overload-signatures": 2
|
||||
"@typescript-eslint/array-type": 2
|
||||
"@typescript-eslint/await-thenable": 2
|
||||
# "@typescript-eslint/class-name-casing": 2
|
||||
"@typescript-eslint/consistent-type-assertions": 2
|
||||
"@typescript-eslint/member-delimiter-style":
|
||||
- 2
|
||||
- multiline:
|
||||
delimiter: none
|
||||
singleline:
|
||||
delimiter: semi
|
||||
requireLast: false
|
||||
"@typescript-eslint/naming-convention":
|
||||
- error
|
||||
- selector: interface
|
||||
format:
|
||||
- PascalCase
|
||||
custom:
|
||||
regex: "^I[A-Z]"
|
||||
match: false
|
||||
"@typescript-eslint/no-floating-promises": 2
|
||||
"@typescript-eslint/no-for-in-array": 2
|
||||
"@typescript-eslint/no-inferrable-types": 2
|
||||
"@typescript-eslint/no-misused-new": 2
|
||||
"@typescript-eslint/no-misused-promises": 2
|
||||
"@typescript-eslint/no-this-alias": 2
|
||||
"@typescript-eslint/no-unnecessary-type-arguments": 2
|
||||
"@typescript-eslint/no-unnecessary-type-assertion": 2
|
||||
"@typescript-eslint/prefer-for-of": 2
|
||||
"@typescript-eslint/prefer-includes": 2
|
||||
"@typescript-eslint/prefer-readonly": 2
|
||||
# "@typescript-eslint/quotes": 2
|
||||
"@typescript-eslint/require-array-sort-compare": 2
|
||||
"@typescript-eslint/require-await": 2
|
||||
"@typescript-eslint/restrict-plus-operands": 2
|
||||
# "@typescript-eslint/semi":
|
||||
# - 2
|
||||
# - never
|
||||
"@typescript-eslint/strict-boolean-expressions": 2
|
||||
"@typescript-eslint/triple-slash-reference": 2
|
||||
"@typescript-eslint/type-annotation-spacing": 2
|
||||
# "@typescript-eslint/unbound-method": 2
|
||||
"@typescript-eslint/unified-signatures": 2
|
||||
|
||||
# TypeScript Extension
|
||||
no-array-constructor: 0
|
||||
"@typescript-eslint/no-array-constructor": 2
|
||||
no-unused-expressions: 0
|
||||
"@typescript-eslint/no-redeclare": 2
|
||||
"@typescript-eslint/no-shadow": 2
|
||||
"@typescript-eslint/no-unused-expressions": 2
|
||||
"@typescript-eslint/no-use-before-define": 2
|
||||
no-useless-constructor: 0
|
||||
"@typescript-eslint/no-useless-constructor": 2
|
||||
no-return-await: 0
|
||||
"@typescript-eslint/return-await": 2
|
||||
|
||||
# React
|
||||
react/boolean-prop-naming: 2
|
||||
react/destructuring-assignment: 2
|
||||
react/no-access-state-in-setstate: 2
|
||||
react/no-array-index-key: 2
|
||||
react/no-children-prop: 2
|
||||
react/no-danger: 2
|
||||
react/no-danger-with-children: 2
|
||||
react/no-deprecated: 2
|
||||
react/no-did-mount-set-state: 2
|
||||
react/no-did-update-set-state: 1
|
||||
react/no-direct-mutation-state: 2
|
||||
react/no-find-dom-node: 2
|
||||
react/no-is-mounted: 2
|
||||
# react/no-multi-comp: 2
|
||||
react/no-redundant-should-component-update: 2
|
||||
react/no-render-return-value: 2
|
||||
react/no-typos: 2
|
||||
react/no-string-refs: 2
|
||||
react/no-this-in-sfc: 2
|
||||
react/no-unescaped-entities: 2
|
||||
react/no-unsafe: 2
|
||||
react/no-unused-prop-types: 2
|
||||
react/no-unused-state: 2
|
||||
react/no-will-update-set-state: 2
|
||||
react/prefer-es6-class: 2
|
||||
react/prefer-stateless-function: 2
|
||||
react/react-in-jsx-scope: 0
|
||||
react/require-render-return: 2
|
||||
react/self-closing-comp: 2
|
||||
react/state-in-constructor:
|
||||
- 2
|
||||
- never
|
||||
react/style-prop-object: 2
|
||||
react/void-dom-elements-no-children: 2
|
||||
react/jsx-boolean-value:
|
||||
- 2
|
||||
- never
|
||||
react/jsx-child-element-spacing: 2
|
||||
# react/jsx-closing-bracket-location:
|
||||
# - 2
|
||||
# - props-aligned
|
||||
react/jsx-closing-tag-location: 2
|
||||
react/jsx-curly-newline: 2
|
||||
react/jsx-curly-spacing: 2
|
||||
react/jsx-equals-spacing: 2
|
||||
react/jsx-first-prop-new-line: 2
|
||||
# react/jsx-handler-names: 2
|
||||
# react/jsx-indent:
|
||||
# - 2
|
||||
# - 2
|
||||
react/jsx-indent-props:
|
||||
- 2
|
||||
- 2
|
||||
# react/jsx-max-props-per-line:
|
||||
# - 2
|
||||
# - maximum: 3
|
||||
react/jsx-no-bind: 2
|
||||
react/jsx-no-comment-textnodes: 2
|
||||
react/jsx-no-literals: 2
|
||||
react/jsx-no-target-blank: 2
|
||||
react/jsx-one-expression-per-line:
|
||||
- 2
|
||||
- allow: single-child
|
||||
react/jsx-curly-brace-presence:
|
||||
- 2
|
||||
- props: never
|
||||
children: ignore
|
||||
react/jsx-fragments: 2
|
||||
react/jsx-pascal-case: 2
|
||||
react/jsx-props-no-multi-spaces: 2
|
||||
react/jsx-props-no-spreading: 2
|
||||
react/jsx-tag-spacing: 2
|
||||
react/jsx-wrap-multilines:
|
||||
- 2
|
||||
- declaration: parens-new-line
|
||||
assignment: parens-new-line
|
||||
return: parens-new-line
|
||||
arrow: parens-new-line
|
||||
condition: parens-new-line
|
||||
logical: parens-new-line
|
||||
prop: ignore
|
||||
|
||||
# React Hooks
|
||||
react-hooks/rules-of-hooks: 2
|
||||
react-hooks/exhaustive-deps: 2
|
||||
|
||||
# # TSDoc
|
||||
# tsdoc/syntax: warn
|
||||
settings:
|
||||
react:
|
||||
version: detect
|
||||
Vendored
+2
-1
@@ -15,7 +15,8 @@
|
||||
"typescriptreact"
|
||||
],
|
||||
"eslint.lintTask.enable": true,
|
||||
"eslint.lintTask.options": "\"src/**\" -c \"./.eslintrc.yaml\" --ext=\"ts\" --ext=\"tsx\" --ignore-pattern=\"./src/App/Utilities/YAML/Schema/**\"",
|
||||
"eslint.lintTask.options": "\"src/**\"",
|
||||
"eslint.experimental.useFlatConfig": true,
|
||||
"editor.tabSize": 2,
|
||||
"editor.detectIndentation": false,
|
||||
"[typescript]": {
|
||||
|
||||
@@ -0,0 +1,240 @@
|
||||
// @ts-check
|
||||
import { FlatCompat } from "@eslint/eslintrc"
|
||||
import js from "@eslint/js"
|
||||
import reactJsxRuntime from "eslint-plugin-react/configs/jsx-runtime.js"
|
||||
import reactRecommended from "eslint-plugin-react/configs/recommended.js"
|
||||
import globals from "globals"
|
||||
import { dirname } from "node:path"
|
||||
import { fileURLToPath } from "node:url"
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url)
|
||||
const __dirname = dirname(__filename)
|
||||
|
||||
// @ts-expect-error: FlatCompat is not properly typed
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: __dirname,
|
||||
})
|
||||
|
||||
/** @type {import('eslint').Linter.Config[]} */
|
||||
export default [
|
||||
js.configs.recommended,
|
||||
reactRecommended,
|
||||
reactJsxRuntime,
|
||||
...compat.extends("plugin:react-hooks/recommended", "plugin:@typescript-eslint/recommended"),
|
||||
{
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
...globals.browser,
|
||||
},
|
||||
parserOptions: {
|
||||
project: "./tsconfig.json",
|
||||
},
|
||||
},
|
||||
ignores: ["node_modules/**", ".webpack/**", "eslint.config.js"],
|
||||
rules: {
|
||||
// Possible problems
|
||||
"require-atomic-updates": "error",
|
||||
"no-self-compare": "error",
|
||||
"no-unmodified-loop-condition": "error",
|
||||
|
||||
// Suggestions
|
||||
"accessor-pairs": "error",
|
||||
"arrow-body-style": "error",
|
||||
"class-methods-use-this": "warn",
|
||||
"default-case": "error",
|
||||
eqeqeq: "error",
|
||||
"guard-for-in": "error",
|
||||
"init-declarations": "error",
|
||||
"no-alert": "error",
|
||||
"no-caller": "error",
|
||||
"no-eval": "error",
|
||||
"no-extend-native": [
|
||||
2,
|
||||
{
|
||||
exceptions: ["Array", "Map", "Set"],
|
||||
},
|
||||
],
|
||||
"no-extra-bind": "error",
|
||||
"no-floating-decimal": "error",
|
||||
"no-implicit-coercion": "error",
|
||||
"no-implied-eval": "error",
|
||||
"no-iterator": "error",
|
||||
"no-labels": "error",
|
||||
"no-lone-blocks": "error",
|
||||
"no-lonely-if": "error",
|
||||
"no-loop-func": "error",
|
||||
"no-multi-str": "error",
|
||||
"no-new": "error",
|
||||
"no-new-func": "error",
|
||||
"no-new-wrappers": "error",
|
||||
"no-octal": "error",
|
||||
"no-octal-escape": "error",
|
||||
"no-param-reassign": "error",
|
||||
"no-proto": "error",
|
||||
"no-redeclare": "off",
|
||||
"no-return-assign": "error",
|
||||
"no-script-url": "error",
|
||||
"no-throw-literal": "error",
|
||||
"no-useless-call": "error",
|
||||
"no-useless-computed-key": "error",
|
||||
"no-useless-concat": "error",
|
||||
"no-useless-rename": "error",
|
||||
"no-useless-return": "error",
|
||||
"no-var": "error",
|
||||
"no-void": "error",
|
||||
"no-warning-comments": "warn",
|
||||
"object-shorthand": "error",
|
||||
"prefer-arrow-callback": "error",
|
||||
"prefer-const": "error",
|
||||
"prefer-destructuring": [
|
||||
2,
|
||||
{
|
||||
VariableDeclarator: {
|
||||
array: true,
|
||||
object: true,
|
||||
},
|
||||
AssignmentExpression: {
|
||||
array: false,
|
||||
object: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
"prefer-named-capture-group": "warn",
|
||||
"prefer-numeric-literals": "error",
|
||||
"prefer-object-has-own": "error",
|
||||
"prefer-promise-reject-errors": "error",
|
||||
"prefer-rest-params": "error",
|
||||
"prefer-spread": "error",
|
||||
"prefer-template": "error",
|
||||
radix: "error",
|
||||
"require-unicode-regexp": "error",
|
||||
"symbol-description": "error",
|
||||
yoda: "error",
|
||||
|
||||
// TypeScript
|
||||
"@typescript-eslint/adjacent-overload-signatures": "error",
|
||||
"@typescript-eslint/array-type": "error",
|
||||
"@typescript-eslint/consistent-type-assertions": "error",
|
||||
"@typescript-eslint/member-delimiter-style": [
|
||||
2,
|
||||
{
|
||||
multiline: {
|
||||
delimiter: "none",
|
||||
},
|
||||
singleline: {
|
||||
delimiter: "semi",
|
||||
requireLast: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
"@typescript-eslint/naming-convention": [
|
||||
"error",
|
||||
{
|
||||
selector: "interface",
|
||||
format: ["PascalCase"],
|
||||
custom: {
|
||||
regex: "^I[A-Z]",
|
||||
match: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
"@typescript-eslint/no-inferrable-types": "error",
|
||||
"@typescript-eslint/no-redeclare": "error",
|
||||
"@typescript-eslint/no-shadow": "error",
|
||||
"no-unused-expressions": "off",
|
||||
"@typescript-eslint/no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-expressions": "error",
|
||||
"@typescript-eslint/no-use-before-define": "error",
|
||||
"@typescript-eslint/no-useless-constructor": "error",
|
||||
"@typescript-eslint/prefer-for-of": "error",
|
||||
"@typescript-eslint/prefer-readonly": "error",
|
||||
"@typescript-eslint/require-array-sort-compare": "error",
|
||||
"@typescript-eslint/strict-boolean-expressions": "error",
|
||||
|
||||
// React
|
||||
"react/boolean-prop-naming": "error",
|
||||
"react/destructuring-assignment": "error",
|
||||
"react/no-access-state-in-setstate": "error",
|
||||
"react/no-array-index-key": "error",
|
||||
"react/no-children-prop": "error",
|
||||
"react/no-danger": "error",
|
||||
"react/no-danger-with-children": "error",
|
||||
"react/no-deprecated": "error",
|
||||
"react/no-did-mount-set-state": "error",
|
||||
"react/no-did-update-set-state": "warn",
|
||||
"react/no-direct-mutation-state": "error",
|
||||
"react/no-find-dom-node": "error",
|
||||
"react/no-is-mounted": "error",
|
||||
"react/no-redundant-should-component-update": "error",
|
||||
"react/no-render-return-value": "error",
|
||||
"react/no-typos": "error",
|
||||
"react/no-string-refs": "error",
|
||||
"react/no-this-in-sfc": "error",
|
||||
"react/no-unescaped-entities": "error",
|
||||
"react/no-unsafe": "error",
|
||||
"react/no-unused-prop-types": "error",
|
||||
"react/no-unused-state": "error",
|
||||
"react/no-will-update-set-state": "error",
|
||||
"react/prefer-es6-class": "error",
|
||||
"react/prefer-stateless-function": "error",
|
||||
"react/react-in-jsx-scope": "off",
|
||||
"react/require-render-return": "error",
|
||||
"react/self-closing-comp": "error",
|
||||
"react/state-in-constructor": [2, "never"],
|
||||
"react/style-prop-object": "error",
|
||||
"react/void-dom-elements-no-children": "error",
|
||||
"react/jsx-boolean-value": [2, "never"],
|
||||
"react/jsx-child-element-spacing": "error",
|
||||
"react/jsx-closing-tag-location": "error",
|
||||
"react/jsx-curly-newline": "error",
|
||||
"react/jsx-curly-spacing": "error",
|
||||
"react/jsx-equals-spacing": "error",
|
||||
"react/jsx-first-prop-new-line": "error",
|
||||
"react/jsx-indent-props": [2, 2],
|
||||
"react/jsx-no-bind": "error",
|
||||
"react/jsx-no-comment-textnodes": "error",
|
||||
"react/jsx-no-literals": "error",
|
||||
"react/jsx-no-target-blank": "error",
|
||||
"react/jsx-one-expression-per-line": [
|
||||
2,
|
||||
{
|
||||
allow: "single-child",
|
||||
},
|
||||
],
|
||||
"react/jsx-curly-brace-presence": [
|
||||
2,
|
||||
{
|
||||
props: "never",
|
||||
children: "ignore",
|
||||
},
|
||||
],
|
||||
"react/jsx-fragments": "error",
|
||||
"react/jsx-pascal-case": "error",
|
||||
"react/jsx-props-no-multi-spaces": "error",
|
||||
"react/jsx-props-no-spreading": "error",
|
||||
"react/jsx-tag-spacing": "error",
|
||||
"react/jsx-wrap-multilines": [
|
||||
2,
|
||||
{
|
||||
declaration: "parens-new-line",
|
||||
assignment: "parens-new-line",
|
||||
return: "parens-new-line",
|
||||
arrow: "parens-new-line",
|
||||
condition: "parens-new-line",
|
||||
logical: "parens-new-line",
|
||||
prop: "ignore",
|
||||
},
|
||||
],
|
||||
|
||||
// React Hooks
|
||||
"react-hooks/rules-of-hooks": "error",
|
||||
"react-hooks/exhaustive-deps": "error",
|
||||
},
|
||||
settings: {
|
||||
react: {
|
||||
version: "detect",
|
||||
},
|
||||
},
|
||||
},
|
||||
]
|
||||
Generated
+1829
-779
File diff suppressed because it is too large
Load Diff
+8
-5
@@ -39,23 +39,26 @@
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "11.0.0",
|
||||
"@commitlint/config-conventional": "11.0.0",
|
||||
"@eslint/eslintrc": "^2.1.2",
|
||||
"@eslint/js": "^8.47.0",
|
||||
"@types/mousetrap": "1.6.4",
|
||||
"@types/node": "^20.2.5",
|
||||
"@types/react": "^18.2.7",
|
||||
"@types/react-dom": "^18.2.4",
|
||||
"@types/react-redux": "7.1.11",
|
||||
"@types/semver": "7.3.4",
|
||||
"@typescript-eslint/eslint-plugin": "^5.10.0",
|
||||
"@typescript-eslint/parser": "^5.10.0",
|
||||
"@typescript-eslint/eslint-plugin": "^6.4.1",
|
||||
"@typescript-eslint/parser": "^6.4.1",
|
||||
"css-loader": "^6.8.1",
|
||||
"electron": "^25.1.1",
|
||||
"electron-builder": "^24.4.0",
|
||||
"electron-notarize": "^1.2.1",
|
||||
"eslint": "^8.7.0",
|
||||
"eslint-plugin-react": "^7.28.0",
|
||||
"eslint-plugin-react-hooks": "^4.3.0",
|
||||
"eslint": "^8.47.0",
|
||||
"eslint-plugin-react": "^7.33.2",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"eslint-plugin-tsdoc": "^0.2.14",
|
||||
"glob": "^10.2.6",
|
||||
"globals": "^13.21.0",
|
||||
"html-webpack-plugin": "^5.5.1",
|
||||
"mini-css-extract-plugin": "^2.7.6",
|
||||
"optolith-tsjsonschemamd": "^0.9.3",
|
||||
|
||||
Reference in New Issue
Block a user