Skip to content

Release v7.18.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 09:54
7424cac

Summary

Upgrades Fundamentals to TypeScript 7.0.2 (the new native compiler), bringing significantly faster type-checking and builds. Also bumps the pinned Yarn release from 4.5.3 to 4.17.1, which is required to install TypeScript 7 at all.

What changed

  • typescript is now 7.0.2 (was 6.0.3).
  • packageManager / .yarnrc.yml yarnPath bumped to Yarn 4.17.1 (was 4.5.3) — Yarn 4.5.3's built-in TypeScript compatibility patch tries to rewrite a file (lib/_tsc.js) that the TS7 native package no longer ships, which makes install fail outright on anything older than 4.17.1.
  • tsc -b (the actual type-check/build step used everywhere in this repo and by consumers) runs on real TypeScript 7 and is unaffected.

Working around tooling that isn't TS7-ready yet

TypeScript 7.0 ships only the tsc binary — it deliberately does not include the legacy programmatic compiler API (ts.createProgram, ts.createDocumentRegistry, ts.Extension, etc.), since a new API isn't planned until 7.1. A few dev-time tools in this repo's pipeline still call into that legacy API directly and don't support TS7 yet:

  • @typescript-eslint/eslint-plugin, @typescript-eslint/parser, typescript-eslint (typed linting)
  • rollup-plugin-typescript2 (the rollup bundler plugin used to publish @cratis/fundamentals)

Rather than blocking the whole upgrade on upstream TS7 support, each of those tools now gets its own private TypeScript 6.0.3 dependency nested underneath it via .yarnrc.yml packageExtensions, while everything else — most importantly tsc -b, the thing that actually type-checks this codebase — uses real TypeScript 7.0.2. This is the same side-by-side pattern Microsoft documents for typescript-eslint itself.

One spec (for_fieldDecorator/when_executing_standard_typescript_decorator_emit.ts) exercises TypeScript's programmatic compiler API directly (to compile and execute a decorator fixture in-memory as part of the test). It now imports that API from a dedicated nested typescript-programmatic-api alias (→ TS 6.0.3) instead of bare typescript, so it keeps working without pulling this workspace's real build back onto TS6.

Verification

  • yarn install (Yarn 4.17.1) — clean, no errors, from a fully cleared .yarn/cache and yarn.lock.
  • tsc --version7.0.2 everywhere tsc -b is invoked.
  • yarn ci (clean + lint + tsc -b + test, across every workspace) — passes: 467 tests, 0 failures, lint clean.
  • yarn build (the publish path: tsc -b + rollup bundling via rollup-plugin-typescript2) — passes, produces working CJS/ESM output and validates every package.json exports target resolves.

Impact for consumers

No public API changes. This is a build-tooling upgrade only — package consumers are unaffected. Contributors building this repo locally now need Yarn 4.17.1 (picked up automatically via Corepack from packageManager).