Commit Graph

13 Commits

Author SHA1 Message Date
Yury Bondarenko
14a19b2000 Upgrade TSESLint to support TypeScript 5.3.3 2024-04-18 11:02:04 +02:00
Yury Bondarenko
c4b32febc1 Explain themed-component-classes rule 2024-03-29 10:52:55 +01:00
Yury Bondarenko
515e5f00cf Improve documentation 2024-03-29 10:46:20 +01:00
Yury Bondarenko
2c68589416 Move generated documentation to docs/lint/ 2024-03-29 10:12:57 +01:00
Yury Bondarenko
6051b82821 Automatically migrate to new themeable component convention 2024-03-28 18:33:46 +01:00
Yury Bondarenko
e40b6ae612 Update plugins to support standalone components
- ThemedComponent wrappers should always import their base component. This ensures that it's always enough to only import the wrapper when we use it.
- This implies that all themeable components must be standalone

→ added rules to enforce this
→ updated usage rule to improve declaration/import handling
2024-03-28 18:33:46 +01:00
Yury Bondarenko
568574585b Workaround/document edge case where node can't be found by token 2024-03-21 10:35:04 +01:00
Yury Bondarenko
6e22b5376a Make rules more type-safe 2024-03-21 10:11:04 +01:00
Yury Bondarenko
b0758c23e5 Enforce plugin structure and generate documentation 2024-03-21 10:11:04 +01:00
Yury Bondarenko
e83a0cd741 Fix lint lint issues 2024-03-21 10:11:04 +01:00
Yury Bondarenko
9a27db3835 Lint e2e tests, enforce selectors 2024-03-21 10:11:04 +01:00
Yury Bondarenko
13e9808df2 Don't enforce ThemedComponent selectors in test HTML 2024-03-21 10:11:04 +01:00
Yury Bondarenko
3937be13f2 Custom ESLint rules to enforce new ThemedComponent selector convention
The following cases are covered:
- ThemedComponent wrapper selectors must not start with ds-themed-
- Base component selectors must start with ds-base-
- Themed component selectors must start with ds-themed-
- The ThemedComponent wrapper must always be used in HTML
- The ThemedComponent wrapper must be used in TypeScript _where appropriate_:
  - Required
    - Explicit usages (e.g. modal instantiation, routing modules, ...)
    - By.css selector queries (in order to align with the HTML rule)
  - Unchecked
    - Non-routing modules (to ensure the components can be declared)
    - ViewChild hooks (since they need to attach to the underlying component)

All rules work with --fix to automatically migrate to the new convention
This covers most of the codebase, but minor manual adjustment are needed afterwards
2024-03-21 10:11:04 +01:00