Update and refactor

This commit is contained in:
Alex
2024-01-13 18:20:36 -05:00
parent 690b46fd2b
commit d8f224c5cf
18 changed files with 1494 additions and 274 deletions

View File

@ -1,13 +1,14 @@
#!/usr/bin/env tsx
import { readdirSync, writeFileSync } from 'node:fs';
import { promises as fs } from 'node:fs';
import { camelCase } from 'lodash';
const files = readdirSync('./src/rules')
.filter(file => file.endsWith('.ts'))
.filter(file => file !== 'index.ts')
.map(file => file.slice(0, -3));
export async function buildLocalRules() {
const files = (await fs.readdir('./src/rules'))
.filter(file => file.endsWith('.ts'))
.filter(file => file !== 'index.ts')
.map(file => file.slice(0, -3));
const entryFile = /* js */ `
const entryFile = /* js */ `
import type { Rule } from 'eslint';
import type { ESLintUtils } from '@typescript-eslint/utils';
@ -21,4 +22,9 @@ export const rules: Record<
};
`.trim();
writeFileSync('./src/rules/index.ts', entryFile + '\n');
await fs.writeFile('./src/rules/index.ts', entryFile + '\n');
}
if (require.main === module) {
buildLocalRules();
}

View File

@ -1,46 +0,0 @@
#!/usr/bin/env bun
import glob from 'fast-glob';
import fs from 'fs';
import { builtinModules } from 'module';
import { uniq } from 'lodash';
import { dependencies, peerDependencies } from '../dist/package.json';
const deps = Object.keys({ ...dependencies, ...peerDependencies }).concat('eslint');
const builtIn = new Set(builtinModules.flatMap(module => [module, `node:${module}`]));
function findRequires(text: string) {
const list = Array.from(text.matchAll(/require\(["']([^"']+)["']\)/g))
.map(m => m[1])
.filter(
module =>
!(
builtIn.has(module) ||
module.startsWith('eslint/') ||
module.startsWith('typescript/')
),
);
return uniq(list);
}
const moduleMap = glob
.sync('dist/**/*.js')
.map(path => ({ key: path, value: findRequires(fs.readFileSync(path, 'utf8')) }));
const files = Object.fromEntries(
moduleMap
.map(({ key, value }) => ({
key,
value: value.filter(
module =>
!(deps.includes(module) || deps.some(dep => module.startsWith(`${dep}/`))),
),
}))
.filter(({ value }) => value.length > 0)
.map(({ key, value }) => [key, value]),
);
const uselessDeps = Object.keys(dependencies).filter(
dep => !moduleMap.some(({ value }) => value.includes(dep)),
);
console.log('Missing imports:', files);
console.log('Unused dependencies:', uselessDeps);

View File

@ -57,3 +57,8 @@ export function* map<T, U>(
yield callback(value);
}
}
// safe-regex-test/index.js
export function safeRegexTest(regex: RegExp) {
return (text: string) => regex.test(text);
}