ci: mandatory eslint rules for build

This commit adds verification for statically identifiable definite
errors. Sometimes global variables used will be falsely reported as
undefined variables in which case the new file
`mandatory.eslint.config.js` should be updated to include these
definitions in the narrowest scope possible that has these definitions
This commit is contained in:
KernelDeimos
2025-11-20 21:22:44 -05:00
committed by Eric Dubé
parent 12559f7d28
commit 8dafafa749
2 changed files with 87 additions and 1 deletions

View File

@@ -0,0 +1,86 @@
import tseslintPlugin from '@typescript-eslint/eslint-plugin';
import { defineConfig } from 'eslint/config';
import globals from 'globals';
const backendLanguageOptions = {
globals: {
// Current, intentionally supported globals
extension: 'readonly',
config: 'readonly',
global_config: 'readonly',
// Older not entirely ideal globals
use: 'readonly', // <-- older import mechanism
def: 'readonly', // <-- older import mechanism
kv: 'readonly', // <-- should be passed/imported
ll: 'readonly', // <-- questionable
// Language/environment globals
...globals.node,
},
};
export default defineConfig([
{
ignores: [
'src/backend/src/modules/apps/AppInformationService.js', // TEMPORARY - SHOULD BE FIXED!
'src/backend/src/services/worker/WorkerService.js', // TEMPORARY - SHOULD BE FIXED!
'src/backend/src/public/**/*', // We may be able to delete this! I don't think it's used
// These files run in the worker environment, so these rules don't apply
'src/backend/src/services/worker/dist/**/*.{js,cjs,mjs}',
'src/backend/src/services/worker/src/**/*.{js,cjs,mjs}',
'src/backend/src/services/worker/template/puter-portable.js',
],
},
{
plugins: {
'@typescript-eslint': tseslintPlugin,
},
},
{
files: [
'src/backend/**/*.{js,mjc,cjs}',
'extensions/**/*.{js,mjc,cjs}',
'src/backend-core-0/**/*.{js,mjc,cjs}',
],
ignores: [
'src/backend/src/services/database/sqlite_setup/**/*.js',
],
rules: {
'no-undef': 'error',
},
languageOptions: {
...backendLanguageOptions,
},
},
{
files: [
'src/backend/src/services/database/sqlite_setup/**/*.js',
],
rules: {
'no-undef': 'error',
},
languageOptions: {
globals: {
read: 'readonly',
write: 'readonly',
log: 'readonly',
...globals.node,
},
},
},
{
files: [
'src/backend/**/*.{ts}',
'extensions/**/*.{ts}',
'src/backend-core-0/**/*.{ts}',
],
rules: {
'no-undef': 'error',
},
languageOptions: {
...backendLanguageOptions,
},
},
]);

View File

@@ -44,7 +44,7 @@
"start": "node ./tools/run-selfhosted.js",
"prestart": "npm run build:ts",
"dev": "npm run build:ts && DEVCONSOLE=1 node ./tools/run-selfhosted.js",
"build": "npm run build:ts; cd src/gui; node ./build.js",
"build": "npx eslint --quiet -c eslint/mandatory.eslint.config.js src/backend/src extensions && npm run build:ts && cd src/gui && node ./build.js",
"check-translations": "node tools/check-translations.js",
"prepare": "husky",
"build:ts": "tsc",