Initial commit
This commit is contained in:
498
patch/eslint-plugin-import.patch
Normal file
498
patch/eslint-plugin-import.patch
Normal file
@ -0,0 +1,498 @@
|
||||
diff --git a/.babelrc b/.babelrc
|
||||
index 883c03b7..0111d616 100644
|
||||
--- a/.babelrc
|
||||
+++ b/.babelrc
|
||||
@@ -1,18 +1,11 @@
|
||||
{
|
||||
- "presets": ["airbnb"],
|
||||
- "sourceMaps": "inline",
|
||||
- "retainLines": true,
|
||||
+ "presets": [["@babel/preset-env", { "targets": { "node": 16 } }]],
|
||||
"env": {
|
||||
"test": {
|
||||
- "plugins": [
|
||||
- "istanbul",
|
||||
- ["module-resolver", { "root": ["./src/"] }],
|
||||
- ]
|
||||
+ "plugins": ["istanbul", ["module-resolver", { "root": ["./src/"] }]]
|
||||
},
|
||||
"testCompiled": {
|
||||
- "plugins": [
|
||||
- ["module-resolver", { "root": ["./lib/"] }],
|
||||
- ]
|
||||
+ "plugins": [["module-resolver", { "root": ["./lib/"] }]]
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/.eslintrc b/.eslintrc
|
||||
deleted file mode 100644
|
||||
index 709a4744..00000000
|
||||
--- a/.eslintrc
|
||||
+++ /dev/null
|
||||
@@ -1,247 +0,0 @@
|
||||
-{
|
||||
- "root": true,
|
||||
- "plugins": [
|
||||
- "eslint-plugin",
|
||||
- "import",
|
||||
- ],
|
||||
- "extends": [
|
||||
- "eslint:recommended",
|
||||
- "plugin:eslint-plugin/recommended",
|
||||
- "plugin:import/recommended",
|
||||
- ],
|
||||
- "env": {
|
||||
- "node": true,
|
||||
- "es6": true,
|
||||
- "es2017": true,
|
||||
- },
|
||||
- "parserOptions": {
|
||||
- "sourceType": "module",
|
||||
- "ecmaVersion": 2020,
|
||||
- },
|
||||
- "rules": {
|
||||
- "arrow-body-style": [2, "as-needed"],
|
||||
- "arrow-parens": [2, "always"],
|
||||
- "arrow-spacing": [2, { "before": true, "after": true }],
|
||||
- "block-spacing": [2, "always"],
|
||||
- "brace-style": [2, "1tbs", { "allowSingleLine": true }],
|
||||
- "comma-dangle": ["error", {
|
||||
- "arrays": "always-multiline",
|
||||
- "objects": "always-multiline",
|
||||
- "imports": "always-multiline",
|
||||
- "exports": "always-multiline",
|
||||
- "functions": "always-multiline",
|
||||
- }],
|
||||
- "comma-spacing": [2, { "before": false, "after": true }],
|
||||
- "comma-style": [2, "last"],
|
||||
- "computed-property-spacing": [2, "never"],
|
||||
- "curly": [2, "all"],
|
||||
- "default-case": [2, { "commentPattern": "(?:)" }],
|
||||
- "default-case-last": [2],
|
||||
- "default-param-last": [2],
|
||||
- "dot-location": [2, "property"],
|
||||
- "dot-notation": [2, { "allowKeywords": true, "allowPattern": "throws" }],
|
||||
- "eol-last": [2, "always"],
|
||||
- "eqeqeq": [2, "allow-null"],
|
||||
- "for-direction": [2],
|
||||
- "function-call-argument-newline": [2, "consistent"],
|
||||
- "func-call-spacing": [2, "never"],
|
||||
- "implicit-arrow-linebreak": [2, "beside"],
|
||||
- "indent": [2, 2, {
|
||||
- "SwitchCase": 1,
|
||||
- "VariableDeclarator": 1,
|
||||
- "outerIIFEBody": 1,
|
||||
- "FunctionDeclaration": {
|
||||
- "parameters": 1,
|
||||
- "body": 1
|
||||
- },
|
||||
- "FunctionExpression": {
|
||||
- "parameters": 1,
|
||||
- "body": 1
|
||||
- },
|
||||
- "CallExpression": {
|
||||
- "arguments": 1
|
||||
- },
|
||||
- "ArrayExpression": 1,
|
||||
- "ObjectExpression": 1,
|
||||
- "ImportDeclaration": 1,
|
||||
- "flatTernaryExpressions": false,
|
||||
- }],
|
||||
- "jsx-quotes": [2, "prefer-double"],
|
||||
- "key-spacing": [2, {
|
||||
- "beforeColon": false,
|
||||
- "afterColon": true,
|
||||
- "mode": "strict",
|
||||
- }],
|
||||
- "keyword-spacing": ["error", {
|
||||
- "before": true,
|
||||
- "after": true,
|
||||
- "overrides": {
|
||||
- "return": { "after": true },
|
||||
- "throw": { "after": true },
|
||||
- "case": { "after": true }
|
||||
- }
|
||||
- }],
|
||||
- "linebreak-style": [2, "unix"],
|
||||
- "lines-around-directive": [2, {
|
||||
- "before": "always",
|
||||
- "after": "always",
|
||||
- }],
|
||||
- "max-len": 0,
|
||||
- "new-parens": 2,
|
||||
- "no-array-constructor": 2,
|
||||
- "no-compare-neg-zero": 2,
|
||||
- "no-cond-assign": [2, "always"],
|
||||
- "no-extra-parens": 2,
|
||||
- "no-multiple-empty-lines": [2, { "max": 1, "maxEOF": 1, "maxBOF": 0 }],
|
||||
- "no-return-assign": [2, "always"],
|
||||
- "no-trailing-spaces": 2,
|
||||
- "no-var": 2,
|
||||
- "object-curly-spacing": [2, "always"],
|
||||
- "object-shorthand": ["error", "always", {
|
||||
- "ignoreConstructors": false,
|
||||
- "avoidQuotes": false,
|
||||
- "avoidExplicitReturnArrows": true,
|
||||
- }],
|
||||
- "one-var": [2, "never"],
|
||||
- "operator-linebreak": [2, "none", {
|
||||
- "overrides": {
|
||||
- "?": "before",
|
||||
- ":": "before",
|
||||
- "&&": "before",
|
||||
- "||": "before",
|
||||
- },
|
||||
- }],
|
||||
- "prefer-const": 2,
|
||||
- "prefer-object-spread": 2,
|
||||
- "prefer-rest-params": 2,
|
||||
- "prefer-template": 2,
|
||||
- "quote-props": [2, "as-needed", { "keywords": false }],
|
||||
- "quotes": [2, "single", {
|
||||
- "allowTemplateLiterals": true,
|
||||
- "avoidEscape": true,
|
||||
- }],
|
||||
- "rest-spread-spacing": [2, "never"],
|
||||
- "semi": [2, "always"],
|
||||
- "semi-spacing": [2, { "before": false, "after": true }],
|
||||
- "semi-style": [2, "last"],
|
||||
- "space-before-blocks": [2, { "functions": "always", "keywords": "always", "classes": "always" }],
|
||||
- "space-before-function-paren": ["error", {
|
||||
- "anonymous": "always",
|
||||
- "named": "never",
|
||||
- "asyncArrow": "always",
|
||||
- }],
|
||||
- "space-in-parens": [2, "never"],
|
||||
- "space-infix-ops": [2],
|
||||
- "space-unary-ops": [2, { "words": true, "nonwords": false }],
|
||||
- "switch-colon-spacing": [2, { "after": true, "before": false }],
|
||||
- "template-curly-spacing": [2, "never"],
|
||||
- "template-tag-spacing": [2, "never"],
|
||||
- "unicode-bom": [2, "never"],
|
||||
- "use-isnan": [2, { "enforceForSwitchCase": true }],
|
||||
- "valid-typeof": [2],
|
||||
- "wrap-iife": [2, "outside", { "functionPrototypeMethods": true }],
|
||||
- "wrap-regex": [2],
|
||||
- "yield-star-spacing": [2, { "before": false, "after": true }],
|
||||
- "yoda": [2, "never", { "exceptRange": true, "onlyEquality": false }],
|
||||
-
|
||||
- "eslint-plugin/consistent-output": [
|
||||
- "error",
|
||||
- "always",
|
||||
- ],
|
||||
- "eslint-plugin/meta-property-ordering": "error",
|
||||
- "eslint-plugin/no-deprecated-context-methods": "error",
|
||||
- "eslint-plugin/no-deprecated-report-api": "off",
|
||||
- "eslint-plugin/prefer-replace-text": "error",
|
||||
- "eslint-plugin/report-message-format": "error",
|
||||
- "eslint-plugin/require-meta-docs-description": ["error", { "pattern": "^(Enforce|Ensure|Prefer|Forbid).+\\.$" }],
|
||||
- "eslint-plugin/require-meta-schema": "error",
|
||||
- "eslint-plugin/require-meta-type": "error",
|
||||
-
|
||||
- // dog fooding
|
||||
- "import/no-extraneous-dependencies": ["error", {
|
||||
- "devDependencies": [
|
||||
- "tests/**",
|
||||
- "resolvers/*/test/**",
|
||||
- "scripts/**"
|
||||
- ],
|
||||
- "optionalDependencies": false,
|
||||
- "peerDependencies": true,
|
||||
- "bundledDependencies": false,
|
||||
- }],
|
||||
- "import/unambiguous": "off",
|
||||
- },
|
||||
-
|
||||
- "settings": {
|
||||
- "import/resolver": {
|
||||
- "node": {
|
||||
- "paths": [
|
||||
- "src",
|
||||
- ],
|
||||
- },
|
||||
- },
|
||||
- },
|
||||
-
|
||||
- "overrides": [
|
||||
- {
|
||||
- "files": "scripts/**",
|
||||
- "rules": {
|
||||
- "no-console": "off",
|
||||
- },
|
||||
- },
|
||||
- {
|
||||
- "files": "resolvers/**",
|
||||
- "env": {
|
||||
- "es6": false,
|
||||
- },
|
||||
- },
|
||||
- {
|
||||
- "files": "resolvers/webpack/**",
|
||||
- "rules": {
|
||||
- "no-console": 1,
|
||||
- "prefer-template": 0,
|
||||
- "prefer-object-spread": 0,
|
||||
- "prefer-rest-params": 0,
|
||||
- },
|
||||
- "env": {
|
||||
- "es6": true,
|
||||
- },
|
||||
- },
|
||||
- {
|
||||
- "files": [
|
||||
- "resolvers/*/test/**/*",
|
||||
- ],
|
||||
- "env": {
|
||||
- "mocha": true,
|
||||
- "es6": false
|
||||
- },
|
||||
- },
|
||||
- {
|
||||
- "files": "utils/**",
|
||||
- "parserOptions": {
|
||||
- "ecmaVersion": 6,
|
||||
- },
|
||||
- "rules": {
|
||||
- "comma-dangle": ["error", {
|
||||
- "arrays": "always-multiline",
|
||||
- "objects": "always-multiline",
|
||||
- "imports": "always-multiline",
|
||||
- "exports": "always-multiline",
|
||||
- "functions": "never"
|
||||
- }],
|
||||
- "prefer-object-spread": "off",
|
||||
- "prefer-template": "off",
|
||||
- "no-console": 1,
|
||||
- },
|
||||
- },
|
||||
- {
|
||||
- "files": "tests/**",
|
||||
- "env": {
|
||||
- "mocha": true,
|
||||
- },
|
||||
- "rules": {
|
||||
- "max-len": 0,
|
||||
- "import/default": 0,
|
||||
- },
|
||||
- },
|
||||
- ],
|
||||
-}
|
||||
diff --git a/scripts/resolverDirectories.js b/scripts/resolverDirectories.js
|
||||
index f0c03a3c..a7cadb55 100644
|
||||
--- a/scripts/resolverDirectories.js
|
||||
+++ b/scripts/resolverDirectories.js
|
||||
@@ -1,3 +1,3 @@
|
||||
-import glob from 'glob';
|
||||
+import { globSync } from 'glob';
|
||||
|
||||
-export default glob.sync('./resolvers/*/');
|
||||
+export default globSync('./resolvers/*/');
|
||||
diff --git a/src/docsUrl.js b/src/docsUrl.js
|
||||
index 92b838c0..ccb13ba0 100644
|
||||
--- a/src/docsUrl.js
|
||||
+++ b/src/docsUrl.js
|
||||
@@ -1,7 +1,7 @@
|
||||
-import pkg from '../package.json';
|
||||
+import { version } from '../package.json';
|
||||
|
||||
const repoUrl = 'https://github.com/import-js/eslint-plugin-import';
|
||||
|
||||
-export default function docsUrl(ruleName, commitish = `v${pkg.version}`) {
|
||||
+export default function docsUrl(ruleName, commitish = `v${version}`) {
|
||||
return `${repoUrl}/blob/${commitish}/docs/rules/${ruleName}.md`;
|
||||
}
|
||||
diff --git a/src/index.js b/src/index.js
|
||||
index feafba90..84992bef 100644
|
||||
--- a/src/index.js
|
||||
+++ b/src/index.js
|
||||
@@ -1,71 +1,132 @@
|
||||
-export const rules = {
|
||||
- 'no-unresolved': require('./rules/no-unresolved'),
|
||||
- named: require('./rules/named'),
|
||||
- default: require('./rules/default'),
|
||||
- namespace: require('./rules/namespace'),
|
||||
- 'no-namespace': require('./rules/no-namespace'),
|
||||
- export: require('./rules/export'),
|
||||
- 'no-mutable-exports': require('./rules/no-mutable-exports'),
|
||||
- extensions: require('./rules/extensions'),
|
||||
- 'no-restricted-paths': require('./rules/no-restricted-paths'),
|
||||
- 'no-internal-modules': require('./rules/no-internal-modules'),
|
||||
- 'group-exports': require('./rules/group-exports'),
|
||||
- 'no-relative-packages': require('./rules/no-relative-packages'),
|
||||
- 'no-relative-parent-imports': require('./rules/no-relative-parent-imports'),
|
||||
- 'consistent-type-specifier-style': require('./rules/consistent-type-specifier-style'),
|
||||
+/* eslint-disable spaced-comment */
|
||||
+import noUnresolved from './rules/no-unresolved';
|
||||
+import named from './rules/named';
|
||||
+import defaultRule from './rules/default';
|
||||
+import namespace from './rules/namespace';
|
||||
+import noNamespace from './rules/no-namespace';
|
||||
+import exportRule from './rules/export';
|
||||
+import noMutableExports from './rules/no-mutable-exports';
|
||||
+import extensions from './rules/extensions';
|
||||
+import noRestrictedPaths from './rules/no-restricted-paths';
|
||||
+import noInternalModules from './rules/no-internal-modules';
|
||||
+import groupExports from './rules/group-exports';
|
||||
+import noRelativePackages from './rules/no-relative-packages';
|
||||
+import noRelativeParentImports from './rules/no-relative-parent-imports';
|
||||
+import consistentTypeSpecifierStyle from './rules/consistent-type-specifier-style';
|
||||
+import noSelfImport from './rules/no-self-import';
|
||||
+import noCycle from './rules/no-cycle';
|
||||
+import noNamedDefault from './rules/no-named-default';
|
||||
+import noNamedAsDefault from './rules/no-named-as-default';
|
||||
+import noNamedAsDefaultMember from './rules/no-named-as-default-member';
|
||||
+import noAnonymousDefaultExport from './rules/no-anonymous-default-export';
|
||||
+import noUnusedModules from './rules/no-unused-modules';
|
||||
+import noCommonjs from './rules/no-commonjs';
|
||||
+import noAmd from './rules/no-amd';
|
||||
+import noDuplicates from './rules/no-duplicates';
|
||||
+import first from './rules/first';
|
||||
+import maxDependencies from './rules/max-dependencies';
|
||||
+import noExtraneousDependencies from './rules/no-extraneous-dependencies';
|
||||
+import noAbsolutePath from './rules/no-absolute-path';
|
||||
+import noNodejsModules from './rules/no-nodejs-modules';
|
||||
+import noWebpackLoaderSyntax from './rules/no-webpack-loader-syntax';
|
||||
+import order from './rules/order';
|
||||
+import newlineAfterImport from './rules/newline-after-import';
|
||||
+import preferDefaultExport from './rules/prefer-default-export';
|
||||
+import noDefaultExport from './rules/no-default-export';
|
||||
+import noNamedExport from './rules/no-named-export';
|
||||
+import noDynamicRequire from './rules/no-dynamic-require';
|
||||
+import unambiguous from './rules/unambiguous';
|
||||
+import noUnassignedImport from './rules/no-unassigned-import';
|
||||
+import noUselessPathSegments from './rules/no-useless-path-segments';
|
||||
+import dynamicImportChunkname from './rules/dynamic-import-chunkname';
|
||||
+import noImportModuleExports from './rules/no-import-module-exports';
|
||||
+import noEmptyNamedBlocks from './rules/no-empty-named-blocks';
|
||||
+import exportsLast from './rules/exports-last';
|
||||
+import noDeprecated from './rules/no-deprecated';
|
||||
+import importsFirst from './rules/imports-first';
|
||||
+import recommended from '../config/recommended';
|
||||
+import errors from '../config/errors';
|
||||
+import warnings from '../config/warnings';
|
||||
+import stage0 from '../config/stage-0';
|
||||
+import react from '../config/react';
|
||||
+import reactNative from '../config/react-native';
|
||||
+import electron from '../config/electron';
|
||||
+import typescript from '../config/typescript';
|
||||
|
||||
- 'no-self-import': require('./rules/no-self-import'),
|
||||
- 'no-cycle': require('./rules/no-cycle'),
|
||||
- 'no-named-default': require('./rules/no-named-default'),
|
||||
- 'no-named-as-default': require('./rules/no-named-as-default'),
|
||||
- 'no-named-as-default-member': require('./rules/no-named-as-default-member'),
|
||||
- 'no-anonymous-default-export': require('./rules/no-anonymous-default-export'),
|
||||
- 'no-unused-modules': require('./rules/no-unused-modules'),
|
||||
+export const rules = /*#__PURE__*/ kebabCase({
|
||||
+ noUnresolved,
|
||||
+ named,
|
||||
+ default: defaultRule,
|
||||
+ namespace,
|
||||
+ noNamespace,
|
||||
+ export: exportRule,
|
||||
+ noMutableExports,
|
||||
+ extensions,
|
||||
+ noRestrictedPaths,
|
||||
+ noInternalModules,
|
||||
+ groupExports,
|
||||
+ noRelativePackages,
|
||||
+ noRelativeParentImports,
|
||||
+ consistentTypeSpecifierStyle,
|
||||
|
||||
- 'no-commonjs': require('./rules/no-commonjs'),
|
||||
- 'no-amd': require('./rules/no-amd'),
|
||||
- 'no-duplicates': require('./rules/no-duplicates'),
|
||||
- first: require('./rules/first'),
|
||||
- 'max-dependencies': require('./rules/max-dependencies'),
|
||||
- 'no-extraneous-dependencies': require('./rules/no-extraneous-dependencies'),
|
||||
- 'no-absolute-path': require('./rules/no-absolute-path'),
|
||||
- 'no-nodejs-modules': require('./rules/no-nodejs-modules'),
|
||||
- 'no-webpack-loader-syntax': require('./rules/no-webpack-loader-syntax'),
|
||||
- order: require('./rules/order'),
|
||||
- 'newline-after-import': require('./rules/newline-after-import'),
|
||||
- 'prefer-default-export': require('./rules/prefer-default-export'),
|
||||
- 'no-default-export': require('./rules/no-default-export'),
|
||||
- 'no-named-export': require('./rules/no-named-export'),
|
||||
- 'no-dynamic-require': require('./rules/no-dynamic-require'),
|
||||
- unambiguous: require('./rules/unambiguous'),
|
||||
- 'no-unassigned-import': require('./rules/no-unassigned-import'),
|
||||
- 'no-useless-path-segments': require('./rules/no-useless-path-segments'),
|
||||
- 'dynamic-import-chunkname': require('./rules/dynamic-import-chunkname'),
|
||||
- 'no-import-module-exports': require('./rules/no-import-module-exports'),
|
||||
- 'no-empty-named-blocks': require('./rules/no-empty-named-blocks'),
|
||||
+ noSelfImport,
|
||||
+ noCycle,
|
||||
+ noNamedDefault,
|
||||
+ noNamedAsDefault,
|
||||
+ noNamedAsDefaultMember,
|
||||
+ noAnonymousDefaultExport,
|
||||
+ noUnusedModules,
|
||||
+
|
||||
+ noCommonjs,
|
||||
+ noAmd,
|
||||
+ noDuplicates,
|
||||
+ first,
|
||||
+ maxDependencies,
|
||||
+ noExtraneousDependencies,
|
||||
+ noAbsolutePath,
|
||||
+ noNodejsModules,
|
||||
+ noWebpackLoaderSyntax,
|
||||
+ order,
|
||||
+ newlineAfterImport,
|
||||
+ preferDefaultExport,
|
||||
+ noDefaultExport,
|
||||
+ noNamedExport,
|
||||
+ noDynamicRequire,
|
||||
+ unambiguous,
|
||||
+ noUnassignedImport,
|
||||
+ noUselessPathSegments,
|
||||
+ dynamicImportChunkname,
|
||||
+ noImportModuleExports,
|
||||
+ noEmptyNamedBlocks,
|
||||
|
||||
// export
|
||||
- 'exports-last': require('./rules/exports-last'),
|
||||
+ exportsLast,
|
||||
|
||||
// metadata-based
|
||||
- 'no-deprecated': require('./rules/no-deprecated'),
|
||||
+ noDeprecated,
|
||||
|
||||
// deprecated aliases to rules
|
||||
- 'imports-first': require('./rules/imports-first'),
|
||||
-};
|
||||
+ importsFirst,
|
||||
+});
|
||||
|
||||
-export const configs = {
|
||||
- recommended: require('../config/recommended'),
|
||||
+export const configs = /*#__PURE__*/ kebabCase({
|
||||
+ recommended,
|
||||
|
||||
- errors: require('../config/errors'),
|
||||
- warnings: require('../config/warnings'),
|
||||
+ errors,
|
||||
+ warnings,
|
||||
|
||||
// shhhh... work in progress "secret" rules
|
||||
- 'stage-0': require('../config/stage-0'),
|
||||
+ 'stage-0': stage0,
|
||||
|
||||
// useful stuff for folks using various environments
|
||||
- react: require('../config/react'),
|
||||
- 'react-native': require('../config/react-native'),
|
||||
- electron: require('../config/electron'),
|
||||
- typescript: require('../config/typescript'),
|
||||
-};
|
||||
+ react,
|
||||
+ reactNative,
|
||||
+ electron,
|
||||
+ typescript,
|
||||
+});
|
||||
+
|
||||
+function kebabCase(obj) {
|
||||
+ return Object.fromEntries(
|
||||
+ Object.entries(obj).map(([key, value]) => [key.replace(/([A-Z])/g, '-$1').toLowerCase(), value])
|
||||
+ )
|
||||
+}
|
||||
\ No newline at end of file
|
144
patch/eslint-plugin-jsx-a11y.patch
Normal file
144
patch/eslint-plugin-jsx-a11y.patch
Normal file
@ -0,0 +1,144 @@
|
||||
diff --git a/src/index.js b/src/index.js
|
||||
index 7b931fe..f7c1f91 100644
|
||||
--- a/src/index.js
|
||||
+++ b/src/index.js
|
||||
@@ -1,47 +1,87 @@
|
||||
/* eslint-disable global-require */
|
||||
+// @ts-check
|
||||
+import accessibleEmoji from './rules/accessible-emoji';
|
||||
+import altText from './rules/alt-text';
|
||||
+import anchorAmbiguousText from './rules/anchor-ambiguous-text';
|
||||
+import anchorHasContent from './rules/anchor-has-content';
|
||||
+import anchorIsValid from './rules/anchor-is-valid';
|
||||
+import ariaActivedescendantHasTabindex from './rules/aria-activedescendant-has-tabindex';
|
||||
+import ariaProps from './rules/aria-props';
|
||||
+import ariaProptypes from './rules/aria-proptypes';
|
||||
+import ariaRole from './rules/aria-role';
|
||||
+import ariaUnsupportedElements from './rules/aria-unsupported-elements';
|
||||
+import autocompleteValid from './rules/autocomplete-valid';
|
||||
+import clickEventsHaveKeyEvents from './rules/click-events-have-key-events';
|
||||
+import controlHasAssociatedLabel from './rules/control-has-associated-label';
|
||||
+import headingHasContent from './rules/heading-has-content';
|
||||
+import htmlHasLang from './rules/html-has-lang';
|
||||
+import iframeHasTitle from './rules/iframe-has-title';
|
||||
+import imgRedundantAlt from './rules/img-redundant-alt';
|
||||
+import interactiveSupportsFocus from './rules/interactive-supports-focus';
|
||||
+import labelHasAssociatedControl from './rules/label-has-associated-control';
|
||||
+import labelHasFor from './rules/label-has-for';
|
||||
+import lang from './rules/lang';
|
||||
+import mediaHasCaption from './rules/media-has-caption';
|
||||
+import mouseEventsHaveKeyEvents from './rules/mouse-events-have-key-events';
|
||||
+import noAriaHiddenOnFocusable from './rules/no-aria-hidden-on-focusable';
|
||||
+import noAccessKey from './rules/no-access-key';
|
||||
+import noAutofocus from './rules/no-autofocus';
|
||||
+import noDistractingElements from './rules/no-distracting-elements';
|
||||
+import noInteractiveElementToNoninteractiveRole from './rules/no-interactive-element-to-noninteractive-role';
|
||||
+import noNoninteractiveElementInteractions from './rules/no-noninteractive-element-interactions';
|
||||
+import noNoninteractiveElementToInteractiveRole from './rules/no-noninteractive-element-to-interactive-role';
|
||||
+import noNoninteractiveTabindex from './rules/no-noninteractive-tabindex';
|
||||
+import noOnChange from './rules/no-onchange';
|
||||
+import noRedundantRoles from './rules/no-redundant-roles';
|
||||
+import noStaticElementInteractions from './rules/no-static-element-interactions';
|
||||
+import preferTagOverRole from './rules/prefer-tag-over-role';
|
||||
+import roleHasRequiredAriaProps from './rules/role-has-required-aria-props';
|
||||
+import roleSupportsAriaProps from './rules/role-supports-aria-props';
|
||||
+import scope from './rules/scope';
|
||||
+import tabindexNoPositive from './rules/tabindex-no-positive';
|
||||
|
||||
module.exports = {
|
||||
- rules: {
|
||||
- 'accessible-emoji': require('./rules/accessible-emoji'),
|
||||
- 'alt-text': require('./rules/alt-text'),
|
||||
- 'anchor-ambiguous-text': require('./rules/anchor-ambiguous-text'),
|
||||
- 'anchor-has-content': require('./rules/anchor-has-content'),
|
||||
- 'anchor-is-valid': require('./rules/anchor-is-valid'),
|
||||
- 'aria-activedescendant-has-tabindex': require('./rules/aria-activedescendant-has-tabindex'),
|
||||
- 'aria-props': require('./rules/aria-props'),
|
||||
- 'aria-proptypes': require('./rules/aria-proptypes'),
|
||||
- 'aria-role': require('./rules/aria-role'),
|
||||
- 'aria-unsupported-elements': require('./rules/aria-unsupported-elements'),
|
||||
- 'autocomplete-valid': require('./rules/autocomplete-valid'),
|
||||
- 'click-events-have-key-events': require('./rules/click-events-have-key-events'),
|
||||
- 'control-has-associated-label': require('./rules/control-has-associated-label'),
|
||||
- 'heading-has-content': require('./rules/heading-has-content'),
|
||||
- 'html-has-lang': require('./rules/html-has-lang'),
|
||||
- 'iframe-has-title': require('./rules/iframe-has-title'),
|
||||
- 'img-redundant-alt': require('./rules/img-redundant-alt'),
|
||||
- 'interactive-supports-focus': require('./rules/interactive-supports-focus'),
|
||||
- 'label-has-associated-control': require('./rules/label-has-associated-control'),
|
||||
- 'label-has-for': require('./rules/label-has-for'),
|
||||
- lang: require('./rules/lang'),
|
||||
- 'media-has-caption': require('./rules/media-has-caption'),
|
||||
- 'mouse-events-have-key-events': require('./rules/mouse-events-have-key-events'),
|
||||
- 'no-access-key': require('./rules/no-access-key'),
|
||||
- 'no-aria-hidden-on-focusable': require('./rules/no-aria-hidden-on-focusable'),
|
||||
- 'no-autofocus': require('./rules/no-autofocus'),
|
||||
- 'no-distracting-elements': require('./rules/no-distracting-elements'),
|
||||
- 'no-interactive-element-to-noninteractive-role': require('./rules/no-interactive-element-to-noninteractive-role'),
|
||||
- 'no-noninteractive-element-interactions': require('./rules/no-noninteractive-element-interactions'),
|
||||
- 'no-noninteractive-element-to-interactive-role': require('./rules/no-noninteractive-element-to-interactive-role'),
|
||||
- 'no-noninteractive-tabindex': require('./rules/no-noninteractive-tabindex'),
|
||||
- 'no-onchange': require('./rules/no-onchange'),
|
||||
- 'no-redundant-roles': require('./rules/no-redundant-roles'),
|
||||
- 'no-static-element-interactions': require('./rules/no-static-element-interactions'),
|
||||
- 'prefer-tag-over-role': require('./rules/prefer-tag-over-role'),
|
||||
- 'role-has-required-aria-props': require('./rules/role-has-required-aria-props'),
|
||||
- 'role-supports-aria-props': require('./rules/role-supports-aria-props'),
|
||||
- scope: require('./rules/scope'),
|
||||
- 'tabindex-no-positive': require('./rules/tabindex-no-positive'),
|
||||
- },
|
||||
+ rules: kebabCase({
|
||||
+ accessibleEmoji,
|
||||
+ altText,
|
||||
+ anchorAmbiguousText,
|
||||
+ anchorHasContent,
|
||||
+ anchorIsValid,
|
||||
+ ariaActivedescendantHasTabindex,
|
||||
+ ariaProps,
|
||||
+ ariaProptypes,
|
||||
+ ariaRole,
|
||||
+ ariaUnsupportedElements,
|
||||
+ autocompleteValid,
|
||||
+ clickEventsHaveKeyEvents,
|
||||
+ controlHasAssociatedLabel,
|
||||
+ headingHasContent,
|
||||
+ htmlHasLang,
|
||||
+ iframeHasTitle,
|
||||
+ imgRedundantAlt,
|
||||
+ interactiveSupportsFocus,
|
||||
+ labelHasAssociatedControl,
|
||||
+ labelHasFor,
|
||||
+ lang,
|
||||
+ mediaHasCaption,
|
||||
+ mouseEventsHaveKeyEvents,
|
||||
+ noAccessKey,
|
||||
+ noAriaHiddenOnFocusable,
|
||||
+ noAutofocus,
|
||||
+ noDistractingElements,
|
||||
+ noInteractiveElementToNoninteractiveRole,
|
||||
+ noNoninteractiveElementInteractions,
|
||||
+ noNoninteractiveElementToInteractiveRole,
|
||||
+ noNoninteractiveTabindex,
|
||||
+ noOnChange,
|
||||
+ noRedundantRoles,
|
||||
+ noStaticElementInteractions,
|
||||
+ preferTagOverRole,
|
||||
+ roleHasRequiredAriaProps,
|
||||
+ roleSupportsAriaProps,
|
||||
+ scope,
|
||||
+ tabindexNoPositive,
|
||||
+ }),
|
||||
configs: {
|
||||
recommended: {
|
||||
plugins: [
|
||||
@@ -294,3 +334,9 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
};
|
||||
+
|
||||
+function kebabCase(obj) {
|
||||
+ return Object.fromEntries(
|
||||
+ Object.entries(obj).map(([key, value]) => [key.replace(/([A-Z])/g, '-$1').toLowerCase(), value])
|
||||
+ )
|
||||
+}
|
||||
\ No newline at end of file
|
310
patch/eslint-plugin-react.patch
Normal file
310
patch/eslint-plugin-react.patch
Normal file
@ -0,0 +1,310 @@
|
||||
diff --git a/.eslintrc b/.eslintrc
|
||||
deleted file mode 100644
|
||||
index 4991f200..00000000
|
||||
--- a/.eslintrc
|
||||
+++ /dev/null
|
||||
@@ -1,82 +0,0 @@
|
||||
-{
|
||||
- "root": true,
|
||||
- "extends": ["airbnb-base", "plugin:eslint-plugin/recommended"],
|
||||
- "plugins": ["eslint-plugin"],
|
||||
- "env": {
|
||||
- "es6": true,
|
||||
- "node": true
|
||||
- },
|
||||
- "parserOptions": {
|
||||
- "ecmaVersion": 6,
|
||||
- "ecmaFeatures": {
|
||||
- "jsx": true
|
||||
- },
|
||||
- "sourceType": "script",
|
||||
- },
|
||||
- "ignorePatterns": [
|
||||
- "coverage/",
|
||||
- ".nyc_output/",
|
||||
- ],
|
||||
- "rules": {
|
||||
- "comma-dangle": [2, "always-multiline"],
|
||||
- "object-shorthand": [2, "always", {
|
||||
- "ignoreConstructors": false,
|
||||
- "avoidQuotes": false, // this is the override vs airbnb
|
||||
- }],
|
||||
- "max-len": [2, 120, {
|
||||
- "ignoreStrings": true,
|
||||
- "ignoreTemplateLiterals": true,
|
||||
- "ignoreComments": true,
|
||||
- }],
|
||||
- "consistent-return": 0,
|
||||
-
|
||||
- "prefer-destructuring": [2, { "array": false, "object": false }, { "enforceForRenamedProperties": false }],
|
||||
- "prefer-object-spread": 0, // until node 8 is required
|
||||
- "prefer-rest-params": 0, // until node 6 is required
|
||||
- "prefer-spread": 0, // until node 6 is required
|
||||
- "function-call-argument-newline": 1, // TODO: enable
|
||||
- "function-paren-newline": 0,
|
||||
- "no-plusplus": [2, {"allowForLoopAfterthoughts": true}],
|
||||
- "no-param-reassign": 1,
|
||||
- "no-restricted-syntax": [2, {
|
||||
- "selector": "ObjectPattern",
|
||||
- "message": "Object destructuring is not compatible with Node v4"
|
||||
- }],
|
||||
- "strict": [2, "safe"],
|
||||
- "valid-jsdoc": [2, {
|
||||
- "requireReturn": false,
|
||||
- "requireParamDescription": false,
|
||||
- "requireReturnDescription": false,
|
||||
- }],
|
||||
-
|
||||
- "eslint-plugin/consistent-output": 0,
|
||||
- "eslint-plugin/require-meta-docs-description": [2, { "pattern": "^(Enforce|Require|Disallow)" }],
|
||||
- "eslint-plugin/require-meta-schema": 0,
|
||||
- "eslint-plugin/require-meta-type": 0
|
||||
- },
|
||||
- "overrides": [
|
||||
- {
|
||||
- "files": "tests/**",
|
||||
- "rules": {
|
||||
- "no-template-curly-in-string": 1,
|
||||
- },
|
||||
- },
|
||||
- {
|
||||
- "files": "markdown.config.js",
|
||||
- "rules": {
|
||||
- "no-console": 0,
|
||||
- },
|
||||
- },
|
||||
- {
|
||||
- "files": ".github/workflows/*.js",
|
||||
- "parserOptions": {
|
||||
- "ecmaVersion": 2019,
|
||||
- },
|
||||
- "rules": {
|
||||
- "camelcase": 0,
|
||||
- "no-console": 0,
|
||||
- "no-restricted-syntax": 0,
|
||||
- },
|
||||
- },
|
||||
- ],
|
||||
-}
|
||||
diff --git a/index.js b/index.js
|
||||
index 4140c6c8..792ceb4f 100644
|
||||
--- a/index.js
|
||||
+++ b/index.js
|
||||
@@ -1,15 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
-const configAll = require('./configs/all');
|
||||
-const configRecommended = require('./configs/recommended');
|
||||
-const configRuntime = require('./configs/jsx-runtime');
|
||||
-
|
||||
-const allRules = require('./lib/rules');
|
||||
+import configAll from './configs/all';
|
||||
+import configRecommended from './configs/recommended';
|
||||
+import configRuntime from './configs/jsx-runtime';
|
||||
+import { name } from './package.json';
|
||||
+import allRules from './lib/rules';
|
||||
|
||||
// for legacy config system
|
||||
-const plugins = [
|
||||
- 'react',
|
||||
-];
|
||||
+const plugins = [name];
|
||||
|
||||
module.exports = {
|
||||
deprecatedRules: configAll.plugins.react.deprecatedRules,
|
||||
diff --git a/lib/rules/button-has-type.js b/lib/rules/button-has-type.js
|
||||
index 204a33c4..01d992c2 100644
|
||||
--- a/lib/rules/button-has-type.js
|
||||
+++ b/lib/rules/button-has-type.js
|
||||
@@ -5,8 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const getProp = require('jsx-ast-utils/getProp');
|
||||
-const getLiteralPropValue = require('jsx-ast-utils/getLiteralPropValue');
|
||||
+const { getProp, getLiteralPropValue } = require('jsx-ast-utils');
|
||||
const docsUrl = require('../util/docsUrl');
|
||||
const isCreateElement = require('../util/isCreateElement');
|
||||
const report = require('../util/report');
|
||||
diff --git a/lib/rules/jsx-fragments.js b/lib/rules/jsx-fragments.js
|
||||
index 38b4dd8b..d0575572 100644
|
||||
--- a/lib/rules/jsx-fragments.js
|
||||
+++ b/lib/rules/jsx-fragments.js
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const elementType = require('jsx-ast-utils/elementType');
|
||||
+import { elementType } from 'jsx-ast-utils';
|
||||
const pragmaUtil = require('../util/pragma');
|
||||
const variableUtil = require('../util/variable');
|
||||
const testReactVersion = require('../util/version').testReactVersion;
|
||||
diff --git a/lib/rules/jsx-key.js b/lib/rules/jsx-key.js
|
||||
index 263ed824..e413ef5d 100644
|
||||
--- a/lib/rules/jsx-key.js
|
||||
+++ b/lib/rules/jsx-key.js
|
||||
@@ -5,8 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const hasProp = require('jsx-ast-utils/hasProp');
|
||||
-const propName = require('jsx-ast-utils/propName');
|
||||
+import { hasProp, propName } from 'jsx-ast-utils';
|
||||
const values = require('object.values');
|
||||
const docsUrl = require('../util/docsUrl');
|
||||
const pragmaUtil = require('../util/pragma');
|
||||
diff --git a/lib/rules/jsx-no-bind.js b/lib/rules/jsx-no-bind.js
|
||||
index 0a4c38e6..75a57bd9 100644
|
||||
--- a/lib/rules/jsx-no-bind.js
|
||||
+++ b/lib/rules/jsx-no-bind.js
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const propName = require('jsx-ast-utils/propName');
|
||||
+import { propName } from 'jsx-ast-utils';
|
||||
const docsUrl = require('../util/docsUrl');
|
||||
const jsxUtil = require('../util/jsx');
|
||||
const report = require('../util/report');
|
||||
diff --git a/lib/rules/jsx-pascal-case.js b/lib/rules/jsx-pascal-case.js
|
||||
index a1bb4811..db051356 100644
|
||||
--- a/lib/rules/jsx-pascal-case.js
|
||||
+++ b/lib/rules/jsx-pascal-case.js
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const elementType = require('jsx-ast-utils/elementType');
|
||||
+import { elementType } from 'jsx-ast-utils';
|
||||
const minimatch = require('minimatch');
|
||||
const docsUrl = require('../util/docsUrl');
|
||||
const jsxUtil = require('../util/jsx');
|
||||
diff --git a/lib/rules/jsx-sort-props.js b/lib/rules/jsx-sort-props.js
|
||||
index 5de5bee1..8013a8de 100644
|
||||
--- a/lib/rules/jsx-sort-props.js
|
||||
+++ b/lib/rules/jsx-sort-props.js
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const propName = require('jsx-ast-utils/propName');
|
||||
+import { propName } from 'jsx-ast-utils';
|
||||
const includes = require('array-includes');
|
||||
const toSorted = require('array.prototype.tosorted');
|
||||
|
||||
diff --git a/lib/rules/no-namespace.js b/lib/rules/no-namespace.js
|
||||
index 64bbc8d5..b5e9c803 100644
|
||||
--- a/lib/rules/no-namespace.js
|
||||
+++ b/lib/rules/no-namespace.js
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const elementType = require('jsx-ast-utils/elementType');
|
||||
+import { elementType } from 'jsx-ast-utils';
|
||||
const docsUrl = require('../util/docsUrl');
|
||||
const isCreateElement = require('../util/isCreateElement');
|
||||
const report = require('../util/report');
|
||||
diff --git a/lib/util/annotations.js b/lib/util/annotations.js
|
||||
index 60aaef8c..ad8dc0bf 100644
|
||||
--- a/lib/util/annotations.js
|
||||
+++ b/lib/util/annotations.js
|
||||
@@ -27,6 +27,6 @@ function isAnnotatedFunctionPropsDeclaration(node, context) {
|
||||
return (isAnnotated && (isDestructuredProps || isProps));
|
||||
}
|
||||
|
||||
-module.exports = {
|
||||
+export {
|
||||
isAnnotatedFunctionPropsDeclaration,
|
||||
};
|
||||
diff --git a/lib/util/ast.js b/lib/util/ast.js
|
||||
index fd6019a3..3cbc293e 100644
|
||||
--- a/lib/util/ast.js
|
||||
+++ b/lib/util/ast.js
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const estraverse = require('estraverse');
|
||||
+import estraverse from 'estraverse';
|
||||
// const pragmaUtil = require('./pragma');
|
||||
|
||||
/**
|
||||
@@ -428,7 +428,7 @@ function isTSTypeParameterInstantiation(node) {
|
||||
return nodeType === 'TSTypeParameterInstantiation';
|
||||
}
|
||||
|
||||
-module.exports = {
|
||||
+export {
|
||||
traverse,
|
||||
findReturnStatement,
|
||||
getFirstNodeInLine,
|
||||
diff --git a/lib/util/jsx.js b/lib/util/jsx.js
|
||||
index 55073bfe..efc07af1 100644
|
||||
--- a/lib/util/jsx.js
|
||||
+++ b/lib/util/jsx.js
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
-const elementType = require('jsx-ast-utils/elementType');
|
||||
+import { elementType } from 'jsx-ast-utils';
|
||||
|
||||
const astUtil = require('./ast');
|
||||
const isCreateElement = require('./isCreateElement');
|
||||
diff --git a/package.json b/package.json
|
||||
index cb736434..a97113c0 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -25,21 +25,13 @@
|
||||
"homepage": "https://github.com/jsx-eslint/eslint-plugin-react",
|
||||
"bugs": "https://github.com/jsx-eslint/eslint-plugin-react/issues",
|
||||
"dependencies": {
|
||||
- "array-includes": "^3.1.6",
|
||||
- "array.prototype.flatmap": "^1.3.1",
|
||||
- "array.prototype.tosorted": "^1.1.1",
|
||||
"doctrine": "^2.1.0",
|
||||
"estraverse": "^5.3.0",
|
||||
"jsx-ast-utils": "^2.4.1 || ^3.0.0",
|
||||
"minimatch": "^3.1.2",
|
||||
- "object.entries": "^1.1.6",
|
||||
- "object.fromentries": "^2.0.6",
|
||||
- "object.hasown": "^1.1.2",
|
||||
- "object.values": "^1.1.6",
|
||||
"prop-types": "^15.8.1",
|
||||
"resolve": "^2.0.0-next.4",
|
||||
- "semver": "^6.3.0",
|
||||
- "string.prototype.matchall": "^4.0.8"
|
||||
+ "semver": "^6.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.21.0",
|
||||
diff --git a/tsconfig.json b/tsconfig.json
|
||||
deleted file mode 100644
|
||||
index 39187b7f..00000000
|
||||
--- a/tsconfig.json
|
||||
+++ /dev/null
|
||||
@@ -1,23 +0,0 @@
|
||||
-{
|
||||
- "compilerOptions": {
|
||||
- "target": "ES2015", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
|
||||
- "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
||||
- // "lib": ["es2015"], /* Specify library files to be included in the compilation. */
|
||||
- "allowJs": true, /* Allow javascript files to be compiled. */
|
||||
- "checkJs": true, /* Report errors in .js files. */
|
||||
- "noEmit": true, /* Do not emit outputs. */
|
||||
- "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||
-
|
||||
- /* Strict Type-Checking Options */
|
||||
- // "strict": true, /* Enable all strict type-checking options. */
|
||||
- "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */
|
||||
- // "strictNullChecks": true, /* Enable strict null checks. */
|
||||
- // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
|
||||
- "strictFunctionTypes": true, /* Enable strict checking of function types. */
|
||||
- "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
|
||||
- "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
||||
- "alwaysStrict": false, /* Parse in strict mode and emit "use strict" for each source file. */
|
||||
- "resolveJsonModule": true
|
||||
- },
|
||||
- "include": ["lib"],
|
||||
-}
|
459
patch/jsx-ast-utils.patch
Normal file
459
patch/jsx-ast-utils.patch
Normal file
@ -0,0 +1,459 @@
|
||||
diff --git a/elementType.js b/elementType.js
|
||||
index 96873ac..c7b909a 100644
|
||||
--- a/elementType.js
|
||||
+++ b/elementType.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').elementType; // eslint-disable-line import/no-unresolved
|
||||
+export { elementType as default } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/eventHandlers.js b/eventHandlers.js
|
||||
index b5d7f62..208eaca 100644
|
||||
--- a/eventHandlers.js
|
||||
+++ b/eventHandlers.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').eventHandlers; // eslint-disable-line import/no-unresolved
|
||||
+export { eventHandlers as default } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/eventHandlersByType.js b/eventHandlersByType.js
|
||||
index b7a0c42..e2757e9 100644
|
||||
--- a/eventHandlersByType.js
|
||||
+++ b/eventHandlersByType.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').eventHandlersByType; // eslint-disable-line import/no-unresolved
|
||||
+export { eventHandlersByType as default } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/getLiteralPropValue.js b/getLiteralPropValue.js
|
||||
index efc5c8d..970fc39 100644
|
||||
--- a/getLiteralPropValue.js
|
||||
+++ b/getLiteralPropValue.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').getLiteralPropValue; // eslint-disable-line import/no-unresolved
|
||||
+export { getLiteralPropValue as default } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/getProp.js b/getProp.js
|
||||
index e523c2c..4e270e9 100644
|
||||
--- a/getProp.js
|
||||
+++ b/getProp.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').getProp; // eslint-disable-line import/no-unresolved
|
||||
+export { getProp as default } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/getPropValue.js b/getPropValue.js
|
||||
index 883a37c..86bf585 100644
|
||||
--- a/getPropValue.js
|
||||
+++ b/getPropValue.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').getPropValue; // eslint-disable-line import/no-unresolved
|
||||
+export { getPropValue as default } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/hasAnyProp.js b/hasAnyProp.js
|
||||
index 2a88420..95b3adc 100644
|
||||
--- a/hasAnyProp.js
|
||||
+++ b/hasAnyProp.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').hasAnyProp; // eslint-disable-line import/no-unresolved
|
||||
+export { hasAnyProp as default } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/hasEveryProp.js b/hasEveryProp.js
|
||||
index 338f569..e865100 100644
|
||||
--- a/hasEveryProp.js
|
||||
+++ b/hasEveryProp.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').hasEveryProp; // eslint-disable-line import/no-unresolved
|
||||
+export { hasEveryProp } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/hasProp.js b/hasProp.js
|
||||
index 0f1cd04..bfed363 100644
|
||||
--- a/hasProp.js
|
||||
+++ b/hasProp.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').hasProp; // eslint-disable-line import/no-unresolved
|
||||
+export { hasProp } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/package.json b/package.json
|
||||
index 738d1b3..befb66e 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "jsx-ast-utils",
|
||||
"version": "3.3.4",
|
||||
"description": "AST utility module for statically analyzing JSX",
|
||||
- "main": "lib/index.js",
|
||||
+ "main": "src/index.js",
|
||||
"scripts": {
|
||||
"prepack": "npmignore --auto --commentLines=autogenerated && npm run build",
|
||||
"prebuild": "rimraf lib",
|
||||
@@ -62,8 +62,6 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
- "array-includes": "^3.1.6",
|
||||
- "array.prototype.flat": "^1.3.1",
|
||||
"object.assign": "^4.1.4",
|
||||
"object.values": "^1.1.6"
|
||||
},
|
||||
diff --git a/propName.js b/propName.js
|
||||
index 361a52b..4424cfe 100644
|
||||
--- a/propName.js
|
||||
+++ b/propName.js
|
||||
@@ -1 +1 @@
|
||||
-module.exports = require('./lib').propName; // eslint-disable-line import/no-unresolved
|
||||
+export { propName } from './src';
|
||||
\ No newline at end of file
|
||||
diff --git a/src/index.js b/src/index.js
|
||||
index 6814764..565a66e 100644
|
||||
--- a/src/index.js
|
||||
+++ b/src/index.js
|
||||
@@ -5,7 +5,7 @@ import getProp from './getProp';
|
||||
import getPropValue, { getLiteralPropValue } from './getPropValue';
|
||||
import propName from './propName';
|
||||
|
||||
-module.exports = {
|
||||
+export {
|
||||
hasProp,
|
||||
hasAnyProp,
|
||||
hasEveryProp,
|
||||
diff --git a/src/values/JSXElement.js b/src/values/JSXElement.js
|
||||
index e5a049f..029c23d 100644
|
||||
--- a/src/values/JSXElement.js
|
||||
+++ b/src/values/JSXElement.js
|
||||
@@ -1,12 +1,11 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a JSXElement type value node.
|
||||
*
|
||||
* Returns self-closing element with correct name.
|
||||
*/
|
||||
export default function extractValueFromJSXElement(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
-
|
||||
const Tag = value.openingElement.name.name;
|
||||
if (value.openingElement.selfClosing) {
|
||||
return `<${Tag} />`;
|
||||
diff --git a/src/values/JSXFragment.js b/src/values/JSXFragment.js
|
||||
index 379137e..90cbc54 100644
|
||||
--- a/src/values/JSXFragment.js
|
||||
+++ b/src/values/JSXFragment.js
|
||||
@@ -1,12 +1,11 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a JSXFragment type value node.
|
||||
*
|
||||
* Returns self-closing element with correct name.
|
||||
*/
|
||||
export default function extractValueFromJSXFragment(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
-
|
||||
if (value.children.length === 0) {
|
||||
return '<></>';
|
||||
}
|
||||
diff --git a/src/values/expressions/ArrayExpression.js b/src/values/expressions/ArrayExpression.js
|
||||
index f333d58..4462c9d 100644
|
||||
--- a/src/values/expressions/ArrayExpression.js
|
||||
+++ b/src/values/expressions/ArrayExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for an ArrayExpression type value node.
|
||||
* An array expression is an expression with [] syntax.
|
||||
@@ -5,8 +7,6 @@
|
||||
* @returns - An array of the extracted elements.
|
||||
*/
|
||||
export default function extractValueFromArrayExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return value.elements.map((element) => {
|
||||
if (element === null) return undefined;
|
||||
return getValue(element);
|
||||
diff --git a/src/values/expressions/AssignmentExpression.js b/src/values/expressions/AssignmentExpression.js
|
||||
index 7a14de5..6fce401 100644
|
||||
--- a/src/values/expressions/AssignmentExpression.js
|
||||
+++ b/src/values/expressions/AssignmentExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a AssignmentExpression type value node.
|
||||
* An assignment expression looks like `x = y` or `x += y` in expression position.
|
||||
@@ -7,7 +9,5 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromAssignmentExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return `${getValue(value.left)} ${value.operator} ${getValue(value.right)}`;
|
||||
}
|
||||
diff --git a/src/values/expressions/BinaryExpression.js b/src/values/expressions/BinaryExpression.js
|
||||
index 5764f3f..7cf9c07 100644
|
||||
--- a/src/values/expressions/BinaryExpression.js
|
||||
+++ b/src/values/expressions/BinaryExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a BinaryExpression type value node.
|
||||
* A binary expression has a left and right side separated by an operator
|
||||
@@ -7,8 +9,6 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromBinaryExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
const { operator, left, right } = value;
|
||||
const leftVal = getValue(left);
|
||||
const rightVal = getValue(right);
|
||||
diff --git a/src/values/expressions/BindExpression.js b/src/values/expressions/BindExpression.js
|
||||
index bc0bf0f..6c10fa4 100644
|
||||
--- a/src/values/expressions/BindExpression.js
|
||||
+++ b/src/values/expressions/BindExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a BindExpression type value node.
|
||||
* A bind expression looks like `::this.foo`
|
||||
@@ -8,8 +10,6 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromBindExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
const callee = getValue(value.callee);
|
||||
|
||||
// If value.object === null, the callee must be a MemberExpression.
|
||||
diff --git a/src/values/expressions/CallExpression.js b/src/values/expressions/CallExpression.js
|
||||
index f225d16..ce7e43d 100644
|
||||
--- a/src/values/expressions/CallExpression.js
|
||||
+++ b/src/values/expressions/CallExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a CallExpression type value node.
|
||||
* A call expression looks like `bar()`
|
||||
@@ -8,8 +10,6 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromCallExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
const args = Array.isArray(value.arguments) ? value.arguments.map((x) => getValue(x)).join(', ') : '';
|
||||
return `${getValue(value.callee)}${value.optional ? '?.' : ''}(${args})`;
|
||||
}
|
||||
diff --git a/src/values/expressions/ChainExpression.js b/src/values/expressions/ChainExpression.js
|
||||
index 1fb00a7..e8b3b75 100644
|
||||
--- a/src/values/expressions/ChainExpression.js
|
||||
+++ b/src/values/expressions/ChainExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a ChainExpression type value node.
|
||||
* A member expression is accessing a property on an object `obj.property`.
|
||||
@@ -7,7 +9,5 @@
|
||||
* and maintaing `obj?.property` convention.
|
||||
*/
|
||||
export default function extractValueFromChainExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return getValue(value.expression || value);
|
||||
}
|
||||
diff --git a/src/values/expressions/ConditionalExpression.js b/src/values/expressions/ConditionalExpression.js
|
||||
index 4fd185d..a3308f6 100644
|
||||
--- a/src/values/expressions/ConditionalExpression.js
|
||||
+++ b/src/values/expressions/ConditionalExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a ConditionalExpression type value node.
|
||||
*
|
||||
@@ -5,8 +7,6 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromConditionalExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
const {
|
||||
test,
|
||||
alternate,
|
||||
diff --git a/src/values/expressions/LogicalExpression.js b/src/values/expressions/LogicalExpression.js
|
||||
index 5b65a4e..b5cc573 100644
|
||||
--- a/src/values/expressions/LogicalExpression.js
|
||||
+++ b/src/values/expressions/LogicalExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a LogicalExpression type value node.
|
||||
* A logical expression is `a && b` or `a || b`, so we evaluate both sides
|
||||
@@ -7,8 +9,6 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromLogicalExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
const { operator, left, right } = value;
|
||||
const leftVal = getValue(left);
|
||||
const rightVal = getValue(right);
|
||||
diff --git a/src/values/expressions/MemberExpression.js b/src/values/expressions/MemberExpression.js
|
||||
index 5d48fd5..d0cb7af 100644
|
||||
--- a/src/values/expressions/MemberExpression.js
|
||||
+++ b/src/values/expressions/MemberExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a MemberExpression type value node.
|
||||
* A member expression is accessing a property on an object `obj.property`.
|
||||
@@ -7,7 +9,5 @@
|
||||
* and maintaing `obj.property` convention.
|
||||
*/
|
||||
export default function extractValueFromMemberExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return `${getValue(value.object)}${value.optional ? '?.' : '.'}${getValue(value.property)}`;
|
||||
}
|
||||
diff --git a/src/values/expressions/ObjectExpression.js b/src/values/expressions/ObjectExpression.js
|
||||
index 383b569..c1c08a8 100644
|
||||
--- a/src/values/expressions/ObjectExpression.js
|
||||
+++ b/src/values/expressions/ObjectExpression.js
|
||||
@@ -1,4 +1,5 @@
|
||||
import assign from 'object.assign';
|
||||
+import getValue from './index';
|
||||
|
||||
/**
|
||||
* Extractor function for an ObjectExpression type value node.
|
||||
@@ -7,8 +8,6 @@ import assign from 'object.assign';
|
||||
* @returns - a representation of the object
|
||||
*/
|
||||
export default function extractValueFromObjectExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return value.properties.reduce((obj, property) => {
|
||||
// Support types: SpreadProperty and ExperimentalSpreadProperty
|
||||
if (/^(?:Experimental)?Spread(?:Property|Element)$/.test(property.type)) {
|
||||
diff --git a/src/values/expressions/OptionalCallExpression.js b/src/values/expressions/OptionalCallExpression.js
|
||||
index bcee760..3a36971 100644
|
||||
--- a/src/values/expressions/OptionalCallExpression.js
|
||||
+++ b/src/values/expressions/OptionalCallExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a OptionalCallExpression type value node.
|
||||
* A member expression is accessing a property on an object `obj.property` and invoking it.
|
||||
@@ -7,7 +9,5 @@
|
||||
* and maintaing `obj.property?.()` convention.
|
||||
*/
|
||||
export default function extractValueFromOptionalCallExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return `${getValue(value.callee)}?.(${value.arguments.map((x) => getValue(x)).join(', ')})`;
|
||||
}
|
||||
diff --git a/src/values/expressions/OptionalMemberExpression.js b/src/values/expressions/OptionalMemberExpression.js
|
||||
index 8062eae..d236b04 100644
|
||||
--- a/src/values/expressions/OptionalMemberExpression.js
|
||||
+++ b/src/values/expressions/OptionalMemberExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a OptionalMemberExpression type value node.
|
||||
* A member expression is accessing a property on an object `obj.property`.
|
||||
@@ -7,7 +9,5 @@
|
||||
* and maintaing `obj?.property` convention.
|
||||
*/
|
||||
export default function extractValueFromOptionalMemberExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return `${getValue(value.object)}?.${getValue(value.property)}`;
|
||||
}
|
||||
diff --git a/src/values/expressions/SequenceExpression.js b/src/values/expressions/SequenceExpression.js
|
||||
index 129d992..d644730 100644
|
||||
--- a/src/values/expressions/SequenceExpression.js
|
||||
+++ b/src/values/expressions/SequenceExpression.js
|
||||
@@ -1,3 +1,5 @@
|
||||
+import getValue from './index';
|
||||
+
|
||||
/**
|
||||
* Extractor function for a SequenceExpression type value node.
|
||||
* A Sequence expression is an object with an attribute named
|
||||
@@ -7,7 +9,5 @@
|
||||
* @returns - An array of the extracted elements.
|
||||
*/
|
||||
export default function extractValueFromSequenceExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return value.expressions.map((element) => getValue(element));
|
||||
}
|
||||
diff --git a/src/values/expressions/TSNonNullExpression.js b/src/values/expressions/TSNonNullExpression.js
|
||||
index 79dd1b0..7d74c8f 100644
|
||||
--- a/src/values/expressions/TSNonNullExpression.js
|
||||
+++ b/src/values/expressions/TSNonNullExpression.js
|
||||
@@ -1,5 +1,5 @@
|
||||
-const extractValueFromThisExpression = require('./ThisExpression').default;
|
||||
-const extractValueFromCallExpression = require('./CallExpression').default;
|
||||
+import extractValueFromThisExpression from './ThisExpression';
|
||||
+import extractValueFromCallExpression from './CallExpression';
|
||||
|
||||
function navigate(obj, prop, value) {
|
||||
if (value.computed) {
|
||||
diff --git a/src/values/expressions/TypeCastExpression.js b/src/values/expressions/TypeCastExpression.js
|
||||
index 1afd232..aeda1e5 100644
|
||||
--- a/src/values/expressions/TypeCastExpression.js
|
||||
+++ b/src/values/expressions/TypeCastExpression.js
|
||||
@@ -1,3 +1,4 @@
|
||||
+import getValue from './index';
|
||||
/**
|
||||
* Extractor function for a TypeCastExpression type value node.
|
||||
* A type cast expression looks like `(this.handleClick: (event: MouseEvent) => void))`
|
||||
@@ -7,7 +8,5 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromTypeCastExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
return getValue(value.expression);
|
||||
}
|
||||
diff --git a/src/values/expressions/UnaryExpression.js b/src/values/expressions/UnaryExpression.js
|
||||
index b699722..cc1fa35 100644
|
||||
--- a/src/values/expressions/UnaryExpression.js
|
||||
+++ b/src/values/expressions/UnaryExpression.js
|
||||
@@ -1,3 +1,4 @@
|
||||
+import getValue from './index';
|
||||
/**
|
||||
* Extractor function for a UnaryExpression type value node.
|
||||
* A unary expression is an expression with a unary operator.
|
||||
@@ -7,8 +8,6 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromUnaryExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
const { operator, argument } = value;
|
||||
|
||||
switch (operator) {
|
||||
diff --git a/src/values/expressions/UpdateExpression.js b/src/values/expressions/UpdateExpression.js
|
||||
index 0e3898c..ca005a2 100644
|
||||
--- a/src/values/expressions/UpdateExpression.js
|
||||
+++ b/src/values/expressions/UpdateExpression.js
|
||||
@@ -1,3 +1,4 @@
|
||||
+import getValue from './index';
|
||||
/**
|
||||
* Extractor function for an UpdateExpression type value node.
|
||||
* An update expression is an expression with an update operator.
|
||||
@@ -7,8 +8,6 @@
|
||||
* @returns - The extracted value converted to correct type.
|
||||
*/
|
||||
export default function extractValueFromUpdateExpression(value) {
|
||||
- // eslint-disable-next-line global-require
|
||||
- const getValue = require('.').default;
|
||||
const { operator, argument, prefix } = value;
|
||||
|
||||
let val = getValue(argument);
|
Reference in New Issue
Block a user