Releases: cyberuni/async-fp
Release list
async-fp@10.0.0
Major Changes
-
b5e379e: Pin
type-plusto8.0.0-beta.10, exactly, and raise the Node floor to>= 20.All three packages already declared
type-plus: ^8.0.0-beta.10in their last publish
(@unional/async-context@9.0.17,async-fp@9.0.17,@unional/gizmo@2.3.5), so the
typescript >= 5.6.0peer type-plus 8 introduced already reaches consumers today.
Tightening the caret to an exact pin removes headroom (later 8.0.0 prereleases,8.0.0,
8.1.0) but does not change what a fresh install resolves right now — 8 is a prerelease
line where breaking changes land between betas (beta.10 -> beta.11 changedEqual's
signature and removedisType.f), so an exact version makes the next bump a reviewable
PR instead of something a lockfile refresh does silently.Breaking: the Node floor moves from
>= 14.16to>= 20.type-plus8 depends on
unpartial@^1.0.7, which declaresengines: { node: '>= 20' }.@unional/async-context
and@unional/gizmocarrytype-plusas a runtimedependency(its types are re-exported
in their emitted.d.ts), so their actual runtime floor was already 20 as of their last
publish — this only makes the declaredenginesfield honest.async-fphas no direct
runtime dependency ontype-plus(it's a devDependency there, and none of its own emitted
declarations reference it), but it depends on@unional/async-contextand@unional/gizmo
at runtime, so its effective floor moves too. Because narrowing supported Node is breaking
for consumers regardless of which path pulls it in, all three packages takemajor.Downstream value:
@unional/gizmo@2.3.0was found, during a sibling sweep of
justland/just-web-react, published on an oldtype-plus, contributing a stale copy to
consumers' dependency trees. A fresh@unional/gizmorelease from this repo fixes that at
the source formocktomataandjustland/just-web(via@unional/gizmo), both of which
consume this repo mid-graph.assertronmoves11.5.3->11.6.0andiso-error/satisfier/tersifypick up their
latest patches as a side effect of exempting first-party packages from the 24h release-age
soak (seepnpm-workspace.yaml) — without the exemption,assertron@11.5.2(declaring the
oldertype-plus: ^7.6.2/tersify: ^3.12.1) would have been silently resolved instead,
duplicating both packages in the tree.
Patch Changes
- Updated dependencies [b5e379e]
- @unional/async-context@10.0.0
- @unional/gizmo@3.0.0
@unional/gizmo@3.0.0
Major Changes
-
b5e379e: Pin
type-plusto8.0.0-beta.10, exactly, and raise the Node floor to>= 20.All three packages already declared
type-plus: ^8.0.0-beta.10in their last publish
(@unional/async-context@9.0.17,async-fp@9.0.17,@unional/gizmo@2.3.5), so the
typescript >= 5.6.0peer type-plus 8 introduced already reaches consumers today.
Tightening the caret to an exact pin removes headroom (later 8.0.0 prereleases,8.0.0,
8.1.0) but does not change what a fresh install resolves right now — 8 is a prerelease
line where breaking changes land between betas (beta.10 -> beta.11 changedEqual's
signature and removedisType.f), so an exact version makes the next bump a reviewable
PR instead of something a lockfile refresh does silently.Breaking: the Node floor moves from
>= 14.16to>= 20.type-plus8 depends on
unpartial@^1.0.7, which declaresengines: { node: '>= 20' }.@unional/async-context
and@unional/gizmocarrytype-plusas a runtimedependency(its types are re-exported
in their emitted.d.ts), so their actual runtime floor was already 20 as of their last
publish — this only makes the declaredenginesfield honest.async-fphas no direct
runtime dependency ontype-plus(it's a devDependency there, and none of its own emitted
declarations reference it), but it depends on@unional/async-contextand@unional/gizmo
at runtime, so its effective floor moves too. Because narrowing supported Node is breaking
for consumers regardless of which path pulls it in, all three packages takemajor.Downstream value:
@unional/gizmo@2.3.0was found, during a sibling sweep of
justland/just-web-react, published on an oldtype-plus, contributing a stale copy to
consumers' dependency trees. A fresh@unional/gizmorelease from this repo fixes that at
the source formocktomataandjustland/just-web(via@unional/gizmo), both of which
consume this repo mid-graph.assertronmoves11.5.3->11.6.0andiso-error/satisfier/tersifypick up their
latest patches as a side effect of exempting first-party packages from the 24h release-age
soak (seepnpm-workspace.yaml) — without the exemption,assertron@11.5.2(declaring the
oldertype-plus: ^7.6.2/tersify: ^3.12.1) would have been silently resolved instead,
duplicating both packages in the tree.
@unional/async-context@10.0.0
Major Changes
-
b5e379e: Pin
type-plusto8.0.0-beta.10, exactly, and raise the Node floor to>= 20.All three packages already declared
type-plus: ^8.0.0-beta.10in their last publish
(@unional/async-context@9.0.17,async-fp@9.0.17,@unional/gizmo@2.3.5), so the
typescript >= 5.6.0peer type-plus 8 introduced already reaches consumers today.
Tightening the caret to an exact pin removes headroom (later 8.0.0 prereleases,8.0.0,
8.1.0) but does not change what a fresh install resolves right now — 8 is a prerelease
line where breaking changes land between betas (beta.10 -> beta.11 changedEqual's
signature and removedisType.f), so an exact version makes the next bump a reviewable
PR instead of something a lockfile refresh does silently.Breaking: the Node floor moves from
>= 14.16to>= 20.type-plus8 depends on
unpartial@^1.0.7, which declaresengines: { node: '>= 20' }.@unional/async-context
and@unional/gizmocarrytype-plusas a runtimedependency(its types are re-exported
in their emitted.d.ts), so their actual runtime floor was already 20 as of their last
publish — this only makes the declaredenginesfield honest.async-fphas no direct
runtime dependency ontype-plus(it's a devDependency there, and none of its own emitted
declarations reference it), but it depends on@unional/async-contextand@unional/gizmo
at runtime, so its effective floor moves too. Because narrowing supported Node is breaking
for consumers regardless of which path pulls it in, all three packages takemajor.Downstream value:
@unional/gizmo@2.3.0was found, during a sibling sweep of
justland/just-web-react, published on an oldtype-plus, contributing a stale copy to
consumers' dependency trees. A fresh@unional/gizmorelease from this repo fixes that at
the source formocktomataandjustland/just-web(via@unional/gizmo), both of which
consume this repo mid-graph.assertronmoves11.5.3->11.6.0andiso-error/satisfier/tersifypick up their
latest patches as a side effect of exempting first-party packages from the 24h release-age
soak (seepnpm-workspace.yaml) — without the exemption,assertron@11.5.2(declaring the
oldertype-plus: ^7.6.2/tersify: ^3.12.1) would have been silently resolved instead,
duplicating both packages in the tree.
async-fp@9.0.17
Patch Changes
- Updated dependencies [c19caa2]
- @unional/async-context@9.0.17
- @unional/gizmo@2.3.5
@unional/gizmo@2.3.5
Patch Changes
-
c19caa2: Depend on
type-plus@^8.0.0-beta.10— back on the 8.x line, as a range rather than an exact pin.The previous release moved these packages to
^7.6.2. That changed the major line when the actual defect was the shape of the dependency, not the line:8.0.0-beta.8was pinned exactly, so it could never resolve forward to the upstream fix.type-plus8.x is the line these packages are built against and the one their maintainer is actively developing, so they stay on it.^8.0.0-beta.10resolves to>=8.0.0-beta.10 <9.0.0-0, so the CJS packaging fix in8.0.0-beta.10—cjs/package.json={"type": "commonjs"}, without which Node parses type-plus's CommonJS build as ESM andrequire()of these packages throws (#366) — and every later 8.x release flow in on their own.No source change:
8.0.0-beta.10's root barrel is byte-identical to8.0.0-beta.8's, so every symbol these packages use (AnyFunction,KeyTypes,LeftJoin,RequiredKeys,assertType,isType,testType) resolves exactly as before, with no local shims.require()of both built packages is verified against the resolved8.0.0-beta.10tree.
@unional/async-context@9.0.17
Patch Changes
-
c19caa2: Depend on
type-plus@^8.0.0-beta.10— back on the 8.x line, as a range rather than an exact pin.The previous release moved these packages to
^7.6.2. That changed the major line when the actual defect was the shape of the dependency, not the line:8.0.0-beta.8was pinned exactly, so it could never resolve forward to the upstream fix.type-plus8.x is the line these packages are built against and the one their maintainer is actively developing, so they stay on it.^8.0.0-beta.10resolves to>=8.0.0-beta.10 <9.0.0-0, so the CJS packaging fix in8.0.0-beta.10—cjs/package.json={"type": "commonjs"}, without which Node parses type-plus's CommonJS build as ESM andrequire()of these packages throws (#366) — and every later 8.x release flow in on their own.No source change:
8.0.0-beta.10's root barrel is byte-identical to8.0.0-beta.8's, so every symbol these packages use (AnyFunction,KeyTypes,LeftJoin,RequiredKeys,assertType,isType,testType) resolves exactly as before, with no local shims.require()of both built packages is verified against the resolved8.0.0-beta.10tree.
async-fp@9.0.16
Patch Changes
- Updated dependencies [fc6d022]
- @unional/async-context@9.0.16
- @unional/gizmo@2.3.4
async-fp@9.0.15
Patch Changes
-
defa0ac: Build with tsdown instead of
tsc+buddy ts build cjs.Every path named in
exportskeeps its location and contents. Two differences in the
tarball are worth naming: modules that are pure re-exports (index,testing,
gizmo_testing) no longer ship.js.map/.d.ts.map, and the type-onlytypes
module no longer emits an emptytypes.js.@unional/async-contextalso gains small
_virtual/runtime helper files, which is how the ES2020 target now downlevels its
private class fields. -
Updated dependencies [defa0ac]
- @unional/async-context@9.0.15
- @unional/gizmo@2.3.3
async-fp@9.0.14
@unional/gizmo@2.3.4
Patch Changes
-
fc6d022: Depend on
type-plus@^7.6.2instead of pinning8.0.0-beta.8exactly.Fixes
require()of these packages (#366).type-plus@8.0.0-beta.8is"type": "module"and shipscjs/without a{"type":"commonjs"}marker, so Node parses its CommonJS output as ESM and the entry throws. The exact pin meant consumers could not resolve forward to the upstream fix in8.0.0-beta.10.type-plus@latestis7.6.2, which ships thecjs/package.jsonmarker correctly; whether to move to the 8.x line stays a separate decision.Type-level only — the emitted
.js,.d.tsand source maps are byte-identical under both versions, and every symbol used (AnyFunction,KeyTypes,LeftJoin,RequiredKeys,assertType,isType,testType) resolves from the 7.6.2 root barrel unchanged.