Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/add-cron-prev.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"effect": minor
---

Add `Cron.prev` and reverse iteration support, aligning next/prev lookup tables, fixing DST handling symmetry, and expanding cron backward/forward test coverage.
5 changes: 5 additions & 0 deletions .changeset/dry-cycles-shake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"effect": minor
---

Add type-level utils to asserting layer types
17 changes: 17 additions & 0 deletions .changeset/dynamic-idle-ttl-rcmap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"effect": minor
---

RcMap: support dynamic `idleTimeToLive` values per key

The `idleTimeToLive` option can now be a function that receives the key and returns a duration, allowing different TTL values for different resources.

```ts
const map = yield* RcMap.make({
lookup: (key: string) => acquireResource(key),
idleTimeToLive: (key: string) => {
if (key.startsWith("premium:")) return Duration.minutes(10)
return Duration.minutes(1)
}
})
```
17 changes: 17 additions & 0 deletions .changeset/fast-shoes-appear.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@effect/opentelemetry": patch
"effect": patch
---

Add logs to first propagated span, in the following case before this fix the log would not be added to the `p` span because `Effect.fn` adds a fake span for the purpose of adding a stack frame.

```ts
import { Effect } from "effect"

const f = Effect.fn(function* () {
yield* Effect.logWarning("FooBar")
return yield* Effect.fail("Oops")
})

const p = f().pipe(Effect.withSpan("p"))
```
5 changes: 5 additions & 0 deletions .changeset/violet-years-stare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"effect": minor
---

Fix annotateCurrentSpan, add Effect.currentPropagatedSpan
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,10 @@
"workerd"
],
"onlyBuiltDependencies": [
"better-sqlite3"
"@parcel/watcher",
"better-sqlite3",
"sharp",
"unrs-resolver"
]
}
}
28 changes: 27 additions & 1 deletion packages/effect/dtslint/Layer.tst.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Layer, Schedule } from "effect"
import { Context, Layer, Schedule } from "effect"
import { describe, expect, it } from "tstyche"

interface In1 {}
Expand All @@ -19,6 +19,8 @@ interface Out3 {}

declare const layer3: Layer.Layer<Out3, Err3, In3>

class TestService1 extends Context.Tag("TestService1")<TestService1, {}>() {}

describe("Layer", () => {
it("merge", () => {
expect(Layer.merge).type.not.toBeCallableWith()
Expand All @@ -40,4 +42,28 @@ describe("Layer", () => {
expect(Layer.retry(layer1, Schedule.recurs(1))).type.toBe<Layer.Layer<Out1, Err1, In1>>()
expect(layer1.pipe(Layer.retry(Schedule.recurs(1)))).type.toBe<Layer.Layer<Out1, Err1, In1>>()
})

it("ensureSuccessType", () => {
expect(layer1.pipe(Layer.ensureSuccessType<Out1>())).type.toBe<Layer.Layer<Out1, Err1, In1>>()
})

it("ensureErrorType", () => {
const withoutError = Layer.succeed(TestService1, {})
expect(withoutError.pipe(Layer.ensureErrorType<never>())).type.toBe<Layer.Layer<TestService1, never, never>>()

const withError = layer1
expect(withError.pipe(Layer.ensureErrorType<Err1>())).type.toBe<Layer.Layer<Out1, Err1, In1>>()
})

it("ensureRequirementsType", () => {
const withoutRequirements = Layer.succeed(TestService1, {})
expect(withoutRequirements.pipe(Layer.ensureRequirementsType<never>())).type.toBe<
Layer.Layer<TestService1, never, never>
>()

const withRequirement = layer1
expect(withRequirement.pipe(Layer.ensureRequirementsType<In1>())).type.toBe<
Layer.Layer<Out1, Err1, In1>
>()
})
})
Loading