mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-11-16 01:21:16 +01:00
# Description of Changes Refactors code to avoid circular imports everywhere and adds linting for circular imports to ensure it doesn't happen again. Most changes are around the tool registry, making it a provider, and splitting into tool types to make it easier for things like Automate to only have access to tools excluding itself.
89 lines
2.7 KiB
JavaScript
89 lines
2.7 KiB
JavaScript
// @ts-check
|
|
|
|
import eslint from '@eslint/js';
|
|
import globals from 'globals';
|
|
import { defineConfig } from 'eslint/config';
|
|
import tseslint from 'typescript-eslint';
|
|
import importPlugin from 'eslint-plugin-import';
|
|
|
|
const srcGlobs = [
|
|
'src/**/*.{js,mjs,jsx,ts,tsx}',
|
|
];
|
|
const nodeGlobs = [
|
|
'scripts/**/*.{js,ts,mjs}',
|
|
'*.config.{js,ts,mjs}',
|
|
];
|
|
|
|
export default defineConfig(
|
|
{
|
|
// Everything that contains 3rd party code that we don't want to lint
|
|
ignores: [
|
|
'dist',
|
|
'node_modules',
|
|
'public',
|
|
],
|
|
},
|
|
eslint.configs.recommended,
|
|
tseslint.configs.recommended,
|
|
{
|
|
rules: {
|
|
'@typescript-eslint/no-empty-object-type': [
|
|
'error',
|
|
{
|
|
// Allow empty extending interfaces because there's no real reason not to, and it makes it obvious where to put extra attributes in the future
|
|
allowInterfaces: 'with-single-extends',
|
|
},
|
|
],
|
|
'@typescript-eslint/no-explicit-any': 'off', // Temporarily disabled until codebase conformant
|
|
'@typescript-eslint/no-require-imports': 'off', // Temporarily disabled until codebase conformant
|
|
'@typescript-eslint/no-unused-vars': [
|
|
'error',
|
|
{
|
|
'args': 'all', // All function args must be used (or explicitly ignored)
|
|
'argsIgnorePattern': '^_', // Allow unused variables beginning with an underscore
|
|
'caughtErrors': 'all', // Caught errors must be used (or explicitly ignored)
|
|
'caughtErrorsIgnorePattern': '^_', // Allow unused variables beginning with an underscore
|
|
'destructuredArrayIgnorePattern': '^_', // Allow unused variables beginning with an underscore
|
|
'varsIgnorePattern': '^_', // Allow unused variables beginning with an underscore
|
|
'ignoreRestSiblings': true, // Allow unused variables when removing attributes from objects (otherwise this requires explicit renaming like `({ x: _x, ...y }) => y`, which is clunky)
|
|
},
|
|
],
|
|
},
|
|
},
|
|
// Config for browser scripts
|
|
{
|
|
files: srcGlobs,
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.browser,
|
|
}
|
|
}
|
|
},
|
|
// Config for node scripts
|
|
{
|
|
files: nodeGlobs,
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.node,
|
|
}
|
|
}
|
|
},
|
|
// Config for import plugin
|
|
{
|
|
...importPlugin.flatConfigs.recommended,
|
|
...importPlugin.flatConfigs.typescript,
|
|
rules: {
|
|
// ...importPlugin.flatConfigs.recommended.rules, // Temporarily disabled until codebase conformant
|
|
...importPlugin.flatConfigs.typescript.rules,
|
|
'import/no-cycle': 'error',
|
|
},
|
|
settings: {
|
|
'import/resolver': {
|
|
typescript: {
|
|
project: './tsconfig.json',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
);
|