@shivaedev/effect-trpc 0.6.0 → 0.6.1

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 (172) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +309 -186
  3. package/dist/{client/rejection.d.ts → rejectionDecoding.d.ts} +4 -4
  4. package/dist/rejectionDecoding.d.ts.map +1 -0
  5. package/dist/{client/rejection.js → rejectionDecoding.js} +6 -4
  6. package/dist/rejectionDecoding.js.map +1 -0
  7. package/dist/server/EffectProcedureBuilder.d.ts +35 -0
  8. package/dist/server/EffectProcedureBuilder.d.ts.map +1 -0
  9. package/dist/server/EffectProcedureBuilder.js +38 -0
  10. package/dist/server/EffectProcedureBuilder.js.map +1 -0
  11. package/dist/{request-signal.d.ts → server/RequestSignal.d.ts} +1 -1
  12. package/dist/server/RequestSignal.d.ts.map +1 -0
  13. package/dist/{request-signal.js → server/RequestSignal.js} +1 -1
  14. package/dist/server/RequestSignal.js.map +1 -0
  15. package/dist/server/adapter.d.ts +29 -0
  16. package/dist/server/adapter.d.ts.map +1 -0
  17. package/dist/{adapter.js → server/adapter.js} +3 -3
  18. package/dist/server/adapter.js.map +1 -0
  19. package/dist/server/errors.d.ts +11 -0
  20. package/dist/server/errors.d.ts.map +1 -0
  21. package/dist/server/errors.js +27 -0
  22. package/dist/server/errors.js.map +1 -0
  23. package/dist/server/internal/captureStackTrace.d.ts +2 -0
  24. package/dist/server/internal/captureStackTrace.d.ts.map +1 -0
  25. package/dist/{internal/stack-trace.js → server/internal/captureStackTrace.js} +4 -4
  26. package/dist/server/internal/captureStackTrace.js.map +1 -0
  27. package/dist/{internal/context-bridge.d.ts → server/internal/contextBridge.d.ts} +4 -4
  28. package/dist/server/internal/contextBridge.d.ts.map +1 -0
  29. package/dist/{internal/context-bridge.js → server/internal/contextBridge.js} +3 -3
  30. package/dist/server/internal/contextBridge.js.map +1 -0
  31. package/dist/server/internal/loose.d.ts +4 -0
  32. package/dist/server/internal/loose.d.ts.map +1 -0
  33. package/dist/server/internal/loose.js.map +1 -0
  34. package/dist/server/internal/makeProcedureHandler.d.ts +6 -0
  35. package/dist/server/internal/makeProcedureHandler.d.ts.map +1 -0
  36. package/dist/{internal/procedure-handler.js → server/internal/makeProcedureHandler.js} +3 -3
  37. package/dist/server/internal/makeProcedureHandler.js.map +1 -0
  38. package/dist/server/internal/makeSubscriptionHandler.d.ts +7 -0
  39. package/dist/server/internal/makeSubscriptionHandler.d.ts.map +1 -0
  40. package/dist/{internal/subscription-handler.js → server/internal/makeSubscriptionHandler.js} +7 -5
  41. package/dist/server/internal/makeSubscriptionHandler.js.map +1 -0
  42. package/dist/server/internal/procedureTypes.d.ts +23 -0
  43. package/dist/server/internal/procedureTypes.d.ts.map +1 -0
  44. package/dist/server/internal/procedureTypes.js +2 -0
  45. package/dist/server/internal/procedureTypes.js.map +1 -0
  46. package/dist/server/internal/runtime.d.ts +20 -0
  47. package/dist/server/internal/runtime.d.ts.map +1 -0
  48. package/dist/server/internal/runtime.js +94 -0
  49. package/dist/server/internal/runtime.js.map +1 -0
  50. package/dist/{rejection.d.ts → server/rejection.d.ts} +5 -5
  51. package/dist/server/rejection.d.ts.map +1 -0
  52. package/dist/{rejection.js → server/rejection.js} +7 -3
  53. package/dist/server/rejection.js.map +1 -0
  54. package/dist/{rejection-formatter.d.ts → server/rejectionFormatter.d.ts} +6 -6
  55. package/dist/server/rejectionFormatter.d.ts.map +1 -0
  56. package/dist/{rejection-formatter.js → server/rejectionFormatter.js} +13 -9
  57. package/dist/server/rejectionFormatter.js.map +1 -0
  58. package/dist/server/requestServices.d.ts +7 -0
  59. package/dist/server/requestServices.d.ts.map +1 -0
  60. package/dist/server/requestServices.js +8 -0
  61. package/dist/server/requestServices.js.map +1 -0
  62. package/dist/{testing/any-test-layer.d.ts → server/testing/AnyTestLayer.d.ts} +1 -1
  63. package/dist/server/testing/AnyTestLayer.d.ts.map +1 -0
  64. package/dist/server/testing/AnyTestLayer.js +2 -0
  65. package/dist/server/testing/AnyTestLayer.js.map +1 -0
  66. package/dist/server/testing/caller.d.ts +12 -0
  67. package/dist/server/testing/caller.d.ts.map +1 -0
  68. package/dist/server/testing/caller.js +48 -0
  69. package/dist/server/testing/caller.js.map +1 -0
  70. package/dist/server/testing/types.d.ts +36 -0
  71. package/dist/server/testing/types.d.ts.map +1 -0
  72. package/dist/server/testing/types.js.map +1 -0
  73. package/dist/server/testing/vitest.d.ts +6 -0
  74. package/dist/server/testing/vitest.d.ts.map +1 -0
  75. package/dist/{testing → server/testing}/vitest.js +8 -6
  76. package/dist/server/testing/vitest.js.map +1 -0
  77. package/dist/server/types.d.ts.map +1 -0
  78. package/dist/{testing → server}/types.js.map +1 -1
  79. package/docs/north-star.md +48 -0
  80. package/docs/roadmap.md +33 -0
  81. package/package.json +191 -15
  82. package/src/{client/rejection.ts → rejectionDecoding.ts} +7 -5
  83. package/src/server/EffectProcedureBuilder.ts +134 -0
  84. package/src/{request-signal.ts → server/RequestSignal.ts} +0 -1
  85. package/src/server/adapter.ts +83 -0
  86. package/src/server/errors.ts +26 -0
  87. package/src/{internal/stack-trace.ts → server/internal/captureStackTrace.ts} +3 -4
  88. package/src/{internal/context-bridge.ts → server/internal/contextBridge.ts} +4 -8
  89. package/src/server/internal/loose.ts +12 -0
  90. package/src/{internal/procedure-handler.ts → server/internal/makeProcedureHandler.ts} +8 -10
  91. package/src/{internal/subscription-handler.ts → server/internal/makeSubscriptionHandler.ts} +12 -13
  92. package/src/server/internal/procedureTypes.ts +35 -0
  93. package/src/server/internal/runtime.ts +131 -0
  94. package/src/{rejection.ts → server/rejection.ts} +22 -19
  95. package/src/{rejection-formatter.ts → server/rejectionFormatter.ts} +25 -18
  96. package/src/server/requestServices.ts +23 -0
  97. package/src/{testing/any-test-layer.ts → server/testing/AnyTestLayer.ts} +0 -1
  98. package/src/{testing → server/testing}/caller.ts +28 -33
  99. package/src/server/testing/types.ts +55 -0
  100. package/src/{testing → server/testing}/vitest.ts +17 -17
  101. package/src/{types.ts → server/types.ts} +0 -6
  102. package/dist/adapter.d.ts +0 -29
  103. package/dist/adapter.d.ts.map +0 -1
  104. package/dist/adapter.js.map +0 -1
  105. package/dist/client/rejection.d.ts.map +0 -1
  106. package/dist/client/rejection.js.map +0 -1
  107. package/dist/errors.d.ts +0 -11
  108. package/dist/errors.d.ts.map +0 -1
  109. package/dist/errors.js +0 -11
  110. package/dist/errors.js.map +0 -1
  111. package/dist/internal/context-bridge.d.ts.map +0 -1
  112. package/dist/internal/context-bridge.js.map +0 -1
  113. package/dist/internal/loose.d.ts +0 -4
  114. package/dist/internal/loose.d.ts.map +0 -1
  115. package/dist/internal/loose.js.map +0 -1
  116. package/dist/internal/procedure-handler.d.ts +0 -6
  117. package/dist/internal/procedure-handler.d.ts.map +0 -1
  118. package/dist/internal/procedure-handler.js.map +0 -1
  119. package/dist/internal/procedure-types.d.ts +0 -23
  120. package/dist/internal/procedure-types.d.ts.map +0 -1
  121. package/dist/internal/procedure-types.js +0 -2
  122. package/dist/internal/procedure-types.js.map +0 -1
  123. package/dist/internal/runtime.d.ts +0 -20
  124. package/dist/internal/runtime.d.ts.map +0 -1
  125. package/dist/internal/runtime.js +0 -85
  126. package/dist/internal/runtime.js.map +0 -1
  127. package/dist/internal/stack-trace.d.ts +0 -2
  128. package/dist/internal/stack-trace.d.ts.map +0 -1
  129. package/dist/internal/stack-trace.js.map +0 -1
  130. package/dist/internal/subscription-handler.d.ts +0 -7
  131. package/dist/internal/subscription-handler.d.ts.map +0 -1
  132. package/dist/internal/subscription-handler.js.map +0 -1
  133. package/dist/procedure.d.ts +0 -36
  134. package/dist/procedure.d.ts.map +0 -1
  135. package/dist/procedure.js +0 -38
  136. package/dist/procedure.js.map +0 -1
  137. package/dist/rejection-formatter.d.ts.map +0 -1
  138. package/dist/rejection-formatter.js.map +0 -1
  139. package/dist/rejection.d.ts.map +0 -1
  140. package/dist/rejection.js.map +0 -1
  141. package/dist/request-services.d.ts +0 -7
  142. package/dist/request-services.d.ts.map +0 -1
  143. package/dist/request-services.js +0 -4
  144. package/dist/request-services.js.map +0 -1
  145. package/dist/request-signal.d.ts.map +0 -1
  146. package/dist/request-signal.js.map +0 -1
  147. package/dist/testing/any-test-layer.d.ts.map +0 -1
  148. package/dist/testing/any-test-layer.js +0 -2
  149. package/dist/testing/any-test-layer.js.map +0 -1
  150. package/dist/testing/caller.d.ts +0 -12
  151. package/dist/testing/caller.d.ts.map +0 -1
  152. package/dist/testing/caller.js +0 -42
  153. package/dist/testing/caller.js.map +0 -1
  154. package/dist/testing/types.d.ts +0 -36
  155. package/dist/testing/types.d.ts.map +0 -1
  156. package/dist/testing/vitest.d.ts +0 -6
  157. package/dist/testing/vitest.d.ts.map +0 -1
  158. package/dist/testing/vitest.js.map +0 -1
  159. package/dist/types.d.ts.map +0 -1
  160. package/dist/types.js.map +0 -1
  161. package/src/adapter.ts +0 -72
  162. package/src/errors.ts +0 -19
  163. package/src/internal/loose.ts +0 -14
  164. package/src/internal/procedure-types.ts +0 -44
  165. package/src/internal/runtime.ts +0 -134
  166. package/src/procedure.ts +0 -142
  167. package/src/request-services.ts +0 -23
  168. package/src/testing/types.ts +0 -63
  169. /package/dist/{internal → server/internal}/loose.js +0 -0
  170. /package/dist/{testing → server/testing}/types.js +0 -0
  171. /package/dist/{types.d.ts → server/types.d.ts} +0 -0
  172. /package/dist/{types.js → server/types.js} +0 -0
@@ -0,0 +1,35 @@
1
+ import type { TRPCMutationProcedure, TRPCQueryProcedure, TRPCSubscriptionProcedure } from "@trpc/server";
2
+ import { Schema } from "effect";
3
+ import type { DefaultValue, EffectProcedureResolver, EffectSubscriptionResolver, IntersectIfDefined, ProcedureBuilderSurface, ResolverContext } from "#internal/procedure-types.ts";
4
+ import type { RuntimeBridge } from "#internal/runtime.ts";
5
+ import type { EffectProcedureRequestServices } from "./requestServices.ts";
6
+ interface ProcedureParts<TContext, TMeta, TContextOverrides, TProvidedServices, TLayerError, TRuntimeRequirements> {
7
+ readonly builder: ProcedureBuilderSurface<ResolverContext<TContext, TMeta, TContextOverrides>>;
8
+ readonly requestServices: EffectProcedureRequestServices<ResolverContext<TContext, TMeta, TContextOverrides>, TProvidedServices, TLayerError>;
9
+ readonly runtime: RuntimeBridge<TRuntimeRequirements>;
10
+ readonly subscriptionBuilder: ProcedureBuilderSurface<ResolverContext<TContext, TMeta, TContextOverrides>>;
11
+ readonly subscriptionOutput?: Schema.ConstraintDecoder<unknown> | undefined;
12
+ }
13
+ export declare class EffectProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, TProvidedServices, TLayerError, TRuntimeRequirements> {
14
+ #private;
15
+ constructor(parts: ProcedureParts<TContext, TMeta, TContextOverrides, TProvidedServices, TLayerError, TRuntimeRequirements>);
16
+ input<TSchemaValue extends Schema.ConstraintDecoder<unknown>>(schema: TSchemaValue): EffectProcedureBuilder<TContext, TMeta, TContextOverrides, IntersectIfDefined<TInputIn, TSchemaValue["Encoded"]>, IntersectIfDefined<TInputOut, TSchemaValue["Type"]>, TOutputIn, TOutputOut, TProvidedServices, TLayerError, TRuntimeRequirements>;
17
+ output<TSchemaValue extends Schema.ConstraintDecoder<unknown>>(schema: TSchemaValue): EffectProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, IntersectIfDefined<TOutputIn, TSchemaValue["Encoded"]>, IntersectIfDefined<TOutputOut, TSchemaValue["Type"]>, TProvidedServices, TLayerError, TRuntimeRequirements>;
18
+ query<TOutput>(resolver: EffectProcedureResolver<DefaultValue<TInputOut, undefined>, TProvidedServices | NoInfer<TRuntimeRequirements>, DefaultValue<TOutputIn, TOutput>>): TRPCQueryProcedure<{
19
+ input: DefaultValue<TInputIn, void>;
20
+ output: DefaultValue<TOutputOut, TOutput>;
21
+ meta: TMeta;
22
+ }>;
23
+ mutation<TOutput>(resolver: EffectProcedureResolver<DefaultValue<TInputOut, undefined>, TProvidedServices | NoInfer<TRuntimeRequirements>, DefaultValue<TOutputIn, TOutput>>): TRPCMutationProcedure<{
24
+ input: DefaultValue<TInputIn, void>;
25
+ output: DefaultValue<TOutputOut, TOutput>;
26
+ meta: TMeta;
27
+ }>;
28
+ subscription<TOutput>(resolver: EffectSubscriptionResolver<DefaultValue<TInputOut, undefined>, TProvidedServices | NoInfer<TRuntimeRequirements>, DefaultValue<TOutputIn, TOutput>>): TRPCSubscriptionProcedure<{
29
+ input: DefaultValue<TInputIn, void>;
30
+ output: AsyncIterable<DefaultValue<TOutputOut, TOutput>, void, unknown>;
31
+ meta: TMeta;
32
+ }>;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=EffectProcedureBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffectProcedureBuilder.d.ts","sourceRoot":"","sources":["../../src/server/EffectProcedureBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { Schema } from "effect";
2
+ import { makeProcedureHandler } from "#internal/procedure-handler.ts";
3
+ import { captureStackTrace } from "#internal/stack-trace.ts";
4
+ import { makeSubscriptionHandler } from "#internal/subscription-handler.ts";
5
+ export class EffectProcedureBuilder {
6
+ #parts;
7
+ constructor(parts) {
8
+ this.#parts = parts;
9
+ }
10
+ input(schema) {
11
+ const parser = Schema.toStandardSchemaV1(schema);
12
+ return new EffectProcedureBuilder({
13
+ ...this.#parts,
14
+ builder: this.#parts.builder.input(parser),
15
+ subscriptionBuilder: this.#parts.subscriptionBuilder.input(parser),
16
+ });
17
+ }
18
+ output(schema) {
19
+ return new EffectProcedureBuilder({
20
+ ...this.#parts,
21
+ builder: this.#parts.builder.output(Schema.toStandardSchemaV1(schema)),
22
+ subscriptionOutput: schema,
23
+ });
24
+ }
25
+ query(resolver) {
26
+ return this.#parts.builder.query(this.#handler("query", resolver));
27
+ }
28
+ mutation(resolver) {
29
+ return this.#parts.builder.mutation(this.#handler("mutation", resolver));
30
+ }
31
+ subscription(resolver) {
32
+ return this.#parts.subscriptionBuilder.subscription(makeSubscriptionHandler(this.#parts.runtime, resolver, this.#parts.requestServices, { captureStackTrace: captureStackTrace(), type: "subscription" }, this.#parts.subscriptionOutput));
33
+ }
34
+ #handler(type, resolver) {
35
+ return makeProcedureHandler(this.#parts.runtime, resolver, this.#parts.requestServices, { captureStackTrace: captureStackTrace(), type });
36
+ }
37
+ }
38
+ //# sourceMappingURL=EffectProcedureBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffectProcedureBuilder.js","sourceRoot":"","sources":["../../src/server/EffectProcedureBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAUtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAU5E,MAAM,OAAO,sBAAsB;IAYzB,MAAM,CAA2G;IAC1H,YAAY,KAA+G;QAC1H,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,KAAK,CACJ,MAAoB;QAapB,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,sBAAsB,CAAC;YACjC,GAAG,IAAI,CAAC,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1C,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;SAClE,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,CACL,MAAoB;QAapB,OAAO,IAAI,sBAAsB,CAAC;YACjC,GAAG,IAAI,CAAC,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACtE,kBAAkB,EAAE,MAAM;SAC1B,CAAC,CAAC;IACJ,CAAC;IAYD,KAAK,CAAC,QAA2F;QAChG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAYD,QAAQ,CAAC,QAA2F;QACnG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,CAAC;IAYD,YAAY,CAAC,QAA8F;QAC1G,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAClD,uBAAuB,CACtB,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,QAAQ,EACR,IAAI,CAAC,MAAM,CAAC,eAAe,EAC3B,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAChE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAC9B,CACD,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,IAA0B,EAAE,QAA2F;QAC/H,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3I,CAAC;CACD"}
@@ -1,3 +1,3 @@
1
1
  import { Context } from "effect";
2
2
  export declare const RequestSignal: Context.Reference<AbortSignal | undefined>;
3
- //# sourceMappingURL=request-signal.d.ts.map
3
+ //# sourceMappingURL=RequestSignal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestSignal.d.ts","sourceRoot":"","sources":["../../src/server/RequestSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,eAAO,MAAM,aAAa,4CAAwH,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { Context } from "effect";
2
2
  export const RequestSignal = Context.Reference("@shivaedev/effect-trpc/RequestSignal", { defaultValue: () => undefined });
3
- //# sourceMappingURL=request-signal.js.map
3
+ //# sourceMappingURL=RequestSignal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestSignal.js","sourceRoot":"","sources":["../../src/server/RequestSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAA0B,sCAAsC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { TRPCProcedureBuilder } from "@trpc/server";
2
+ import type { Context, Effect, Exit } from "effect";
3
+ import type { ResolverContext } from "#internal/procedure-types.ts";
4
+ import { EffectProcedureBuilder } from "./EffectProcedureBuilder.ts";
5
+ import type { EffectProcedureRequestServices } from "./requestServices.ts";
6
+ import type { EffectTRPCErrorMapper, EffectTRPCInstrument, EffectTRPCStreamInstrument } from "./types.ts";
7
+ export interface MakeEffectTRPCOptions<TRequirements, TRuntimeError> {
8
+ readonly instrument?: EffectTRPCInstrument;
9
+ readonly instrumentStream?: EffectTRPCStreamInstrument;
10
+ readonly mapError?: EffectTRPCErrorMapper;
11
+ readonly runtime: EffectTRPCRuntime<TRequirements, TRuntimeError>;
12
+ }
13
+ export interface EffectTRPCRuntime<TRequirements, TRuntimeError> {
14
+ readonly contextEffect: Effect.Effect<Context.Context<TRequirements>, TRuntimeError>;
15
+ readonly currentServices?: () => Context.Context<never> | undefined;
16
+ readonly runPromise: <TValue, TError>(effect: Effect.Effect<TValue, TError, TRequirements>, options?: {
17
+ readonly signal?: AbortSignal;
18
+ }) => Promise<TValue>;
19
+ readonly runPromiseExit: <TValue, TError>(effect: Effect.Effect<TValue, TError, TRequirements>, options?: {
20
+ readonly signal?: AbortSignal;
21
+ }) => Promise<Exit.Exit<TValue, TError | TRuntimeError>>;
22
+ readonly runWithServices?: <TServices, TValue>(services: Context.Context<TServices>, evaluate: () => TValue) => TValue;
23
+ }
24
+ export interface EffectTRPCAdapter<TRequirements> {
25
+ readonly procedure: <TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, TProvidedServices, TLayerError>(builder: TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, false>, requestServices: EffectProcedureRequestServices<ResolverContext<TContext, TMeta, TContextOverrides>, TProvidedServices, TLayerError>) => EffectProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, TProvidedServices, TLayerError, TRequirements>;
26
+ readonly runWithServices: <TServices, TValue>(services: Context.Context<TServices>, evaluate: () => TValue) => TValue;
27
+ }
28
+ export declare function makeEffectTRPC<TRequirements, TRuntimeError = never>(options: MakeEffectTRPCOptions<TRequirements, TRuntimeError>): EffectTRPCAdapter<TRequirements>;
29
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/server/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { makeContextBridge } from "#internal/context-bridge.ts";
2
2
  import { looseBuilder } from "#internal/loose.ts";
3
3
  import { makeRuntimeBridge } from "#internal/runtime.ts";
4
- import { EffectProcedureBuilder } from "./procedure.js";
5
- export const makeEffectTRPC = (options) => {
4
+ import { EffectProcedureBuilder } from "./EffectProcedureBuilder.js";
5
+ export function makeEffectTRPC(options) {
6
6
  const contextBridge = makeContextBridge(options.runtime);
7
7
  const runtime = makeRuntimeBridge(options.runtime, contextBridge, options);
8
8
  return {
@@ -17,5 +17,5 @@ export const makeEffectTRPC = (options) => {
17
17
  },
18
18
  runWithServices: contextBridge.run,
19
19
  };
20
- };
20
+ }
21
21
  //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/server/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AA6CrE,MAAM,UAAU,cAAc,CAC7B,OAA4D;IAE5D,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;IAC3E,OAAO;QACN,SAAS,EAAE,CACV,OAAoH,EACpH,eAAoI,EACnI,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"}
@@ -0,0 +1,11 @@
1
+ import { TRPCError } from "@trpc/server";
2
+ import { Effect } from "effect";
3
+ export declare function fail(code: TRPCError["code"], message: string, cause?: unknown): Effect.Effect<never, TRPCError>;
4
+ export declare function badRequest(message: string, cause?: unknown): Effect.Effect<never, TRPCError, never>;
5
+ export declare function unauthorized(message: string, cause?: unknown): Effect.Effect<never, TRPCError, never>;
6
+ export declare function forbidden(message: string, cause?: unknown): Effect.Effect<never, TRPCError, never>;
7
+ export declare function notFound(message: string, cause?: unknown): Effect.Effect<never, TRPCError, never>;
8
+ export declare function conflict(message: string, cause?: unknown): Effect.Effect<never, TRPCError, never>;
9
+ export declare function preconditionFailed(message: string, cause?: unknown): Effect.Effect<never, TRPCError, never>;
10
+ export declare function internalServerError(message: string, cause?: unknown): Effect.Effect<never, TRPCError, never>;
11
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/server/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,wBAAgB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAE/G;AACD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,0CAE1D;AACD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,0CAE5D;AACD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,0CAEzD;AACD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,0CAExD;AACD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,0CAExD;AACD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,0CAElE;AACD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,0CAEnE"}
@@ -0,0 +1,27 @@
1
+ import { TRPCError } from "@trpc/server";
2
+ import { Effect } from "effect";
3
+ export function fail(code, message, cause) {
4
+ return Effect.fail(new TRPCError({ cause, code, message }));
5
+ }
6
+ export function badRequest(message, cause) {
7
+ return fail("BAD_REQUEST", message, cause);
8
+ }
9
+ export function unauthorized(message, cause) {
10
+ return fail("UNAUTHORIZED", message, cause);
11
+ }
12
+ export function forbidden(message, cause) {
13
+ return fail("FORBIDDEN", message, cause);
14
+ }
15
+ export function notFound(message, cause) {
16
+ return fail("NOT_FOUND", message, cause);
17
+ }
18
+ export function conflict(message, cause) {
19
+ return fail("CONFLICT", message, cause);
20
+ }
21
+ export function preconditionFailed(message, cause) {
22
+ return fail("PRECONDITION_FAILED", message, cause);
23
+ }
24
+ export function internalServerError(message, cause) {
25
+ return fail("INTERNAL_SERVER_ERROR", message, cause);
26
+ }
27
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/server/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,MAAM,UAAU,IAAI,CAAC,IAAuB,EAAE,OAAe,EAAE,KAAe;IAC7E,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,KAAe;IAC1D,OAAO,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,KAAe;IAC5D,OAAO,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AACD,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,KAAe;IACzD,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,KAAe;IACxD,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,KAAe;IACxD,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,KAAe;IAClE,OAAO,IAAI,CAAC,qBAAqB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,KAAe;IACnE,OAAO,IAAI,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function captureStackTrace(): () => string | undefined;
2
+ //# sourceMappingURL=captureStackTrace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureStackTrace.d.ts","sourceRoot":"","sources":["../../../src/server/internal/captureStackTrace.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,IAAI,MAAM,MAAM,GAAG,SAAS,CAiB5D"}
@@ -1,7 +1,7 @@
1
- export const captureStackTrace = () => {
1
+ export function captureStackTrace() {
2
2
  const limit = Error.stackTraceLimit;
3
3
  Error.stackTraceLimit = 3;
4
- const traceError = new Error();
4
+ const traceError = new Error("Procedure definition");
5
5
  Error.stackTraceLimit = limit;
6
6
  let cache = false;
7
7
  return () => {
@@ -15,5 +15,5 @@ export const captureStackTrace = () => {
15
15
  }
16
16
  return undefined;
17
17
  };
18
- };
19
- //# sourceMappingURL=stack-trace.js.map
18
+ }
19
+ //# sourceMappingURL=captureStackTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureStackTrace.js","sourceRoot":"","sources":["../../../src/server/internal/captureStackTrace.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;IACpC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,IAAI,KAAK,GAAmB,KAAK,CAAC;IAClC,OAAO,GAAG,EAAE;QACX,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC,CAAC;AACH,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import type { Context } from "effect";
2
2
  export interface ContextBridge {
3
3
  readonly current: () => Context.Context<never> | undefined;
4
- readonly run: <Services, Value>(services: Context.Context<Services>, evaluate: () => Value) => Value;
4
+ readonly run: <TServices, TValue>(services: Context.Context<TServices>, evaluate: () => TValue) => TValue;
5
5
  }
6
- export declare const makeContextBridge: (shared?: {
6
+ export declare function makeContextBridge(shared?: {
7
7
  readonly currentServices?: ContextBridge["current"];
8
8
  readonly runWithServices?: ContextBridge["run"];
9
- }) => ContextBridge;
10
- //# sourceMappingURL=context-bridge.d.ts.map
9
+ }): ContextBridge;
10
+ //# sourceMappingURL=contextBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextBridge.d.ts","sourceRoot":"","sources":["../../../src/server/internal/contextBridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,MAAM,KAAK,MAAM,CAAC;CAC1G;AACD,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;CAChD,GAAG,aAAa,CAYhB"}
@@ -1,5 +1,5 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
- export const makeContextBridge = (shared) => {
2
+ export function makeContextBridge(shared) {
3
3
  if (shared?.currentServices !== undefined && shared.runWithServices !== undefined) {
4
4
  return {
5
5
  current: shared.currentServices,
@@ -11,5 +11,5 @@ export const makeContextBridge = (shared) => {
11
11
  current: () => storage.getStore(),
12
12
  run: (services, evaluate) => storage.run(services, evaluate),
13
13
  };
14
- };
15
- //# sourceMappingURL=context-bridge.js.map
14
+ }
15
+ //# sourceMappingURL=contextBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextBridge.js","sourceRoot":"","sources":["../../../src/server/internal/contextBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAMrD,MAAM,UAAU,iBAAiB,CAAC,MAGjC;IACA,IAAI,MAAM,EAAE,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACnF,OAAO;YACN,OAAO,EAAE,MAAM,CAAC,eAAe;YAC/B,GAAG,EAAE,MAAM,CAAC,eAAe;SAC3B,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAA0B,CAAC;IAChE,OAAO;QACN,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE;QACjC,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC5D,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ProcedureBuilderOf, ProcedureBuilderSurface, ResolverContext } from "./procedureTypes.ts";
2
+ export declare function looseBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut>(builder: ProcedureBuilderOf<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut>): ProcedureBuilderSurface<ResolverContext<TContext, TMeta, TContextOverrides>>;
3
+ export declare function acceptParsedInput<TResult>(resolver: (input: never) => TResult): (input: unknown) => TResult;
4
+ //# sourceMappingURL=loose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loose.d.ts","sourceRoot":"","sources":["../../../src/server/internal/loose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACxG,wBAAgB,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAC1G,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,GACzG,uBAAuB,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAKhF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loose.js","sourceRoot":"","sources":["../../../src/server/internal/loose.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC5C,OAAO,OAAO,CAAC;AAChB,CAAC;AAGD,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IAClD,OAAO,QAAQ,CAAC;AACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { EffectProcedureRequestServices } from "#request-services.ts";
2
+ import type { ProcedureInfo } from "#types.ts";
3
+ import type { EffectProcedureResolver, ProcedureInvocation } from "./procedureTypes.ts";
4
+ import type { RuntimeBridge } from "./runtime.ts";
5
+ export declare function makeProcedureHandler<TRuntimeRequirements, TContext, TProvidedServices, TLayerError>(runtime: RuntimeBridge<TRuntimeRequirements>, resolver: EffectProcedureResolver<never, TProvidedServices | NoInfer<TRuntimeRequirements>, unknown>, requestServices: EffectProcedureRequestServices<TContext, TProvidedServices, TLayerError>, procedure: Omit<ProcedureInfo, "path">): (invocation: ProcedureInvocation<TContext>) => Promise<unknown>;
6
+ //# sourceMappingURL=makeProcedureHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeProcedureHandler.d.ts","sourceRoot":"","sources":["../../../src/server/internal/makeProcedureHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,wBAAgB,oBAAoB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAClG,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,EACpG,eAAe,EAAE,8BAA8B,CAAC,QAAQ,EAAE,iBAAiB,EAAE,WAAW,CAAC,EACzF,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,gBAGZ,mBAAmB,CAAC,QAAQ,CAAC,sBAUvD"}
@@ -1,6 +1,6 @@
1
1
  import { Effect } from "effect";
2
2
  import { acceptParsedInput } from "./loose.js";
3
- export const makeProcedureHandler = (runtime, resolver, requestServices, procedure) => {
3
+ export function makeProcedureHandler(runtime, resolver, requestServices, procedure) {
4
4
  const tracedResolver = Effect.fnUntraced(acceptParsedInput(resolver));
5
5
  return async (invocation) => {
6
6
  const info = { ...procedure, path: invocation.path };
@@ -10,5 +10,5 @@ export const makeProcedureHandler = (runtime, resolver, requestServices, procedu
10
10
  ...(invocation.signal === undefined ? {} : { signal: invocation.signal }),
11
11
  });
12
12
  };
13
- };
14
- //# sourceMappingURL=procedure-handler.js.map
13
+ }
14
+ //# sourceMappingURL=makeProcedureHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeProcedureHandler.js","sourceRoot":"","sources":["../../../src/server/internal/makeProcedureHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,UAAU,oBAAoB,CACnC,OAA4C,EAC5C,QAAoG,EACpG,eAAyF,EACzF,SAAsC;IAEtC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,OAAO,KAAK,EAAE,UAAyC,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CACtH,CAAC;QACF,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;YACxC,SAAS,EAAE,IAAI;YACf,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;SACzE,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Schema } from "effect";
2
+ import type { EffectProcedureRequestServices } from "#request-services.ts";
3
+ import type { ProcedureInfo } from "#types.ts";
4
+ import type { EffectSubscriptionResolver, ProcedureInvocation } from "./procedureTypes.ts";
5
+ import type { RuntimeBridge } from "./runtime.ts";
6
+ export declare function makeSubscriptionHandler<TRuntimeRequirements, TContext, TProvidedServices, TLayerError>(runtime: RuntimeBridge<TRuntimeRequirements>, resolver: EffectSubscriptionResolver<never, TProvidedServices | NoInfer<TRuntimeRequirements>, unknown>, requestServices: EffectProcedureRequestServices<TContext, TProvidedServices, TLayerError>, procedure: Omit<ProcedureInfo, "path">, outputSchema?: Schema.ConstraintDecoder<unknown>): (invocation: ProcedureInvocation<TContext>) => Promise<AsyncIterable<unknown>>;
7
+ //# sourceMappingURL=makeSubscriptionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeSubscriptionHandler.d.ts","sourceRoot":"","sources":["../../../src/server/internal/makeSubscriptionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAU,MAAM,QAAQ,CAAC;AACvD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,KAAK,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,wBAAgB,uBAAuB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EACrG,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,EACvG,eAAe,EAAE,8BAA8B,CAAC,QAAQ,EAAE,iBAAiB,EAAE,WAAW,CAAC,EACzF,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EACtC,YAAY,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAGtB,mBAAmB,CAAC,QAAQ,CAAC,qCAYvD"}
@@ -1,17 +1,19 @@
1
1
  import { Effect, Layer, Schema, Stream } from "effect";
2
2
  import { RequestSignal } from "#request-signal.ts";
3
3
  import { acceptParsedInput } from "./loose.js";
4
- export const makeSubscriptionHandler = (runtime, resolver, requestServices, procedure, outputSchema) => {
4
+ export function makeSubscriptionHandler(runtime, resolver, requestServices, procedure, outputSchema) {
5
5
  const tracedResolver = Effect.fnUntraced(acceptParsedInput(resolver));
6
6
  return async (invocation) => {
7
7
  const info = { ...procedure, path: invocation.path };
8
- const requestLayer = Layer.merge(requestServices.layer(invocation.ctx), Layer.succeed(RequestSignal, invocation.signal));
9
- const stream = Stream.unwrap(Effect.suspend(() => runtime.instrument(tracedResolver(invocation.input), info))).pipe(Stream.provide(requestLayer));
8
+ const stream = Stream.suspend(() => {
9
+ const requestLayer = Layer.merge(requestServices.layer(invocation.ctx), Layer.succeed(RequestSignal, invocation.signal));
10
+ return Stream.unwrap(Effect.suspend(() => runtime.instrument(tracedResolver(invocation.input), info))).pipe(Stream.provide(requestLayer));
11
+ });
10
12
  const decoded = outputSchema === undefined ? stream : Stream.mapEffect(stream, (value) => Schema.decodeUnknownEffect(outputSchema)(value));
11
13
  return await runtime.runStream(decoded, {
12
14
  procedure: info,
13
15
  ...(invocation.signal === undefined ? {} : { signal: invocation.signal }),
14
16
  });
15
17
  };
16
- };
17
- //# sourceMappingURL=subscription-handler.js.map
18
+ }
19
+ //# sourceMappingURL=makeSubscriptionHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeSubscriptionHandler.js","sourceRoot":"","sources":["../../../src/server/internal/makeSubscriptionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,UAAU,uBAAuB,CACtC,OAA4C,EAC5C,QAAuG,EACvG,eAAyF,EACzF,SAAsC,EACtC,YAAgD;IAEhD,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,OAAO,KAAK,EAAE,UAAyC,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YAClC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACzH,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3I,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;YACvC,SAAS,EAAE,IAAI;YACf,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;SACzE,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { inferProcedureBuilderResolverOptions, TRPCProcedureBuilder, TRPCUnsetMarker } from "@trpc/server";
2
+ import type { Effect, StandardSchema, Stream } from "effect";
3
+ export type ProcedureBuilderOf<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut> = TRPCProcedureBuilder<TContext, TMeta, TContextOverrides, TInputIn, TInputOut, TOutputIn, TOutputOut, false>;
4
+ export type DefaultValue<TValue, TFallback> = TValue extends TRPCUnsetMarker ? TFallback : TValue;
5
+ export type IntersectIfDefined<TValue, TWith> = TValue extends TRPCUnsetMarker ? TWith : TWith extends TRPCUnsetMarker ? TValue : TValue & TWith;
6
+ export type ResolverContext<TContext, TMeta, TContextOverrides> = inferProcedureBuilderResolverOptions<ProcedureBuilderOf<TContext, TMeta, TContextOverrides, TRPCUnsetMarker, TRPCUnsetMarker, TRPCUnsetMarker, TRPCUnsetMarker>>["ctx"];
7
+ export type ProcedureEffect<TRequirements> = Effect.Effect<unknown, unknown, TRequirements>;
8
+ export type EffectProcedureResolver<TInput, TRequirements, TOutput> = (input: TInput) => Generator<ProcedureEffect<TRequirements>, TOutput, never>;
9
+ export type EffectSubscriptionResolver<TInput, TRequirements, TOutput> = (input: TInput) => Generator<ProcedureEffect<TRequirements>, Stream.Stream<TOutput, unknown, TRequirements>, never>;
10
+ export interface ProcedureInvocation<TContext> {
11
+ readonly ctx: TContext;
12
+ readonly input: unknown;
13
+ readonly path: string;
14
+ readonly signal: AbortSignal | undefined;
15
+ }
16
+ export interface ProcedureBuilderSurface<TContext> {
17
+ input: (schema: StandardSchema.StandardSchemaV1) => ProcedureBuilderSurface<TContext>;
18
+ mutation: (resolver: (invocation: ProcedureInvocation<TContext>) => Promise<unknown>) => unknown;
19
+ output: (schema: StandardSchema.StandardSchemaV1) => ProcedureBuilderSurface<TContext>;
20
+ query: (resolver: (invocation: ProcedureInvocation<TContext>) => Promise<unknown>) => unknown;
21
+ subscription: (resolver: (invocation: ProcedureInvocation<TContext>) => Promise<AsyncIterable<unknown, void, unknown>>) => unknown;
22
+ }
23
+ //# sourceMappingURL=procedureTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedureTypes.d.ts","sourceRoot":"","sources":["../../../src/server/internal/procedureTypes.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;AAC7D,MAAM,MAAM,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,IAAI,oBAAoB,CACpI,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,KAAK,CACL,CAAC;AACF,MAAM,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,IAAI,MAAM,SAAS,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AAClG,MAAM,MAAM,kBAAkB,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,SAAS,eAAe,GAAG,KAAK,GAAG,KAAK,SAAS,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AACjJ,MAAM,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,IAAI,oCAAoC,CACrG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CAC1H,CAAC,KAAK,CAAC,CAAC;AACT,MAAM,MAAM,eAAe,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAC5F,MAAM,MAAM,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACnJ,MAAM,MAAM,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,IAAI,CACxE,KAAK,EAAE,MAAM,KACT,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC;AACtG,MAAM,WAAW,mBAAmB,CAAC,QAAQ;IAC5C,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC;AACD,MAAM,WAAW,uBAAuB,CAAC,QAAQ;IAChD,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,KAAK,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACtF,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IACjG,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,KAAK,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACvF,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IAC9F,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC;CACnI"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=procedureTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedureTypes.js","sourceRoot":"","sources":["../../../src/server/internal/procedureTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { Effect, Stream } from "effect";
2
+ import type { EffectTRPCRuntime } from "#adapter.ts";
3
+ import type { EffectTRPCErrorMapper, EffectTRPCInstrument, ProcedureInfo } from "#types.ts";
4
+ import type { ContextBridge } from "./contextBridge.ts";
5
+ interface RunEffectOptions {
6
+ readonly procedure: ProcedureInfo;
7
+ readonly signal?: AbortSignal;
8
+ }
9
+ export interface RuntimeBridge<TRequirements> {
10
+ readonly instrument: EffectTRPCInstrument;
11
+ readonly runEffect: <TValue>(effect: Effect.Effect<TValue, unknown, TRequirements>, options: RunEffectOptions) => Promise<TValue>;
12
+ readonly runStream: <TValue>(stream: Stream.Stream<TValue, unknown, TRequirements>, options: RunEffectOptions) => Promise<AsyncIterable<TValue>>;
13
+ }
14
+ export declare function makeRuntimeBridge<TRequirements, TRuntimeError>(runtime: EffectTRPCRuntime<TRequirements, TRuntimeError>, contextBridge: ContextBridge, options: {
15
+ readonly instrument?: EffectTRPCInstrument;
16
+ readonly instrumentStream?: import("#types.ts").EffectTRPCStreamInstrument;
17
+ readonly mapError?: EffectTRPCErrorMapper;
18
+ }): RuntimeBridge<TRequirements>;
19
+ export {};
20
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/server/internal/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,MAAM,EAAwB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,UAAU,gBAAgB;IACzB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC9B;AACD,MAAM,WAAW,aAAa,CAAC,aAAa;IAC3C,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClI,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACjJ;AAwDD,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAC7D,OAAO,EAAE,iBAAiB,CAAC,aAAa,EAAE,aAAa,CAAC,EACxD,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE;IACR,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,WAAW,EAAE,0BAA0B,CAAC;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAC1C,GACC,aAAa,CAAC,aAAa,CAAC,CAoD9B"}
@@ -0,0 +1,94 @@
1
+ import { TRPCError } from "@trpc/server";
2
+ import { Cause, Context, Effect, Exit, Option, Result, Stream } from "effect";
3
+ function internalError(cause) {
4
+ return new TRPCError({
5
+ cause,
6
+ code: "INTERNAL_SERVER_ERROR",
7
+ message: "Internal server error",
8
+ });
9
+ }
10
+ function mapError(error, origin, procedure, consumerMapper) {
11
+ if (error instanceof TRPCError) {
12
+ return error;
13
+ }
14
+ try {
15
+ return consumerMapper?.(error, { ...procedure, origin }) ?? internalError(error);
16
+ }
17
+ catch (mapperDefect) {
18
+ return internalError(mapperDefect);
19
+ }
20
+ }
21
+ function mapCause(cause, procedure, consumerMapper) {
22
+ if (Cause.hasInterruptsOnly(cause)) {
23
+ return new TRPCError({
24
+ code: "CLIENT_CLOSED_REQUEST",
25
+ message: "Request cancelled",
26
+ });
27
+ }
28
+ const failure = Cause.findErrorOption(cause);
29
+ if (Option.isSome(failure)) {
30
+ return mapError(failure.value, "failure", procedure, consumerMapper);
31
+ }
32
+ const defect = Cause.findDefect(cause);
33
+ if (Result.isSuccess(defect)) {
34
+ return mapError(defect.success, "defect", procedure, consumerMapper);
35
+ }
36
+ return internalError();
37
+ }
38
+ function interruptOn(signal) {
39
+ if (signal === undefined) {
40
+ return Effect.never;
41
+ }
42
+ return Effect.callback((resume) => {
43
+ if (signal.aborted) {
44
+ resume(Effect.void);
45
+ return;
46
+ }
47
+ function abort() {
48
+ return resume(Effect.void);
49
+ }
50
+ signal.addEventListener("abort", abort, { once: true });
51
+ return Effect.sync(() => signal.removeEventListener("abort", abort));
52
+ });
53
+ }
54
+ export function makeRuntimeBridge(runtime, contextBridge, options) {
55
+ return {
56
+ instrument: (effect, procedure) => Effect.suspend(() => (options.instrument === undefined ? effect : options.instrument(effect, procedure))),
57
+ runEffect: async (effect, runOptions) => {
58
+ const traced = effect.pipe(Effect.withSpan(runOptions.procedure.path, {
59
+ attributes: {
60
+ "rpc.method": runOptions.procedure.path,
61
+ "rpc.system": "trpc",
62
+ "trpc.type": runOptions.procedure.type,
63
+ },
64
+ }, {
65
+ captureStackTrace: runOptions.procedure.captureStackTrace,
66
+ }));
67
+ const ambient = contextBridge.current();
68
+ const runnable = ambient === undefined ? traced : Effect.flatMap(runtime.contextEffect, (base) => Effect.provideContext(traced, Context.merge(base, ambient)));
69
+ const exit = await runtime.runPromiseExit(runnable, runOptions.signal === undefined ? undefined : { signal: runOptions.signal });
70
+ if (Exit.isSuccess(exit)) {
71
+ return exit.value;
72
+ }
73
+ throw mapCause(exit.cause, runOptions.procedure, options.mapError);
74
+ },
75
+ runStream: async (stream, runOptions) => {
76
+ const instrumented = Stream.suspend(() => options.instrumentStream === undefined ? stream : options.instrumentStream(stream, runOptions.procedure)).pipe(Stream.withSpan(runOptions.procedure.path, {
77
+ attributes: {
78
+ "rpc.method": runOptions.procedure.path,
79
+ "rpc.system": "trpc",
80
+ "trpc.type": runOptions.procedure.type,
81
+ },
82
+ captureStackTrace: runOptions.procedure.captureStackTrace,
83
+ }), Stream.interruptWhen(interruptOn(runOptions.signal)), Stream.catchCause((cause) => Stream.fail(mapCause(cause, runOptions.procedure, options.mapError))));
84
+ const exit = await runtime.runPromiseExit(Effect.context());
85
+ if (Exit.isFailure(exit)) {
86
+ throw mapCause(exit.cause, runOptions.procedure, options.mapError);
87
+ }
88
+ const ambient = contextBridge.current();
89
+ const provided = ambient === undefined ? exit.value : Context.merge(exit.value, ambient);
90
+ return Stream.toAsyncIterableWith(instrumented, provided);
91
+ },
92
+ };
93
+ }
94
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/server/internal/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type TRPC_ERROR_CODE_KEY, TRPCError } from "@trpc/server";
2
2
  import { Effect, Schema } from "effect";
3
- export declare const rejectionCode: (tag: string) => TRPC_ERROR_CODE_KEY;
3
+ export declare function rejectionCode(tag: string): TRPC_ERROR_CODE_KEY;
4
4
  declare const DeclaredRejection: Schema.StructWithRest<Schema.Struct<{
5
5
  readonly _tag: Schema.String;
6
6
  }>, readonly [Schema.$Record<Schema.String, Schema.Unknown>]>;
@@ -16,11 +16,11 @@ export declare class RejectionError extends TRPCError {
16
16
  readonly rejection: DeclaredRejection;
17
17
  constructor(rejection: DeclaredRejection, code?: TRPC_ERROR_CODE_KEY);
18
18
  }
19
- export interface RejectWithOptions<Tag extends string> {
20
- readonly code?: (tag: Tag) => TRPC_ERROR_CODE_KEY;
19
+ export interface RejectWithOptions<TTag extends string> {
20
+ readonly code?: (tag: TTag) => TRPC_ERROR_CODE_KEY;
21
21
  }
22
- export declare function rejectWith<S extends Schema.ConstraintCodec<{
22
+ export declare function rejectWith<TSession extends Schema.ConstraintCodec<{
23
23
  readonly _tag: string;
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"]>;
24
+ }, DeclaredEncoding, unknown, unknown>>(schema: TSession, options?: RejectWithOptions<TSession["Type"]["_tag"]>): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, Exclude<E, TSession["Type"]> | RejectionError, R | TSession["EncodingServices"]>;
25
25
  export {};
26
26
  //# sourceMappingURL=rejection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rejection.d.ts","sourceRoot":"","sources":["../../src/server/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;AAaxC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAE9D;AACD,QAAA,MAAM,iBAAiB;;6DAAgH,CAAC;AACxI,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAC9D,UAAU,sBAAsB;IAC/B,QAAQ,CAAC,mEAAmE,EAAE,KAAK,CAAC;CACpF;AACD,UAAU,gBAAgB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AACD,qBAAa,cAAe,SAAQ,SAAS;IAC5C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,YAAY,SAAS,EAAE,iBAAiB,EAAE,IAAI,GAAE,mBAAmD,EAGlG;CACD;AACD,MAAM,WAAW,iBAAiB,CAAC,IAAI,SAAS,MAAM;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,mBAAmB,CAAC;CACnD;AAMD,wBAAgB,UAAU,CACzB,QAAQ,SAAS,MAAM,CAAC,eAAe,CACtC;IACC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB,EACD,gBAAgB,EAChB,OAAO,EACP,OAAO,CACP,EAED,MAAM,EAAE,QAAQ,EAChB,OAAO,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GACnD,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,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC"}