diff --git a/.eslintignore b/.eslintignore index a00350a1..05f873a1 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,6 @@ **/dist/* node_modules -*.md pnpm-lock.yaml +*.md *.snap *.yml diff --git a/package.json b/package.json index dde1e0fd..0247abb4 100644 --- a/package.json +++ b/package.json @@ -35,16 +35,16 @@ "devDependencies": { "@changesets/changelog-github": "0.5.0", "@changesets/cli": "2.27.1", - "@typescript-eslint/parser": "7.1.1", + "@typescript-eslint/parser": "7.0.1", "@workleap/eslint-plugin": "workspace:*", "@workleap/typescript-configs": "workspace:*", - "eslint": "8.57.0", + "eslint": "8.56.0", "jest": "29.7.0", "prettier": "3.2.5", "retypeapp": "3.5.0", "stylelint": "16.2.1", "ts-node": "10.9.2", - "typescript": "5.4.2" + "typescript": "5.3.3" }, "engines": { "node": ">=16.0.0" diff --git a/packages/eslint-plugin/lib/config/by-project-type/monorepo-workspace.ts b/packages/eslint-plugin/lib/config/by-project-type/monorepo-workspace.ts index 06394655..1b92dbee 100644 --- a/packages/eslint-plugin/lib/config/by-project-type/monorepo-workspace.ts +++ b/packages/eslint-plugin/lib/config/by-project-type/monorepo-workspace.ts @@ -1,25 +1,18 @@ -import { mdxFiles, sourceFiles } from "../../utils/patterns"; - import type { Linter } from "eslint"; const config: Linter.Config = { - overrides: [ - { - files: sourceFiles, - plugins: ["@workleap"], - extends: [ - "plugin:@workleap/core", - "plugin:@workleap/typescript", - "plugin:@workleap/jest", - "plugin:@workleap/testing-library" - ] - }, - { - files: mdxFiles, - plugins: ["@workleap"], - extends: ["plugin:@workleap/mdx"] - } - ] + plugins: ["@workleap"], + extends: [ + "plugin:@workleap/core", + "plugin:@workleap/typescript", + "plugin:@workleap/jest", + "plugin:@workleap/testing-library", + "plugin:@workleap/mdx", + "plugin:@workleap/package-json" + ], + rules: { + "package-json/valid-version": "off" + } }; // Using TypeScript "export" keyword until ESLint support ESM. diff --git a/packages/eslint-plugin/lib/config/by-project-type/react-library.ts b/packages/eslint-plugin/lib/config/by-project-type/react-library.ts index 26befae9..94b6f36f 100644 --- a/packages/eslint-plugin/lib/config/by-project-type/react-library.ts +++ b/packages/eslint-plugin/lib/config/by-project-type/react-library.ts @@ -1,32 +1,22 @@ -import { mdxFiles, sourceFiles } from "../../utils/patterns"; - import type { Linter } from "eslint"; const config: Linter.Config = { - overrides: [ - { - files: sourceFiles, - plugins: ["@workleap"], - extends: [ - "plugin:@workleap/core", - "plugin:@workleap/typescript", - "plugin:@workleap/react", - "plugin:@workleap/jsx-a11y", - "plugin:@workleap/jest", - "plugin:@workleap/testing-library", - "plugin:@workleap/storybook" - ], - rules: { - // Custom WorkLeap rules - "@workleap/strict-css-modules-names": "warn" - } - }, - { - files: mdxFiles, - plugins: ["@workleap"], - extends: ["plugin:@workleap/mdx"] - } - ] + plugins: ["@workleap"], + extends: [ + "plugin:@workleap/core", + "plugin:@workleap/typescript", + "plugin:@workleap/react", + "plugin:@workleap/jsx-a11y", + "plugin:@workleap/jest", + "plugin:@workleap/testing-library", + "plugin:@workleap/storybook", + "plugin:@workleap/mdx", + "plugin:@workleap/package-json" + ], + rules: { + // Custom WorkLeap rules + "@workleap/strict-css-modules-names": "warn" + } }; // Using TypeScript "export" keyword until ESLint support ESM. diff --git a/packages/eslint-plugin/lib/config/by-project-type/typescript-library.ts b/packages/eslint-plugin/lib/config/by-project-type/typescript-library.ts index 848557c1..b921466d 100644 --- a/packages/eslint-plugin/lib/config/by-project-type/typescript-library.ts +++ b/packages/eslint-plugin/lib/config/by-project-type/typescript-library.ts @@ -1,24 +1,14 @@ -import { mdxFiles, sourceFiles } from "../../utils/patterns"; - import type { Linter } from "eslint"; const config: Linter.Config = { - overrides: [ - { - files: sourceFiles, - plugins: ["@workleap"], - extends: [ - "plugin:@workleap/core", - "plugin:@workleap/typescript", - "plugin:@workleap/jest", - "plugin:@workleap/testing-library" - ] - }, - { - files: mdxFiles, - plugins: ["@workleap"], - extends: ["plugin:@workleap/mdx"] - } + plugins: ["@workleap"], + extends: [ + "plugin:@workleap/core", + "plugin:@workleap/typescript", + "plugin:@workleap/jest", + "plugin:@workleap/testing-library", + "plugin:@workleap/mdx", + "plugin:@workleap/package-json" ] }; diff --git a/packages/eslint-plugin/lib/config/by-project-type/web-application.ts b/packages/eslint-plugin/lib/config/by-project-type/web-application.ts index 26befae9..94b6f36f 100644 --- a/packages/eslint-plugin/lib/config/by-project-type/web-application.ts +++ b/packages/eslint-plugin/lib/config/by-project-type/web-application.ts @@ -1,32 +1,22 @@ -import { mdxFiles, sourceFiles } from "../../utils/patterns"; - import type { Linter } from "eslint"; const config: Linter.Config = { - overrides: [ - { - files: sourceFiles, - plugins: ["@workleap"], - extends: [ - "plugin:@workleap/core", - "plugin:@workleap/typescript", - "plugin:@workleap/react", - "plugin:@workleap/jsx-a11y", - "plugin:@workleap/jest", - "plugin:@workleap/testing-library", - "plugin:@workleap/storybook" - ], - rules: { - // Custom WorkLeap rules - "@workleap/strict-css-modules-names": "warn" - } - }, - { - files: mdxFiles, - plugins: ["@workleap"], - extends: ["plugin:@workleap/mdx"] - } - ] + plugins: ["@workleap"], + extends: [ + "plugin:@workleap/core", + "plugin:@workleap/typescript", + "plugin:@workleap/react", + "plugin:@workleap/jsx-a11y", + "plugin:@workleap/jest", + "plugin:@workleap/testing-library", + "plugin:@workleap/storybook", + "plugin:@workleap/mdx", + "plugin:@workleap/package-json" + ], + rules: { + // Custom WorkLeap rules + "@workleap/strict-css-modules-names": "warn" + } }; // Using TypeScript "export" keyword until ESLint support ESM. diff --git a/packages/eslint-plugin/lib/config/core.ts b/packages/eslint-plugin/lib/config/core.ts index 00b12633..05f56e33 100644 --- a/packages/eslint-plugin/lib/config/core.ts +++ b/packages/eslint-plugin/lib/config/core.ts @@ -1,149 +1,155 @@ import type { Linter } from "eslint"; +import { sourceFiles } from "../utils/patterns"; const config: Linter.Config = { - plugins: ["import"], - extends: [ - "eslint:recommended" - ], - parserOptions: { - sourceType: "module", - ecmaVersion: "latest" - }, - env: { - es2024: true, - node: true, - commonjs: true - }, - rules: { - // eslint:recommended overwrite some rules - "no-cond-assign": ["error", "except-parens"], - "no-labels": ["warn", { allowLoop: true, allowSwitch: false }], - "no-prototype-builtins": "off", + overrides: [ + { + files: sourceFiles, + plugins: ["import"], + extends: [ + "eslint:recommended" + ], + parserOptions: { + sourceType: "module", + ecmaVersion: "latest" + }, + env: { + es2024: true, + node: true, + commonjs: true + }, + rules: { + // eslint:recommended overwrite some rules + "no-cond-assign": ["error", "except-parens"], + "no-labels": ["warn", { allowLoop: true, allowSwitch: false }], + "no-prototype-builtins": "off", - // https://eslint.org/docs/rules - // Extra eslint rules + // https://eslint.org/docs/rules + // Extra eslint rules - // Possible Problems - "array-callback-return": "error", - "no-self-compare": "error", - "no-template-curly-in-string": "error", - "no-use-before-define": [ - "error", - { - functions: false, - classes: false, - variables: false - } - ], + // Possible Problems + "array-callback-return": "error", + "no-self-compare": "error", + "no-template-curly-in-string": "error", + "no-use-before-define": [ + "error", + { + functions: false, + classes: false, + variables: false + } + ], - // Suggestions - "no-array-constructor": "warn", - "no-caller": "warn", - "no-eval": "warn", - "no-extend-native": "warn", - "no-extra-bind": "warn", - "no-extra-label": "warn", - "no-implied-eval": "warn", - "no-iterator": "warn", - "no-label-var": "warn", - "no-lone-blocks": "warn", - "no-loop-func": "warn", - "no-multi-str": "warn", - "no-new-func": "warn", - "no-new-object": "warn", - "no-new-wrappers": "warn", - "no-octal-escape": "warn", - "no-useless-computed-key": "warn", - "no-useless-concat": "warn", - "no-useless-constructor": "warn", - "no-script-url": "warn", - "no-sequences": "warn", - "no-throw-literal": "warn", - "prefer-const": "warn", - "no-var": "warn", - "curly": "warn", - "no-shadow": "warn", - "no-restricted-properties": "warn", - "no-unneeded-ternary": "warn", - "no-param-reassign": "warn", - "eqeqeq": ["warn", "smart"], - "no-mixed-operators": [ - "warn", - { - groups: [ - ["&", "|", "^", "~", "<<", ">>", ">>>"], - ["==", "!=", "===", "!==", ">", ">=", "<", "<="], - ["&&", "||"], - ["in", "instanceof"] + // Suggestions + "no-array-constructor": "warn", + "no-caller": "warn", + "no-eval": "warn", + "no-extend-native": "warn", + "no-extra-bind": "warn", + "no-extra-label": "warn", + "no-implied-eval": "warn", + "no-iterator": "warn", + "no-label-var": "warn", + "no-lone-blocks": "warn", + "no-loop-func": "warn", + "no-multi-str": "warn", + "no-new-func": "warn", + "no-new-object": "warn", + "no-new-wrappers": "warn", + "no-octal-escape": "warn", + "no-useless-computed-key": "warn", + "no-useless-concat": "warn", + "no-useless-constructor": "warn", + "no-script-url": "warn", + "no-sequences": "warn", + "no-throw-literal": "warn", + "prefer-const": "warn", + "no-var": "warn", + "curly": "warn", + "no-shadow": "warn", + "no-restricted-properties": "warn", + "no-unneeded-ternary": "warn", + "no-param-reassign": "warn", + "eqeqeq": ["warn", "smart"], + "no-mixed-operators": [ + "warn", + { + groups: [ + ["&", "|", "^", "~", "<<", ">>", ">>>"], + ["==", "!=", "===", "!==", ">", ">=", "<", "<="], + ["&&", "||"], + ["in", "instanceof"] + ], + allowSamePrecedence: false + } + ], + "no-restricted-syntax": ["error", "WithStatement"], + "no-restricted-globals": ["error"], + "no-useless-rename": [ + "warn", + { + ignoreDestructuring: false, + ignoreImport: false, + ignoreExport: false + } + ], + "strict": ["warn", "never"], + "no-unused-expressions": [ + "error", + { + allowShortCircuit: true, + allowTernary: true, + allowTaggedTemplates: true + } ], - allowSamePrecedence: false - } - ], - "no-restricted-syntax": ["error", "WithStatement"], - "no-restricted-globals": ["error"], - "no-useless-rename": [ - "warn", - { - ignoreDestructuring: false, - ignoreImport: false, - ignoreExport: false - } - ], - "strict": ["warn", "never"], - "no-unused-expressions": [ - "error", - { - allowShortCircuit: true, - allowTernary: true, - allowTaggedTemplates: true - } - ], - // Layout & Formatting - "no-native-reassign": "warn", // deprecated replaced by no-global-assign, deja ds recommended - "no-negated-in-lhs": "warn", // deprecated replaced by no-unsafe-negation, deja ds recommended - "padding-line-between-statements": [ - "warn", - { blankLine: "always", prev: "*", next: "return" } - ], + // Layout & Formatting + "no-native-reassign": "warn", // deprecated replaced by no-global-assign, deja ds recommended + "no-negated-in-lhs": "warn", // deprecated replaced by no-unsafe-negation, deja ds recommended + "padding-line-between-statements": [ + "warn", + { blankLine: "always", prev: "*", next: "return" } + ], - "rest-spread-spacing": ["warn", "never"], - "unicode-bom": ["warn", "never"], - "comma-spacing": ["warn", { "before": false, "after": true }], - "keyword-spacing": ["warn", { before: true, after: true }], - "arrow-spacing": ["warn", { before: true, after: true }], - "space-before-blocks": ["warn", "always"], - "space-in-parens": ["warn", "never"], - "padded-blocks": ["warn", "never"], - "brace-style":["warn", "1tbs", { "allowSingleLine": true }], - "new-parens": "warn", - "no-whitespace-before-property": "warn", - "no-multi-spaces": "warn", - "no-multiple-empty-lines": "warn", - "space-infix-ops": "warn", - "max-len": ["warn", { tabWidth: 4, code: 300 }], - "indent": [ - "warn", - 4, - { - SwitchCase: 1, - CallExpression: { arguments: "first" } - } - ], - "semi": ["warn", "always"], - "quotes": ["warn", "double"], - "comma-dangle": ["warn", "never"], - "object-curly-spacing": ["warn", "always"], - "dot-location": ["warn", "property"], - "arrow-parens": ["warn", "as-needed"], + "rest-spread-spacing": ["warn", "never"], + "unicode-bom": ["warn", "never"], + "comma-spacing": ["warn", { "before": false, "after": true }], + "keyword-spacing": ["warn", { before: true, after: true }], + "arrow-spacing": ["warn", { before: true, after: true }], + "space-before-blocks": ["warn", "always"], + "space-in-parens": ["warn", "never"], + "padded-blocks": ["warn", "never"], + "brace-style":["warn", "1tbs", { "allowSingleLine": true }], + "new-parens": "warn", + "no-whitespace-before-property": "warn", + "no-multi-spaces": "warn", + "no-multiple-empty-lines": "warn", + "space-infix-ops": "warn", + "max-len": ["warn", { tabWidth: 4, code: 300 }], + "indent": [ + "warn", + 4, + { + SwitchCase: 1, + CallExpression: { arguments: "first" } + } + ], + "semi": ["warn", "always"], + "quotes": ["warn", "double"], + "comma-dangle": ["warn", "never"], + "object-curly-spacing": ["warn", "always"], + "dot-location": ["warn", "property"], + "arrow-parens": ["warn", "as-needed"], - // https://github.com/import-js/eslint-plugin-import/tree/main/docs/rules - "import/no-amd": "error", - "import/no-webpack-loader-syntax": "error", - "import/no-self-import": "error", - "import/newline-after-import" : "warn", - "import/no-duplicates": "warn" - } + // https://github.com/import-js/eslint-plugin-import/tree/main/docs/rules + "import/no-amd": "error", + "import/no-webpack-loader-syntax": "error", + "import/no-self-import": "error", + "import/newline-after-import" : "warn", + "import/no-duplicates": "warn" + } + } + ] }; // Using TypeScript "export" keyword until ESLint support ESM. diff --git a/packages/eslint-plugin/lib/config/mdx.ts b/packages/eslint-plugin/lib/config/mdx.ts index 6daa7325..bc34d4b1 100644 --- a/packages/eslint-plugin/lib/config/mdx.ts +++ b/packages/eslint-plugin/lib/config/mdx.ts @@ -1,9 +1,14 @@ -// https://github.com/storybookjs/eslint-plugin-storybook/blob/main/lib/configs/recommended.ts - import type { Linter } from "eslint"; +import { mdxFiles } from "../utils/patterns"; const config: Linter.Config = { - extends: ["plugin:mdx/recommended"] + overrides: [ + { + files: mdxFiles, + plugins: ["@workleap"], + extends: ["plugin:mdx/recommended"] + } + ] }; // Using TypeScript "export" keyword until ESLint support ESM. diff --git a/packages/eslint-plugin/lib/config/package-json.ts b/packages/eslint-plugin/lib/config/package-json.ts new file mode 100644 index 00000000..bb34a721 --- /dev/null +++ b/packages/eslint-plugin/lib/config/package-json.ts @@ -0,0 +1,34 @@ +import type { Linter } from "eslint"; + +const config: Linter.Config = { + overrides: [ + { + files: ["package.json"], + plugins: ["package-json"], + extends: ["plugin:package-json/recommended"], + parser: "jsonc-eslint-parser", + rules: { + "package-json/prefer-repository-shorthand": "off", + "package-json/sort-collections": [ + "error", + [ + // Do not sort "scripts". + "devDependencies", + "dependencies", + "peerDependencies", + "config" + ] + ], + // Doesn't support "workspace:*" at the moment. + "package-json/valid-package-def": "off", + // I am not sure why, this rule is triggering errors for valid paths. + "package-json/valid-repository-directory": "off" + } + } + ] +}; + +// Using TypeScript "export" keyword until ESLint support ESM. +// Otherwise we must deal with a weird CommonJS output from esbuild which is not worth it. +// For more info, see: https://github.com/evanw/esbuild/issues/1079 +export = config; diff --git a/packages/eslint-plugin/lib/index.ts b/packages/eslint-plugin/lib/index.ts index 7bba36e2..406785e8 100644 --- a/packages/eslint-plugin/lib/index.ts +++ b/packages/eslint-plugin/lib/index.ts @@ -10,10 +10,11 @@ const plugin: ESLint.Plugin = { jest: require("./config/jest"), mdx: require("./config/mdx"), react: require("./config/react"), - "jsx-a11y": require("./config/jsx-a11y"), storybook: require("./config/storybook"), - "testing-library": require("./config/testing-library"), typescript: require("./config/typescript"), + "jsx-a11y": require("./config/jsx-a11y"), + "testing-library": require("./config/testing-library"), + "package-json": require("./config/package-json"), // By project type "react-library": require("./config/by-project-type/react-library"), diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index b079ebb8..bcf06941 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -34,17 +34,6 @@ "scripts": { "build": "tsup" }, - "dependencies": { - "@typescript-eslint/eslint-plugin": "^7.1.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^27.9.0", - "eslint-plugin-jsx-a11y": "^6.8.0", - "eslint-plugin-mdx": "^3.1.5", - "eslint-plugin-react": "^7.34.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-storybook": "^0.8.0", - "eslint-plugin-testing-library": "^6.2.0" - }, "peerDependencies": { "@typescript-eslint/parser": "*", "eslint": "*", @@ -79,6 +68,19 @@ "tsup": "8.0.2", "typescript": "5.4.2" }, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^7.1.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jest": "^27.9.0", + "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-mdx": "^3.1.5", + "eslint-plugin-package-json": "0.10.4", + "eslint-plugin-react": "^7.34.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-storybook": "^0.8.0", + "eslint-plugin-testing-library": "^6.2.0", + "jsonc-eslint-parser": "2.4.0" + }, "publishConfig": { "access": "public", "provenance": true diff --git a/packages/postcss-configs/package.json b/packages/postcss-configs/package.json index 6fb5dfad..5a3a0701 100644 --- a/packages/postcss-configs/package.json +++ b/packages/postcss-configs/package.json @@ -30,10 +30,6 @@ "scripts": { "build": "tsup" }, - "dependencies": { - "postcss-load-config": "5.0.3", - "postcss-preset-env": "9.5.0" - }, "peerDependencies": { "postcss": ">=8.4.6" }, @@ -52,6 +48,10 @@ "tsup": "8.0.2", "typescript": "5.4.2" }, + "dependencies": { + "postcss-load-config": "^5.0.3", + "postcss-preset-env": "^9.5.0" + }, "publishConfig": { "access": "public", "provenance": true diff --git a/packages/stylelint-configs/package.json b/packages/stylelint-configs/package.json index 0f56ec75..bea16611 100644 --- a/packages/stylelint-configs/package.json +++ b/packages/stylelint-configs/package.json @@ -32,10 +32,6 @@ "scripts": { "build": "tsup" }, - "dependencies": { - "stylelint-config-standard": "^36.0.0", - "stylelint-prettier": "^5.0.0" - }, "peerDependencies": { "prettier": ">=2.0.0", "stylelint": ">=15" @@ -58,6 +54,10 @@ "tsup": "8.0.2", "typescript": "5.4.2" }, + "dependencies": { + "stylelint-config-standard": "^36.0.0", + "stylelint-prettier": "^5.0.0" + }, "publishConfig": { "access": "public", "provenance": true diff --git a/packages/swc-configs/package.json b/packages/swc-configs/package.json index 6f2b13f1..bee32665 100644 --- a/packages/swc-configs/package.json +++ b/packages/swc-configs/package.json @@ -34,19 +34,6 @@ "scripts": { "build": "tsup" }, - "devDependencies": { - "@swc/core": "1.4.6", - "@swc/jest": "0.2.36", - "@types/jest": "29.5.12", - "@workleap/eslint-plugin": "workspace:*", - "@workleap/tsup-configs": "workspace:*", - "@workleap/typescript-configs": "workspace:*", - "browserslist": "4.23.0", - "jest": "29.7.0", - "ts-node": "10.9.2", - "tsup": "8.0.2", - "typescript": "5.4.2" - }, "peerDependencies": { "@swc/core": "*", "@swc/helpers": "*", @@ -61,6 +48,19 @@ "optional": true } }, + "devDependencies": { + "@swc/core": "1.4.6", + "@swc/jest": "0.2.36", + "@types/jest": "29.5.12", + "@workleap/eslint-plugin": "workspace:*", + "@workleap/tsup-configs": "workspace:*", + "@workleap/typescript-configs": "workspace:*", + "browserslist": "4.23.0", + "jest": "29.7.0", + "ts-node": "10.9.2", + "tsup": "8.0.2", + "typescript": "5.4.2" + }, "publishConfig": { "access": "public", "provenance": true diff --git a/packages/webpack-configs/package.json b/packages/webpack-configs/package.json index e7df722f..420b18e7 100644 --- a/packages/webpack-configs/package.json +++ b/packages/webpack-configs/package.json @@ -64,15 +64,15 @@ "webpack-dev-server": "5.0.2" }, "dependencies": { - "@pmmmwh/react-refresh-webpack-plugin": "0.5.11", - "@svgr/webpack": "8.1.0", - "css-loader": "6.10.0", - "html-webpack-plugin": "5.6.0", - "mini-css-extract-plugin": "2.8.1", - "postcss-loader": "8.1.1", - "style-loader": "3.3.4", - "swc-loader": "0.2.6", - "terser-webpack-plugin": "5.3.10" + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", + "@svgr/webpack": "^8.1.0", + "css-loader": "^6.10.0", + "html-webpack-plugin": "^5.6.0", + "mini-css-extract-plugin": "^2.8.1", + "postcss-loader": "^8.1.1", + "style-loader": "^3.3.4", + "swc-loader": "^0.2.6", + "terser-webpack-plugin": "^5.3.10" }, "publishConfig": { "access": "public", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d73e2005..80b53391 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,6 +77,9 @@ importers: eslint-plugin-mdx: specifier: ^3.1.5 version: 3.1.5(eslint@8.57.0) + eslint-plugin-package-json: + specifier: 0.10.4 + version: 0.10.4(eslint@8.57.0)(jsonc-eslint-parser@2.4.0) eslint-plugin-react: specifier: ^7.34.0 version: 7.34.0(eslint@8.57.0) @@ -89,6 +92,9 @@ importers: eslint-plugin-testing-library: specifier: ^6.2.0 version: 6.2.0(eslint@8.57.0)(typescript@5.4.2) + jsonc-eslint-parser: + specifier: 2.4.0 + version: 2.4.0 devDependencies: '@swc/core': specifier: 1.4.6 @@ -142,10 +148,10 @@ importers: packages/postcss-configs: dependencies: postcss-load-config: - specifier: 5.0.3 + specifier: ^5.0.3 version: 5.0.3(postcss@8.4.35) postcss-preset-env: - specifier: 9.5.0 + specifier: ^9.5.0 version: 9.5.0(postcss@8.4.35) devDependencies: '@swc/core': @@ -304,34 +310,34 @@ importers: packages/webpack-configs: dependencies: '@pmmmwh/react-refresh-webpack-plugin': - specifier: 0.5.11 + specifier: ^0.5.11 version: 0.5.11(react-refresh@0.14.0)(webpack-dev-server@5.0.2)(webpack@5.90.3) '@svgr/webpack': - specifier: 8.1.0 + specifier: ^8.1.0 version: 8.1.0(typescript@5.4.2) '@swc/helpers': specifier: '*' version: 0.5.6 css-loader: - specifier: 6.10.0 + specifier: ^6.10.0 version: 6.10.0(webpack@5.90.3) html-webpack-plugin: - specifier: 5.6.0 + specifier: ^5.6.0 version: 5.6.0(webpack@5.90.3) mini-css-extract-plugin: - specifier: 2.8.1 + specifier: ^2.8.1 version: 2.8.1(webpack@5.90.3) postcss-loader: - specifier: 8.1.1 + specifier: ^8.1.1 version: 8.1.1(postcss@8.4.35)(typescript@5.4.2)(webpack@5.90.3) style-loader: - specifier: 3.3.4 + specifier: ^3.3.4 version: 3.3.4(webpack@5.90.3) swc-loader: - specifier: 0.2.6 + specifier: ^0.2.6 version: 0.2.6(@swc/core@1.4.6)(webpack@5.90.3) terser-webpack-plugin: - specifier: 5.3.10 + specifier: ^5.3.10 version: 5.3.10(@swc/core@1.4.6)(esbuild@0.19.12)(webpack@5.90.3) devDependencies: '@svgr/core': @@ -3637,6 +3643,13 @@ packages: '@types/qs': 6.9.12 '@types/serve-static': 1.15.5 + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.11.25 + dev: false + /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: @@ -3717,6 +3730,10 @@ packages: /@types/mime@3.0.4: resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: false + /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true @@ -4733,6 +4750,12 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.6.0 + dev: false + /bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} @@ -5474,7 +5497,6 @@ packages: /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - dev: true /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} @@ -6035,6 +6057,21 @@ packages: - supports-color dev: false + /eslint-plugin-package-json@0.10.4(eslint@8.57.0)(jsonc-eslint-parser@2.4.0): + resolution: {integrity: sha512-dape6w9G7hCXDkoVWoPwrQjUK0V6636qAgUPewduXLH9RdEw/y4XGqCyvD5KujlMBQuagadMkxuGNluW0GC4vQ==} + engines: {node: '>=18'} + peerDependencies: + eslint: '>=8.0.0' + jsonc-eslint-parser: ^2.0.0 + dependencies: + eslint: 8.57.0 + jsonc-eslint-parser: 2.4.0 + package-json-validator: 0.6.3 + semver: 7.6.0 + sort-package-json: 1.57.0 + validate-npm-package-name: 5.0.0 + dev: false + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -6550,6 +6587,10 @@ packages: es-errors: 1.3.0 get-intrinsic: 1.2.4 + /git-hooks-list@1.0.3: + resolution: {integrity: sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==} + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -6616,6 +6657,20 @@ packages: dependencies: define-properties: 1.2.1 + /globby@10.0.0: + resolution: {integrity: sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + glob: 7.2.3 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -7167,6 +7222,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: false + /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} @@ -7873,6 +7933,16 @@ packages: engines: {node: '>=6'} hasBin: true + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.0 + dev: false + /jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true @@ -8599,6 +8669,10 @@ packages: kind-of: 6.0.3 dev: true + /minimist@0.0.10: + resolution: {integrity: sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==} + dev: false + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -8905,6 +8979,13 @@ packages: hasBin: true dev: true + /optimist@0.6.1: + resolution: {integrity: sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==} + dependencies: + minimist: 0.0.10 + wordwrap: 0.0.3 + dev: false + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -8977,6 +9058,13 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + /package-json-validator@0.6.3: + resolution: {integrity: sha512-juKiFboV4UKUvWQ+OSxstnyukhuluyuEoFmgZw1Rx21XzmwlgDWLcbl3qzjA3789IRORYhVFs7cmAO0YFGwHCg==} + hasBin: true + dependencies: + optimist: 0.6.1 + dev: false + /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: @@ -10321,6 +10409,22 @@ packages: uuid: 8.3.2 websocket-driver: 0.7.4 + /sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + dev: false + + /sort-package-json@1.57.0: + resolution: {integrity: sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q==} + hasBin: true + dependencies: + detect-indent: 6.1.0 + detect-newline: 3.1.0 + git-hooks-list: 1.0.3 + globby: 10.0.0 + is-plain-obj: 2.1.0 + sort-object-keys: 1.1.3 + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -11404,6 +11508,13 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: false + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -11864,6 +11975,11 @@ packages: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} dev: true + /wordwrap@0.0.3: + resolution: {integrity: sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==} + engines: {node: '>=0.4.0'} + dev: false + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'}