Skip to content

Commit

Permalink
style: lint and styling overhaul (flybywiresim#8466)
Browse files Browse the repository at this point in the history
* refactor: re-organise lint configs

* style: run lint

* fix: lint in package base files

* style: run lint

* style: fix lint

* style: run lint

* chore: remove unused build files

* refactor: prettier lint

* run lint

* revert a380 lint-fix

* update pnpm-lock.yaml

* adjust .gitignore and include prettierrc

* fix syntax

* remove redundant lines from js editorconfig entry

* style: run lint

* chore: exclude mathjs from lint

* chore: fix jest files lint

* fix: missing const declaration

* chore: additional non-tailwind lint fixes

* style: run lint after merge

* style: run lint after merge

* chore: fix lint

* chore: fix lint

* style: run lint after merge

* chore: fix lint

* chore: last beautiful commit

* fix: "__proto__" -> __proto__

* style: undo some changes from 9e17150

* style: address review comments and add braces to isChartPinned

* style: run lint after merge

* fix: cast

---------

Co-authored-by: 2hwk <[email protected]>
  • Loading branch information
Benjozork and 2hwk authored Apr 27, 2024
1 parent a77367e commit 7518ab0
Show file tree
Hide file tree
Showing 733 changed files with 148,358 additions and 132,277 deletions.
5 changes: 5 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ indent_style = space
insert_final_newline = false
tab_width = 4

[*.{js,jsx,ts,tsx}]
indent_size = 2
insert_final_newline = true
tab_width = 2

[*.{h,hpp,c,cpp}]
end_of_line = lf
indent_size = 2
Expand Down
4 changes: 1 addition & 3 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@ CMakeFiles/*
cmake*
fbw-a32nx/out/*
fbw-a380x/out/*
# TODO: these need to be more granular
fbw-a32nx/src/base/*
fbw-a380x/src/base/*
fbw-a32nx/bundles/*
fbw-a380x/bundles/*
/bundles/*

fbw-a32nx/src/base/flybywire-aircraft-a320-neo/html_ui/Pages/A32NX_Core/math.js
fbw-a32nx/src/systems/fmgc/src/flightplanning/DirectTo.ts
fbw-a32nx/src/systems/fmgc/src/flightplanning/FixNamingScheme.ts
fbw-a32nx/src/systems/fmgc/src/flightplanning/FlightPlanAsoboSync.ts
Expand Down
66 changes: 0 additions & 66 deletions .eslintrc

This file was deleted.

83 changes: 83 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
// Copyright (c) 2021-2023 FlyByWire Simulations
//
// SPDX-License-Identifier: GPL-3.0

'use strict';

module.exports = {
env: { browser: true },
root: true,
extends: [
'eslint:recommended',
'plugin:prettier/recommended',
// 'plugin:@typescript-eslint/recommended', -- Disabled as it is complex to fix, needs to be done bit by bit
'plugin:@typescript-eslint/eslint-recommended',
// 'plugin:react-hooks/recommended', -- Disabled as it is complex to fix, needs to be done bit by bit, and we are moving away from react
// 'plugin:react/recommended', -- Disabled as it is complex to fix, needs to be done bit by bit, and we are moving away from react
],
plugins: ['@typescript-eslint', 'prettier', 'react-hooks', 'react', 'tailwindcss'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2021,
sourceType: 'script',
requireConfigFile: false,
},
overrides: [
{
files: [
'.eslintrc.js',
'scripts/**/*.js',
'**/mach.config.js',
'**/rollup.config.js',
'**/tailwind.config.js',
'**/jest.config.js',
],
env: {
node: true,
},
rules: {
'@typescript-eslint/no-var-requires': 'off',
},
},
{
files: ['fbw-common/src/jest/**/*.js'],
env: {
node: true,
},
plugins: ['jest'],
extends: ['plugin:jest/recommended'],
},
],
settings: {
tailwindcss: { groupByResponsive: true },
react: { version: 'detect' },
},
ignorePatterns: ['fbw-common/src/typings/*', 'fbw-a380x/*', 'fbw-ingamepanels-checklist-fix/*'],
rules: {
'prettier/prettier': ['error', {}, { usePrettierrc: true }],

'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
varsIgnorePattern: 'FSComponent|_.*',
argsIgnorePattern: '_.*',
},
],

'tailwindcss/classnames-order': 'error',
'tailwindcss/enforces-negative-arbitrary-values': 'error',
'tailwindcss/enforces-shorthand': 'error',
'tailwindcss/migration-from-tailwind-2': 'error',
'tailwindcss/no-contradicting-classname': 'error',
},
globals: {
Simplane: 'readonly',
SimVar: 'readonly',
Utils: 'readonly',
JSX: 'readonly',
Coherent: 'readonly',
ViewListener: 'readonly',
RegisterViewListener: 'readonly',
},
};
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
!/.vscode/**

!.editorconfig
!.eslintrc
!.eslintrc.js
!.gitattributes
!.gitignore
!.npmrc
!.prettierignore
!.prettierrc.json
!.prettierrc

!igniter.config.mjs
!jsconfig.json
Expand Down
6 changes: 6 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"singleQuote": true,
"printWidth": 120,
"parser": "typescript",
"endOfLine": "auto"
}
108 changes: 54 additions & 54 deletions fbw-a32nx/mach.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,72 +3,72 @@ const postCssPlugin = require('esbuild-style-plugin');
const tailwind = require('tailwindcss');
const postCssColorFunctionalNotation = require('postcss-color-functional-notation');
const postCssInset = require('postcss-inset');
const { typecheckingPlugin } = require("#build-utils");
const { typecheckingPlugin } = require('#build-utils');

// process.env.FBW_TYPECHECK = "1";

/** @type { import('@synaptic-simulations/mach').MachConfig } */
module.exports = {
packageName: 'A32NX',
packageDir: 'out/flybywire-aircraft-a320-neo',
plugins: [
imagePlugin({ limit: -1 }),
postCssPlugin({
extract: true,
postcss: {
plugins: [
tailwind('../fbw-common/src/systems/instruments/src/EFB/tailwind.config.js'),
packageName: 'A32NX',
packageDir: 'out/flybywire-aircraft-a320-neo',
plugins: [
imagePlugin({ limit: -1 }),
postCssPlugin({
extract: true,
postcss: {
plugins: [
tailwind('../fbw-common/src/systems/instruments/src/EFB/tailwind.config.js'),

// transform: hsl(x y z / alpha) -> hsl(x, y, z, alpha)
postCssColorFunctionalNotation(),
// transform: hsl(x y z / alpha) -> hsl(x, y, z, alpha)
postCssColorFunctionalNotation(),

// transform: inset: 0; -> top/right/left/bottom: 0;
postCssInset(),
],
}
}),
typecheckingPlugin(),
],
instruments: [
msfsAvionicsInstrument('PFD'),
msfsAvionicsInstrument('ND'),
msfsAvionicsInstrument('EWD'),
msfsAvionicsInstrument('Clock'),
// transform: inset: 0; -> top/right/left/bottom: 0;
postCssInset(),
],
},
}),
typecheckingPlugin(),
],
instruments: [
msfsAvionicsInstrument('PFD'),
msfsAvionicsInstrument('ND'),
msfsAvionicsInstrument('EWD'),
msfsAvionicsInstrument('Clock'),

reactInstrument('SD'),
reactInstrument('DCDU'),
reactInstrument('RTPI'),
reactInstrument('RMP'),
reactInstrument('ISIS'),
reactInstrument('BAT'),
reactInstrument('ATC'),
reactInstrument('EFB', ['/Pages/VCockpit/Instruments/Shared/Map/MapInstrument.html']),
],
reactInstrument('SD'),
reactInstrument('DCDU'),
reactInstrument('RTPI'),
reactInstrument('RMP'),
reactInstrument('ISIS'),
reactInstrument('BAT'),
reactInstrument('ATC'),
reactInstrument('EFB', ['/Pages/VCockpit/Instruments/Shared/Map/MapInstrument.html']),
],
};

function msfsAvionicsInstrument(name, folder = name) {
return {
name,
index: `src/systems/instruments/src/${folder}/instrument.tsx`,
simulatorPackage: {
type: 'baseInstrument',
templateId: `A32NX_${name}`,
mountElementId: `${name}_CONTENT`,
fileName: name.toLowerCase(),
imports: ['/JS/dataStorage.js'],
},
};
return {
name,
index: `src/systems/instruments/src/${folder}/instrument.tsx`,
simulatorPackage: {
type: 'baseInstrument',
templateId: `A32NX_${name}`,
mountElementId: `${name}_CONTENT`,
fileName: name.toLowerCase(),
imports: ['/JS/dataStorage.js'],
},
};
}

function reactInstrument(name, additionalImports) {
return {
name,
index: `src/systems/instruments/src/${name}/index.tsx`,
simulatorPackage: {
type: 'react',
isInteractive: false,
fileName: name.toLowerCase(),
imports: ['/JS/dataStorage.js','/JS/fbw-a32nx/A32NX_Simvars.js', ...(additionalImports ?? [])],
},
};
return {
name,
index: `src/systems/instruments/src/${name}/index.tsx`,
simulatorPackage: {
type: 'react',
isInteractive: false,
fileName: name.toLowerCase(),
imports: ['/JS/dataStorage.js', '/JS/fbw-a32nx/A32NX_Simvars.js', ...(additionalImports ?? [])],
},
};
}
Loading

0 comments on commit 7518ab0

Please sign in to comment.