Skip to content
This repository was archived by the owner on Jan 6, 2025. It is now read-only.

Commit a8ab60c

Browse files
authored
Change effect type parameters (#35)
* Change effect type parameters * Update effect requirements in readme
1 parent db2e6eb commit a8ab60c

File tree

9 files changed

+29
-25
lines changed

9 files changed

+29
-25
lines changed

.changeset/olive-carrots-return.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"pothos-plugin-effect": minor
3+
---
4+
5+
Change type parameters

packages/pothos-plugin-effect/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Seamless integration between the [Pothos GraphQL](https://pothos-graphql.dev/) a
88

99
## Getting Started
1010

11-
You can use `Effect.Effect<R, E, A>` within resolver functions using `t.effect`. and that's it.
11+
You can use `Effect.Effect<A, E, R>` within resolver functions using `t.effect`. and that's it.
1212

1313
```ts
1414
import EffectPlugin from "pothos-plugin-effect";
@@ -37,7 +37,7 @@ yarn add pothos-plugin-effect effect
3737
## Requirements
3838

3939
- `@pothos/core^3`
40-
- `effect>=2.2.0`
40+
- `effect>=2.3.0`
4141

4242
## Key Features
4343

packages/pothos-plugin-effect/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@
5050
"better-sqlite3": "^9.4.0",
5151
"drizzle-kit": "^0.20.14",
5252
"drizzle-orm": "^0.29.3",
53-
"effect": "2.2.2",
53+
"effect": "^2.3.3",
5454
"nanobundle": "2.0.0",
5555
"prisma": "^5.9.1",
5656
"typescript": "5.4.0-beta",
5757
"vitest": "1.2.2"
5858
},
5959
"peerDependencies": {
6060
"@pothos/core": "^3",
61-
"effect": ">=2.2.0 <3",
61+
"effect": ">=2.3.0 <3",
6262
"graphql": "^16 || ^17"
6363
},
6464
"dependencies": {

packages/pothos-plugin-effect/src/e2e.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ const db = drizzle(sqlite, { schema: drizzleSchema });
2424
const prisma = new PrismaClient();
2525

2626
interface EntityService {
27-
getEntity(): Effect.Effect<never, Error, { id: number }>;
27+
getEntity(): Effect.Effect<{ id: number }, Error>;
2828
}
2929

30-
const EntityService = Context.Tag<EntityService>('EntityService');
30+
const EntityService = Context.GenericTag<EntityService>('EntityService');
3131

3232
const EntityServiceLive = Layer.succeed(EntityService, {
3333
getEntity: () => Effect.succeed({ id: 1 }),

packages/pothos-plugin-effect/src/handleExit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Cause, Exit } from 'effect';
22

3-
export function handleExit<E, A>(exit: Exit.Exit<E, A>): A {
3+
export function handleExit<A, E>(exit: Exit.Exit<A, E>): A {
44
if (Exit.isFailure(exit)) {
55
const defect = Cause.squash(exit.cause);
66

packages/pothos-plugin-effect/src/runEffectFieldResult.test.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ import { Context, Effect, Layer, Option, Runtime, Scope, pipe } from 'effect';
22
import { expect, test } from 'vitest';
33
import { runEffectFieldResult } from './runEffectFieldResult.js';
44

5-
interface UserService {
6-
getUser(): Effect.Effect<never, Error, { id: number }>;
7-
findUser(
8-
id: number,
9-
): Effect.Effect<never, Error, Option.Option<{ id: number }>>;
10-
queryUsers(): Effect.Effect<never, Error, Option.Option<{ id: number }>[]>;
11-
}
12-
13-
const UserService = Context.Tag<UserService>('UserService');
5+
class UserService extends Context.Tag('UserService')<
6+
UserService,
7+
{
8+
getUser(): Effect.Effect<{ id: number }, Error>;
9+
findUser(id: number): Effect.Effect<Option.Option<{ id: number }>, Error>;
10+
queryUsers(): Effect.Effect<Option.Option<{ id: number }>[], Error>;
11+
}
12+
>() {}
1413

1514
const UserServiceLive = Layer.succeed(UserService, {
1615
getUser: () => Effect.succeed({ id: 1 }),

packages/pothos-plugin-effect/src/runEffectFieldResult.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { Effect, Runtime } from 'effect';
22
import { handleNullableValue } from './handleNullableValue.js';
33
import { handleExit } from './handleExit.js';
44

5-
export async function runEffectFieldResult<R, E, A>(
6-
effectFieldResult: Effect.Effect<R, E, A>,
5+
export async function runEffectFieldResult<A, E, R>(
6+
effectFieldResult: Effect.Effect<A, E, R>,
77
runtime: Runtime.Runtime<R>,
88
) {
99
const result = await Runtime.runPromiseExit(runtime)(effectFieldResult);

packages/pothos-plugin-effect/src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ export interface FieldOptions<
4747
E,
4848
A,
4949
>(
50-
effect: Effect.Effect<R, E, A>,
50+
effect: Effect.Effect<A, E, R>,
5151
): Promise<Awaited<InferEffectValueType<A>>>;
5252
}

yarn.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2146,10 +2146,10 @@ __metadata:
21462146
languageName: node
21472147
linkType: hard
21482148

2149-
"effect@npm:2.2.2":
2150-
version: 2.2.2
2151-
resolution: "effect@npm:2.2.2"
2152-
checksum: 10c0/438fcffcc8b7ff2a86dbb3df7e6ffb113c86581d36a137e21849749d1d6e84a099f37a83d2102358d45ebcf37314d7d38aef6c032ea4f4fd6f7a03954898f112
2149+
"effect@npm:^2.3.3":
2150+
version: 2.3.3
2151+
resolution: "effect@npm:2.3.3"
2152+
checksum: 10c0/bc25d9f723d4fab3234c3448e9b2c785101012949a7934f69ad39b6856abe70654d07a5cadeec84a8e7f2edea968cd2b671405c6a075a6734b49cdf3f63ca39b
21532153
languageName: node
21542154
linkType: hard
21552155

@@ -4421,7 +4421,7 @@ __metadata:
44214421
better-sqlite3: "npm:^9.4.0"
44224422
drizzle-kit: "npm:^0.20.14"
44234423
drizzle-orm: "npm:^0.29.3"
4424-
effect: "npm:2.2.2"
4424+
effect: "npm:^2.3.3"
44254425
nanobundle: "npm:2.0.0"
44264426
prisma: "npm:^5.9.1"
44274427
tiny-invariant: "npm:^1.3.1"
@@ -4430,7 +4430,7 @@ __metadata:
44304430
vitest: "npm:1.2.2"
44314431
peerDependencies:
44324432
"@pothos/core": ^3
4433-
effect: ">=2.2.0 <3"
4433+
effect: ">=2.3.0 <3"
44344434
graphql: ^16 || ^17
44354435
languageName: unknown
44364436
linkType: soft

0 commit comments

Comments
 (0)