@effect-app/infra 0.168.0 → 0.169.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 (167) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/_cjs/RequestContext.cjs +3 -4
  3. package/_cjs/RequestContext.cjs.map +1 -1
  4. package/_cjs/api/codec.cjs.map +1 -1
  5. package/_cjs/api/express/schema/jwt.cjs.map +1 -1
  6. package/_cjs/api/routing/base.cjs.map +1 -1
  7. package/_cjs/api/routing/defaultErrorHandler.cjs +2 -2
  8. package/_cjs/api/routing/defaultErrorHandler.cjs.map +1 -1
  9. package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
  10. package/_cjs/api/routing/match.cjs +1 -1
  11. package/_cjs/api/routing/match.cjs.map +1 -1
  12. package/_cjs/logger/logFmtLogger.cjs.map +1 -1
  13. package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
  14. package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
  15. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  16. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  17. package/_cjs/services/Repository.cjs.map +1 -1
  18. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  19. package/_cjs/services/RequestContextContainer.cjs +1 -1
  20. package/_cjs/services/RequestContextContainer.cjs.map +1 -1
  21. package/_cjs/services/Store/ContextMapContainer.cjs +1 -1
  22. package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
  23. package/_cjs/services/Store/utils.cjs.map +1 -1
  24. package/_cjs/services/simpledb/cosmosdb.cjs +2 -2
  25. package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
  26. package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
  27. package/_cjs/services/simpledb/shared.cjs +5 -4
  28. package/_cjs/services/simpledb/shared.cjs.map +1 -1
  29. package/_cjs/services/simpledb/simpledb.cjs +1 -1
  30. package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
  31. package/_src/RequestContext.ts +3 -3
  32. package/_src/api/codec.ts +1 -1
  33. package/_src/api/defaultErrorHandler.ts +2 -2
  34. package/_src/api/express/schema/jwt.ts +3 -3
  35. package/_src/api/express/schema/routing.ts +7 -7
  36. package/_src/api/reportError.ts +2 -2
  37. package/_src/api/routing/base.ts +19 -22
  38. package/_src/api/routing/defaultErrorHandler.ts +3 -3
  39. package/_src/api/routing/makeRequestHandler.ts +20 -28
  40. package/_src/api/routing/match.ts +4 -4
  41. package/_src/api/setupRequest.ts +3 -3
  42. package/_src/logger/logFmtLogger.ts +1 -1
  43. package/_src/rateLimit.ts +9 -9
  44. package/_src/services/Emailer/Sendgrid.ts +3 -7
  45. package/_src/services/Emailer/service.ts +1 -1
  46. package/_src/services/Operations/service.ts +9 -9
  47. package/_src/services/QueueMaker/errors.ts +5 -5
  48. package/_src/services/QueueMaker/memQueue.ts +5 -5
  49. package/_src/services/QueueMaker/sbqueue.ts +5 -5
  50. package/_src/services/QueueMaker/service.ts +3 -3
  51. package/_src/services/Repository.ts +90 -110
  52. package/_src/services/RepositoryBase.ts +29 -45
  53. package/_src/services/RequestContextContainer.ts +7 -9
  54. package/_src/services/Store/ContextMapContainer.ts +4 -4
  55. package/_src/services/Store/Cosmos.ts +3 -3
  56. package/_src/services/Store/Disk.ts +4 -4
  57. package/_src/services/Store/Memory.ts +2 -2
  58. package/_src/services/Store/Redis.ts +3 -3
  59. package/_src/services/Store/service.ts +10 -10
  60. package/_src/services/Store/utils.ts +2 -2
  61. package/_src/services/simpledb/cosmosdb.ts +3 -3
  62. package/_src/services/simpledb/diskdb.ts +3 -3
  63. package/_src/services/simpledb/memdb.ts +3 -3
  64. package/_src/services/simpledb/mongodb.ts +3 -3
  65. package/_src/services/simpledb/redisdb.ts +5 -5
  66. package/_src/services/simpledb/shared.ts +4 -3
  67. package/_src/services/simpledb/simpledb.ts +8 -8
  68. package/dist/RequestContext.d.ts +48 -48
  69. package/dist/RequestContext.js +4 -5
  70. package/dist/_ext/Array.d.ts +1 -1
  71. package/dist/api/codec.d.ts +1 -1
  72. package/dist/api/codec.d.ts.map +1 -1
  73. package/dist/api/codec.js +1 -1
  74. package/dist/api/defaultErrorHandler.d.ts +2 -2
  75. package/dist/api/defaultErrorHandler.d.ts.map +1 -1
  76. package/dist/api/express/schema/jwt.d.ts +1 -1
  77. package/dist/api/express/schema/jwt.js +1 -1
  78. package/dist/api/express/schema/routing.d.ts +6 -6
  79. package/dist/api/express/schema/routing.d.ts.map +1 -1
  80. package/dist/api/reportError.d.ts +2 -2
  81. package/dist/api/routing/base.d.ts +11 -10
  82. package/dist/api/routing/base.d.ts.map +1 -1
  83. package/dist/api/routing/base.js +1 -1
  84. package/dist/api/routing/defaultErrorHandler.d.ts +5 -5
  85. package/dist/api/routing/defaultErrorHandler.d.ts.map +1 -1
  86. package/dist/api/routing/defaultErrorHandler.js +3 -3
  87. package/dist/api/routing/makeRequestHandler.d.ts +2 -2
  88. package/dist/api/routing/makeRequestHandler.d.ts.map +1 -1
  89. package/dist/api/routing/makeRequestHandler.js +11 -15
  90. package/dist/api/routing/match.d.ts +1 -1
  91. package/dist/api/routing/match.d.ts.map +1 -1
  92. package/dist/api/routing/match.js +2 -2
  93. package/dist/api/setupRequest.d.ts +2 -2
  94. package/dist/errorReporter.d.ts +3 -3
  95. package/dist/logger/logFmtLogger.js +2 -2
  96. package/dist/rateLimit.d.ts +4 -4
  97. package/dist/rateLimit.js +1 -1
  98. package/dist/services/Emailer/Sendgrid.d.ts +1 -1
  99. package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
  100. package/dist/services/Emailer/Sendgrid.js +1 -1
  101. package/dist/services/Emailer/fake.d.ts +1 -1
  102. package/dist/services/Emailer/service.d.ts +2 -2
  103. package/dist/services/Emailer/service.d.ts.map +1 -1
  104. package/dist/services/Operations/live.d.ts +1 -1
  105. package/dist/services/Operations/service.d.ts +12 -12
  106. package/dist/services/Operations/service.d.ts.map +1 -1
  107. package/dist/services/QueueMaker/errors.d.ts +5 -5
  108. package/dist/services/QueueMaker/errors.d.ts.map +1 -1
  109. package/dist/services/QueueMaker/errors.js +1 -1
  110. package/dist/services/QueueMaker/memQueue.d.ts +4 -4
  111. package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
  112. package/dist/services/QueueMaker/memQueue.js +1 -1
  113. package/dist/services/QueueMaker/sbqueue.d.ts +5 -5
  114. package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
  115. package/dist/services/QueueMaker/sbqueue.js +1 -1
  116. package/dist/services/QueueMaker/service.d.ts +11 -11
  117. package/dist/services/QueueMaker/service.d.ts.map +1 -1
  118. package/dist/services/Repository.d.ts +67 -67
  119. package/dist/services/Repository.d.ts.map +1 -1
  120. package/dist/services/Repository.js +1 -1
  121. package/dist/services/RepositoryBase.d.ts +30 -30
  122. package/dist/services/RepositoryBase.d.ts.map +1 -1
  123. package/dist/services/RepositoryBase.js +1 -1
  124. package/dist/services/RequestContextContainer.d.ts +9 -9
  125. package/dist/services/RequestContextContainer.d.ts.map +1 -1
  126. package/dist/services/RequestContextContainer.js +11 -13
  127. package/dist/services/Store/ContextMapContainer.d.ts +7 -7
  128. package/dist/services/Store/ContextMapContainer.d.ts.map +1 -1
  129. package/dist/services/Store/ContextMapContainer.js +2 -2
  130. package/dist/services/Store/Cosmos/query.d.ts +1 -1
  131. package/dist/services/Store/Cosmos.d.ts +1 -1
  132. package/dist/services/Store/Cosmos.js +1 -1
  133. package/dist/services/Store/Disk.d.ts +4 -4
  134. package/dist/services/Store/Disk.d.ts.map +1 -1
  135. package/dist/services/Store/Disk.js +1 -1
  136. package/dist/services/Store/Memory.d.ts +4 -4
  137. package/dist/services/Store/Memory.d.ts.map +1 -1
  138. package/dist/services/Store/Redis.d.ts +1 -1
  139. package/dist/services/Store/Redis.js +1 -1
  140. package/dist/services/Store/index.d.ts +1 -1
  141. package/dist/services/Store/service.d.ts +14 -14
  142. package/dist/services/Store/service.d.ts.map +1 -1
  143. package/dist/services/Store/utils.d.ts +1 -1
  144. package/dist/services/Store/utils.d.ts.map +1 -1
  145. package/dist/services/Store/utils.js +1 -1
  146. package/dist/services/simpledb/cosmosdb.d.ts +6 -6
  147. package/dist/services/simpledb/cosmosdb.d.ts.map +1 -1
  148. package/dist/services/simpledb/cosmosdb.js +3 -3
  149. package/dist/services/simpledb/diskdb.d.ts +4 -4
  150. package/dist/services/simpledb/diskdb.d.ts.map +1 -1
  151. package/dist/services/simpledb/diskdb.js +1 -1
  152. package/dist/services/simpledb/memdb.d.ts +4 -4
  153. package/dist/services/simpledb/memdb.d.ts.map +1 -1
  154. package/dist/services/simpledb/memdb.js +1 -1
  155. package/dist/services/simpledb/mongodb.d.ts +5 -5
  156. package/dist/services/simpledb/mongodb.d.ts.map +1 -1
  157. package/dist/services/simpledb/mongodb.js +1 -1
  158. package/dist/services/simpledb/redisdb.d.ts +13 -13
  159. package/dist/services/simpledb/redisdb.d.ts.map +1 -1
  160. package/dist/services/simpledb/redisdb.js +1 -1
  161. package/dist/services/simpledb/shared.d.ts +19 -19
  162. package/dist/services/simpledb/shared.d.ts.map +1 -1
  163. package/dist/services/simpledb/shared.js +6 -5
  164. package/dist/services/simpledb/simpledb.d.ts +5 -5
  165. package/dist/services/simpledb/simpledb.d.ts.map +1 -1
  166. package/dist/services/simpledb/simpledb.js +2 -2
  167. package/package.json +12 -12
@@ -54,7 +54,7 @@ export type Middleware<
54
54
  Context,
55
55
  Config
56
56
  >
57
- makeRequestLayer: Layer<R2, MiddlewareE, PR>
57
+ makeRequestLayer: Layer<PR, MiddlewareE, R2>
58
58
  }
59
59
 
60
60
  export function makeRequestHandler<
@@ -92,20 +92,16 @@ export function makeRequestHandler<
92
92
  errorHandler: <R>(
93
93
  req: HttpServerRequest,
94
94
  res: HttpServerResponse,
95
- r2: Effect<R, ValidationError | ResE | MiddlewareE, HttpServerResponse>
96
- ) => Effect<RErr | R, never, HttpServerResponse>,
97
- middlewareLayer?: Layer<R2, MiddlewareE, PR>
98
- ): Effect<
99
- | HttpRouteContext
100
- | HttpServerRequest
101
- | RequestContextContainer
102
- | ContextMapContainer
103
- | RErr
104
- | Exclude<Exclude<R, EnforceNonEmptyRecord<M>>, PR>
105
- | R2,
106
- HttpRequestError,
107
- HttpServerResponse
108
- > {
95
+ r2: Effect<HttpServerResponse, ValidationError | ResE | MiddlewareE, R>
96
+ ) => Effect<HttpServerResponse, never, RErr | R>,
97
+ middlewareLayer?: Layer<PR, MiddlewareE, R2>
98
+ ): Effect<HttpServerResponse, HttpRequestError, | HttpRouteContext
99
+ | HttpServerRequest
100
+ | RequestContextContainer
101
+ | ContextMapContainer
102
+ | RErr
103
+ | Exclude<Exclude<R, EnforceNonEmptyRecord<M>>, PR>
104
+ | R2> {
109
105
  const { Request, Response, h: handle } = handler
110
106
 
111
107
  const response: REST.ReqRes<any, any, any> = Response ? Response : Void
@@ -158,15 +154,13 @@ export function makeRequestHandler<
158
154
  .annotateLogs({
159
155
  method: req.method,
160
156
  path: req.originalUrl,
161
- ...settings.verbose
162
- ? {
157
+ ...(settings.verbose ? {
163
158
  reqPath: pars.params.$$.pretty,
164
159
  reqQuery: pars.query.$$.pretty,
165
160
  reqBody: pretty(pars.body),
166
161
  reqCookies: pretty(pars.cookies),
167
162
  reqHeaders: pretty(pars.headers)
168
- }
169
- : undefined
163
+ } : undefined)
170
164
  })
171
165
  .andThen(
172
166
  Effect.suspend(() => {
@@ -189,9 +183,9 @@ export function makeRequestHandler<
189
183
  .setStatus(r === undefined ? 204 : 200)
190
184
  )
191
185
  ) as Effect<
192
- Exclude<R, EnforceNonEmptyRecord<M>>,
186
+ HttpServerResponse,
193
187
  ValidationError | ResE,
194
- HttpServerResponse
188
+ Exclude<R, EnforceNonEmptyRecord<M>>
195
189
  >
196
190
 
197
191
  // Commands should not be interruptable.
@@ -200,9 +194,9 @@ export function makeRequestHandler<
200
194
  ? r.provide(middlewareLayer)
201
195
  // PR is not relevant here
202
196
  : (r as Effect<
203
- Exclude<Exclude<R, EnforceNonEmptyRecord<M>>, PR>,
197
+ HttpServerResponse,
204
198
  ResE | MiddlewareE | ValidationError,
205
- HttpServerResponse
199
+ Exclude<Exclude<R, EnforceNonEmptyRecord<M>>, PR>
206
200
  >)
207
201
  return errorHandler(
208
202
  req,
@@ -257,11 +251,9 @@ export function makeRequestHandler<
257
251
  method: req.method,
258
252
  path: req.originalUrl,
259
253
  statusCode: res.status.toString(),
260
- ...settings.verbose
261
- ? {
254
+ ...(settings.verbose ? {
262
255
  resHeaders: pretty(res.headers)
263
- }
264
- : undefined
256
+ } : undefined)
265
257
  })
266
258
  )
267
259
 
@@ -273,5 +265,5 @@ export function makeRequestHandler<
273
265
  handler.name
274
266
  )
275
267
  })
276
- )
268
+ );
277
269
  }
@@ -8,7 +8,7 @@ import type { RequestHandler } from "./base.js"
8
8
  import { makeRequestHandler } from "./makeRequestHandler.js"
9
9
  import type { Middleware } from "./makeRequestHandler.js"
10
10
 
11
- export const RouteDescriptors = Tag<Ref<RouteDescriptorAny[]>>()
11
+ export const RouteDescriptors = GenericTag<Ref<RouteDescriptorAny[]>>("@services/RouteDescriptors")
12
12
 
13
13
  export function match<
14
14
  R,
@@ -49,8 +49,8 @@ export function match<
49
49
  errorHandler: <R>(
50
50
  req: HttpServerRequest,
51
51
  res: HttpServerResponse,
52
- r2: Effect<R, ValidationError | MiddlewareE | ResE, HttpServerResponse>
53
- ) => Effect<RErr | R, never, HttpServerResponse>,
52
+ r2: Effect<HttpServerResponse, ValidationError | MiddlewareE | ResE, R>
53
+ ) => Effect<HttpServerResponse, never, RErr | R>,
54
54
  middleware?: Middleware<
55
55
  R,
56
56
  M,
@@ -71,7 +71,7 @@ export function match<
71
71
  Config
72
72
  >
73
73
  ) {
74
- let middlewareLayer: Layer<R2, MiddlewareE, PR> | undefined = undefined
74
+ let middlewareLayer: Layer<PR, MiddlewareE, R2> | undefined = undefined
75
75
  if (middleware) {
76
76
  const { handler, makeRequestLayer } = middleware(requestHandler)
77
77
  requestHandler = handler as any // todo
@@ -15,7 +15,7 @@ function makeInternalRequestContext(name: string) {
15
15
  })
16
16
  }
17
17
 
18
- const withRequestSpan = <R, E, A>(f: Effect<R, E, A>) =>
18
+ const withRequestSpan = <R, E, A>(f: Effect<A, E, R>) =>
19
19
  RequestContextContainer
20
20
  .get
21
21
  .andThen((ctx) =>
@@ -50,7 +50,7 @@ const RequestContextStartLive = (requestContext: RequestContext | string) =>
50
50
  /**
51
51
  * @tsplus fluent effect/io/Effect setupRequestContext
52
52
  */
53
- export function setupRequestContext<R, E, A>(self: Effect<R, E, A>, requestContext: RequestContext | string) {
53
+ export function setupRequestContext<R, E, A>(self: Effect<A, E, R>, requestContext: RequestContext | string) {
54
54
  return self
55
55
  .pipe(withRequestSpan)
56
56
  .provide(RequestContextStartLive(requestContext))
@@ -62,7 +62,7 @@ const UpdateRequestContextLive = (f: (rc: RequestContext) => RequestContext) =>
62
62
  /**
63
63
  * @tsplus fluent effect/io/Effect updateRequestContext
64
64
  */
65
- export function updateRequestContext<R, E, A>(self: Effect<R, E, A>, f: (rc: RequestContext) => RequestContext) {
65
+ export function updateRequestContext<R, E, A>(self: Effect<A, E, R>, f: (rc: RequestContext) => RequestContext) {
66
66
  return self
67
67
  // .provideServiceEffect(RequestContext.Tag, RequestContextContainer.get)
68
68
  .provide(UpdateRequestContextLive(f))
@@ -14,7 +14,7 @@ export const logfmtLogger = Logger.make<unknown, void>(
14
14
  "request.name": requestContext.name,
15
15
  "request.namespace": requestContext.namespace,
16
16
  "request.locale": requestContext.locale,
17
- ...requestContext.userProfile?.sub ? { "request.user.sub": requestContext.userProfile.sub } : {}
17
+ ...(requestContext.userProfile?.sub ? { "request.user.sub": requestContext.userProfile.sub } : {})
18
18
  }
19
19
  .$$
20
20
  .entries
package/_src/rateLimit.ts CHANGED
@@ -33,7 +33,7 @@
33
33
  * @tsplus pipeable effect/io/Effect/Semaphore withPermitsDuration
34
34
  */
35
35
  export function SEM_withPermitsDuration(permits: number, duration: Duration) {
36
- return (self: Semaphore): <R, E, A>(effect: Effect<R, E, A>) => Effect<R, E, A> => {
36
+ return (self: Semaphore): <R, E, A>(effect: Effect<A, E, R>) => Effect<A, E, R> => {
37
37
  return (effect) =>
38
38
  Effect.uninterruptibleMask(
39
39
  (restore) =>
@@ -47,7 +47,7 @@ export function SEM_withPermitsDuration(permits: number, duration: Duration) {
47
47
  )
48
48
  )
49
49
  )
50
- }
50
+ };
51
51
  }
52
52
 
53
53
  /**
@@ -56,8 +56,8 @@ export function SEM_withPermitsDuration(permits: number, duration: Duration) {
56
56
  */
57
57
  export function batchPar<R, E, A, R2, E2, A2, T>(
58
58
  n: number,
59
- forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<R, E, A>,
60
- forEachBatch: (a: NonEmptyArray<A>, i: number) => Effect<R2, E2, A2>
59
+ forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<A, E, R>,
60
+ forEachBatch: (a: NonEmptyArray<A>, i: number) => Effect<A2, E2, R2>
61
61
  ) {
62
62
  return (items: Iterable<T>) =>
63
63
  items
@@ -77,8 +77,8 @@ export function batchPar<R, E, A, R2, E2, A2, T>(
77
77
  */
78
78
  export function batch<R, E, A, R2, E2, A2, T>(
79
79
  n: number,
80
- forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<R, E, A>,
81
- forEachBatch: (a: NonEmptyArray<A>, i: number) => Effect<R2, E2, A2>
80
+ forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<A, E, R>,
81
+ forEachBatch: (a: NonEmptyArray<A>, i: number) => Effect<A2, E2, R2>
82
82
  ) {
83
83
  return (items: Iterable<T>) =>
84
84
  items
@@ -120,8 +120,8 @@ export function naiveRateLimit(
120
120
  d: DUR
121
121
  ) {
122
122
  return <T>(items: Iterable<T>) => (<R, E, A, R2, E2, A2>(
123
- forEachItem: (i: T) => Effect<R, E, A>,
124
- forEachBatch: (a: A[]) => Effect<R2, E2, A2>
123
+ forEachItem: (i: T) => Effect<A, E, R>,
124
+ forEachBatch: (a: A[]) => Effect<A2, E2, R2>
125
125
  ) =>
126
126
  items
127
127
  .chunk(n)
@@ -132,5 +132,5 @@ export function naiveRateLimit(
132
132
  .forEachEffect(forEachItem, { concurrency: n })
133
133
  .flatMap(forEachBatch)
134
134
  )
135
- ))
135
+ ));
136
136
  }
@@ -24,11 +24,7 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
24
24
  yield* $(Effect.logDebug("Sending email").annotateLogs("msg", inspect(renderedMsg, false, 5)))
25
25
 
26
26
  const ret = yield* $(
27
- Effect.async<
28
- never,
29
- Error | sgMail.ResponseError,
30
- [sgMail.ClientResponse, Record<string, unknown>]
31
- >(
27
+ Effect.async<[sgMail.ClientResponse, Record<string, unknown>], Error | sgMail.ResponseError>(
32
28
  (cb) =>
33
29
  void sgMail.send(renderedMsg, false, (err, result) =>
34
30
  err
@@ -47,9 +43,9 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
47
43
  // const { trackEvent } = yield* $(AiContextService)
48
44
  // trackEvent(event)
49
45
  return ret
50
- })
46
+ });
51
47
  }
52
- }
48
+ };
53
49
  })
54
50
 
55
51
  /**
@@ -7,7 +7,7 @@ import type sgMail from "@sendgrid/mail"
7
7
  * @tsplus companion Emailer.Ops
8
8
  */
9
9
  export class Emailer extends TagClass<Emailer, {
10
- sendMail: (msg: EmailMsgOptionalFrom) => Effect<never, Error | ResponseError, void>
10
+ sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>
11
11
  }>() {}
12
12
 
13
13
  export interface SendgridConfig {
@@ -6,10 +6,10 @@ import * as Scope from "effect/Scope"
6
6
  * @tsplus companion Operations.Ops
7
7
  */
8
8
  export class Operations extends TagClass<Operations.Id, {
9
- register: Effect<Scope.Scope, never, OperationId>
10
- update: (id: OperationId, progress: OperationProgress) => Effect<never, never, void>
11
- find: (id: OperationId) => Effect<never, never, Option<Operation>>
12
- cleanup: Effect<never, never, void>
9
+ register: Effect<OperationId, never, Scope.Scope>
10
+ update: (id: OperationId, progress: OperationProgress) => Effect<void>
11
+ find: (id: OperationId) => Effect<Option<Operation>>
12
+ cleanup: Effect<void>
13
13
  }, Operations>() {}
14
14
  export namespace Operations {
15
15
  export interface Id {
@@ -20,7 +20,7 @@ export namespace Operations {
20
20
  /**
21
21
  * @tsplus getter effect/io/Effect forkOperation
22
22
  */
23
- export function forkOperation<R, E, A>(self: Effect<R, E, A>) {
23
+ export function forkOperation<R, E, A>(self: Effect<A, E, R>) {
24
24
  return Operations.flatMap(
25
25
  (Operations) =>
26
26
  Scope
@@ -37,14 +37,14 @@ export function forkOperation<R, E, A>(self: Effect<R, E, A>) {
37
37
  /**
38
38
  * @tsplus getter function forkOperation
39
39
  */
40
- export function forkOperationFunction<R, E, A, Inp>(fnc: (inp: Inp) => Effect<R, E, A>) {
40
+ export function forkOperationFunction<R, E, A, Inp>(fnc: (inp: Inp) => Effect<A, E, R>) {
41
41
  return (inp: Inp) => fnc(inp).forkOperation
42
42
  }
43
43
 
44
44
  /**
45
45
  * @tsplus static effect/io/Effect.Ops forkOperation
46
46
  */
47
- export function forkOperation2<R, E, A>(self: (opId: OperationId) => Effect<R, E, A>) {
47
+ export function forkOperation2<R, E, A>(self: (opId: OperationId) => Effect<A, E, R>) {
48
48
  return Operations.flatMap(
49
49
  (Operations) =>
50
50
  Scope
@@ -62,8 +62,8 @@ export function forkOperation2<R, E, A>(self: (opId: OperationId) => Effect<R, E
62
62
  * @tsplus static effect/io/Effect.Ops forkOperationWithEffect
63
63
  */
64
64
  export function forkOperationWithEffect<R, R2, E, E2, A, A2>(
65
- self: (id: OperationId) => Effect<R, E, A>,
66
- fnc: (id: OperationId) => Effect<R2, E2, A2>
65
+ self: (id: OperationId) => Effect<A, E, R>,
66
+ fnc: (id: OperationId) => Effect<A2, E2, R2>
67
67
  ) {
68
68
  return Operations.flatMap(
69
69
  (Operations) =>
@@ -14,7 +14,7 @@ export const reportQueueError = <E>(cause: Cause<E>, extras?: Record<string, unk
14
14
  *
15
15
  * @tsplus getter effect/io/Effect forkDaemonReportQueue
16
16
  */
17
- export function forkDaemonReportQueue<R, E, A>(self: Effect<R, E, A>) {
17
+ export function forkDaemonReportQueue<R, E, A>(self: Effect<A, E, R>) {
18
18
  return self.tapErrorCause(reportNonInterruptedFailureCause({})).fork.daemonChildren
19
19
  }
20
20
 
@@ -24,19 +24,19 @@ export const reportFatalQueueError = reportError(
24
24
 
25
25
  export function reportNonInterruptedFailure(context?: Record<string, unknown>) {
26
26
  const report = reportNonInterruptedFailureCause(context)
27
- return <R, E, A>(inp: Effect<R, E, A>): Effect<R, never, Exit<E, A>> =>
27
+ return <R, E, A>(inp: Effect<A, E, R>): Effect<Exit<A, E>, never, R> =>
28
28
  inp
29
29
  .exit
30
30
  .flatMap((result) =>
31
31
  result.match({ onFailure: (cause) => report(cause).map(() => result), onSuccess: () => Effect.sync(() => result) })
32
- )
32
+ );
33
33
  }
34
34
 
35
35
  export function reportNonInterruptedFailureCause(context?: Record<string, unknown>) {
36
- return <E>(cause: Cause<E>): Effect<never, never, void> => {
36
+ return <E>(cause: Cause<E>): Effect<void> => {
37
37
  if (cause.isInterrupted()) {
38
38
  return (cause as Cause<never>).failCause
39
39
  }
40
40
  return reportQueueError(cause, context)
41
- }
41
+ };
42
42
  }
@@ -18,8 +18,8 @@ export function makeMemQueue<
18
18
  >(
19
19
  queueName: string,
20
20
  queueDrainName: string,
21
- schema: S.Schema<never, EvtE, Evt>,
22
- drainSchema: S.Schema<never, DrainEvtE, DrainEvt>
21
+ schema: S.Schema<Evt, EvtE>,
22
+ drainSchema: S.Schema<DrainEvt, DrainEvtE>
23
23
  ) {
24
24
  return Effect.gen(function*($) {
25
25
  const mem = yield* $(MemQueue)
@@ -53,7 +53,7 @@ export function makeMemQueue<
53
53
  )
54
54
  }),
55
55
  makeDrain: <DrainE, DrainR>(
56
- handleEvent: (ks: DrainEvt) => Effect<DrainR, DrainE, void>
56
+ handleEvent: (ks: DrainEvt) => Effect<void, DrainE, DrainR>
57
57
  ) =>
58
58
  Effect.gen(function*($) {
59
59
  const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName })
@@ -92,6 +92,6 @@ export function makeMemQueue<
92
92
  .forkScoped
93
93
  )
94
94
  })
95
- } satisfies QueueBase<Evt, DrainEvt>
96
- })
95
+ } satisfies QueueBase<Evt, DrainEvt>;
96
+ });
97
97
  }
@@ -28,8 +28,8 @@ export function makeServiceBusQueue<
28
28
  >(
29
29
  _queueName: string,
30
30
  queueDrainName: string,
31
- schema: S.Schema<never, EvtE, Evt>,
32
- drainSchema: S.Schema<never, DrainEvtE, DrainEvt>
31
+ schema: S.Schema<Evt, EvtE>,
32
+ drainSchema: S.Schema<DrainEvt, DrainEvtE>
33
33
  ) {
34
34
  const wireSchema = struct({
35
35
  body: schema,
@@ -48,7 +48,7 @@ export function makeServiceBusQueue<
48
48
 
49
49
  return {
50
50
  makeDrain: <DrainE, DrainR>(
51
- handleEvent: (ks: DrainEvt) => Effect<DrainR, DrainE, void>
51
+ handleEvent: (ks: DrainEvt) => Effect<void, DrainE, DrainR>
52
52
  ) =>
53
53
  Effect.gen(function*($) {
54
54
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -111,8 +111,8 @@ export function makeServiceBusQueue<
111
111
  .forkDaemonReportQueue
112
112
  )
113
113
  })
114
- } satisfies QueueBase<Evt, DrainEvt>
115
- })
114
+ } satisfies QueueBase<Evt, DrainEvt>;
115
+ });
116
116
  }
117
117
 
118
118
  /**
@@ -4,11 +4,11 @@ import type { ContextMapContainer } from "../Store/ContextMapContainer.js"
4
4
 
5
5
  export interface QueueBase<Evt, DrainEvt> {
6
6
  makeDrain: <DrainE, DrainR>(
7
- makeHandleEvent: (ks: DrainEvt) => Effect<DrainR, DrainE, void>
8
- ) => Effect<Scope | RequestContextContainer | ContextMapContainer | DrainR, never, void>
7
+ makeHandleEvent: (ks: DrainEvt) => Effect<void, DrainE, DrainR>
8
+ ) => Effect<void, never, Scope | RequestContextContainer | ContextMapContainer | DrainR>
9
9
  publish: (
10
10
  ...messages: NonEmptyReadonlyArray<Evt>
11
- ) => Effect<never, never, void>
11
+ ) => Effect<void>
12
12
  }
13
13
 
14
14
  /**