@shivaedev/effect-trpc 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +22 -5
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/adapter.js +9 -1
  5. package/dist/adapter.js.map +1 -1
  6. package/dist/client/rejection.d.ts +1 -0
  7. package/dist/client/rejection.d.ts.map +1 -1
  8. package/dist/client/rejection.js +1 -1
  9. package/dist/client/rejection.js.map +1 -1
  10. package/dist/internal/procedure-types.d.ts +5 -5
  11. package/dist/internal/procedure-types.d.ts.map +1 -1
  12. package/dist/internal/runtime.d.ts.map +1 -1
  13. package/dist/internal/runtime.js +16 -15
  14. package/dist/internal/runtime.js.map +1 -1
  15. package/dist/procedure.d.ts +10 -6
  16. package/dist/procedure.d.ts.map +1 -1
  17. package/dist/procedure.js +17 -17
  18. package/dist/procedure.js.map +1 -1
  19. package/dist/rejection-formatter.d.ts.map +1 -1
  20. package/dist/rejection-formatter.js +11 -5
  21. package/dist/rejection-formatter.js.map +1 -1
  22. package/dist/rejection.d.ts +16 -5
  23. package/dist/rejection.d.ts.map +1 -1
  24. package/dist/rejection.js +3 -2
  25. package/dist/rejection.js.map +1 -1
  26. package/dist/request-signal.d.ts +0 -1
  27. package/dist/request-signal.d.ts.map +1 -1
  28. package/dist/request-signal.js +0 -1
  29. package/dist/request-signal.js.map +1 -1
  30. package/dist/testing/caller.js.map +1 -1
  31. package/dist/testing/types.d.ts +5 -5
  32. package/dist/testing/types.d.ts.map +1 -1
  33. package/dist/testing/vitest.d.ts.map +1 -1
  34. package/dist/testing/vitest.js +1 -1
  35. package/dist/testing/vitest.js.map +1 -1
  36. package/package.json +34 -36
  37. package/src/adapter.ts +18 -4
  38. package/src/client/rejection.ts +4 -1
  39. package/src/internal/procedure-types.ts +5 -5
  40. package/src/internal/runtime.ts +23 -21
  41. package/src/procedure.ts +30 -28
  42. package/src/rejection-formatter.ts +15 -5
  43. package/src/rejection.ts +18 -5
  44. package/src/request-signal.ts +0 -1
  45. package/src/testing/caller.ts +2 -2
  46. package/src/testing/types.ts +6 -6
  47. package/src/testing/vitest.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,50 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0 - 2026-10-04
4
+
5
+ ### Changed
6
+
7
+ - Validate packed consumers and executable bins through the shared workspace gate.
8
+ - The function members of the procedure builder types are declared as properties, so TypeScript checks their parameters strictly.
9
+
10
+ - Remove a JSDoc block, so the package passes the comment rules of `@shivaedev/quality`.
11
+
12
+ - Build with the `@shivaedev/quality` tsconfig presets, which target ESNext and allow only erasable TypeScript syntax, so classes declare their fields instead of using constructor parameter properties.
13
+
14
+ - Type-check with TypeScript 7 only. TypeScript 6 still builds the package.
15
+
16
+ - Lint and format with the `@shivaedev/quality` Biome preset through `quality lint` at the repository root, which replaces the package's `check` script.
17
+
18
+ - Run tests through the `@shivaedev/quality` Vitest projects, which take a test's environment from its file name. Type tests are named `*.typecheck.test.ts`.
19
+
20
+ - Keep `package.json` in sort-package-json key order, checked by `quality lint`.
21
+
22
+ ## 0.4.1 - 2026-09-26
23
+
24
+ ### Added
25
+
26
+ - Map the Platform `TooManyRequests` rejection to `TOO_MANY_REQUESTS`, which
27
+ tRPC sends as HTTP 429.
28
+ - Mark the `BadRequest` that `rejectionFormatter` sends for an input the
29
+ procedure's schema rejects with `invalidInput: true`, so a client can tell
30
+ input that did not parse from a declared `BadRequest` with a `field`. The
31
+ rest of the rejection is unchanged and still decodes as `BadRequest`.
32
+ `EncodedRejection`, and so `rejectionOf` and the router-typed
33
+ `TRPCClientError` data, type the mark as `invalidInput?: true`.
34
+
35
+ ### Changed
36
+
37
+ - Reserve `invalidInput` for that mark. `rejectWith` no longer accepts a schema
38
+ whose encoded value has an `invalidInput` field, and `rejectionFormatter`
39
+ strips the key from every declared rejection, which 0.4.0 sent as it was, so
40
+ a handler can neither fake the mark nor turn its rejection into a 500.
41
+ `rejectWith` also requires the encoded value to have a string `_tag`, which
42
+ sending the rejection already required at run time. Both checks happen at
43
+ compile time, so a schema with an encoded `invalidInput` field or without an
44
+ encoded string `_tag` no longer compiles where it used to fail at run time
45
+ or, for `invalidInput`, send a spoofable mark. This stays a patch release
46
+ because such a schema could not be sent correctly before.
47
+
3
48
  ## 0.4.0 - 2026-09-26
4
49
 
5
50
  ### Added
package/README.md CHANGED
@@ -159,18 +159,31 @@ adds it to the error data, next to tRPC's own fields:
159
159
  | `Forbidden` | `FORBIDDEN` | 403 |
160
160
  | `Conflict` | `CONFLICT` | 409 |
161
161
  | `PreconditionFailed` | `PRECONDITION_FAILED` | 412 |
162
+ | `TooManyRequests` | `TOO_MANY_REQUESTS` | 429 |
162
163
  | `AuthUnavailable` | `SERVICE_UNAVAILABLE` | 503 |
163
164
  | any other, including `BadRequest` | `BAD_REQUEST` | 400 |
164
165
  - When a procedure's input schema rejects the input, the formatter sends a
165
166
  `BadRequest` rejection with the first issue's message and, unless the issue
166
167
  concerns the whole input, its path as `field` (`"address.city"`,
167
168
  `"tags.1"`). The code is `BAD_REQUEST`, as for a `BadRequest` the procedure
168
- raises, so a form shows the error on its field before the handler runs.
169
+ raises, so a form shows the error on its field before the handler runs. It
170
+ also carries `invalidInput: true`, which a declared rejection never gets, so
171
+ a client can show its own copy for input that did not parse and the
172
+ declared message otherwise:
173
+
174
+ ```jsonc
175
+ { "code": "BAD_REQUEST", "httpStatus": 400, "path": "rename",
176
+ "rejection": { "_tag": "BadRequest", "message": "Expected a value with a length of at least 1", "field": "name", "invalidInput": true } }
177
+ ```
178
+
179
+ `invalidInput` is reserved: `rejectWith` does not accept a schema that
180
+ encodes a field by that name, and the formatter strips it from any declared
181
+ rejection, so only input that did not parse carries it.
169
182
  - An application with its own `errorFormatter` calls
170
183
  `withRejection(shape, error)` inside it.
171
184
  - The error channel loses the declared types and gains `RejectionError`. An
172
185
  effect-contract operation's `error` schema works directly:
173
- `rejectWith(SaveMeal.error)`.
186
+ `rejectWith(SaveOrder.error)`.
174
187
 
175
188
  The browser-safe `@shivaedev/effect-trpc/client` entry reads the rejection from
176
189
  a `TRPCClientError`:
@@ -179,14 +192,18 @@ a `TRPCClientError`:
179
192
  import { decodeRejection, rejectionOf } from "@shivaedev/effect-trpc/client"
180
193
  import { rejectedField } from "@shivaedev/platform/errors"
181
194
 
182
- rejectionOf(error) // Option<{ _tag: string, ... }>, still encoded
195
+ rejectionOf(error) // Option<{ _tag: string, invalidInput?: true, ... }>, still encoded
183
196
  decodeRejection(Schema.Union([BadRequest, Conflict]))(error) // Option<BadRequest | Conflict>
184
197
  Option.flatMap(rejectionOf(error), rejectedField) // Option<{ field, message }>
198
+ Option.exists(rejectionOf(error), (rejection) => rejection.invalidInput === true) // the input did not parse
185
199
  ```
186
200
 
187
201
  Both return `Option.none()` for any error without a tagged rejection, and
188
- `decodeRejection` also for a rejection its schema does not declare. The client
189
- entry imports only `effect`.
202
+ `decodeRejection` also for a rejection its schema does not declare.
203
+ `rejectionOf` also returns `Option.none()` when `invalidInput` is present but
204
+ not `true`. An input failure still decodes as the declared `BadRequest`; the
205
+ mark is read from `rejectionOf`, or from `error.data.rejection.invalidInput` on a
206
+ `TRPCClientError` typed by the router. The client entry imports only `effect`.
190
207
 
191
208
  ## Vitest
192
209
 
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/dist/adapter.js CHANGED
@@ -6,7 +6,15 @@ export const makeEffectTRPC = (options) => {
6
6
  const contextBridge = makeContextBridge(options.runtime);
7
7
  const runtime = makeRuntimeBridge(options.runtime, contextBridge, options);
8
8
  return {
9
- procedure: (builder, requestServices) => new EffectProcedureBuilder(looseBuilder(builder), requestServices, runtime),
9
+ procedure: (builder, requestServices) => {
10
+ const loose = looseBuilder(builder);
11
+ return new EffectProcedureBuilder({
12
+ builder: loose,
13
+ requestServices,
14
+ runtime,
15
+ subscriptionBuilder: loose,
16
+ });
17
+ },
10
18
  runWithServices: contextBridge.run,
11
19
  };
12
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAiCxD,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,OAA0D,EACxB,EAAE;IACpC,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAE3E,OAAO;QACN,SAAS,EAAE,CACV,OAA6G,EAC7G,eAA+H,EAC9H,EAAE,CACH,IAAI,sBAAsB,CACzB,YAAY,CAAC,OAAO,CAAC,EACrB,eAAe,EACf,OAAO,CACP;QACF,eAAe,EAAE,aAAa,CAAC,GAAG;KAClC,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAiCxD,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,OAA0D,EACxB,EAAE;IACpC,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAE3E,OAAO;QACN,SAAS,EAAE,CACV,OAA6G,EAC7G,eAA+H,EAC9H,EAAE;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,IAAI,sBAAsB,CAW/B;gBACD,OAAO,EAAE,KAAK;gBACd,eAAe;gBACf,OAAO;gBACP,mBAAmB,EAAE,KAAK;aAC1B,CAAC,CAAC;QACJ,CAAC;QACD,eAAe,EAAE,aAAa,CAAC,GAAG;KAClC,CAAC;AACH,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Option, Schema } from "effect";
2
2
  export declare const EncodedRejection: Schema.StructWithRest<Schema.Struct<{
3
3
  readonly _tag: Schema.String;
4
+ readonly invalidInput: Schema.optionalKey<Schema.Literal<true>>;
4
5
  }>, readonly [Schema.$Record<Schema.String, Schema.Unknown>]>;
5
6
  export type EncodedRejection = typeof EncodedRejection.Type;
6
7
  export declare const rejectionOf: (error: unknown) => Option.Option<EncodedRejection>;
@@ -1 +1 @@
1
- {"version":3,"file":"rejection.d.ts","sourceRoot":"","sources":["../../src/client/rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,eAAO,MAAM,gBAAgB;;6DAAgH,CAAC;AAE9I,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAI5D,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAmE,CAAC;AAE/I,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,CAAC,iBAAiB,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5F,QAAQ,CAAC,KACP,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAG/C,CAAC"}
1
+ {"version":3,"file":"rejection.d.ts","sourceRoot":"","sources":["../../src/client/rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,eAAO,MAAM,gBAAgB;;;6DAG5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAI5D,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAmE,CAAC;AAE/I,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,CAAC,iBAAiB,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5F,QAAQ,CAAC,KACP,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAG/C,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Option, Schema } from "effect";
2
- export const EncodedRejection = Schema.StructWithRest(Schema.Struct({ _tag: Schema.String }), [Schema.Record(Schema.String, Schema.Unknown)]);
2
+ export const EncodedRejection = Schema.StructWithRest(Schema.Struct({ _tag: Schema.String, invalidInput: Schema.optionalKey(Schema.Literal(true)) }), [Schema.Record(Schema.String, Schema.Unknown)]);
3
3
  const decodeCarrier = Schema.decodeUnknownOption(Schema.Struct({ data: Schema.Struct({ rejection: EncodedRejection }) }));
4
4
  export const rejectionOf = (error) => Option.map(decodeCarrier(error), ({ data }) => data.rejection);
5
5
  export const decodeRejection = (schema) => {
@@ -1 +1 @@
1
- {"version":3,"file":"rejection.js","sourceRoot":"","sources":["../../src/client/rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAI9I,MAAM,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE1H,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAmC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE/I,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,MAAS,EACwC,EAAE;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC"}
1
+ {"version":3,"file":"rejection.js","sourceRoot":"","sources":["../../src/client/rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CACpD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAC9F,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAC9C,CAAC;AAIF,MAAM,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE1H,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAmC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE/I,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,MAAS,EACwC,EAAE;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC"}
@@ -14,10 +14,10 @@ export interface ProcedureInvocation<Context> {
14
14
  readonly signal: AbortSignal | undefined;
15
15
  }
16
16
  export interface ProcedureBuilderSurface<Context> {
17
- input(schema: StandardSchema.StandardSchemaV1): ProcedureBuilderSurface<Context>;
18
- output(schema: StandardSchema.StandardSchemaV1): ProcedureBuilderSurface<Context>;
19
- query(resolver: (invocation: ProcedureInvocation<Context>) => Promise<unknown>): unknown;
20
- mutation(resolver: (invocation: ProcedureInvocation<Context>) => Promise<unknown>): unknown;
21
- subscription(resolver: (invocation: ProcedureInvocation<Context>) => Promise<AsyncIterable<unknown, void, unknown>>): unknown;
17
+ input: (schema: StandardSchema.StandardSchemaV1) => ProcedureBuilderSurface<Context>;
18
+ mutation: (resolver: (invocation: ProcedureInvocation<Context>) => Promise<unknown>) => unknown;
19
+ output: (schema: StandardSchema.StandardSchemaV1) => ProcedureBuilderSurface<Context>;
20
+ query: (resolver: (invocation: ProcedureInvocation<Context>) => Promise<unknown>) => unknown;
21
+ subscription: (resolver: (invocation: ProcedureInvocation<Context>) => Promise<AsyncIterable<unknown, void, unknown>>) => unknown;
22
22
  }
23
23
  //# sourceMappingURL=procedure-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"procedure-types.d.ts","sourceRoot":"","sources":["../../src/internal/procedure-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE7D,MAAM,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,IAAI,oBAAoB,CAC7H,OAAO,EACP,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,CACL,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,SAAS,eAAe,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7F,MAAM,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,IAAI,KAAK,SAAS,eAAe,GAAG,IAAI,GAAG,IAAI,SAAS,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAEzI,MAAM,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,IAAI,oCAAoC,CAClG,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CACvH,CAAC,KAAK,CAAC,CAAC;AAET,MAAM,MAAM,eAAe,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AAE1F,MAAM,MAAM,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAE7I,MAAM,MAAM,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CACrE,KAAK,EAAE,KAAK,KACR,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;AAEnG,MAAM,WAAW,mBAAmB,CAAC,OAAO;IAC3C,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB,CAAC,OAAO;IAC/C,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAClF,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACzF,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC5F,YAAY,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC;CAC9H"}
1
+ {"version":3,"file":"procedure-types.d.ts","sourceRoot":"","sources":["../../src/internal/procedure-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE7D,MAAM,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,IAAI,oBAAoB,CAC7H,OAAO,EACP,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,CACL,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,SAAS,eAAe,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7F,MAAM,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,IAAI,KAAK,SAAS,eAAe,GAAG,IAAI,GAAG,IAAI,SAAS,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAEzI,MAAM,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,IAAI,oCAAoC,CAClG,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CACvH,CAAC,KAAK,CAAC,CAAC;AAET,MAAM,MAAM,eAAe,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AAE1F,MAAM,MAAM,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAE7I,MAAM,MAAM,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CACrE,KAAK,EAAE,KAAK,KACR,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;AAEnG,MAAM,WAAW,mBAAmB,CAAC,OAAO;IAC3C,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,uBAAuB,CAAC,OAAO;IAC/C,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,KAAK,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACrF,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IAChG,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,KAAK,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACtF,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IAC7F,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC;CAClI"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/internal/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,MAAM,EAAwB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,UAAU,gBAAgB;IACzB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa,CAAC,YAAY;IAC1C,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9H,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;CAC7I;AA4DD,eAAO,MAAM,iBAAiB,GAAI,YAAY,EAAE,YAAY,EAC3D,SAAS,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,EACtD,eAAe,aAAa,EAC5B,SAAS;IACR,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,aAAa,EAAE,0BAA0B,CAAC;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAC1C,KACC,aAAa,CAAC,YAAY,CAgD3B,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/internal/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,MAAM,EAAwB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,UAAU,gBAAgB;IACzB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa,CAAC,YAAY;IAC1C,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9H,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;CAC7I;AA8DD,eAAO,MAAM,iBAAiB,GAAI,YAAY,EAAE,YAAY,EAC3D,SAAS,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,EACtD,eAAe,aAAa,EAC5B,SAAS;IACR,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,aAAa,EAAE,0BAA0B,CAAC;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAC1C,KACC,aAAa,CAAC,YAAY,CAgD3B,CAAC"}
@@ -34,8 +34,9 @@ const mapCause = (cause, procedure, consumerMapper) => {
34
34
  return internalError();
35
35
  };
36
36
  const interruptOn = (signal) => {
37
- if (signal === undefined)
37
+ if (signal === undefined) {
38
38
  return Effect.never;
39
+ }
39
40
  return Effect.callback((resume) => {
40
41
  if (signal.aborted) {
41
42
  resume(Effect.void);
@@ -48,20 +49,6 @@ const interruptOn = (signal) => {
48
49
  };
49
50
  export const makeRuntimeBridge = (runtime, contextBridge, options) => ({
50
51
  instrument: (effect, procedure) => Effect.suspend(() => (options.instrument === undefined ? effect : options.instrument(effect, procedure))),
51
- runStream: async (stream, runOptions) => {
52
- const instrumented = Stream.suspend(() => options.instrumentStream === undefined ? stream : options.instrumentStream(stream, runOptions.procedure)).pipe(Stream.withSpan(runOptions.procedure.path, {
53
- attributes: {
54
- "rpc.method": runOptions.procedure.path,
55
- "rpc.system": "trpc",
56
- "trpc.type": runOptions.procedure.type,
57
- },
58
- captureStackTrace: runOptions.procedure.captureStackTrace,
59
- }), Stream.interruptWhen(interruptOn(runOptions.signal)), Stream.catchCause((cause) => Stream.fail(mapCause(cause, runOptions.procedure, options.mapError))));
60
- const context = await runtime.runPromise(Effect.context());
61
- const ambient = contextBridge.current();
62
- const provided = ambient === undefined ? context : Context.merge(context, ambient);
63
- return Stream.toAsyncIterableWith(instrumented, provided);
64
- },
65
52
  runEffect: async (effect, runOptions) => {
66
53
  const traced = effect.pipe(Effect.withSpan(runOptions.procedure.path, {
67
54
  attributes: {
@@ -80,5 +67,19 @@ export const makeRuntimeBridge = (runtime, contextBridge, options) => ({
80
67
  }
81
68
  throw mapCause(exit.cause, runOptions.procedure, options.mapError);
82
69
  },
70
+ runStream: async (stream, runOptions) => {
71
+ const instrumented = Stream.suspend(() => options.instrumentStream === undefined ? stream : options.instrumentStream(stream, runOptions.procedure)).pipe(Stream.withSpan(runOptions.procedure.path, {
72
+ attributes: {
73
+ "rpc.method": runOptions.procedure.path,
74
+ "rpc.system": "trpc",
75
+ "trpc.type": runOptions.procedure.type,
76
+ },
77
+ captureStackTrace: runOptions.procedure.captureStackTrace,
78
+ }), Stream.interruptWhen(interruptOn(runOptions.signal)), Stream.catchCause((cause) => Stream.fail(mapCause(cause, runOptions.procedure, options.mapError))));
79
+ const context = await runtime.runPromise(Effect.context());
80
+ const ambient = contextBridge.current();
81
+ const provided = ambient === undefined ? context : Context.merge(context, ambient);
82
+ return Stream.toAsyncIterableWith(instrumented, provided);
83
+ },
83
84
  });
84
85
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/internal/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAgB9E,MAAM,aAAa,GAAG,CAAC,KAAe,EAAa,EAAE,CACpD,IAAI,SAAS,CAAC;IACb,KAAK;IACL,IAAI,EAAE,uBAAuB;IAC7B,OAAO,EAAE,uBAAuB;CAChC,CAAC,CAAC;AAEJ,MAAM,QAAQ,GAAG,CAChB,KAAc,EACd,MAA4B,EAC5B,SAAwB,EACxB,cAAiD,EACrC,EAAE;IACd,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACJ,OAAO,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAA2B,EAAE,SAAwB,EAAE,cAAiD,EAAa,EAAE;IACxI,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,SAAS,CAAC;YACpB,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,mBAAmB;SAC5B,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAA+B,EAAuB,EAAE;IAC5E,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC9C,OAAO,MAAM,CAAC,QAAQ,CAAO,CAAC,MAAM,EAAE,EAAE;QACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACR,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,OAAsD,EACtD,aAA4B,EAC5B,OAIC,EAC6B,EAAE,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5I,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QACvC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACxC,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CACxG,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE;YAC1C,UAAU,EAAE;gBACX,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI;gBACvC,YAAY,EAAE,MAAM;gBACpB,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI;aACtC;YACD,iBAAiB,EAAE,UAAU,CAAC,SAAS,CAAC,iBAAiB;SACzD,CAAC,EACF,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EACpD,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClG,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAgB,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACnF,OAAO,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CACzB,MAAM,CAAC,QAAQ,CACd,UAAU,CAAC,SAAS,CAAC,IAAI,EACzB;YACC,UAAU,EAAE;gBACX,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI;gBACvC,YAAY,EAAE,MAAM;gBACpB,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI;aACtC;SACD,EACD;YACC,iBAAiB,EAAE,UAAU,CAAC,SAAS,CAAC,iBAAiB;SACzD,CACD,CACD,CAAC;QACF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,QAAQ,GACb,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/I,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QACD,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/internal/runtime.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,16 @@ import { Schema } from "effect";
3
3
  import type { DefaultValue, EffectProcedureResolver, EffectSubscriptionResolver, IntersectIfDefined, ProcedureBuilderSurface, ResolverContext } from "./internal/procedure-types.ts";
4
4
  import type { RuntimeBridge } from "./internal/runtime.ts";
5
5
  import type { EffectProcedureRequestServices } from "./request-services.ts";
6
+ interface ProcedureParts<Context, Meta, ContextOverrides, ProvidedServices, LayerError, RuntimeRequirements> {
7
+ readonly builder: ProcedureBuilderSurface<ResolverContext<Context, Meta, ContextOverrides>>;
8
+ readonly requestServices: EffectProcedureRequestServices<ResolverContext<Context, Meta, ContextOverrides>, ProvidedServices, LayerError>;
9
+ readonly runtime: RuntimeBridge<RuntimeRequirements>;
10
+ readonly subscriptionBuilder: ProcedureBuilderSurface<ResolverContext<Context, Meta, ContextOverrides>>;
11
+ readonly subscriptionOutput?: Schema.ConstraintDecoder<unknown> | undefined;
12
+ }
6
13
  export declare class EffectProcedureBuilder<Context, Meta, ContextOverrides, InputIn, InputOut, OutputIn, OutputOut, ProvidedServices, LayerError, RuntimeRequirements> {
7
- private readonly builder;
8
- private readonly requestServices;
9
- private readonly runtime;
10
- private readonly subscriptionBuilder;
11
- private readonly subscriptionOutput?;
12
- constructor(builder: ProcedureBuilderSurface<ResolverContext<Context, Meta, ContextOverrides>>, requestServices: EffectProcedureRequestServices<ResolverContext<Context, Meta, ContextOverrides>, ProvidedServices, LayerError>, runtime: RuntimeBridge<RuntimeRequirements>, subscriptionBuilder?: ProcedureBuilderSurface<ResolverContext<Context, Meta, ContextOverrides>>, subscriptionOutput?: Schema.ConstraintDecoder<unknown> | undefined);
14
+ private readonly parts;
15
+ constructor(parts: ProcedureParts<Context, Meta, ContextOverrides, ProvidedServices, LayerError, RuntimeRequirements>);
13
16
  input<SchemaValue extends Schema.ConstraintDecoder<unknown>>(schema: SchemaValue): EffectProcedureBuilder<Context, Meta, ContextOverrides, IntersectIfDefined<InputIn, SchemaValue["Encoded"]>, IntersectIfDefined<InputOut, SchemaValue["Type"]>, OutputIn, OutputOut, ProvidedServices, LayerError, RuntimeRequirements>;
14
17
  output<SchemaValue extends Schema.ConstraintDecoder<unknown>>(schema: SchemaValue): EffectProcedureBuilder<Context, Meta, ContextOverrides, InputIn, InputOut, IntersectIfDefined<OutputIn, SchemaValue["Encoded"]>, IntersectIfDefined<OutputOut, SchemaValue["Type"]>, ProvidedServices, LayerError, RuntimeRequirements>;
15
18
  query<Output>(resolver: EffectProcedureResolver<DefaultValue<InputOut, undefined>, ProvidedServices | NoInfer<RuntimeRequirements>, DefaultValue<OutputIn, Output>>): TRPCQueryProcedure<{
@@ -29,4 +32,5 @@ export declare class EffectProcedureBuilder<Context, Meta, ContextOverrides, Inp
29
32
  }>;
30
33
  private handler;
31
34
  }
35
+ export {};
32
36
  //# sourceMappingURL=procedure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../src/procedure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../src/procedure.ts"],"names":[],"mappings":"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"}
package/dist/procedure.js CHANGED
@@ -3,36 +3,36 @@ import { makeProcedureHandler } from "./internal/procedure-handler.js";
3
3
  import { captureStackTrace } from "./internal/stack-trace.js";
4
4
  import { makeSubscriptionHandler } from "./internal/subscription-handler.js";
5
5
  export class EffectProcedureBuilder {
6
- builder;
7
- requestServices;
8
- runtime;
9
- subscriptionBuilder;
10
- subscriptionOutput;
11
- constructor(builder, requestServices, runtime, subscriptionBuilder = builder, subscriptionOutput) {
12
- this.builder = builder;
13
- this.requestServices = requestServices;
14
- this.runtime = runtime;
15
- this.subscriptionBuilder = subscriptionBuilder;
16
- this.subscriptionOutput = subscriptionOutput;
6
+ parts;
7
+ constructor(parts) {
8
+ this.parts = parts;
17
9
  }
18
10
  input(schema) {
19
11
  const parser = Schema.toStandardSchemaV1(schema);
20
- return new EffectProcedureBuilder(this.builder.input(parser), this.requestServices, this.runtime, this.subscriptionBuilder.input(parser), this.subscriptionOutput);
12
+ return new EffectProcedureBuilder({
13
+ ...this.parts,
14
+ builder: this.parts.builder.input(parser),
15
+ subscriptionBuilder: this.parts.subscriptionBuilder.input(parser),
16
+ });
21
17
  }
22
18
  output(schema) {
23
- return new EffectProcedureBuilder(this.builder.output(Schema.toStandardSchemaV1(schema)), this.requestServices, this.runtime, this.subscriptionBuilder, schema);
19
+ return new EffectProcedureBuilder({
20
+ ...this.parts,
21
+ builder: this.parts.builder.output(Schema.toStandardSchemaV1(schema)),
22
+ subscriptionOutput: schema,
23
+ });
24
24
  }
25
25
  query(resolver) {
26
- return this.builder.query(this.handler("query", resolver));
26
+ return this.parts.builder.query(this.handler("query", resolver));
27
27
  }
28
28
  mutation(resolver) {
29
- return this.builder.mutation(this.handler("mutation", resolver));
29
+ return this.parts.builder.mutation(this.handler("mutation", resolver));
30
30
  }
31
31
  subscription(resolver) {
32
- return this.subscriptionBuilder.subscription(makeSubscriptionHandler(this.runtime, resolver, this.requestServices, { captureStackTrace: captureStackTrace(), type: "subscription" }, this.subscriptionOutput));
32
+ return this.parts.subscriptionBuilder.subscription(makeSubscriptionHandler(this.parts.runtime, resolver, this.parts.requestServices, { captureStackTrace: captureStackTrace(), type: "subscription" }, this.parts.subscriptionOutput));
33
33
  }
34
34
  handler(type, resolver) {
35
- return makeProcedureHandler(this.runtime, resolver, this.requestServices, { captureStackTrace: captureStackTrace(), type });
35
+ return makeProcedureHandler(this.parts.runtime, resolver, this.parts.requestServices, { captureStackTrace: captureStackTrace(), type });
36
36
  }
37
37
  }
38
38
  //# sourceMappingURL=procedure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"procedure.js","sourceRoot":"","sources":["../src/procedure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAUvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAG7E,MAAM,OAAO,sBAAsB;IAahB;IACA;IACA;IACA;IACA;IALlB,YACkB,OAAkF,EAClF,eAA+H,EAC/H,OAA2C,EAC3C,sBAAsB,OAAO,EAC7B,kBAAsD;QAJtD,YAAO,GAAP,OAAO,CAA2E;QAClF,oBAAe,GAAf,eAAe,CAAgH;QAC/H,YAAO,GAAP,OAAO,CAAoC;QAC3C,wBAAmB,GAAnB,mBAAmB,CAAU;QAC7B,uBAAkB,GAAlB,kBAAkB,CAAoC;IACrE,CAAC;IAEJ,KAAK,CACJ,MAAmB;QAanB,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,sBAAsB,CAChC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAC1B,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,EACtC,IAAI,CAAC,kBAAkB,CACvB,CAAC;IACH,CAAC;IAED,MAAM,CACL,MAAmB;QAanB,OAAO,IAAI,sBAAsB,CAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EACtD,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,mBAAmB,EACxB,MAAM,CACN,CAAC;IACH,CAAC;IAaD,KAAK,CAAC,QAAyF;QAC9F,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5D,CAAC;IAaD,QAAQ,CAAC,QAAyF;QACjG,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IAaD,YAAY,CAAC,QAA4F;QACxG,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAC3C,uBAAuB,CACtB,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,IAAI,CAAC,eAAe,EACpB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAChE,IAAI,CAAC,kBAAkB,CACvB,CACD,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,IAA0B,EAAE,QAAyF;QACpI,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7H,CAAC;CACD"}
1
+ {"version":3,"file":"procedure.js","sourceRoot":"","sources":["../src/procedure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAUvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAW7E,MAAM,OAAO,sBAAsB;IAYjB,KAAK,CAAqG;IAE3H,YAAY,KAAyG;QACpH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CACJ,MAAmB;QAanB,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,sBAAsB,CAAC;YACjC,GAAG,IAAI,CAAC,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;SACjE,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CACL,MAAmB;QAanB,OAAO,IAAI,sBAAsB,CAAC;YACjC,GAAG,IAAI,CAAC,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACrE,kBAAkB,EAAE,MAAM;SAC1B,CAAC,CAAC;IACJ,CAAC;IAaD,KAAK,CAAC,QAAyF;QAC9F,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IAaD,QAAQ,CAAC,QAAyF;QACjG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,CAAC;IAaD,YAAY,CAAC,QAA4F;QACxG,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAY,CACjD,uBAAuB,CACtB,IAAI,CAAC,KAAK,CAAC,OAAO,EAClB,QAAQ,EACR,IAAI,CAAC,KAAK,CAAC,eAAe,EAC1B,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAChE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAC7B,CACD,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,IAA0B,EAAE,QAAyF;QACpI,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACzI,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"rejection-formatter.d.ts","sourceRoot":"","sources":["../src/rejection-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAc3F,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,KAAK,EAAE,OAAO,SAAS,KAAG,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAG7I,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,kBAAkB;IAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,KAAG,mBAChG,CAAC"}
1
+ {"version":3,"file":"rejection-formatter.d.ts","sourceRoot":"","sources":["../src/rejection-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAwB3F,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,KAAK,EAAE,OAAO,SAAS,KAAG,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAG7I,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,kBAAkB;IAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,KAAG,mBAChG,CAAC"}
@@ -1,16 +1,22 @@
1
1
  import { StandardSchemaV1Error } from "@trpc/server";
2
2
  import { RejectionError } from "./rejection.js";
3
3
  const inputRejection = ({ issues: [issue] }) => {
4
- if (issue === undefined)
4
+ if (issue === undefined) {
5
5
  return undefined;
6
+ }
6
7
  const field = (issue.path ?? []).map((segment) => String(typeof segment === "object" ? segment.key : segment)).join(".");
7
- return field === "" ? { _tag: "BadRequest", message: issue.message } : { _tag: "BadRequest", message: issue.message, field };
8
+ return field === ""
9
+ ? { _tag: "BadRequest", invalidInput: true, message: issue.message }
10
+ : { _tag: "BadRequest", field, invalidInput: true, message: issue.message };
8
11
  };
12
+ const declared = ({ invalidInput: _reserved, ...rejection }) => rejection;
9
13
  const rejectionFrom = (error) => {
10
- if (error instanceof RejectionError)
11
- return error.rejection;
12
- if (error.code === "BAD_REQUEST" && error.cause instanceof StandardSchemaV1Error)
14
+ if (error instanceof RejectionError) {
15
+ return declared(error.rejection);
16
+ }
17
+ if (error.code === "BAD_REQUEST" && error.cause instanceof StandardSchemaV1Error) {
13
18
  return inputRejection(error.cause);
19
+ }
14
20
  return undefined;
15
21
  };
16
22
  export const withRejection = (shape, error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"rejection-formatter.js","sourceRoot":"","sources":["../src/rejection-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA8C,MAAM,cAAc,CAAC;AAEjG,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAQhD,MAAM,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAyB,EAAgC,EAAE;IACnG,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzH,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;AAC9H,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAgB,EAAgC,EAAE;IACxE,IAAI,KAAK,YAAY,cAAc;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC5D,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,KAAK,YAAY,qBAAqB;QAAE,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrH,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAA0C,KAAY,EAAE,KAAgB,EAA4C,EAAE;IAClJ,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAwE,EAAuB,EAAE,CACjJ,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"rejection-formatter.js","sourceRoot":"","sources":["../src/rejection-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA8C,MAAM,cAAc,CAAC;AAEjG,OAAO,EAA0B,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAQxE,MAAM,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAyB,EAAgC,EAAE;IACnG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzH,OAAO,KAAK,KAAK,EAAE;QAClB,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;QACpE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,SAAS,EAAqB,EAAoB,EAAE,CAAC,SAAS,CAAC;AAE/G,MAAM,aAAa,GAAG,CAAC,KAAgB,EAAgC,EAAE;IACxE,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,KAAK,YAAY,qBAAqB,EAAE,CAAC;QAClF,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAA0C,KAAY,EAAE,KAAgB,EAA4C,EAAE;IAClJ,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAwE,EAAuB,EAAE,CACjJ,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC"}
@@ -1,15 +1,26 @@
1
1
  import { type TRPC_ERROR_CODE_KEY, TRPCError } from "@trpc/server";
2
2
  import { Effect, Schema } from "effect";
3
- import { EncodedRejection } from "./client/rejection.ts";
4
3
  export declare const rejectionCode: (tag: string) => TRPC_ERROR_CODE_KEY;
4
+ declare const DeclaredRejection: Schema.StructWithRest<Schema.Struct<{
5
+ readonly _tag: Schema.String;
6
+ }>, readonly [Schema.$Record<Schema.String, Schema.Unknown>]>;
7
+ export type DeclaredRejection = typeof DeclaredRejection.Type;
8
+ interface InvalidInputIsReserved {
9
+ readonly "invalidInput is reserved for the mark on input that did not parse": never;
10
+ }
11
+ interface DeclaredEncoding {
12
+ readonly _tag: string;
13
+ readonly invalidInput?: InvalidInputIsReserved;
14
+ }
5
15
  export declare class RejectionError extends TRPCError {
6
- readonly rejection: EncodedRejection;
7
- constructor(rejection: EncodedRejection, code?: TRPC_ERROR_CODE_KEY);
16
+ readonly rejection: DeclaredRejection;
17
+ constructor(rejection: DeclaredRejection, code?: TRPC_ERROR_CODE_KEY);
8
18
  }
9
19
  export interface RejectWithOptions<Tag extends string> {
10
20
  readonly code?: (tag: Tag) => TRPC_ERROR_CODE_KEY;
11
21
  }
12
- export declare function rejectWith<S extends Schema.ConstraintDecoder<{
22
+ export declare function rejectWith<S extends Schema.ConstraintCodec<{
13
23
  readonly _tag: string;
14
- }, unknown>>(schema: S, options?: RejectWithOptions<S["Type"]["_tag"]>): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, Exclude<E, S["Type"]> | RejectionError, R | S["EncodingServices"]>;
24
+ }, DeclaredEncoding, unknown, unknown>>(schema: S, options?: RejectWithOptions<S["Type"]["_tag"]>): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, Exclude<E, S["Type"]> | RejectionError, R | S["EncodingServices"]>;
25
+ export {};
15
26
  //# sourceMappingURL=rejection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rejection.d.ts","sourceRoot":"","sources":["../src/rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAWzD,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,mBAA+D,CAAC;AAE5G,qBAAa,cAAe,SAAQ,SAAS;IAC5C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;gBAEzB,SAAS,EAAE,gBAAgB,EAAE,IAAI,GAAE,mBAAmD;CAIlG;AAED,MAAM,WAAW,iBAAiB,CAAC,GAAG,SAAS,MAAM;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,mBAAmB,CAAC;CAClD;AAQD,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,iBAAiB,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,CAAC,EAChG,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAC5C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"rejection.d.ts","sourceRoot":"","sources":["../src/rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAYxC,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,mBAA+D,CAAC;AAE5G,QAAA,MAAM,iBAAiB;;6DAAgH,CAAC;AAExI,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAE9D,UAAU,sBAAsB;IAC/B,QAAQ,CAAC,mEAAmE,EAAE,KAAK,CAAC;CACpF;AAED,UAAU,gBAAgB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC5C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;gBAE1B,SAAS,EAAE,iBAAiB,EAAE,IAAI,GAAE,mBAAmD;CAInG;AAED,MAAM,WAAW,iBAAiB,CAAC,GAAG,SAAS,MAAM;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,mBAAmB,CAAC;CAClD;AAQD,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,eAAe,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,EACzH,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAC5C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC"}
package/dist/rejection.js CHANGED
@@ -1,15 +1,16 @@
1
1
  import { TRPCError } from "@trpc/server";
2
2
  import { Effect, Schema } from "effect";
3
- import { EncodedRejection } from "./client/rejection.js";
4
3
  const TAXONOMY_CODES = new Map([
5
4
  ["NotFound", "NOT_FOUND"],
6
5
  ["Unauthorized", "UNAUTHORIZED"],
7
6
  ["Forbidden", "FORBIDDEN"],
8
7
  ["Conflict", "CONFLICT"],
9
8
  ["PreconditionFailed", "PRECONDITION_FAILED"],
9
+ ["TooManyRequests", "TOO_MANY_REQUESTS"],
10
10
  ["AuthUnavailable", "SERVICE_UNAVAILABLE"],
11
11
  ]);
12
12
  export const rejectionCode = (tag) => TAXONOMY_CODES.get(tag) ?? "BAD_REQUEST";
13
+ const DeclaredRejection = Schema.StructWithRest(Schema.Struct({ _tag: Schema.String }), [Schema.Record(Schema.String, Schema.Unknown)]);
13
14
  export class RejectionError extends TRPCError {
14
15
  rejection;
15
16
  constructor(rejection, code = rejectionCode(rejection._tag)) {
@@ -19,7 +20,7 @@ export class RejectionError extends TRPCError {
19
20
  }
20
21
  const encodeRejection = (schema) => {
21
22
  const encode = Schema.encodeUnknownEffect(schema);
22
- const tagged = Schema.decodeUnknownEffect(EncodedRejection);
23
+ const tagged = Schema.decodeUnknownEffect(DeclaredRejection);
23
24
  return (rejection) => Effect.orDie(Effect.flatMap(encode(rejection), tagged));
24
25
  };
25
26
  export function rejectWith(schema, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"rejection.js","sourceRoot":"","sources":["../src/rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,cAAc,GAAG,IAAI,GAAG,CAA8B;IAC3D,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IAC7C,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAuB,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC;AAE5G,MAAM,OAAO,cAAe,SAAQ,SAAS;IACnC,SAAS,CAAmB;IAErC,YAAY,SAA2B,EAAE,OAA4B,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;QACjG,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;CACD;AAMD,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5D,OAAO,CAAC,SAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC;AAMF,MAAM,UAAU,UAAU,CAAC,MAAyB,EAAE,OAAmC;IACxF,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,aAAa,CAAC;IAC5C,OAAO,CAAU,IAA4B,EAAE,EAAE,CAChD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC5G,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rejection.js","sourceRoot":"","sources":["../src/rejection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,cAAc,GAAG,IAAI,GAAG,CAA8B;IAC3D,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IAC7C,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACxC,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAuB,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC;AAE5G,MAAM,iBAAiB,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAaxI,MAAM,OAAO,cAAe,SAAQ,SAAS;IACnC,SAAS,CAAoB;IAEtC,YAAY,SAA4B,EAAE,OAA4B,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;QAClG,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;CACD;AAMD,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAC7D,OAAO,CAAC,SAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC;AAMF,MAAM,UAAU,UAAU,CAAC,MAAyB,EAAE,OAAmC;IACxF,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,aAAa,CAAC;IAC5C,OAAO,CAAU,IAA4B,EAAE,EAAE,CAChD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC5G,CAAC;AACJ,CAAC"}
@@ -1,4 +1,3 @@
1
1
  import { Context } from "effect";
2
- /** The transport cancellation signal for the current tRPC procedure. */
3
2
  export declare const RequestSignal: Context.Reference<AbortSignal | undefined>;
4
3
  //# sourceMappingURL=request-signal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-signal.d.ts","sourceRoot":"","sources":["../src/request-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,wEAAwE;AACxE,eAAO,MAAM,aAAa,4CAAwH,CAAC"}
1
+ {"version":3,"file":"request-signal.d.ts","sourceRoot":"","sources":["../src/request-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,eAAO,MAAM,aAAa,4CAAwH,CAAC"}
@@ -1,4 +1,3 @@
1
1
  import { Context } from "effect";
2
- /** The transport cancellation signal for the current tRPC procedure. */
3
2
  export const RequestSignal = Context.Reference("@shivaedev/effect-trpc/RequestSignal", { defaultValue: () => undefined });
4
3
  //# sourceMappingURL=request-signal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-signal.js","sourceRoot":"","sources":["../src/request-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAA0B,sCAAsC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"request-signal.js","sourceRoot":"","sources":["../src/request-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAA0B,sCAAsC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"caller.js","sourceRoot":"","sources":["../../src/testing/caller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAkB,MAAM,cAAc,CAAC;AACvE,OAAO,EAAgB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAiB9C,MAAM,MAAM,GAAG,CAAC,IAAa,EAAE,OAAe,EAAW,EAAE,CAC1D,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAEpH,MAAM,MAAM,GAAG,CAAC,aAAqB,EAAE,IAA2B,EAAE,aAAqC,EAAoB,EAAE;IAC9H,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAU,MAAM,EAAE,aAAa,CAAC,CAAC;IACzD,OAAO,OAAO,IAAI,KAAK,UAAU;QAChC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAOF,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,aAAqB,EAAE,QAAgC;IACzG,MAAM,KAAK,GAAG,CAAC,IAA2B,EAAW,EAAE,CACtD,IAAI,KAAK,CACR,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EACxC;QACC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa;YAClC,OAAO,MAAM,CAAC,UAAU,CAAC;gBACxB,KAAK,EAAE,uBAAuB;gBAC9B,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;aAC9F,CAAC,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,OAAO,EAAE,QAAQ;YACpB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACzD,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnC,CAAC;KACD,CACD,CAAC;IAEH,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAOD,MAAM,UAAU,uBAAuB,CAAC,OAAgB,EAAE,YAA2C,EAAE,QAAgC;IACtI,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEjG,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACxB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ;YAC9B,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"caller.js","sourceRoot":"","sources":["../../src/testing/caller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAkB,MAAM,cAAc,CAAC;AACvE,OAAO,EAAgB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAiB9C,MAAM,MAAM,GAAG,CAAC,IAAa,EAAE,OAAe,EAAW,EAAE,CAC1D,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAEpH,MAAM,MAAM,GAAG,CAAC,aAAqB,EAAE,IAAuB,EAAE,aAAiC,EAAoB,EAAE;IACtH,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAU,MAAM,EAAE,aAAa,CAAC,CAAC;IACzD,OAAO,OAAO,IAAI,KAAK,UAAU;QAChC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAOF,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,aAAqB,EAAE,QAAgC;IACzG,MAAM,KAAK,GAAG,CAAC,IAAuB,EAAW,EAAE,CAClD,IAAI,KAAK,CACR,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EACxC;QACC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa;YAClC,OAAO,MAAM,CAAC,UAAU,CAAC;gBACxB,KAAK,EAAE,uBAAuB;gBAC9B,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;aAC9F,CAAC,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,OAAO,EAAE,QAAQ;YACpB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACzD,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnC,CAAC;KACD,CACD,CAAC;IAEH,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAOD,MAAM,UAAU,uBAAuB,CAAC,OAAgB,EAAE,YAA2C,EAAE,QAAgC;IACtI,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEjG,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACxB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ;YAC9B,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACzB,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -1,17 +1,17 @@
1
1
  import type { TestContext, Vitest } from "@effect/vitest";
2
- import type { EffectClock, EffectTestOptions } from "@shivaedev/effect-test";
3
2
  import type { Effect, Layer } from "effect";
3
+ import type { EffectClock, EffectTestOptions } from "@shivaedev/effect-test";
4
4
  import type { EffectTRPCAdapter } from "../adapter.ts";
5
5
  import type { AnyTestLayer } from "./any-test-layer.ts";
6
6
  import type { EffectCallerFactory } from "./caller.ts";
7
7
  export type TrpcHarnessTest<Harness, Provided> = <A, Eff extends Effect.Effect<unknown, unknown, Provided>>(name: string, body: (harness: Harness, context: TestContext) => Generator<Eff, A, never>, options?: number | EffectTestOptions) => void;
8
8
  export interface TrpcHarnessTester<Harness, Provided> extends TrpcHarnessTest<Harness, Provided> {
9
+ readonly each: <Item>(cases: readonly Item[]) => <A, Eff extends Effect.Effect<unknown, unknown, Provided>>(name: string, body: (item: Item, harness: Harness, context: TestContext) => Generator<Eff, A, never>, options?: number | EffectTestOptions) => void;
10
+ readonly fails: TrpcHarnessTest<Harness, Provided>;
11
+ readonly only: TrpcHarnessTest<Harness, Provided>;
12
+ readonly runIf: (condition: unknown) => TrpcHarnessTest<Harness, Provided>;
9
13
  readonly skip: TrpcHarnessTest<Harness, Provided>;
10
14
  readonly skipIf: (condition: unknown) => TrpcHarnessTest<Harness, Provided>;
11
- readonly runIf: (condition: unknown) => TrpcHarnessTest<Harness, Provided>;
12
- readonly only: TrpcHarnessTest<Harness, Provided>;
13
- readonly each: <Item>(cases: ReadonlyArray<Item>) => <A, Eff extends Effect.Effect<unknown, unknown, Provided>>(name: string, body: (item: Item, harness: Harness, context: TestContext) => Generator<Eff, A, never>, options?: number | EffectTestOptions) => void;
14
- readonly fails: TrpcHarnessTest<Harness, Provided>;
15
15
  }
16
16
  export type TrpcTest<Options, Caller, Provided> = TrpcHarnessTest<EffectCallerFactory<Options, Caller>, Provided>;
17
17
  export type TrpcTester<Options, Caller, Provided> = TrpcHarnessTester<EffectCallerFactory<Options, Caller>, Provided>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/testing/vitest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAclI,wBAAgB,iBAAiB,CAAC,YAAY,SAAS,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,SAAS,SAAS,YAAY,EAAE,OAAO,EACjI,OAAO,EAAE,wBAAwB,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,GACjE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAmBpD,eAAO,MAAM,UAAU,GAAI,YAAY,SAAS,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,SAAS,SAAS,YAAY,EACjH,SAAS,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,KACjD,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAIxF,CAAC"}
1
+ {"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/testing/vitest.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAclI,wBAAgB,iBAAiB,CAAC,YAAY,SAAS,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,SAAS,SAAS,YAAY,EAAE,OAAO,EACjI,OAAO,EAAE,wBAAwB,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,GACjE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAmBpD,eAAO,MAAM,UAAU,GAAI,YAAY,SAAS,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,SAAS,SAAS,YAAY,EACjH,SAAS,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,KACjD,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAIxF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { it as effectIt } from "@effect/vitest";
2
- import { makeEffectIt } from "@shivaedev/effect-test";
3
2
  import { Effect } from "effect";
3
+ import { makeEffectIt } from "@shivaedev/effect-test";
4
4
  import { makeEffectCallerFactory } from "./caller.js";
5
5
  function withEffectTRPC(tester) {
6
6
  return new Proxy(effectIt, {
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../src/testing/vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAItD,SAAS,cAAc,CAAC,MAAe;IACtC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;QAC1B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC7B,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC;YACf,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAKD,MAAM,UAAU,iBAAiB,CAChC,OAAoF;IAEpF,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAA4B,CAAC;YACnE,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CACzB,OAAmD,EACyC,EAAE,CAC9F,iBAAiB,CAAC;IACjB,GAAG,OAAO;IACV,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CAC3C,CAAC,CAAC"}
1
+ {"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../src/testing/vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAItD,SAAS,cAAc,CAAC,MAAe;IACtC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;QAC1B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC7B,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC;YACf,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAKD,MAAM,UAAU,iBAAiB,CAChC,OAAoF;IAEpF,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAA4B,CAAC;YACnE,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CACzB,OAAmD,EACyC,EAAE,CAC9F,iBAAiB,CAAC;IACjB,GAAG,OAAO;IACV,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CAC3C,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,28 +1,19 @@
1
1
  {
2
2
  "name": "@shivaedev/effect-trpc",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Effect-native procedures and testing for tRPC",
5
- "type": "module",
6
- "license": "MIT",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/ShivaeDev/platform.git",
10
- "directory": "packages/effect-trpc"
11
- },
12
5
  "homepage": "https://github.com/ShivaeDev/platform/tree/main/packages/effect-trpc#readme",
13
6
  "bugs": {
14
7
  "url": "https://github.com/ShivaeDev/platform/issues"
15
8
  },
16
- "engines": {
17
- "node": ">=24"
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/ShivaeDev/platform.git",
12
+ "directory": "packages/effect-trpc"
18
13
  },
14
+ "license": "MIT",
19
15
  "sideEffects": false,
20
- "files": [
21
- "dist",
22
- "src",
23
- "CHANGELOG.md",
24
- "README.md"
25
- ],
16
+ "type": "module",
26
17
  "exports": {
27
18
  ".": {
28
19
  "types": "./dist/index.d.ts",
@@ -44,26 +35,19 @@
44
35
  },
45
36
  "./package.json": "./package.json"
46
37
  },
47
- "publishConfig": {
48
- "access": "public",
49
- "provenance": true
50
- },
38
+ "files": [
39
+ "dist",
40
+ "src",
41
+ "CHANGELOG.md",
42
+ "README.md"
43
+ ],
51
44
  "dependencies": {
52
45
  "@shivaedev/effect-test": "0.1.2"
53
46
  },
54
- "peerDependencies": {
55
- "@effect/vitest": "4.0.0-rc.112",
56
- "@trpc/server": "11.18.0",
57
- "effect": "4.0.0-rc.112"
58
- },
59
- "peerDependenciesMeta": {
60
- "@effect/vitest": {
61
- "optional": true
62
- }
63
- },
64
47
  "devDependencies": {
65
48
  "@effect/vitest": "4.0.0-rc.112",
66
- "@shivaedev/effect-contract": "0.1.0",
49
+ "@shivaedev/effect-contract": "0.2.0",
50
+ "@shivaedev/quality": "0.7.0",
67
51
  "@trpc/client": "11.18.0",
68
52
  "@trpc/server": "11.18.0",
69
53
  "@types/node": "24.10.1",
@@ -73,13 +57,27 @@
73
57
  "typescript": "npm:@typescript/typescript6@6.0.2",
74
58
  "vitest": "4.1.9"
75
59
  },
60
+ "peerDependencies": {
61
+ "@effect/vitest": "4.0.0-rc.112",
62
+ "@trpc/server": "11.18.0",
63
+ "effect": "4.0.0-rc.112"
64
+ },
65
+ "peerDependenciesMeta": {
66
+ "@effect/vitest": {
67
+ "optional": true
68
+ }
69
+ },
70
+ "engines": {
71
+ "node": ">=24"
72
+ },
73
+ "publishConfig": {
74
+ "access": "public",
75
+ "provenance": true
76
+ },
76
77
  "scripts": {
77
78
  "build": "node --eval \"import('node:fs').then(({ rmSync }) => rmSync('dist', { force: true, recursive: true }))\" && tsc6 --project tsconfig.build.json",
78
- "check": "biome check .",
79
+ "ready": "pnpm typecheck && pnpm test && pnpm build",
79
80
  "test": "vitest run",
80
- "test:package": "node scripts/test-package.mjs",
81
- "typecheck": "tsc --noEmit",
82
- "typecheck:compat": "tsc6 --noEmit",
83
- "ready": "pnpm check && pnpm typecheck && pnpm typecheck:compat && pnpm test && pnpm build && pnpm test:package"
81
+ "typecheck": "tsc --noEmit"
84
82
  }
85
83
  }
package/src/adapter.ts CHANGED
@@ -47,12 +47,26 @@ export const makeEffectTRPC = <Requirements, RuntimeError = never>(
47
47
  procedure: <Context, Meta, ContextOverrides, InputIn, InputOut, OutputIn, OutputOut, ProvidedServices, LayerError>(
48
48
  builder: TRPCProcedureBuilder<Context, Meta, ContextOverrides, InputIn, InputOut, OutputIn, OutputOut, false>,
49
49
  requestServices: EffectProcedureRequestServices<ResolverContext<Context, Meta, ContextOverrides>, ProvidedServices, LayerError>,
50
- ) =>
51
- new EffectProcedureBuilder<Context, Meta, ContextOverrides, InputIn, InputOut, OutputIn, OutputOut, ProvidedServices, LayerError, Requirements>(
52
- looseBuilder(builder),
50
+ ) => {
51
+ const loose = looseBuilder(builder);
52
+ return new EffectProcedureBuilder<
53
+ Context,
54
+ Meta,
55
+ ContextOverrides,
56
+ InputIn,
57
+ InputOut,
58
+ OutputIn,
59
+ OutputOut,
60
+ ProvidedServices,
61
+ LayerError,
62
+ Requirements
63
+ >({
64
+ builder: loose,
53
65
  requestServices,
54
66
  runtime,
55
- ),
67
+ subscriptionBuilder: loose,
68
+ });
69
+ },
56
70
  runWithServices: contextBridge.run,
57
71
  };
58
72
  };
@@ -1,6 +1,9 @@
1
1
  import { Option, Schema } from "effect";
2
2
 
3
- export const EncodedRejection = Schema.StructWithRest(Schema.Struct({ _tag: Schema.String }), [Schema.Record(Schema.String, Schema.Unknown)]);
3
+ export const EncodedRejection = Schema.StructWithRest(
4
+ Schema.Struct({ _tag: Schema.String, invalidInput: Schema.optionalKey(Schema.Literal(true)) }),
5
+ [Schema.Record(Schema.String, Schema.Unknown)],
6
+ );
4
7
 
5
8
  export type EncodedRejection = typeof EncodedRejection.Type;
6
9
 
@@ -36,9 +36,9 @@ export interface ProcedureInvocation<Context> {
36
36
  }
37
37
 
38
38
  export interface ProcedureBuilderSurface<Context> {
39
- input(schema: StandardSchema.StandardSchemaV1): ProcedureBuilderSurface<Context>;
40
- output(schema: StandardSchema.StandardSchemaV1): ProcedureBuilderSurface<Context>;
41
- query(resolver: (invocation: ProcedureInvocation<Context>) => Promise<unknown>): unknown;
42
- mutation(resolver: (invocation: ProcedureInvocation<Context>) => Promise<unknown>): unknown;
43
- subscription(resolver: (invocation: ProcedureInvocation<Context>) => Promise<AsyncIterable<unknown, void, unknown>>): unknown;
39
+ input: (schema: StandardSchema.StandardSchemaV1) => ProcedureBuilderSurface<Context>;
40
+ mutation: (resolver: (invocation: ProcedureInvocation<Context>) => Promise<unknown>) => unknown;
41
+ output: (schema: StandardSchema.StandardSchemaV1) => ProcedureBuilderSurface<Context>;
42
+ query: (resolver: (invocation: ProcedureInvocation<Context>) => Promise<unknown>) => unknown;
43
+ subscription: (resolver: (invocation: ProcedureInvocation<Context>) => Promise<AsyncIterable<unknown, void, unknown>>) => unknown;
44
44
  }
@@ -61,7 +61,9 @@ const mapCause = (cause: Cause.Cause<unknown>, procedure: ProcedureInfo, consume
61
61
  };
62
62
 
63
63
  const interruptOn = (signal: AbortSignal | undefined): Effect.Effect<void> => {
64
- if (signal === undefined) return Effect.never;
64
+ if (signal === undefined) {
65
+ return Effect.never;
66
+ }
65
67
  return Effect.callback<void>((resume) => {
66
68
  if (signal.aborted) {
67
69
  resume(Effect.void);
@@ -83,26 +85,6 @@ export const makeRuntimeBridge = <Requirements, RuntimeError>(
83
85
  },
84
86
  ): RuntimeBridge<Requirements> => ({
85
87
  instrument: (effect, procedure) => Effect.suspend(() => (options.instrument === undefined ? effect : options.instrument(effect, procedure))),
86
- runStream: async (stream, runOptions) => {
87
- const instrumented = Stream.suspend(() =>
88
- options.instrumentStream === undefined ? stream : options.instrumentStream(stream, runOptions.procedure),
89
- ).pipe(
90
- Stream.withSpan(runOptions.procedure.path, {
91
- attributes: {
92
- "rpc.method": runOptions.procedure.path,
93
- "rpc.system": "trpc",
94
- "trpc.type": runOptions.procedure.type,
95
- },
96
- captureStackTrace: runOptions.procedure.captureStackTrace,
97
- }),
98
- Stream.interruptWhen(interruptOn(runOptions.signal)),
99
- Stream.catchCause((cause) => Stream.fail(mapCause(cause, runOptions.procedure, options.mapError))),
100
- );
101
- const context = await runtime.runPromise(Effect.context<Requirements>());
102
- const ambient = contextBridge.current();
103
- const provided = ambient === undefined ? context : Context.merge(context, ambient);
104
- return Stream.toAsyncIterableWith(instrumented, provided);
105
- },
106
88
  runEffect: async (effect, runOptions) => {
107
89
  const traced = effect.pipe(
108
90
  Effect.withSpan(
@@ -129,4 +111,24 @@ export const makeRuntimeBridge = <Requirements, RuntimeError>(
129
111
  }
130
112
  throw mapCause(exit.cause, runOptions.procedure, options.mapError);
131
113
  },
114
+ runStream: async (stream, runOptions) => {
115
+ const instrumented = Stream.suspend(() =>
116
+ options.instrumentStream === undefined ? stream : options.instrumentStream(stream, runOptions.procedure),
117
+ ).pipe(
118
+ Stream.withSpan(runOptions.procedure.path, {
119
+ attributes: {
120
+ "rpc.method": runOptions.procedure.path,
121
+ "rpc.system": "trpc",
122
+ "trpc.type": runOptions.procedure.type,
123
+ },
124
+ captureStackTrace: runOptions.procedure.captureStackTrace,
125
+ }),
126
+ Stream.interruptWhen(interruptOn(runOptions.signal)),
127
+ Stream.catchCause((cause) => Stream.fail(mapCause(cause, runOptions.procedure, options.mapError))),
128
+ );
129
+ const context = await runtime.runPromise(Effect.context<Requirements>());
130
+ const ambient = contextBridge.current();
131
+ const provided = ambient === undefined ? context : Context.merge(context, ambient);
132
+ return Stream.toAsyncIterableWith(instrumented, provided);
133
+ },
132
134
  });
package/src/procedure.ts CHANGED
@@ -14,6 +14,14 @@ import { captureStackTrace } from "./internal/stack-trace.ts";
14
14
  import { makeSubscriptionHandler } from "./internal/subscription-handler.ts";
15
15
  import type { EffectProcedureRequestServices } from "./request-services.ts";
16
16
 
17
+ interface ProcedureParts<Context, Meta, ContextOverrides, ProvidedServices, LayerError, RuntimeRequirements> {
18
+ readonly builder: ProcedureBuilderSurface<ResolverContext<Context, Meta, ContextOverrides>>;
19
+ readonly requestServices: EffectProcedureRequestServices<ResolverContext<Context, Meta, ContextOverrides>, ProvidedServices, LayerError>;
20
+ readonly runtime: RuntimeBridge<RuntimeRequirements>;
21
+ readonly subscriptionBuilder: ProcedureBuilderSurface<ResolverContext<Context, Meta, ContextOverrides>>;
22
+ readonly subscriptionOutput?: Schema.ConstraintDecoder<unknown> | undefined;
23
+ }
24
+
17
25
  export class EffectProcedureBuilder<
18
26
  Context,
19
27
  Meta,
@@ -26,13 +34,11 @@ export class EffectProcedureBuilder<
26
34
  LayerError,
27
35
  RuntimeRequirements,
28
36
  > {
29
- constructor(
30
- private readonly builder: ProcedureBuilderSurface<ResolverContext<Context, Meta, ContextOverrides>>,
31
- private readonly requestServices: EffectProcedureRequestServices<ResolverContext<Context, Meta, ContextOverrides>, ProvidedServices, LayerError>,
32
- private readonly runtime: RuntimeBridge<RuntimeRequirements>,
33
- private readonly subscriptionBuilder = builder,
34
- private readonly subscriptionOutput?: Schema.ConstraintDecoder<unknown>,
35
- ) {}
37
+ private readonly parts: ProcedureParts<Context, Meta, ContextOverrides, ProvidedServices, LayerError, RuntimeRequirements>;
38
+
39
+ constructor(parts: ProcedureParts<Context, Meta, ContextOverrides, ProvidedServices, LayerError, RuntimeRequirements>) {
40
+ this.parts = parts;
41
+ }
36
42
 
37
43
  input<SchemaValue extends Schema.ConstraintDecoder<unknown>>(
38
44
  schema: SchemaValue,
@@ -49,13 +55,11 @@ export class EffectProcedureBuilder<
49
55
  RuntimeRequirements
50
56
  > {
51
57
  const parser = Schema.toStandardSchemaV1(schema);
52
- return new EffectProcedureBuilder(
53
- this.builder.input(parser),
54
- this.requestServices,
55
- this.runtime,
56
- this.subscriptionBuilder.input(parser),
57
- this.subscriptionOutput,
58
- );
58
+ return new EffectProcedureBuilder({
59
+ ...this.parts,
60
+ builder: this.parts.builder.input(parser),
61
+ subscriptionBuilder: this.parts.subscriptionBuilder.input(parser),
62
+ });
59
63
  }
60
64
 
61
65
  output<SchemaValue extends Schema.ConstraintDecoder<unknown>>(
@@ -72,13 +76,11 @@ export class EffectProcedureBuilder<
72
76
  LayerError,
73
77
  RuntimeRequirements
74
78
  > {
75
- return new EffectProcedureBuilder(
76
- this.builder.output(Schema.toStandardSchemaV1(schema)),
77
- this.requestServices,
78
- this.runtime,
79
- this.subscriptionBuilder,
80
- schema,
81
- );
79
+ return new EffectProcedureBuilder({
80
+ ...this.parts,
81
+ builder: this.parts.builder.output(Schema.toStandardSchemaV1(schema)),
82
+ subscriptionOutput: schema,
83
+ });
82
84
  }
83
85
 
84
86
  query<Output>(
@@ -93,7 +95,7 @@ export class EffectProcedureBuilder<
93
95
  meta: Meta;
94
96
  }>;
95
97
  query(resolver: EffectProcedureResolver<never, ProvidedServices | RuntimeRequirements, unknown>): unknown {
96
- return this.builder.query(this.handler("query", resolver));
98
+ return this.parts.builder.query(this.handler("query", resolver));
97
99
  }
98
100
 
99
101
  mutation<Output>(
@@ -108,7 +110,7 @@ export class EffectProcedureBuilder<
108
110
  meta: Meta;
109
111
  }>;
110
112
  mutation(resolver: EffectProcedureResolver<never, ProvidedServices | RuntimeRequirements, unknown>): unknown {
111
- return this.builder.mutation(this.handler("mutation", resolver));
113
+ return this.parts.builder.mutation(this.handler("mutation", resolver));
112
114
  }
113
115
 
114
116
  subscription<Output>(
@@ -123,18 +125,18 @@ export class EffectProcedureBuilder<
123
125
  meta: Meta;
124
126
  }>;
125
127
  subscription(resolver: EffectSubscriptionResolver<never, ProvidedServices | RuntimeRequirements, unknown>): unknown {
126
- return this.subscriptionBuilder.subscription(
128
+ return this.parts.subscriptionBuilder.subscription(
127
129
  makeSubscriptionHandler(
128
- this.runtime,
130
+ this.parts.runtime,
129
131
  resolver,
130
- this.requestServices,
132
+ this.parts.requestServices,
131
133
  { captureStackTrace: captureStackTrace(), type: "subscription" },
132
- this.subscriptionOutput,
134
+ this.parts.subscriptionOutput,
133
135
  ),
134
136
  );
135
137
  }
136
138
 
137
139
  private handler(type: "mutation" | "query", resolver: EffectProcedureResolver<never, ProvidedServices | RuntimeRequirements, unknown>) {
138
- return makeProcedureHandler(this.runtime, resolver, this.requestServices, { captureStackTrace: captureStackTrace(), type });
140
+ return makeProcedureHandler(this.parts.runtime, resolver, this.parts.requestServices, { captureStackTrace: captureStackTrace(), type });
139
141
  }
140
142
  }
@@ -1,6 +1,6 @@
1
1
  import { StandardSchemaV1Error, type TRPCDefaultErrorShape, type TRPCError } from "@trpc/server";
2
2
  import type { EncodedRejection } from "./client/rejection.ts";
3
- import { RejectionError } from "./rejection.ts";
3
+ import { type DeclaredRejection, RejectionError } from "./rejection.ts";
4
4
 
5
5
  export interface RejectionData {
6
6
  readonly rejection?: EncodedRejection;
@@ -9,14 +9,24 @@ export interface RejectionData {
9
9
  export type RejectionErrorShape = TRPCDefaultErrorShape & { readonly data: RejectionData };
10
10
 
11
11
  const inputRejection = ({ issues: [issue] }: StandardSchemaV1Error): EncodedRejection | undefined => {
12
- if (issue === undefined) return undefined;
12
+ if (issue === undefined) {
13
+ return undefined;
14
+ }
13
15
  const field = (issue.path ?? []).map((segment) => String(typeof segment === "object" ? segment.key : segment)).join(".");
14
- return field === "" ? { _tag: "BadRequest", message: issue.message } : { _tag: "BadRequest", message: issue.message, field };
16
+ return field === ""
17
+ ? { _tag: "BadRequest", invalidInput: true, message: issue.message }
18
+ : { _tag: "BadRequest", field, invalidInput: true, message: issue.message };
15
19
  };
16
20
 
21
+ const declared = ({ invalidInput: _reserved, ...rejection }: DeclaredRejection): EncodedRejection => rejection;
22
+
17
23
  const rejectionFrom = (error: TRPCError): EncodedRejection | undefined => {
18
- if (error instanceof RejectionError) return error.rejection;
19
- if (error.code === "BAD_REQUEST" && error.cause instanceof StandardSchemaV1Error) return inputRejection(error.cause);
24
+ if (error instanceof RejectionError) {
25
+ return declared(error.rejection);
26
+ }
27
+ if (error.code === "BAD_REQUEST" && error.cause instanceof StandardSchemaV1Error) {
28
+ return inputRejection(error.cause);
29
+ }
20
30
  return undefined;
21
31
  };
22
32
 
package/src/rejection.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { type TRPC_ERROR_CODE_KEY, TRPCError } from "@trpc/server";
2
2
  import { Effect, Schema } from "effect";
3
- import { EncodedRejection } from "./client/rejection.ts";
4
3
 
5
4
  const TAXONOMY_CODES = new Map<string, TRPC_ERROR_CODE_KEY>([
6
5
  ["NotFound", "NOT_FOUND"],
@@ -8,15 +7,29 @@ const TAXONOMY_CODES = new Map<string, TRPC_ERROR_CODE_KEY>([
8
7
  ["Forbidden", "FORBIDDEN"],
9
8
  ["Conflict", "CONFLICT"],
10
9
  ["PreconditionFailed", "PRECONDITION_FAILED"],
10
+ ["TooManyRequests", "TOO_MANY_REQUESTS"],
11
11
  ["AuthUnavailable", "SERVICE_UNAVAILABLE"],
12
12
  ]);
13
13
 
14
14
  export const rejectionCode = (tag: string): TRPC_ERROR_CODE_KEY => TAXONOMY_CODES.get(tag) ?? "BAD_REQUEST";
15
15
 
16
+ const DeclaredRejection = Schema.StructWithRest(Schema.Struct({ _tag: Schema.String }), [Schema.Record(Schema.String, Schema.Unknown)]);
17
+
18
+ export type DeclaredRejection = typeof DeclaredRejection.Type;
19
+
20
+ interface InvalidInputIsReserved {
21
+ readonly "invalidInput is reserved for the mark on input that did not parse": never;
22
+ }
23
+
24
+ interface DeclaredEncoding {
25
+ readonly _tag: string;
26
+ readonly invalidInput?: InvalidInputIsReserved;
27
+ }
28
+
16
29
  export class RejectionError extends TRPCError {
17
- readonly rejection: EncodedRejection;
30
+ readonly rejection: DeclaredRejection;
18
31
 
19
- constructor(rejection: EncodedRejection, code: TRPC_ERROR_CODE_KEY = rejectionCode(rejection._tag)) {
32
+ constructor(rejection: DeclaredRejection, code: TRPC_ERROR_CODE_KEY = rejectionCode(rejection._tag)) {
20
33
  super({ code, message: typeof rejection.message === "string" ? rejection.message : rejection._tag });
21
34
  this.rejection = rejection;
22
35
  }
@@ -28,11 +41,11 @@ export interface RejectWithOptions<Tag extends string> {
28
41
 
29
42
  const encodeRejection = (schema: Schema.Constraint) => {
30
43
  const encode = Schema.encodeUnknownEffect(schema);
31
- const tagged = Schema.decodeUnknownEffect(EncodedRejection);
44
+ const tagged = Schema.decodeUnknownEffect(DeclaredRejection);
32
45
  return (rejection: unknown) => Effect.orDie(Effect.flatMap(encode(rejection), tagged));
33
46
  };
34
47
 
35
- export function rejectWith<S extends Schema.ConstraintDecoder<{ readonly _tag: string }, unknown>>(
48
+ export function rejectWith<S extends Schema.ConstraintCodec<{ readonly _tag: string }, DeclaredEncoding, unknown, unknown>>(
36
49
  schema: S,
37
50
  options?: RejectWithOptions<S["Type"]["_tag"]>,
38
51
  ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, Exclude<E, S["Type"]> | RejectionError, R | S["EncodingServices"]>;
@@ -1,4 +1,3 @@
1
1
  import { Context } from "effect";
2
2
 
3
- /** The transport cancellation signal for the current tRPC procedure. */
4
3
  export const RequestSignal = Context.Reference<AbortSignal | undefined>("@shivaedev/effect-trpc/RequestSignal", { defaultValue: () => undefined });
@@ -19,7 +19,7 @@ type Adapter = Pick<EffectTRPCAdapter<never>, "runWithServices">;
19
19
  const member = (node: unknown, segment: string): unknown =>
20
20
  (typeof node === "object" && node !== null) || typeof node === "function" ? Reflect.get(node, segment) : undefined;
21
21
 
22
- const invoke = (promiseCaller: object, path: ReadonlyArray<string>, argumentsList: ReadonlyArray<unknown>): Promise<unknown> => {
22
+ const invoke = (promiseCaller: object, path: readonly string[], argumentsList: readonly unknown[]): Promise<unknown> => {
23
23
  const leaf = path.reduce<unknown>(member, promiseCaller);
24
24
  return typeof leaf === "function"
25
25
  ? Promise.resolve(Reflect.apply(leaf, undefined, argumentsList))
@@ -32,7 +32,7 @@ export function makeEffectCaller<Caller extends object, Services>(
32
32
  services: Context.Context<Services>,
33
33
  ): EffectCaller<Caller>;
34
34
  export function makeEffectCaller(adapter: Adapter, promiseCaller: object, services: Context.Context<never>): unknown {
35
- const build = (path: ReadonlyArray<string>): unknown =>
35
+ const build = (path: readonly string[]): unknown =>
36
36
  new Proxy(
37
37
  Object.assign(() => undefined, { path }),
38
38
  {
@@ -1,6 +1,6 @@
1
1
  import type { TestContext, Vitest } from "@effect/vitest";
2
- import type { EffectClock, EffectTestOptions } from "@shivaedev/effect-test";
3
2
  import type { Effect, Layer } from "effect";
3
+ import type { EffectClock, EffectTestOptions } from "@shivaedev/effect-test";
4
4
  import type { EffectTRPCAdapter } from "../adapter.ts";
5
5
  import type { AnyTestLayer } from "./any-test-layer.ts";
6
6
  import type { EffectCallerFactory } from "./caller.ts";
@@ -12,18 +12,18 @@ export type TrpcHarnessTest<Harness, Provided> = <A, Eff extends Effect.Effect<u
12
12
  ) => void;
13
13
 
14
14
  export interface TrpcHarnessTester<Harness, Provided> extends TrpcHarnessTest<Harness, Provided> {
15
- readonly skip: TrpcHarnessTest<Harness, Provided>;
16
- readonly skipIf: (condition: unknown) => TrpcHarnessTest<Harness, Provided>;
17
- readonly runIf: (condition: unknown) => TrpcHarnessTest<Harness, Provided>;
18
- readonly only: TrpcHarnessTest<Harness, Provided>;
19
15
  readonly each: <Item>(
20
- cases: ReadonlyArray<Item>,
16
+ cases: readonly Item[],
21
17
  ) => <A, Eff extends Effect.Effect<unknown, unknown, Provided>>(
22
18
  name: string,
23
19
  body: (item: Item, harness: Harness, context: TestContext) => Generator<Eff, A, never>,
24
20
  options?: number | EffectTestOptions,
25
21
  ) => void;
26
22
  readonly fails: TrpcHarnessTest<Harness, Provided>;
23
+ readonly only: TrpcHarnessTest<Harness, Provided>;
24
+ readonly runIf: (condition: unknown) => TrpcHarnessTest<Harness, Provided>;
25
+ readonly skip: TrpcHarnessTest<Harness, Provided>;
26
+ readonly skipIf: (condition: unknown) => TrpcHarnessTest<Harness, Provided>;
27
27
  }
28
28
 
29
29
  export type TrpcTest<Options, Caller, Provided> = TrpcHarnessTest<EffectCallerFactory<Options, Caller>, Provided>;
@@ -1,6 +1,6 @@
1
1
  import { it as effectIt, type Vitest } from "@effect/vitest";
2
- import { makeEffectIt } from "@shivaedev/effect-test";
3
2
  import { Effect, type Layer } from "effect";
3
+ import { makeEffectIt } from "@shivaedev/effect-test";
4
4
  import type { AnyTestLayer } from "./any-test-layer.ts";
5
5
  import { makeEffectCallerFactory } from "./caller.ts";
6
6
  import type { CallerOptions, CallerResult, MakeTrpcHarnessItOptions, MakeTrpcItOptions, TrpcHarnessIt, TrpcIt } from "./types.ts";