dspace-angular icon indicating copy to clipboard operation
dspace-angular copied to clipboard

Enforce DSpace-specific coding conventions

Open alexandrevryghem opened this issue 1 year ago • 0 comments
trafficstars

References

  • Fixes #3265

Description

Introduced 4 new ESLint rules to enforce coding conventions that we already apply to most of the code. This work is based on the new linting rules introduced in #2865.

Instructions for Reviewers

A total of 4 new rules were created:

  • dspace-angular-ts/alias-imports: This rule enforces aliased imports like import { of as observableOf } from 'rxjs';
  • dspace-angular-ts/themed-decorators: This rule enforces that every entry component decorator in the themes folder contains a theme name.
  • dspace-angular-ts/themed-wrapper-no-input-defaults: This rule enforces that ThemedComponent wrappers do not set default values on inputs (see #2164). This rule doesn't have an auto-fix function by default since, if the type of the @Input() is missing, we would have to make a guess, which could lead to an incorrect value being set. An example of this would be @Input() title = null;, which we would incorrectly transform into @Input() title: null;.
  • dspace-angular-ts/unique-decorators: This rule enforces that entry component decorators are not duplicated.

Guidance for how to test and review this PR:

  • Run npm run lint-fix -- --quiet and verify that all the new rules automatically fix the linting issues except for dspace-angular-ts/themed-wrapper-no-input-defaults.
  • Verify that the code and the tests still work as they did before.

Checklist

  • [x] My PR is created against the main branch of code (unless it is a backport or is fixing an issue specific to an older branch).
  • [x] My PR is small in size (e.g. less than 1,000 lines of code, not including comments & specs/tests), or I have provided reasons as to why that's not possible.
  • [x] My PR passes ESLint validation using npm run lint
  • [x] My PR doesn't introduce circular dependencies (verified via npm run check-circ-deps)
  • [x] My PR includes TypeDoc comments for all new (or modified) public methods and classes. It also includes TypeDoc for large or complex private methods.
  • [x] My PR passes all specs/tests and includes new/updated specs or tests based on the Code Testing Guide.
  • [x] My PR aligns with Accessibility guidelines if it makes changes to the user interface.
  • [x] My PR uses i18n (internationalization) keys instead of hardcoded English text, to allow for translations.
  • [x] My PR includes details on how to test it. I've provided clear instructions to reviewers on how to successfully test this fix or feature.
  • [x] If my PR includes new libraries/dependencies (in package.json), I've made sure their licenses align with the DSpace BSD License based on the Licensing of Contributions documentation.
  • [x] If my PR includes new features or configurations, I've provided basic technical documentation in the PR itself.
  • [x] If my PR fixes an issue ticket, I've linked them together.

alexandrevryghem avatar Oct 07 '24 10:10 alexandrevryghem