Versioning and support
injecute follows semantic versioning. Breaking changes only happen in a major version, and each one comes with a before/after entry in a migration guide.
What the public API is
- Everything exported from
injecute(the package root), with the behaviour its docs describe, and theinjecute/hintsentry point. - The TypeScript types of those exports, following the Semantic Versioning for TypeScript Types policy: a change that makes correct code stop compiling is breaking. Fixing a type so that it rejects code that already failed at runtime is a bug fix.
- Error
codevalues (INJECUTE_*). New codes can be added in minor versions. Error messages are not part of the API: they get better over time, so branch oncode.
Not part of the API: anything marked @internal, files imported by path (injecute/lib/…), and the exact text of messages and hints, including whether a browser bundle prints the hints (see Hints in browser bundles).
Every export of the package root, with its type and the members of its classes and interfaces, is recorded in a snapshot that the test suite compares on every change. An API change can't slip in by accident: it updates the snapshot on purpose, with a changeset, and a migration note when it breaks.
Deprecations
A renamed API keeps working under its old name, marked @deprecated with the replacement, until the next major version. Your editor shows the deprecation and the replacement.
Support
| Version | Fixes |
|---|---|
| The latest major (1.x) | bug and security fixes, in the latest minor version |
| The previous major | bug and security fixes for 6 months after the next major ships |
| 0.x | none: upgrade with the migration guide |
Fixes for a previous major are released as patch versions of its latest minor. Report security issues privately, through GitHub security advisories, not as an issue.
TypeScript
TypeScript 5.2 and newer, checked in CI against 5.2 and the latest release, and weekly against the next one. The minimum is raised only in a minor release, announced in the changelog.
Runtimes
Node.js 22.12 and newer, current Deno and Bun, and browsers that support ES2022 modules. Raising the minimum Node.js version is a breaking change.
Why 22.12: injecute is a single ES module. Node.js 22.12 is the first 22.x release where require() loads ES modules without a flag, so CommonJS code can still require('injecute'). Node.js 20 reached its end of life in April 2026. CI runs the tests on Node.js 22, 24 and 26, and the package smoke tests (import and require()) on 22.12, the minimum.
Releases
Every release is published from GitHub Actions to npm (with provenance) and JSR, with notes in the changelog and on GitHub Releases. Release candidates use the npm dist-tag rc: npm install injecute@rc.