Skip to content

Effect

4.0.0-beta.7

Patch Changes

  • #1366 a2bda6d Thanks @tim-smart! - rename SqlSchema.findOne* apis

  • #1360 1f95a2b Thanks @tim-smart! - Add Schedule.jittered to randomize schedule delays between 80% and 120% of the original delay.

  • #1364 a8d5e79 Thanks @gcanti! - Schema: avoid eager resolution for type-level helpers, closes #1332

  • #1369 a5386ba Thanks @tim-smart! - align HttpClientRequest constructors with http method names

  • #1369 a5386ba Thanks @tim-smart! - remove body restriction for HttpClientRequest’s

  • #1358 06d8a03 Thanks @tim-smart! - Add LogLevel.isEnabled for checking a log level against References.MinimumLogLevel.

  • #1363 8caac76 Thanks @tim-smart! - rename DurationInput to Duration.Input

  • #1363 8caac76 Thanks @tim-smart! - DateTime.distance now returns a Duration

  • #1367 f9e883e Thanks @tim-smart! - refactor SqlSchema apis

  • #1363 8caac76 Thanks @tim-smart! - remove rpc client nesting to improve type performance

4.0.0-beta.6

Patch Changes

  • #1338 3247da2 Thanks @Leka74! - Add showOperationId to HttpApiScalar.ScalarConfig.

  • #1326 f205705 Thanks @gcanti! - Schema: add BigDecimal schema with comparison checks (isGreaterThanBigDecimal, isGreaterThanOrEqualToBigDecimal, isLessThanBigDecimal, isLessThanOrEqualToBigDecimal, isBetweenBigDecimal).

  • #1328 f35022c Thanks @gcanti! - Schema: add DateTimeZoned, TimeZoneOffset, TimeZoneNamed, and TimeZone schemas.

  • #1325 8622721 Thanks @KhraksMamtsov! - Make Data.Class, Data.TaggedClass, and Cause.YieldableError pipeable.

  • #1323 fc660ab Thanks @KhraksMamtsov! - Port Pipeable.Class from v3.

    class MyClass extends Pipeable.Class() {
    constructor(public a: number) {
    super();
    }
    methodA() {
    return this.a;
    }
    }
    console.log(new MyClass(2).pipe((x) => x.methodA())); // 2
    class A {
    constructor(public a: number) {}
    methodA() {
    return this.a;
    }
    }
    class B extends Pipeable.Class(A) {
    constructor(private b: string) {
    super(b.length);
    }
    methodB() {
    return [this.b, this.methodA()];
    }
    }
    console.log(new B("pipe").pipe((x) => x.methodB())); // ['pipe', 4]
  • #1337 f37dc33 Thanks @IMax153! - Encoding: consolidate effect/encoding sub-modules (Base64, Base64Url, Hex, EncodingError) into a top-level Encoding module. Functions are now prefixed: encodeBase64, decodeBase64, encodeHex, decodeHex, etc. The effect/encoding sub-path export is removed.

  • #1351 3662f32 Thanks @tim-smart! - add Schema.HashSet for decoding and encoding HashSet values.

  • #1336 a7d436f Thanks @mikearnaldi! - Extract Semaphore and Latch into their own modules.

    Semaphore.make / Semaphore.makeUnsafe replace Effect.makeSemaphore / Effect.makeSemaphoreUnsafe. Latch.make / Latch.makeUnsafe replace Effect.makeLatch / Effect.makeLatchUnsafe.

    Merge PartitionedSemaphore into Semaphore as Semaphore.Partitioned, Semaphore.makePartitioned, Semaphore.makePartitionedUnsafe.

  • #1345 6856a41 Thanks @tim-smart! - allocate less effects when reading a file

  • #1350 8c417d0 Thanks @tim-smart! - Add “Previously Known As” JSDoc migration notes for the Semaphore and Latch APIs extracted from Effect.

  • #1355 5419570 Thanks @tim-smart! - ensure non-middleware http errors are correctly handled

  • #1352 449c5ed Thanks @tim-smart! - Add Schema.HashMap for decoding and encoding HashMap values.

  • #1347 4b5ec12 Thanks @tim-smart! - use .toJSON for default .toString implementations

  • #1329 df87937 Thanks @gcanti! - Schema: extract shared dateTimeUtcFromString transformation for DateTimeUtc and DateTimeUtcFromString.

  • #1318 5dbfca8 Thanks @gcanti! - Schema: rename $ suffix to $ prefix for type-level identifiers that conflict with built-in names (Array$$Array, Record$$Record, ReadonlyMap$$ReadonlyMap, ReadonlySet$$ReadonlySet).

  • #1356 e629497 Thanks @tim-smart! - allow passing void for request constructors

  • #1348 981c991 Thanks @tim-smart! - Fix Schedule.andThenResult to initialize the right schedule only after the left schedule completes. This removes the extra immediate transition tick and correctly completes when the right schedule is finite.

  • #1320 1ca2ed6 Thanks @gcanti! - Struct: add Struct.Record constructor for creating records with the given keys and value.

  • #1342 45722bd Thanks @cevr! - Schema.TaggedErrorClass, Schema.Class, and Schema.ErrorClass constructors now allow omitting the props argument when all fields have constructor defaults (e.g. new MyError() instead of new MyError({})).

  • #1322 eb2a85e Thanks @tim-smart! - Add a requireServicesAt option to PersistedCache.make so lookup-service requirements can be configured like Cache.

4.0.0-beta.5

Patch Changes

  • #1317 f6e133e Thanks @tim-smart! - support tag unions in Effect.catchTag/Reason

  • #1314 e3893cc Thanks @zeyuri! - Fix Atom.serializable encode/decode for wire transfer.

    Use Schema.toCodecJson instead of Schema.encodeSync/Schema.decodeSync directly, so that encoded values are plain JSON objects that survive serialization roundtrips (JSON, seroval, etc.). Previously, AsyncResult.Schema encode produced instances with custom prototypes that were lost after wire transfer, causing decode to fail with “Expected AsyncResult” errors during SSR hydration.

  • #1315 a88e206 Thanks @tim-smart! - add Filter.reason api

  • #1314 e3893cc Thanks @zeyuri! - Port ReactHydration to effect-smol.

    Add Hydration module to effect/unstable/reactivity with dehydrate, hydrate, and toValues for SSR state serialization. Add HydrationBoundary React component to @effect/atom-react with two-phase hydration (new atoms in render, existing atoms after commit).

4.0.0-beta.4

Patch Changes

  • #1308 c5a18ef Thanks @tim-smart! - improve Schema.TaggedUnion .match auto completion

  • #1310 bc6b885 Thanks @tim-smart! - Add Schedule.duration, a one-shot schedule that waits for the provided duration and then completes.

4.0.0-beta.3

Patch Changes

  • #1303 3a0cf36 Thanks @tim-smart! - add Result.failVoid

  • #1307 c4da328 Thanks @tim-smart! - Add HttpClientRequest.bodyFormDataRecord and HttpBody.makeFormDataRecord helpers for creating multipart form bodies from plain records.

4.0.0-beta.2

Patch Changes

  • #1302 a22ce73 Thanks @tim-smart! - allow undefined for VariantSchema.Overridable input

  • #1299 ebdabf7 Thanks @tim-smart! - Port SqlSchema.findOne from effect v3 to return Option on empty results and add SqlSchema.single for the fail-on-empty behavior.

  • #1298 8f663bb Thanks @tim-smart! - Add Effect.catchNoSuchElement, a renamed port of v3 Effect.optionFromOptional that converts NoSuchElementError failures into Option.none.

4.0.0-beta.1

Patch Changes

  • #1293 0fecf70 Thanks @mikearnaldi! - Add Effect.filter support for synchronous Filter.Filter overloads and correctly handle non-effect Result return values at runtime.

  • #1294 709569e Thanks @tim-smart! - Fix Prompt.text and related text prompts to initialize from default values so users can edit the default input directly.

4.0.0-beta.0

Major Changes