Repository navigation
Conversation
…ext major - rimraf ^5.0.10 -> ^6.1.3 (all packages) - read-pkg ^9.0.1 -> ^10.1.0 (@mittwald/api-client) - prettier-plugin-sort-json ^3.1.0 -> ^4.2.0 (root, commons, generator, mittwald) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@typescript-eslint/eslint-plugin and @typescript-eslint/parser ^7.18.0 -> ^8.68.0 (root and all packages). ESLint stays on v8.57; typescript-eslint v8 supports eslint ^8.57 || ^9 || ^10. Two rule changes needed adjustments: - no-unused-vars now defaults to caughtErrors: "all", which flagged two unused catch bindings in UniversalContentLoader; they now use optional catch binding. - no-unused-expressions is part of the v8 recommended set and flagged the deliberate bare member expressions in *.test-types.ts type assertions; disabled for those files via an eslint override. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- jest ^29.7.0 -> ^30.5.0 (commons, generator, models) - @jest/globals ^29.7.0 -> ^30.5.0 (commons, generator, models) - jest-environment-jsdom ^29.7.0 -> ^30.5.0 (models) - @types/jest ^29.5.14 -> ^30.0.0 (commons, generator, models) jest 30 removed the deprecated matcher aliases toBeCalledWith, toBeCalledTimes and toThrowError; the three call sites now use toHaveBeenCalledWith, toHaveBeenCalledTimes and toThrow. ts-jest keeps its declared ^29.2.5 range but is re-resolved in the lockfile from 29.2.5 to 29.4.12, the first line that declares jest ^30 as a supported peer. No ts-jest manifest entry is changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
^6.9.1 -> ^7.0.1 in @mittwald/api-models. The only matcher used (toBeInTheDocument) is unchanged in v7. Note: jest-dom v7 declares engines.node >= 22, while .github/workflows/test.yml still runs on Node 20. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
^22.18.11 -> ^26.4.0 in @mittwald/api-client. 26.4.1 is still inside the npmMinimalAgeGate window, hence 26.4.0. Note: CI runs Node 20 (test.yml) and Node 24 (publish.yml), so the type surface is now several majors ahead of the runtime actually exercised. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- @lerna-lite/cli ^4.9.1 -> ^5.6.1 - @lerna-lite/publish ^4.9.1 -> ^5.6.1 - conventional-commits-filter ^5.0.0 -> ^6.0.1 Verified that every flag the publish workflow passes still exists in lerna-lite v5: --message, --skip-bump-only-releases, --conventional-commits, --create-release, --no-private, --tag-version-prefix and the from-package positional. lerna-lite v5 requires Node ^22.17 || >=24; publish.yml runs Node 24. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…to v10 - license-checker-rseidelsohn ^4.4.2 -> ^5.0.1 (root) - concurrently ^8.2.2 -> ^10.0.5 (root, @mittwald/api-client) 'yarn test:licenses' still exits 0 with the v5 CLI and unchanged flags. Note: license-checker-rseidelsohn v5 declares engines node >= 24 / npm >= 11, and concurrently v10 node >= 22. Neither runs in the Node 20 test workflow. concurrently is not referenced by any script in this repo and looks like a removal candidate. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
^21.6.5 -> ^23.1.2 (23.2.0 is still inside the npmMinimalAgeGate window). No nx.json migration was needed: this repo only uses nx as a task runner with targetDefaults, no plugins and no project.json files. run-many, affected and the local cache all behave as before. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Keep master's `@mittwald/react-use-promise` at ^4.2.3 in all three manifests; it was bumped on master and is a production peer, not one of this branch's devDependency majors. The major bumps of this branch (`@jest/globals`, `@types/jest`, `@typescript-eslint/*`, `@types/node`) are kept. yarn.lock was regenerated from master's lockfile. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Major-version bumps of
devDependenciesonly. Nodependencies, nopeerDependencies.Not breaking. devDependencies do not reach consumers, and regenerating both clients on this branch produces an empty diff.
Eight commits, one per dependency group, so anything contentious can be dropped individually.
Landed
fdc2121drimraffdc2121dread-pkgfdc2121dprettier-plugin-sort-json0d475774@typescript-eslint/{eslint-plugin,parser}1703e883jest,@jest/globals,jest-environment-jsdom1703e883@types/jesta903026b@testing-library/jest-domdd77e2b1@types/node4d72cca5@lerna-lite/{cli,publish}4d72cca5conventional-commits-filter428bc2bdlicense-checker-rseidelsohn428bc2bdconcurrently0009b9a9nxFour targets sit one release below the newest because
npmMinimalAgeGate: 10080quarantines them — verbatim:➤ YN0016: │ @typescript-eslint/eslint-plugin@npm:^8.69.0: All versions satisfying "^8.69.0" are quarantined. So@typescript-eslint/*→ 8.68.0,@types/node→ 26.4.0,nx→ 23.1.2,jest→ 30.5.0.Code changes the bumps forced
packages/generator/src/loading/UniversalContentLoader.ts— typescript-eslint v8 defaultsno-unused-varstocaughtErrors: "all"; two unused catch bindings now use optional catch binding (catch {).config/.eslintrc.yml— disables@typescript-eslint/no-unused-expressionsfor*.test-types.ts(x). v8 moved that rule intorecommendedand it flagged the deliberate bare member expressions (paired with@ts-expect-error) in the tsd-style type tests — 6 errors in commons.packages/commons/src/core/ApiClientBase.test.ts,packages/models/src/domain/IngressPath/IngressPath.test.ts— jest 30 removed the deprecated matcher aliases (TypeError: expect(...).toBeCalledWith is not a function,...rejects.toThrowError is not a function). Migrated totoHaveBeenCalledWith/toHaveBeenCalledTimes/toThrow.ts-jestre-resolved in the lockfile only. Its declared range^29.2.5is untouched, but the lock was pinned to 29.2.5, which peers onjest ^29.0.0(ts-jest[versions] (WARN) Version 30.5.0 of jest installed has not been tested with ts-jest).yarn up "ts-jest@^29.2.5"re-resolved to 29.4.12, whose peer is^29.0.0 || ^30.0.0.Excluded, with the reason
eslint 8 → 10 (whole group with
eslint-config-prettier,eslint-plugin-json). Installs, then every lint task dies:Needs a full flat-config migration — 5
.eslintrc.ymlfiles, 5.eslintignorefiles, and re-expressingeslint:recommended→@eslint/js,plugin:@typescript-eslint/recommended→ thetypescript-eslintpackage,plugin:prettier/recommended→eslint-plugin-prettier/recommended. Rewriting rule resolution can silently drop rules, so it wants its own PR with a rule-set diff.@typescript-eslintv8 was kept because its peer iseslint ^8.57.0 || ^9 || ^10— it does not require eslint 9.typescript 5.7 → 7.0.2. Blocked three ways. It does not even install under Yarn 4.13 — the builtin TypeScript compat patch cannot handle the TS 7 native package layout:
On top of that
ts-jest@29.4.12peerstypescript: ">=4.3 <7"and@typescript-eslint/*@8.68.0peers>=4.8.4 <6.1.0.nock 14 → 15. The candidate is not a real release.
latestis 14.0.17; 15.0.0 is deprecated upstream — "v15.0.0 was released accidentally and is unstable. Please use v14.x until v15 is officially ready." The only 15.x artifacts are betas.@types/dinero.js1 → 2.@types/dinero.js@2.0.0is a deprecated stub that depends ondinero.js: *. Butpackages/modelsusesdinero.js@^1.9.1(no bundled types) andMoney.tsuses the v1 default-import API, so installing the stub would strip the types and break the build. The correct move is bumpingdinero.jsitself to v2 plus aMoney.tsmigration, then removing@types/dinero.js— that is adependencieschange and belongs to the prod-deps line.react/react-dom/@types/react/@types/react-dom 18 → 19. Deliberately not bumped — see below.
The React 18-vs-19 question
Not bumped, and the situation is worse than assumed: none of the three published packages declares a
reactpeer range at all. Each declares onlypeerDependencies: { "@mittwald/react-use-promise": "^2.6.0" }.packages/modelsadditionally haspeerDependenciesMeta.react: { optional: true }— an entry for a peer that is not inpeerDependencies, which is inert.So there is no declared lower bound; the effective one is transitive via
@mittwald/react-use-promise@2.6.2, whose peer isreact: ">=17.0". That makes the devDependency the only thing determining which React is exercised. Bumping it to 19 would mean advertising React ≥17 while testing only 19 — strictly less coverage of the claimed range, and it would fight #295, which keeps 18.3.1 on purpose.Options: (1) stay on 18.3.1, as here; (2) add an explicit
reactpeer (e.g.^18.3 || ^19) to the three packages and test a 18/19 matrix — the only option that fixes the underlying gap, but it is apeerDependencieschange; (3) bump devDeps to 19 alone, which loses coverage. Note that #295 moves the effective floor from 17 to 18.3, which changes the answer.Merge-order note
This branch and #298 (devDeps minor) both touch
@lerna-lite/{cli,publish},@testing-library/jest-dom,@types/node,nxandts-jest. Ayarn.lockconflict is expected; this branch supersedes #298 for those five, and the ts-jest resolution converges on 29.4.12 either way.Verification
All from a clean tree at
0009b9a9, and again after each group before its commit:yarn install --immutable(no lockfile drift) ·yarn lint(4 projects) ·build --skip-nx-cache(4) ·test:compile --skip-nx-cache(3 + 3 deps) ·test --skip-nx-cache(4 + 9 deps — 12 suites, 45 tests, 0 failures) ·yarn test:licenses·yarn lerna --version→ 5.6.1 ·build:write-version-file→ writes 4.455.0 (exercises read-pkg 10) ·prettier --checkon the 4 edited files. Regeneration of both clients: empty diff.yarn formatwas not run, so none of the pre-existing CHANGELOG/README drift is in the diff.Follow-ups this surfaced
.github/workflows/test.ymlpins Node 20, and several of these majors declare higher engines:@testing-library/jest-dom@7(>=22),concurrently@10(>=22),license-checker-rseidelsohn@5(>=24),@lerna-lite/cli@5(^22.17 || >=24). Only jest-dom sits in the Node 20 test path; the rest are release-only (publish.yml is on Node 24) or unused. Yarn treats engine mismatches as warnings, so CI will not fail on install — but jest-dom 7 on Node 20 is untested. Bumping test.yml to Node 24 is the honest companion change; left alone as out of scope.@types/node@26is several majors ahead of both CI runtimes (20 test / 24 publish).^24would match reality better.concurrentlyis referenced by no script in the repo — a removal candidate rather than a bump target. Same for rootconventional-commits-filter.lerna.json's$schemapoints atnode_modules/lerna/schemas/lerna-schema.json, which does not exist — this repo uses lerna-lite. Pre-existing.TS151002("hybrid module kind is only supported inisolatedModules: true"). Tests pass; fixing it is a tsconfig change.🤖 Generated with Claude Code