Releases: cyberuni/fsa-emitter
Release list
fsa-emitter@3.0.0
Major Changes
-
2c8179d: Part of an estate-wide sweep pinning
type-plusto an exact8.0.0-beta.10.fsa-emitteris a wave-1 leaf — nothing else in the estate depends on it — so it goes first.Breaking: the TypeScript floor moves to 5.6
type-plus5, 6 and 7 declare notypescriptpeer at all. 8 declares>= 5.6.0. That reaches consumers here, becauseAnyFunctionis in the published declarations:import { AnyFunction } from "type-plus";
Anyone type-checking against
fsa-emitterresolves type-plus's own.d.tsand inherits the peer. Hencemajor.The last published release is 2.0.2, which already declares
type-plus: ^7.0.0— the same asmain. So the jump consumers actually see is 7 → 8.Why an exact pin
^8.0.0-beta.10resolves to>=8.0.0-beta.10 <9.0.0-0, which admits every later 8.0.0 prerelease as well as8.0.0and8.1.0. type-plus 8 is a prerelease line where breaking changes land between betas: beta.10 -> beta.11 changedEqual's signature and removedisType.f. An exact version makes each bump a reviewable PR instead of something a lockfile refresh can do silently. Move back to a caret when 8.0.0 is stable.No source change
AnyFunctionis unchanged in 8 — this package's single type-plus import needed no edit.pnpm verifypasses: 4/4 tasks, 51 tests.Second commit: first-party packages are exempt from the release-age soak
assertron@11.6.0already declarestype-plus: ^8.0.0-beta.10andtersify: ^4.0.6, but was younger than the 24h soak, so pnpm would otherwise silently resolve11.5.2instead and drag intype-plus@7.6.2andtersify@3.12.1alongside the 8.x this package pins.pnpm-workspace.yamlnow exempts first-party names and scopes. Third-party packages are unaffected:minimumReleaseAge: 1440andminimumReleaseAgeStrict: trueboth stay.pnpm why type-plus -r -> Found 1 version of type-plus (8.0.0-beta.10) pnpm why tersify -r -> Found 1 version of tersify (4.0.6)Node floor
type-plus 8 pulls
unpartial@^1.0.7, which declaresengines: node >= 20. This package already declares^20.19.0 || ^22.13.0 || >=24, so nothing moves here. -
8fd6935: Ship ESM only. The CommonJS build is gone.
What was removed
- The
cjs/output is no longer built or published, and with itmainandtypings. - The published tarball now contains
esm/only. Thets/sources are no longer shipped; the sourcemaps carrysourcesContent, so stepping into the library still shows the original TypeScript.
What replaces it
-
"type": "module"plus anexportsmap with norequirecondition:{ ".": { "types": "./esm/index.d.ts", "default": "./esm/index.js" }, "./package.json": "./package.json" } -
Declarations now sit beside the JavaScript in
esm/, where they never shipped before. The emitted file names inesm/are unchanged.
What consumers must do
- Import the package, do not
requireit. On Node 22.12 and laterrequire('fsa-emitter')still works through Node's built-in support for requiring ESM; on older runtimes it throwsERR_REQUIRE_ESM. Move toimportor dynamicimport(). - Import from the package root. Deep imports such as
fsa-emitter/esm/Emitter.jsandfsa-emitter/ts/Emitterno longer resolve, because theexportsmap does not expose subpaths. Everything the package exported is re-exported from the root. - TypeScript consumers need a module resolution that reads
exports—node16,nodenext, orbundler. The legacynoderesolution finds no entry point, sincemainandtypingsare gone.
- The
Patch Changes
-
9c64c64: Declare a supported Node range:
^20.19.0 || ^22.13.0 || >=24.Every version in that range has unflagged
require(esm), so a CommonJS consumer's
require()of this now-ESM-only package resolves rather than throwingERR_REQUIRE_ESM.
Node 18 (EOL April 2025) and Node 20.0–20.18 are excluded becauserequire()hard-fails there.
fsa-emitter@2.0.2
Patch Changes
-
1878fd5: Build with tsdown instead of two
tscpasses.Every published path is unchanged —
cjs/*.js,cjs/*.d.ts,esm/*.jsand their
sourcemaps all land where they always have, and the public API is identical. The
emitted JavaScript itself is now produced by rolldown rather thantsc, which is
why this is a release rather than a no-op.The tarball also now contains the
ts/sources.fileshad listed asrc
directory that has never existed in this repo, so the.js.mapfiles shipped with
nothing to resolve against.
v0.0.0
Patch Changes
-
0d480ad: Point
repository,homepageandbugsatcyberuni/fsa-emitter.repositoryis read when generating provenance attestations, so it has to be correct
at publish time — not merely correct in the repo.
v2.0.1
Patch Changes
-
74d42b2: Restore the version line to the published series.
package.jsonstill carried semantic-release's0.0.0-developmentplaceholder, so the
first changesets release bumped it to0.0.0and npm made thatlatest— ahead of the
real2.0.0by dist-tag, behind it by semver. This publishes2.0.1and returnslatest
to the 2.x line.