effect@4.0.0-beta.79
Pre-releasePatch Changes
-
#2364
b9704dcThanks @mikearnaldi! - Fix module-level side effects that defeated bundler tree-shaking.Bare top-level statements cannot be
#__PURE__-annotated by the build, so
bundlers must retain them and everything they reference, even in bundles that
never use the code:Option: the standaloneObject.defineProperty(SomeProto, "valueOrUndefined", ...)
statement anchored the wholeOptionproto chain into every bundle. It is
now folded into theSomeProtoinitializer.Headers: same pattern withObject.defineProperties(Proto, ...), folded
into the initializer.Logger: module-levelprocess.stdout.isTTYproperty reads (potential
getters, never droppable) moved insideconsolePretty.Utils: wheninternalCallwas unused, its dropped binding left behind a
retained initializer tail (standard/forcedprobe with computed property
reads). The selection is now wrapped in a single pure-annotated call.
A minimal
Effect.succeed(123).pipe(Effect.runFork)bundle shrinks by ~1.3%
gzipped; bundles that don't useOptionorHeadersno longer pay for them. -
#2339
a207113Thanks @tim-smart! - Fix EntityManager defect restarts so in-flight requests are replayed instead of being dropped when the old entity scope is interrupted. -
#2362
5e9b9e2Thanks @fubhy! - Fix Graph traversal and shortest-path algorithms to traverse undirected edges independently of their stored source/target orientation. -
#2366
7c128aeThanks @IMax153! - Fix string seed encoding in Random.withSeed so short, trailing, and astral UTF-8 bytes affect deterministic streams. -
#2352
0ada457Thanks @alvarosevilla95! - Fix the RedisRateLimiterStoretoken-bucket failing with opaque errors under memory pressure: it now writes its keys with a TTL and guards against a missing refill timestamp. -
#2359
d7cc5a2Thanks @gcanti! - FixStructkey renaming andSchema.encodeKeysto support symbol keys, and reject duplicate encoded keys. -
#2365
aad63beThanks @gcanti! - FixSchemaencoding so container-level checks are validated against the decoded value instead of the encoded output.Disallow adding checks directly to
Schema.suspend(...); add the checks to the suspended schema instead.Fix
StructWithRestso index signatures do not re-parse or overwrite fixed properties. -
#2342
09809f6Thanks @gcanti! - Use generic ordered constraints for schema arbitrary derivation.Range checks such as
isGreaterThan,isLessThan, andisBetweennow populatectx.constraints.ordered
instead of type-specific range fields onnumber,date, orbigintconstraints. CustomtoArbitrary
annotations that read range constraints should migrate toctx.constraints.ordered.This also fixes BigDecimal arbitrary generation by adapting decimal bounds to the generated scale, avoiding
invalid fast-check bigint ranges for narrow decimal intervals. -
#2368
2fddda5Thanks @IMax153! - Encode HTTP API client path parameters when building request URLs. -
#2348
5f21768Thanks @gcanti! - Update Schema arbitrary derivation to use the new filter metadata, candidate generation, optional derivation reports, recursion-aware generation, and the renamedOrderedConstraint<T>model.Migration from the previous v4 API:
- Replace filter annotations from
toArbitraryConstraint: constrainttoarbitrary: { constraint }. When a filter cannot be described as a constraint, usearbitrary: { candidate }to add a weighted source that is still checked by the filter. - Replace bucketed constraints with the flat
Schema.Annotations.ToArbitrary.Constraintshape:string.minLength,array.minLength, object property counts, collection sizes ->minLengthstring.maxLength,array.maxLength, object property counts, collection sizes ->maxLengthstring.patterns->patternsnumber.isInteger->integernumber.noNaN->noNaNnumber.noDefaultInfinity->noInfinitydate.noInvalidDate->validarray.comparatorfor uniqueness ->uniqueusing Effect equalityordered.min/minExcluded/max/maxExcluded->ordered.minimum/exclusiveMinimum/maximum/exclusiveMaximum
- In arbitrary hooks, read
context.constraintinstead ofcontext.constraints. Replacecontext.isSuspendwithcontext.recursion; when combining finite and recursive branches, passcontext.recursiontofc.oneofwith the finite branch first. - Generic declaration hooks now receive type parameters as
{ arbitrary, terminal }. Atomic declarations may still return a bareFastCheck.Arbitrary<T>, but generic declarations should return{ arbitrary, terminal }when they can preserve a finite terminal branch. Schema.toArbitrary(schema, { report: true })now returns{ value, report }; without{ report: true }, it keeps returning the arbitrary directly.Schema.toArbitraryLazyalways returns a lazy arbitrary.
- Replace filter annotations from
-
#2343
f27003eThanks @MohanedMashaly! - Add meta-var that shows log level and bash options in command line.