Skip to content

fix(deps): drop deprecated transitive packages and refresh tooling#4

Merged
adrianschmidt merged 3 commits into
limefrom
update-deps
Jun 15, 2026
Merged

fix(deps): drop deprecated transitive packages and refresh tooling#4
adrianschmidt merged 3 commits into
limefrom
update-deps

Conversation

@adrianschmidt

Copy link
Copy Markdown

Fork-side pair of upstream PR jgroth#183. Same main-based
branch, so the identical change lands on both sides and the daily upstream
sync merges it as a no-op once upstream accepts.

Note

This PR will show as "out-of-date with the base branch" permanently and by
design (lime carries the fork delta; the branch is based on main). Per
FORK.md, do not use the Update branch button.

What

Dependency refresh focused on removing deprecated packages from the
production dependency tree, plus an ESLint 9 flat-config migration and
safe tooling/type bumps.

Deprecation fixes (the motivation)

  • Removed the unused direct glob dependency.
  • Replaced lnk with native fs.symlink in the docs generator. lnk
    was the only remaining path to rimraf@2 → glob@7; it was used solely on a
    guarded, watch-mode-only code path.
  • chokidar ^3.3.1 → ^3.6.0 — replaces bundled fsevents@2.1.3 with
    fsevents@2.3.3.
  • puppeteer ^22 → ^24.
  • ESLint 8 → 9 via a flat-config migration — removes the
    @humanwhocodes/* and eslint@8 deprecation warnings.

After this, the production tree contains no glob and no lnk and
resolves a maintained fsevents, and npm ci reports no deprecation
warnings at all
. The cleaned-up production tree is what clears the
fsevents/glob warnings seen by consumers such as lime-elements (which
only installs kompendium's runtime deps).

ESLint 9 flat-config migration

eslint.config.mjs is converted from the FlatCompat shim to native flat
config. Plugin recommended configs are consumed directly. eslint-plugin-sonarjs
is bumped 0.25 → 1.x (0.25 only supports ESLint ≤8). The unused
@eslint/eslintrc dependency is removed. All custom rules and file-specific
overrides are preserved.

Tooling / types

Stencil, typescript-eslint, prettier (3.8), eslint plugins, @types/*,
fuse.js (6.6 — FuseOptionKey is now generic; search key type updated to
match), yaml. The .scss diffs are prettier 3.8 reformatting only.

Verification

npm run lint (0 warnings), npm run build, npm test (96 passed /
5 skipped) all green. npm ci is free of deprecation warnings.

Shrink the dependency footprint that surfaced deprecation warnings in
consumers (most notably lime-elements):

- Drop the unused direct `glob` dependency.
- Replace `lnk` with a native `fs.symlink` call in the docs generator.
  `lnk` was the last thing pulling in `rimraf@2` -> `glob@7`, and it was
  only used on a guarded, watch-mode-only code path.
- Bump `chokidar` to ^3.6.0, replacing the bundled `fsevents@2.1.3` with
  `fsevents@2.3.3`.
- Bump `puppeteer` to ^24.

The production dependency tree now contains neither `glob` nor `lnk`,
and resolves a maintained `fsevents`.

Also refresh dev tooling and types (Stencil, typescript-eslint,
prettier, eslint plugins, @types/*, fuse.js, yaml). `fuse.js` 6.6 made
`FuseOptionKey` generic, so the search index key type is updated to
match. The .scss changes are prettier 3.8 reformatting only.

ESLint stays on 8.x: moving to 9 requires a flat-config migration,
since eslint-plugin-sonarjs now ships its recommended config in
flat-config format that the current FlatCompat setup cannot consume.
Convert eslint.config.mjs from the FlatCompat shim to native flat
config, which unblocks ESLint 9. Plugin recommended configs are now
consumed directly instead of through FlatCompat:

- @typescript-eslint via configs['flat/eslint-recommended']
- eslint-plugin-sonarjs (1.x) via its flat `recommended`
- eslint-plugin-jsdoc via configs['flat/recommended']
- eslint-plugin-prettier via eslint-plugin-prettier/recommended

eslint-plugin-sonarjs is bumped 0.25 -> 1.x: 0.25 only supports ESLint
<=8, and its newer recommended config ships in flat-config format that
FlatCompat cannot consume. All custom rules and file-specific overrides
are preserved.

Also remove the now-unused @eslint/eslintrc dependency and drop a stale
no-constant-condition disable directive (ESLint 9 no longer flags
`while (true)` by default).

This eliminates the @humanwhocodes/* and eslint@8 deprecation warnings;
npm ci is now free of deprecation warnings.
@adrianschmidt adrianschmidt marked this pull request as ready for review June 15, 2026 11:54
@adrianschmidt adrianschmidt merged commit 0b166af into lime Jun 15, 2026
3 checks passed
@adrianschmidt adrianschmidt deleted the update-deps branch June 15, 2026 11:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant