effect-app 3.0.2 → 3.0.3

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 (59) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/Context.d.ts +23 -3
  3. package/dist/Context.d.ts.map +1 -1
  4. package/dist/Context.js +5 -1
  5. package/dist/NonEmptySet.d.ts +1 -1
  6. package/dist/client/apiClientFactory.d.ts +2 -18
  7. package/dist/client/apiClientFactory.d.ts.map +1 -1
  8. package/dist/client/makeClient.d.ts +58 -0
  9. package/dist/client/makeClient.d.ts.map +1 -0
  10. package/dist/client/makeClient.js +36 -0
  11. package/dist/client.d.ts +1 -1
  12. package/dist/client.d.ts.map +1 -1
  13. package/dist/client.js +2 -2
  14. package/dist/{rpc/middleware-native.d.ts → middleware.d.ts} +5 -4
  15. package/dist/middleware.d.ts.map +1 -0
  16. package/dist/middleware.js +17 -0
  17. package/dist/rpc/{middleware-api.d.ts → MiddlewareMaker.d.ts} +62 -40
  18. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -0
  19. package/dist/rpc/MiddlewareMaker.js +99 -0
  20. package/dist/rpc/RpcContextMap.d.ts +73 -0
  21. package/dist/rpc/RpcContextMap.d.ts.map +1 -0
  22. package/dist/rpc/RpcContextMap.js +33 -0
  23. package/dist/rpc/RpcMiddleware.d.ts +29 -36
  24. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  25. package/dist/rpc/RpcMiddleware.js +2 -2
  26. package/dist/rpc.d.ts +2 -4
  27. package/dist/rpc.d.ts.map +1 -1
  28. package/dist/rpc.js +3 -5
  29. package/dist/utils.d.ts +0 -1
  30. package/dist/utils.d.ts.map +1 -1
  31. package/package.json +22 -24
  32. package/src/Context.ts +55 -0
  33. package/src/client/makeClient.ts +150 -0
  34. package/src/client.ts +1 -1
  35. package/src/{rpc/middleware-native.ts → middleware.ts} +4 -4
  36. package/src/rpc/{middleware-api.ts → MiddlewareMaker.ts} +146 -117
  37. package/src/rpc/README.md +41 -0
  38. package/src/rpc/RpcContextMap.ts +163 -0
  39. package/src/rpc/RpcMiddleware.ts +82 -42
  40. package/src/rpc.ts +2 -4
  41. package/src/utils.ts +0 -2
  42. package/test/rpc.test.ts +1 -1
  43. package/dist/client/req.d.ts +0 -120
  44. package/dist/client/req.d.ts.map +0 -1
  45. package/dist/client/req.js +0 -56
  46. package/dist/rpc/RpcMiddlewareX.d.ts +0 -24
  47. package/dist/rpc/RpcMiddlewareX.d.ts.map +0 -1
  48. package/dist/rpc/RpcMiddlewareX.js +0 -16
  49. package/dist/rpc/generic-middleware.d.ts +0 -51
  50. package/dist/rpc/generic-middleware.d.ts.map +0 -1
  51. package/dist/rpc/generic-middleware.js +0 -24
  52. package/dist/rpc/middleware-api.d.ts.map +0 -1
  53. package/dist/rpc/middleware-api.js +0 -88
  54. package/dist/rpc/middleware-native.d.ts.map +0 -1
  55. package/dist/rpc/middleware-native.js +0 -17
  56. package/src/client/req.ts +0 -288
  57. package/src/rpc/RpcMiddlewareX.ts +0 -65
  58. package/src/rpc/generic-middleware.ts +0 -128
  59. package/wallaby.cjs +0 -1
@@ -1,128 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { type RpcMiddleware } from "@effect/rpc"
3
- import { Context, Effect, type Layer, type NonEmptyReadonlyArray, type S } from "effect-app"
4
- import { type GetContextConfig, type RPCContextMap } from "effect-app/client"
5
- import { type Tag } from "effect/Context"
6
- import { type Simplify } from "effect/Types"
7
- import { PreludeLogger } from "../logger.js"
8
- import { type MakeTags, type MiddlewareMakerId } from "./middleware-api.js"
9
- import { type RpcMiddlewareWrap, type TagClassAny } from "./RpcMiddleware.js"
10
-
11
- // Effect rpc middleware does not support changing payload or headers, but we do..
12
-
13
- export interface MiddlewareMaker<
14
- RequestContextMap extends Record<string, RPCContextMap.Any>,
15
- MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>
16
- > extends
17
- RpcMiddleware.TagClass<
18
- MiddlewareMakerId,
19
- "MiddlewareMaker",
20
- Simplify<
21
- & { readonly wrap: true }
22
- & (Exclude<
23
- MiddlewareMaker.ManyRequired<MiddlewareProviders>,
24
- MiddlewareMaker.ManyProvided<MiddlewareProviders>
25
- > extends never ? {} : {
26
- readonly requires: MakeTags<
27
- Exclude<
28
- MiddlewareMaker.ManyRequired<MiddlewareProviders>,
29
- MiddlewareMaker.ManyProvided<MiddlewareProviders>
30
- >
31
- >
32
- })
33
- & (MiddlewareMaker.ManyErrors<MiddlewareProviders> extends never ? {}
34
- : {
35
- readonly failure: S.Schema<MiddlewareMaker.ManyErrors<MiddlewareProviders>>
36
- })
37
- & (MiddlewareMaker.ManyProvided<MiddlewareProviders> extends never ? {}
38
- : { readonly provides: MakeTags<MiddlewareMaker.ManyProvided<MiddlewareProviders>> })
39
- >
40
- >
41
- {
42
- readonly layer: Layer.Layer<MiddlewareMakerId, never, Tag.Identifier<MiddlewareProviders[number]>>
43
- readonly requestContext: RequestContextTag<RequestContextMap>
44
- readonly requestContextMap: RequestContextMap
45
- }
46
-
47
- export interface RequestContextTag<RequestContextMap extends Record<string, RPCContextMap.Any>>
48
- extends Context.Tag<"RequestContextConfig", GetContextConfig<RequestContextMap>>
49
- {}
50
-
51
- export namespace MiddlewareMaker {
52
- export type Any = TagClassAny
53
-
54
- export type ApplyServices<A extends TagClassAny, R> = Exclude<R, Provided<A>> | Required<A>
55
-
56
- export type ApplyManyServices<A extends NonEmptyReadonlyArray<TagClassAny>, R> =
57
- | Exclude<R, { [K in keyof A]: Provided<A[K]> }[number]>
58
- | { [K in keyof A]: Required<A[K]> }[number]
59
-
60
- export type ManyProvided<A extends ReadonlyArray<TagClassAny>> = A extends NonEmptyReadonlyArray<TagClassAny>
61
- ? { [K in keyof A]: Provided<A[K]> }[number]
62
- : Provided<A[number]>
63
- export type ManyRequired<A extends ReadonlyArray<TagClassAny>> = A extends NonEmptyReadonlyArray<TagClassAny>
64
- ? { [K in keyof A]: Required<A[K]> }[number]
65
- : Required<A[number]>
66
- export type ManyErrors<A extends ReadonlyArray<TagClassAny>> = A extends NonEmptyReadonlyArray<TagClassAny>
67
- ? { [K in keyof A]: Errors<A[K]> }[number]
68
- : Errors<A[number]>
69
-
70
- export type Provided<T> = T extends TagClassAny ? T extends { provides: infer _P } ? _P
71
- : never
72
- : never
73
-
74
- export type Errors<T> = T extends TagClassAny ? T extends { failure: S.Schema.Any } ? S.Schema.Type<T["failure"]>
75
- : never
76
- : never
77
-
78
- export type Required<T> = T extends TagClassAny ? T extends { requires: infer _R } ? _R
79
- : never
80
- : never
81
- }
82
-
83
- export const middlewareMaker = <
84
- MiddlewareProviders extends ReadonlyArray<MiddlewareMaker.Any>
85
- >(middlewares: MiddlewareProviders): Effect.Effect<
86
- RpcMiddlewareWrap<
87
- MiddlewareMaker.ManyProvided<MiddlewareProviders>,
88
- MiddlewareMaker.ManyErrors<MiddlewareProviders>,
89
- Exclude<
90
- MiddlewareMaker.ManyRequired<MiddlewareProviders>,
91
- MiddlewareMaker.ManyProvided<MiddlewareProviders>
92
- > extends never ? never
93
- : Exclude<MiddlewareMaker.ManyRequired<MiddlewareProviders>, MiddlewareMaker.ManyProvided<MiddlewareProviders>>
94
- >
95
- > => {
96
- // we want to run them in reverse order because latter middlewares will provide context to former ones
97
- middlewares = middlewares.toReversed() as any
98
-
99
- return Effect.gen(function*() {
100
- const context = yield* Effect.context()
101
-
102
- // returns a Effect/RpcMiddlewareWrap with Scope in requirements
103
- return (
104
- _options: Parameters<
105
- RpcMiddleware.RpcMiddlewareWrap<
106
- MiddlewareMaker.ManyProvided<MiddlewareProviders>,
107
- never
108
- >
109
- >[0]
110
- ) => {
111
- const { next, ...options } = _options
112
- // we start with the actual handler
113
- let handler = next
114
-
115
- // inspired from Effect/RpcMiddleware
116
- for (const tag of middlewares) {
117
- // use the tag to get the middleware from context
118
- const middleware = Context.unsafeGet(context, tag)
119
-
120
- // wrap the current handler, allowing the middleware to run before and after it
121
- handler = PreludeLogger.logDebug("Applying middleware wrap " + tag.key).pipe(
122
- Effect.zipRight(middleware(handler, options))
123
- ) as any
124
- }
125
- return handler
126
- }
127
- }) as any
128
- }
package/wallaby.cjs DELETED
@@ -1 +0,0 @@
1
- module.exports = require("../../wallaby.base.cjs")