#4847c18fa8 Thanks @mattiamanzati! - Fix edge cases in missedPipeableOpportunity diagnostic where it incorrectly flagged valid code patterns. The diagnostic now properly:
Excludes pipe function calls from chain detection
Ignores chains where the function returns a callable type (avoiding false positives for higher-order functions like Schedule.whileOutput)
#4829695bdf Thanks @mattiamanzati! - Fix missedPipeableOpportunity diagnostic to correctly detect nested function call chains
The diagnostic now properly identifies when nested function calls can be converted to pipeable style. Previously, the chain detection logic incorrectly tracked parent-child relationships, causing false positives. This fix ensures that only valid pipeable chains are reported, such as toString(double(addOne(5))) which can be refactored to addOne(5).pipe(double, toString).
Example:
// Before: incorrectly flagged or missed
identity(Schema.decodeUnknown(MyStruct)({x: 42,y: 42}));// After: correctly handles complex nested calls
toString(double(addOne(5)));// ✓ Now correctly detected as pipeable
#4789a9d5f9 Thanks @mattiamanzati! - Add runEffectInsideEffect diagnostic to warn when using Effect.runSync, Effect.runPromise, Effect.runFork, or Effect.runCallback inside an Effect context (such as Effect.gen, Effect.fn, or Effect.fnUntraced).
Running effects inside effects is generally not recommended as it breaks the composability of the Effect system. Instead, developers should extract the Runtime and use Runtime.runSync, Runtime.runPromise, etc., or restructure their code to avoid running effects inside effects.
#480f1a0ece Thanks @mattiamanzati! - Add schemaUnionOfLiterals diagnostic to warn when using Schema.Union with multiple Schema.Literal calls that can be simplified to a single Schema.Literal call.
This diagnostic helps improve code readability and maintainability by suggesting a more concise syntax for union of literals.
Example:
// ❌ Will trigger diagnostic
exportconstStatus=Schema.Union(Schema.Literal("A"),Schema.Literal("B"));// ✅ Simplified approach
exportconstStatus=Schema.Literal("A","B");
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| [@effect/language-service](https://github.com/Effect-TS/language-service) | [`^0.54.0` -> `^0.55.0`](https://renovatebot.com/diffs/npm/@effect%2flanguage-service/0.54.0/0.55.2) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
| [@effect/platform](https://effect.website) ([source](https://github.com/Effect-TS/effect/tree/HEAD/packages/platform)) | [`^0.92.1` -> `^0.93.0`](https://renovatebot.com/diffs/npm/@effect%2fplatform/0.92.1/0.93.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
| [@effect/platform-browser](https://effect.website) ([source](https://github.com/Effect-TS/effect/tree/HEAD/packages/platform-browser)) | [`^0.72.0` -> `^0.73.0`](https://renovatebot.com/diffs/npm/@effect%2fplatform-browser/0.72.0/0.73.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) |
---
### Release Notes
<details>
<summary>Effect-TS/language-service (@​effect/language-service)</summary>
### [`v0.55.2`](https://github.com/Effect-TS/language-service/blob/HEAD/CHANGELOG.md#0552)
[Compare Source](https://github.com/Effect-TS/language-service/compare/v0.55.1...v0.55.2)
##### Patch Changes
- [#​484](https://github.com/Effect-TS/language-service/pull/484) [`7c18fa8`](https://github.com/Effect-TS/language-service/commit/7c18fa8b08c6e6cf0914a3ac140c8e9710868eb5) Thanks [@​mattiamanzati](https://github.com/mattiamanzati)! - Fix edge cases in missedPipeableOpportunity diagnostic where it incorrectly flagged valid code patterns. The diagnostic now properly:
- Excludes `pipe` function calls from chain detection
- Ignores chains where the function returns a callable type (avoiding false positives for higher-order functions like `Schedule.whileOutput`)
### [`v0.55.1`](https://github.com/Effect-TS/language-service/blob/HEAD/CHANGELOG.md#0551)
[Compare Source](https://github.com/Effect-TS/language-service/compare/v0.55.0...v0.55.1)
##### Patch Changes
- [#​482](https://github.com/Effect-TS/language-service/pull/482) [`9695bdf`](https://github.com/Effect-TS/language-service/commit/9695bdfec4412569150a5332405a1ec16b4fa085) Thanks [@​mattiamanzati](https://github.com/mattiamanzati)! - Fix `missedPipeableOpportunity` diagnostic to correctly detect nested function call chains
The diagnostic now properly identifies when nested function calls can be converted to pipeable style. Previously, the chain detection logic incorrectly tracked parent-child relationships, causing false positives. This fix ensures that only valid pipeable chains are reported, such as `toString(double(addOne(5)))` which can be refactored to `addOne(5).pipe(double, toString)`.
Example:
```typescript
// Before: incorrectly flagged or missed
identity(Schema.decodeUnknown(MyStruct)({ x: 42, y: 42 }));
// After: correctly handles complex nested calls
toString(double(addOne(5))); // ✓ Now correctly detected as pipeable
```
### [`v0.55.0`](https://github.com/Effect-TS/language-service/blob/HEAD/CHANGELOG.md#0550)
[Compare Source](https://github.com/Effect-TS/language-service/compare/v0.54.0...v0.55.0)
##### Minor Changes
- [#​478](https://github.com/Effect-TS/language-service/pull/478) [`9a9d5f9`](https://github.com/Effect-TS/language-service/commit/9a9d5f9486df177dd2e9d9cf63e97569b0436de0) Thanks [@​mattiamanzati](https://github.com/mattiamanzati)! - Add `runEffectInsideEffect` diagnostic to warn when using `Effect.runSync`, `Effect.runPromise`, `Effect.runFork`, or `Effect.runCallback` inside an Effect context (such as `Effect.gen`, `Effect.fn`, or `Effect.fnUntraced`).
Running effects inside effects is generally not recommended as it breaks the composability of the Effect system. Instead, developers should extract the Runtime and use `Runtime.runSync`, `Runtime.runPromise`, etc., or restructure their code to avoid running effects inside effects.
Example:
```typescript
// ❌ Will trigger diagnostic
export const program = Effect.gen(function* () {
const data = yield* Effect.succeed(42);
const result = Effect.runSync(Effect.sync(() => data * 2)); // Not recommended
return result;
});
// ✅ Proper approach - extract runtime
export const program = Effect.gen(function* () {
const data = yield* Effect.succeed(42);
const runtime = yield* Effect.runtime();
const result = Runtime.runSync(runtime)(Effect.sync(() => data * 2));
return result;
});
// ✅ Better approach - compose effects
export const program = Effect.gen(function* () {
const data = yield* Effect.succeed(42);
const result = yield* Effect.sync(() => data * 2);
return result;
});
```
- [#​480](https://github.com/Effect-TS/language-service/pull/480) [`f1a0ece`](https://github.com/Effect-TS/language-service/commit/f1a0ece931826bd40c35118833b3be2ae6c90ab7) Thanks [@​mattiamanzati](https://github.com/mattiamanzati)! - Add `schemaUnionOfLiterals` diagnostic to warn when using `Schema.Union` with multiple `Schema.Literal` calls that can be simplified to a single `Schema.Literal` call.
This diagnostic helps improve code readability and maintainability by suggesting a more concise syntax for union of literals.
Example:
```typescript
// ❌ Will trigger diagnostic
export const Status = Schema.Union(Schema.Literal("A"), Schema.Literal("B"));
// ✅ Simplified approach
export const Status = Schema.Literal("A", "B");
```
##### Patch Changes
- [#​481](https://github.com/Effect-TS/language-service/pull/481) [`160e018`](https://github.com/Effect-TS/language-service/commit/160e018c6f2eef21d537cc5e4f2666a43beb4724) Thanks [@​mattiamanzati](https://github.com/mattiamanzati)! - Update Effect ecosystem dependencies to latest versions:
- `@effect/cli`: 0.71.0 → 0.72.0
- `@effect/platform`: 0.92.1 → 0.93.0
- `@effect/platform-node`: 0.98.3 → 0.99.0
- `@effect/printer-ansi`: 0.46.0 → 0.47.0
- `@effect/rpc`: 0.71.0 → 0.72.0
- `effect`: Updated to stable version 3.19.0
Also updated development tooling dependencies:
- `vitest`: 3.2.4 → 4.0.6
- `@vitest/coverage-v8`: 3.2.4 → 4.0.6
- TypeScript ESLint packages: 8.46.1 → 8.46.3
- Various other minor dependency updates
</details>
<details>
<summary>Effect-TS/effect (@​effect/platform)</summary>
### [`v0.93.0`](https://github.com/Effect-TS/effect/blob/HEAD/packages/platform/CHANGELOG.md#0930)
[Compare Source](https://github.com/Effect-TS/effect/compare/@effect/platform@0.92.1...@effect/platform@0.93.0)
##### Patch Changes
- [#​5606](https://github.com/Effect-TS/effect/pull/5606) [`24a1685`](https://github.com/Effect-TS/effect/commit/24a1685c70a9ed157468650f95a5c3da3f2c2433) Thanks [@​tim-smart](https://github.com/tim-smart)! - expose Layer output in HttpLayerRouter.serve
- Updated dependencies \[[`3c15d5f`](https://github.com/Effect-TS/effect/commit/3c15d5f99fb8d8470a00c5a33d9ba3cac89dfe4c), [`3863fa8`](https://github.com/Effect-TS/effect/commit/3863fa89f61e63e5529fd961e37333bddf7db64a), [`2a03c76`](https://github.com/Effect-TS/effect/commit/2a03c76c2781ca7e9e228e838eab2eb0d0795b1d), [`24a1685`](https://github.com/Effect-TS/effect/commit/24a1685c70a9ed157468650f95a5c3da3f2c2433)]:
- effect\@​3.19.0
</details>
<details>
<summary>Effect-TS/effect (@​effect/platform-browser)</summary>
### [`v0.73.0`](https://github.com/Effect-TS/effect/blob/HEAD/packages/platform-browser/CHANGELOG.md#0730)
[Compare Source](https://github.com/Effect-TS/effect/compare/@effect/platform-browser@0.72.0...@effect/platform-browser@0.73.0)
##### Patch Changes
- Updated dependencies \[[`3c15d5f`](https://github.com/Effect-TS/effect/commit/3c15d5f99fb8d8470a00c5a33d9ba3cac89dfe4c), [`3863fa8`](https://github.com/Effect-TS/effect/commit/3863fa89f61e63e5529fd961e37333bddf7db64a), [`2a03c76`](https://github.com/Effect-TS/effect/commit/2a03c76c2781ca7e9e228e838eab2eb0d0795b1d), [`24a1685`](https://github.com/Effect-TS/effect/commit/24a1685c70a9ed157468650f95a5c3da3f2c2433)]:
- effect\@​3.19.0
- [@​effect/platform](https://github.com/effect/platform)@​0.93.0
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNjkuMyIsInVwZGF0ZWRJblZlciI6IjQxLjE3MS40IiwidGFyZ2V0QnJhbmNoIjoibmV4dCIsImxhYmVscyI6W119-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
^0.54.0->^0.55.0^0.92.1->^0.93.0^0.72.0->^0.73.0Release Notes
Effect-TS/language-service (@effect/language-service)
v0.55.2Compare Source
Patch Changes
7c18fa8Thanks @mattiamanzati! - Fix edge cases in missedPipeableOpportunity diagnostic where it incorrectly flagged valid code patterns. The diagnostic now properly:pipefunction calls from chain detectionSchedule.whileOutput)v0.55.1Compare Source
Patch Changes
#482
9695bdfThanks @mattiamanzati! - FixmissedPipeableOpportunitydiagnostic to correctly detect nested function call chainsThe diagnostic now properly identifies when nested function calls can be converted to pipeable style. Previously, the chain detection logic incorrectly tracked parent-child relationships, causing false positives. This fix ensures that only valid pipeable chains are reported, such as
toString(double(addOne(5)))which can be refactored toaddOne(5).pipe(double, toString).Example:
v0.55.0Compare Source
Minor Changes
#478
9a9d5f9Thanks @mattiamanzati! - AddrunEffectInsideEffectdiagnostic to warn when usingEffect.runSync,Effect.runPromise,Effect.runFork, orEffect.runCallbackinside an Effect context (such asEffect.gen,Effect.fn, orEffect.fnUntraced).Running effects inside effects is generally not recommended as it breaks the composability of the Effect system. Instead, developers should extract the Runtime and use
Runtime.runSync,Runtime.runPromise, etc., or restructure their code to avoid running effects inside effects.Example:
#480
f1a0eceThanks @mattiamanzati! - AddschemaUnionOfLiteralsdiagnostic to warn when usingSchema.Unionwith multipleSchema.Literalcalls that can be simplified to a singleSchema.Literalcall.This diagnostic helps improve code readability and maintainability by suggesting a more concise syntax for union of literals.
Example:
Patch Changes
#481
160e018Thanks @mattiamanzati! - Update Effect ecosystem dependencies to latest versions:@effect/cli: 0.71.0 → 0.72.0@effect/platform: 0.92.1 → 0.93.0@effect/platform-node: 0.98.3 → 0.99.0@effect/printer-ansi: 0.46.0 → 0.47.0@effect/rpc: 0.71.0 → 0.72.0effect: Updated to stable version 3.19.0Also updated development tooling dependencies:
vitest: 3.2.4 → 4.0.6@vitest/coverage-v8: 3.2.4 → 4.0.6Effect-TS/effect (@effect/platform)
v0.93.0Compare Source
Patch Changes
#5606
24a1685Thanks @tim-smart! - expose Layer output in HttpLayerRouter.serveUpdated dependencies [
3c15d5f,3863fa8,2a03c76,24a1685]:Effect-TS/effect (@effect/platform-browser)
v0.73.0Compare Source
Patch Changes
3c15d5f,3863fa8,2a03c76,24a1685]:Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.