0.11.0
Minor Changes
- #1068 Add the
node22.jsonandnode22-dom.jsonoverlays, which narrowlibandtargetto what Node 22 ships for a package whose floor is on Node 22, and lower the package's own Node.js floor to 22.12.
0.10.0
Minor Changes
#976
engines.nodeis now>=24.0.0, up from>=22.12.0, and Node 22 is no longer supported. Node 24.0.0 is the first release with explicit resource management built in (using,await using,DisposableStack,AsyncDisposableStack,SuppressedError) and all of ES2025, so the packages use both as the platform ships them instead of shimming them for an older line, and the CI matrix runs the unit suite on 24.0.0 itself. Move to Node 24, or stay on the current minor while a deployment still runs Node 22.#976 The presets'
libandtargetmove fromES2024toES2025, the newest edition that Node 24 and the supported browsers both ship.base.json, and soreact.jsonandnext.json, listsDOM,DOM.IterableandES2025;library.jsonlistsES2025. A program on a preset can use ES2025 builtins with nolibentry of its own, and a builtin newer than that, such asMap.prototype.getOrInsert, is still a type error.#965 The
typescriptpeer range is now>=7.0.0, up from>=5.0.0: TypeScript 7 is the one compiler the presets are checked against, so it is the floor they support. A project pinned to TypeScript 6 or older now fails npm's peer resolution (ERESOLVE) and gets a pnpm peer warning. Move it to TypeScript 7, or stay on 0.9.x while its tooling still needs TypeScript 6. A Next.js app onnext.jsonneeds Next.js 16.3 or later, the first release that type-checks with TypeScript 7.#977
library-build.jsonsetstypes: []instead of["node"], so a build loads only the ambient types its own config names. A package that runs on Node addstypes: ["node"]to itstsconfig.build.json, which also brings explicit resource management. A browser or universal package leaves it empty, so a Node global in its source fails the build. No preset listsESNext.Disposable: a Node program gets explicit resource management from@types/node24 or later, and a browser program adds it once the browsers it targets ship it, which Safari has not.
0.9.1
Patch Changes
#892
4c97c5bThanks @thevuong! - Lower the monorepo's Node floor from 24 to 22.12, so the packages install and run on the active Node 22 LTS line.engines.nodebecomes>=22.12.0across every package — the floor the shared toolchain (oxlint, Vite, Vitest, TanStack Start) already requires. Development stays on the latest Node (.node-version) for speed, and a CI matrix exercises the floor and the active LTS directly, so the floor is a contract CI proves rather than one everyone has to run.@types/nodeis pinned to the floor's major (^22), with a workspace override holding the whole tree there so a dev tool's@types/node: "*"peer can no longer pull a newer major and mask an API the floor lacks. The floor stays mechanical, not advisory:@codefast/dikeeps its ownMapupsert helpers rather than the ES2025Map.prototype.getOrInsert(which would raise the floor to 26) and itslibstaysES2024.@codefast/cli's mirror step now calls thenode:pathfunctions directly instead of aliasing them, which the floor's types correctly flag as unbound methods.The shared
@codefast/typescript-configpresets pinlibandtargettoES2024(wasESNext) so the compiler's ECMAScript surface matches the Node floor: an ES2025 builtin such asMap.prototype.getOrInsertnow fails to type-check rather than compiling and crashing on Node 22.12.@codefast/diand@codefast/di-testingalready pinnedliband are unchanged.Internal subpath imports move from a
#/prefix to a bare#(#core/token, not#/core/token), and thepackage.json#importskeys become#*/#tests/*/#examples/*to match. Node's native ESM resolver rejects a#/-prefixed specifier withERR_INVALID_MODULE_SPECIFIERon the whole Node 22 line (and on Node 24 before 24.14), and each package ships those specifiers verbatim inside its publisheddist/*.jsfor a consumer's Node to resolve — so this rename is what actually lets the packages import on the new floor. Purely internal: a consumer's own import paths are unchanged.
0.9.0
Minor Changes
- #809
7485645Thanks @thevuong! -exactOptionalPropertyTypesnow defaults totrueinbase.json, so every preset (base,library,react) turns it on and each package inherits one source of truth instead of repeating the flag. Packages not yet ready for it opt out explicitly with"exactOptionalPropertyTypes": false(@codefast/cli,@codefast/tailwind-variants, and the private benchmark packages). A consumer extending these presets will now type-check underexactOptionalPropertyTypes; set it back tofalselocally if that surfaces errors you are not ready to fix.
Patch Changes
#791
37a212bThanks @thevuong! - Point the README's license badge and "License" section at the package's ownLICENSEfile instead of the monorepo root.#793
83cceebThanks @thevuong! - Make "MIT" in the README's License section the link to the package'sLICENSEfile.#796
ba04d27Thanks @thevuong! - Rewrite the README around one structure — what the package is, installation and requirements, a complete quick start, the concepts in learning order, then the documents and the license — with every API claim checked against the current code and no figures that go stale.
0.8.0
Minor Changes
#746
3dc0808Thanks @thevuong! - chore(typescript-config): hoist noImplicitOverride and verbatimModuleSyntax into the base presetBoth flags were copy-pasted across five workspace tsconfigs and were absent from the shared preset. They now live in
base.json, so every workspace inherits them and the redundant per-package copies are removed. Enabling them repo-wide was verified to produce zero new type errors.exactOptionalPropertyTypesis intentionally left per-package: turning it on everywhere surfaces mostly-benign errors in the component/CLI packages, so it stays opt-in for the logic-heavy packages that benefit from it.
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
Minor Changes
71cf664Thanks @thevuong! - Add alibrary-build.jsonpreset holding the shared emit options for the nativetscpackage build (noEmit: false,declaration,declarationMap,sourceMap,types: ["node"]). Each package'stsconfig.build.jsonnow uses arrayextends(["./tsconfig.json", "@codefast/typescript-config/library-build.json"]) and keeps only its localoutDir/rootDirandinclude— dropping the duplicated emit block across all library packages. Path-relative options stay local becauseextendsresolves them against the file that declares them.
0.5.0-canary.9
0.5.0-canary.8
0.5.0-canary.7
0.5.0-canary.6
Minor Changes
71cf664Thanks @thevuong! - Add alibrary-build.jsonpreset holding the shared emit options for the nativetscpackage build (noEmit: false,declaration,declarationMap,sourceMap,types: ["node"]). Each package'stsconfig.build.jsonnow uses arrayextends(["./tsconfig.json", "@codefast/typescript-config/library-build.json"]) and keeps only its localoutDir/rootDirandinclude— dropping the duplicated emit block across all library packages. Path-relative options stay local becauseextendsresolves them against the file that declares them.
1.0.0-canary.7
Minor Changes
71cf664Thanks @thevuong! - Add alibrary-build.jsonpreset holding the shared emit options for the nativetscpackage build (noEmit: false,declaration,declarationMap,sourceMap,types: ["node"]). Each package'stsconfig.build.jsonnow uses arrayextends(["./tsconfig.json", "@codefast/typescript-config/library-build.json"]) and keeps only its localoutDir/rootDirandinclude— dropping the duplicated emit block across all library packages. Path-relative options stay local becauseextendsresolves them against the file that declares them.
1.0.0-canary.6
0.5.0-canary.5
0.5.0-canary.4
0.5.0-canary.3
0.5.0-canary.2
Showing the latest 20 releases; the full changelog on GitHub has 197 more releases.