Loading workspace insights... Statistics interval
7 days30 daysLatest CI Pipeline Executions
fa8a47f5 Changed apps/portal to ESLint 9 / flat config (#28800)
no ref
- Replaced the inline `eslintConfig` in `apps/portal/package.json` with
a flat `eslint.config.js`.
- Swapped `eslint: catalog:` to `catalog:eslint9` and added
`@eslint/js`, `globals`, `eslint-plugin-react`, `eslint-plugin-ghost`,
and `typescript-eslint` (the unified meta package) as direct deps.
- Dropped the legacy `plugin:ghost/browser` + `plugin:react/recommended`
+ `plugin:react/jsx-runtime` + `plugin:i18next/recommended` extends.
Formatting rules (`indent`, `quotes`, `semi`, `space-*`, etc.) were
removed from ESLint 9 core; the equivalent flat-config configs are now
imported and spread. Non-formatting rules preserved inline.
- The legacy \`overrides\` block for \`*.ts\`/\`*.tsx\` (parser:
\`@typescript-eslint/parser\`, extends:
\`plugin:@typescript-eslint/recommended\`) is now a separate
\`tseslint.config()\` flat block covering \`test/**/*.ts\` — the only TS
files in this workspace.
- Pinned \`no-unused-vars\` to \`caughtErrors: 'none'\` to preserve the
ESLint 8 default (ESLint 9 flipped it to \`'all'\`, which would
otherwise force touching every \`catch (e) {}\` in the codebase).
- ESLint 9 dropped the \`--ext\` CLI flag; the \`lint:code\` script now
passes directory args (\`src test\`).
- Modernized the package to ESM (\`"type": "module"\`): the one dynamic
\`require('@tryghost/i18n')\` in
[test/utils/test-utils.js:22](apps/portal/test/utils/test-utils.js:22)
is now a top-level static \`import\`. Src was already ESM under Vite.