Inline eslint-import-resolver-typescript

This commit is contained in:
Alex 2023-08-28 10:31:19 -04:00
parent 5e15b8c9dc
commit df60550598
20 changed files with 80 additions and 48 deletions

7
.gitignore vendored
View File

@ -1,8 +1,5 @@
eslint-plugin-import /packages/*
eslint-plugin-jsx-a11y !/packages/eslint-plugin-react-hooks
eslint-plugin-react
eslint-plugin-n
jsx-ast-utils
/react /react
dist/**/*.js dist/**/*.js

View File

@ -1,13 +1,15 @@
#!/bin/bash #!/bin/bash
./src/build-local-rules.ts ./src/build-local-rules.ts
./esbuild.ts
npx tsc ./src/local/index.ts --outdir ./dist/local --target ESNext --module CommonJS --esModuleInterop >/dev/null npx tsc ./src/local/index.ts --outdir ./dist/local --target ESNext --module CommonJS --esModuleInterop >/dev/null
npx tsc ./src/index.ts --outdir ./dist --declaration --target ESNext --module CommonJS --esModuleInterop >/dev/null npx tsc ./src/index.ts --outdir ./dist --declaration --target ESNext --module CommonJS --esModuleInterop >/dev/null
rm -r dist/redirect.*
./esbuild.ts
sed -i '' '/import.*redirect.*;/d' dist/index.d.ts
type() { type() {
npx dts-bundle-generator "./eslint-plugin-$1/$2" \ npx dts-bundle-generator "./packages/eslint-plugin-$1/$2" \
-o "./dist/$1/index.d.ts" \ -o "./dist/$1/index.d.ts" \
--project "./eslint-plugin-$1/tsconfig.json" \ --project "./packages/eslint-plugin-$1/tsconfig.json" \
--no-check --no-check
} }

2
dist/index.d.ts vendored
View File

@ -4,4 +4,4 @@ declare module 'eslint-define-config/src/rules/react/no-unknown-property.d.ts' {
extends: ('next' | 'emotion')[]; extends: ('next' | 'emotion')[];
} }
} }
export declare function extendConfig({ plugins, settings, rules, extends: _extends, overrides, ...rest }: ESLintConfig): ESLintConfig; export declare function extendConfig({ plugins, settings, rules, extends: _extends, overrides, ...rest }?: ESLintConfig): ESLintConfig;

5
dist/package.json vendored
View File

@ -1,6 +1,6 @@
{ {
"name": "@aet/eslint-rules", "name": "@aet/eslint-rules",
"version": "0.0.1-beta.33", "version": "0.0.1-beta.35",
"license": "UNLICENSED", "license": "UNLICENSED",
"peerDependencies": { "peerDependencies": {
"esbin": "^0.0.2", "esbin": "^0.0.2",
@ -17,12 +17,13 @@
"debug": "^4.3.4", "debug": "^4.3.4",
"doctrine": "^3.0.0", "doctrine": "^3.0.0",
"emoji-regex": "^10.2.1", "emoji-regex": "^10.2.1",
"enhanced-resolve": "^5.15.0",
"eslint-config-prettier": "9.0.0", "eslint-config-prettier": "9.0.0",
"eslint-define-config": "^1.23.0", "eslint-define-config": "^1.23.0",
"eslint-import-resolver-node": "^0.3.9", "eslint-import-resolver-node": "^0.3.9",
"eslint-import-resolver-typescript": "^3.6.0",
"eslint-module-utils": "^2.8.0", "eslint-module-utils": "^2.8.0",
"estraverse": "^5.3.0", "estraverse": "^5.3.0",
"get-tsconfig": "^4.7.0",
"is-core-module": "^2.13.0", "is-core-module": "^2.13.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"language-tags": "^1.0.9", "language-tags": "^1.0.9",

View File

@ -152,8 +152,8 @@ export const babelPlugin: Plugin = {
.replaceAll("require('object.fromentries/polyfill')()", 'Object.fromEntries'); .replaceAll("require('object.fromentries/polyfill')()", 'Object.fromEntries');
if ( if (
path.includes('eslint-plugin-import/src/rules/') || path.includes('packages/eslint-plugin-import/src/rules/') ||
path.includes('eslint-plugin-import/config/') path.includes('packages/eslint-plugin-import/config/')
) { ) {
source = source.replace('\nmodule.exports = {', '\nexport default {'); source = source.replace('\nmodule.exports = {', '\nexport default {');
} }
@ -202,10 +202,12 @@ const plugins: Plugin[] = [
name: 'alias', name: 'alias',
setup(build) { setup(build) {
build.onResolve({ filter: /^jsx-ast-utils$/ }, () => ({ build.onResolve({ filter: /^jsx-ast-utils$/ }, () => ({
path: resolve('./jsx-ast-utils/src/index.js'), path: resolve('./packages/jsx-ast-utils/src/index.js'),
})); }));
build.onResolve({ filter: /^jsx-ast-utils\/.+$/ }, ({ path }) => ({ build.onResolve({ filter: /^jsx-ast-utils\/.+$/ }, ({ path }) => ({
path: resolve('./jsx-ast-utils/', path.slice('jsx-ast-utils/'.length)) + '.js', path:
resolve('./packages/jsx-ast-utils/', path.slice('jsx-ast-utils/'.length)) +
'.js',
})); }));
}, },
}, },
@ -234,7 +236,13 @@ if (process.env.DEBUG) {
}); });
} }
async function main(entry: string, outfile: string) { async function main(
entry: string,
outfile = entry
.replace('./packages/', './dist/')
.replace('src/', '')
.replace('.ts', '.js'),
) {
await esbuild.build({ await esbuild.build({
entryPoints: [entry], entryPoints: [entry],
outfile, outfile,
@ -251,9 +259,11 @@ async function main(entry: string, outfile: string) {
}); });
} }
main('./eslint-plugin-react/index.js', './dist/react/index.js'); main('./packages/eslint-plugin-react/index.js');
main('./eslint-plugin-import/src/index.js', './dist/import/index.js'); main('./packages/eslint-plugin-import/src/index.js');
main('./eslint-plugin-jsx-a11y/src/index.js', './dist/jsx-a11y/index.js'); main('./packages/eslint-plugin-jsx-a11y/src/index.js');
main('./eslint-plugin-react-hooks/index.ts', './dist/react-hooks/index.js'); main('./packages/eslint-plugin-react-hooks/index.ts');
main('./eslint-plugin-n/lib/index.js', './dist/n/index.js'); main('./packages/eslint-plugin-n/lib/index.js');
main('./packages/eslint-import-resolver-typescript/src/index.ts');
main('./src/rules/index.ts', './dist/rules/index.js'); main('./src/rules/index.ts', './dist/rules/index.js');
main('./src/index.ts', './dist/index.js');

View File

@ -6,7 +6,7 @@
}, },
"private": true, "private": true,
"devDependencies": { "devDependencies": {
"@babel/core": "^7.22.10", "@babel/core": "^7.22.11",
"@babel/plugin-transform-flow-strip-types": "^7.22.5", "@babel/plugin-transform-flow-strip-types": "^7.22.5",
"@babel/preset-env": "^7.22.10", "@babel/preset-env": "^7.22.10",
"@types/babel-plugin-macros": "^3.1.0", "@types/babel-plugin-macros": "^3.1.0",
@ -15,7 +15,7 @@
"@types/estree": "^1.0.1", "@types/estree": "^1.0.1",
"@types/estree-jsx": "^1.0.0", "@types/estree-jsx": "^1.0.0",
"@types/lodash": "^4.14.197", "@types/lodash": "^4.14.197",
"@types/node": "^20.5.4", "@types/node": "^20.5.7",
"@typescript-eslint/types": "^6.4.1", "@typescript-eslint/types": "^6.4.1",
"babel-plugin-macros": "^3.1.0", "babel-plugin-macros": "^3.1.0",
"dts-bundle-generator": "^8.0.1", "dts-bundle-generator": "^8.0.1",
@ -23,7 +23,7 @@
"esbuild": "0.19.2", "esbuild": "0.19.2",
"esbuild-plugin-alias": "^0.2.1", "esbuild-plugin-alias": "^0.2.1",
"esbuild-register": "3.4.2", "esbuild-register": "3.4.2",
"eslint": "8.47.0", "eslint": "8.48.0",
"eslint-config-prettier": "9.0.0", "eslint-config-prettier": "9.0.0",
"eslint-define-config": "^1.23.0", "eslint-define-config": "^1.23.0",
"eslint-plugin-import": "^2.28.1", "eslint-plugin-import": "^2.28.1",
@ -34,7 +34,7 @@
"minimatch": "^9.0.3", "minimatch": "^9.0.3",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"prettier": "^3.0.2", "prettier": "^3.0.2",
"typescript": "5.1.6" "typescript": "5.2.2"
}, },
"prettier": { "prettier": {
"arrowParens": "avoid", "arrowParens": "avoid",

View File

@ -0,0 +1,14 @@
diff --git a/package.json b/package.json
index a905ca5..4979e41 100644
--- a/package.json
+++ b/package.json
@@ -62,8 +62,7 @@
"typecov": "type-coverage"
},
"peerDependencies": {
- "eslint": "*",
- "eslint-plugin-import": "*"
+ "eslint": "*"
},
"dependencies": {
"debug": "^4.3.4",

View File

@ -1,11 +1,12 @@
#!/bin/bash #!/bin/bash
pull() { pull() {
echo "🚛 Pulling $1" echo "🚛 Pulling $1"
(cd "$1" && git pull) (cd "packages/$1" && git pull)
} }
pull eslint-import-resolver-typescript
pull eslint-plugin-import pull eslint-plugin-import
pull eslint-plugin-jsx-a11y pull eslint-plugin-jsx-a11y
pull jsx-ast-utils
pull eslint-plugin-react
pull eslint-plugin-n pull eslint-plugin-n
pull eslint-plugin-react
pull jsx-ast-utils

View File

@ -1,10 +1,11 @@
#!/bin/bash #!/bin/bash
sync() ( sync() (
cd "$1" && git diff > "../patch/$1.patch" cd "packages/$1" && git diff > "../../patch/$1.patch"
) )
sync eslint-import-resolver-typescript
sync eslint-plugin-import sync eslint-plugin-import
sync eslint-plugin-jsx-a11y sync eslint-plugin-jsx-a11y
sync eslint-plugin-react
sync eslint-plugin-n sync eslint-plugin-n
sync eslint-plugin-react
sync jsx-ast-utils sync jsx-ast-utils

View File

@ -1,5 +1,5 @@
import Module from 'module';
import type { ESLintConfig } from 'eslint-define-config'; import type { ESLintConfig } from 'eslint-define-config';
import './redirect';
// @ts-expect-error // @ts-expect-error
const { name } = (0, require)('./package.json'); const { name } = (0, require)('./package.json');
@ -24,7 +24,7 @@ export function extendConfig({
extends: _extends, extends: _extends,
overrides, overrides,
...rest ...rest
}: ESLintConfig): ESLintConfig { }: ESLintConfig = {}): ESLintConfig {
const hasReact = plugins?.includes('react'); const hasReact = plugins?.includes('react');
const hasUnicorn = plugins?.includes('unicorn'); const hasUnicorn = plugins?.includes('unicorn');
const hasReactRefresh = plugins?.includes('react-refresh'); const hasReactRefresh = plugins?.includes('react-refresh');
@ -200,19 +200,3 @@ export function extendConfig({
return result; return result;
} }
const _resolveFilename = (Module as any)._resolveFilename;
(Module as any)._resolveFilename = function (module: string, ...args: any[]) {
switch (module) {
case 'eslint-plugin-import':
case 'eslint-plugin-jsx-a11y':
case 'eslint-plugin-local':
case 'eslint-plugin-react':
case 'eslint-plugin-react-hooks':
case 'eslint-plugin-rules':
case 'eslint-plugin-n':
module = `${name}/${module.slice(14)}`;
}
return _resolveFilename(module, ...args);
};

22
src/redirect.ts Normal file
View File

@ -0,0 +1,22 @@
import Module from 'module';
// @ts-expect-error
const { name } = (0, require)('./package.json');
const _resolveFilename = (Module as any)._resolveFilename;
const alias = new Set([
'eslint-import-resolver-typescript',
'eslint-plugin-import',
'eslint-plugin-jsx-a11y',
'eslint-plugin-local',
'eslint-plugin-n',
'eslint-plugin-react-hooks',
'eslint-plugin-react',
'eslint-plugin-rules',
]);
(Module as any)._resolveFilename = function (module: string, ...args: any[]) {
if (alias.has(module)) {
module = `${name}/${module}`;
}
return _resolveFilename(module, ...args);
};