@effect-app/infra 0.198.2 → 0.199.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 (360) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/_cjs/RequestContext.cjs +14 -9
  3. package/_cjs/RequestContext.cjs.map +1 -1
  4. package/_cjs/_ext/Array.cjs +3 -7
  5. package/_cjs/_ext/Array.cjs.map +1 -1
  6. package/_cjs/api/reportError.cjs +3 -6
  7. package/_cjs/api/reportError.cjs.map +1 -1
  8. package/_cjs/api/routing/base.cjs +27 -61
  9. package/_cjs/api/routing/base.cjs.map +1 -1
  10. package/_cjs/api/routing/defaultErrorHandler.cjs +14 -21
  11. package/_cjs/api/routing/defaultErrorHandler.cjs.map +1 -1
  12. package/_cjs/api/routing/makeRequestHandler.cjs +44 -51
  13. package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
  14. package/_cjs/api/routing/match.cjs +6 -13
  15. package/_cjs/api/routing/match.cjs.map +1 -1
  16. package/_cjs/api/{express → routing}/schema/jwt.cjs +3 -4
  17. package/_cjs/api/routing/schema/jwt.cjs.map +1 -0
  18. package/_cjs/api/routing/schema/routing.cjs +136 -0
  19. package/_cjs/api/routing/schema/routing.cjs.map +1 -0
  20. package/_cjs/api/setupRequest.cjs +16 -22
  21. package/_cjs/api/setupRequest.cjs.map +1 -1
  22. package/_cjs/errorReporter.cjs +16 -17
  23. package/_cjs/errorReporter.cjs.map +1 -1
  24. package/_cjs/errors.cjs +2 -4
  25. package/_cjs/errors.cjs.map +1 -1
  26. package/_cjs/filter/types/path/index.cjs +0 -2
  27. package/_cjs/filter/types/path/index.cjs.map +1 -1
  28. package/_cjs/filter.cjs +35 -0
  29. package/_cjs/filter.cjs.map +1 -1
  30. package/_cjs/logger/jsonLogger.cjs +9 -15
  31. package/_cjs/logger/jsonLogger.cjs.map +1 -1
  32. package/_cjs/logger/logFmtLogger.cjs +7 -11
  33. package/_cjs/logger/logFmtLogger.cjs.map +1 -1
  34. package/_cjs/logger/shared.cjs +6 -8
  35. package/_cjs/logger/shared.cjs.map +1 -1
  36. package/_cjs/rateLimit.cjs +9 -12
  37. package/_cjs/rateLimit.cjs.map +1 -1
  38. package/_cjs/services/Emailer/Sendgrid.cjs +9 -16
  39. package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
  40. package/_cjs/services/Emailer/fake.cjs +5 -8
  41. package/_cjs/services/Emailer/fake.cjs.map +1 -1
  42. package/_cjs/services/Emailer/service.cjs +2 -4
  43. package/_cjs/services/Emailer/service.cjs.map +1 -1
  44. package/_cjs/services/Operations/live.cjs +29 -42
  45. package/_cjs/services/Operations/live.cjs.map +1 -1
  46. package/_cjs/services/Operations/service.cjs +15 -15
  47. package/_cjs/services/Operations/service.cjs.map +1 -1
  48. package/_cjs/services/QueueMaker/errors.cjs +8 -12
  49. package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
  50. package/_cjs/services/QueueMaker/memQueue.cjs +27 -33
  51. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  52. package/_cjs/services/QueueMaker/sbqueue.cjs +31 -40
  53. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  54. package/_cjs/services/QueueMaker/service.cjs +7 -9
  55. package/_cjs/services/QueueMaker/service.cjs.map +1 -1
  56. package/_cjs/services/Repository/dsl.cjs +11 -14
  57. package/_cjs/services/Repository/dsl.cjs.map +1 -1
  58. package/_cjs/services/Repository/ext.cjs +62 -71
  59. package/_cjs/services/Repository/ext.cjs.map +1 -1
  60. package/_cjs/services/RepositoryBase.cjs +171 -169
  61. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  62. package/_cjs/services/RequestContextContainer.cjs +17 -23
  63. package/_cjs/services/RequestContextContainer.cjs.map +1 -1
  64. package/_cjs/services/Store/ContextMapContainer.cjs +10 -16
  65. package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
  66. package/_cjs/services/Store/Cosmos/query.cjs +5 -9
  67. package/_cjs/services/Store/Cosmos/query.cjs.map +1 -1
  68. package/_cjs/services/Store/Cosmos.cjs +58 -68
  69. package/_cjs/services/Store/Cosmos.cjs.map +1 -1
  70. package/_cjs/services/Store/Disk.cjs +34 -36
  71. package/_cjs/services/Store/Disk.cjs.map +1 -1
  72. package/_cjs/services/Store/Memory.cjs +55 -65
  73. package/_cjs/services/Store/Memory.cjs.map +1 -1
  74. package/_cjs/services/Store/codeFilter.cjs +2 -4
  75. package/_cjs/services/Store/codeFilter.cjs.map +1 -1
  76. package/_cjs/services/Store/codeFilter.test.cjs +13 -12
  77. package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
  78. package/_cjs/services/Store/filterApi/query.cjs +2 -4
  79. package/_cjs/services/Store/filterApi/query.cjs.map +1 -1
  80. package/_cjs/services/Store/index.cjs +6 -9
  81. package/_cjs/services/Store/index.cjs.map +1 -1
  82. package/_cjs/services/Store/service.cjs +5 -7
  83. package/_cjs/services/Store/service.cjs.map +1 -1
  84. package/_cjs/services/Store/utils.cjs +16 -20
  85. package/_cjs/services/Store/utils.cjs.map +1 -1
  86. package/_cjs/services/query.cjs +4 -1
  87. package/_cjs/services/query.cjs.map +1 -1
  88. package/_cjs/test.arbs.cjs +3 -4
  89. package/_cjs/test.arbs.cjs.map +1 -1
  90. package/dist/RequestContext.d.ts +20 -20
  91. package/dist/RequestContext.d.ts.map +1 -1
  92. package/dist/RequestContext.js +15 -8
  93. package/dist/_ext/Array.d.ts +2 -3
  94. package/dist/_ext/Array.d.ts.map +1 -1
  95. package/dist/_ext/Array.js +5 -5
  96. package/dist/api/reportError.d.ts +5 -5
  97. package/dist/api/reportError.d.ts.map +1 -1
  98. package/dist/api/reportError.js +6 -6
  99. package/dist/api/routing/base.d.ts +11 -15
  100. package/dist/api/routing/base.d.ts.map +1 -1
  101. package/dist/api/routing/base.js +48 -67
  102. package/dist/api/routing/defaultErrorHandler.d.ts +4 -6
  103. package/dist/api/routing/defaultErrorHandler.d.ts.map +1 -1
  104. package/dist/api/routing/defaultErrorHandler.js +26 -28
  105. package/dist/api/routing/makeRequestHandler.d.ts +6 -7
  106. package/dist/api/routing/makeRequestHandler.d.ts.map +1 -1
  107. package/dist/api/routing/makeRequestHandler.js +69 -59
  108. package/dist/api/routing/match.d.ts +7 -8
  109. package/dist/api/routing/match.d.ts.map +1 -1
  110. package/dist/api/routing/match.js +7 -11
  111. package/dist/api/routing/schema/jwt.d.ts +4 -0
  112. package/dist/api/routing/schema/jwt.d.ts.map +1 -0
  113. package/dist/api/routing/schema/jwt.js +11 -0
  114. package/dist/api/{express → routing}/schema/routing.d.ts +2 -2
  115. package/dist/api/routing/schema/routing.d.ts.map +1 -0
  116. package/dist/api/routing/schema/routing.js +123 -0
  117. package/dist/api/routing.js +3 -1
  118. package/dist/api/setupRequest.d.ts +3 -5
  119. package/dist/api/setupRequest.d.ts.map +1 -1
  120. package/dist/api/setupRequest.js +20 -24
  121. package/dist/errorReporter.d.ts +4 -4
  122. package/dist/errorReporter.d.ts.map +1 -1
  123. package/dist/errorReporter.js +20 -17
  124. package/dist/errors.d.ts +1 -1
  125. package/dist/errors.d.ts.map +1 -1
  126. package/dist/errors.js +3 -3
  127. package/dist/filter/types/path/index.d.ts +2 -2
  128. package/dist/filter/types/path/index.d.ts.map +1 -1
  129. package/dist/filter/types/path/index.js +2 -3
  130. package/dist/filter/types.js +2 -1
  131. package/dist/filter.d.ts.map +1 -1
  132. package/dist/filter.js +36 -1
  133. package/dist/logger/jsonLogger.d.ts +2 -1
  134. package/dist/logger/jsonLogger.d.ts.map +1 -1
  135. package/dist/logger/jsonLogger.js +9 -13
  136. package/dist/logger/logFmtLogger.d.ts +2 -1
  137. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  138. package/dist/logger/logFmtLogger.js +9 -11
  139. package/dist/logger/shared.d.ts +2 -1
  140. package/dist/logger/shared.d.ts.map +1 -1
  141. package/dist/logger/shared.js +7 -9
  142. package/dist/rateLimit.d.ts +7 -10
  143. package/dist/rateLimit.d.ts.map +1 -1
  144. package/dist/rateLimit.js +17 -16
  145. package/dist/services/Emailer/Sendgrid.d.ts +1 -2
  146. package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
  147. package/dist/services/Emailer/Sendgrid.js +16 -20
  148. package/dist/services/Emailer/fake.d.ts +2 -2
  149. package/dist/services/Emailer/fake.d.ts.map +1 -1
  150. package/dist/services/Emailer/fake.js +10 -8
  151. package/dist/services/Emailer/service.d.ts +7 -10
  152. package/dist/services/Emailer/service.d.ts.map +1 -1
  153. package/dist/services/Emailer/service.js +3 -3
  154. package/dist/services/Operations/live.d.ts +2 -3
  155. package/dist/services/Operations/live.d.ts.map +1 -1
  156. package/dist/services/Operations/live.js +44 -51
  157. package/dist/services/Operations/service.d.ts +14 -19
  158. package/dist/services/Operations/service.d.ts.map +1 -1
  159. package/dist/services/Operations/service.js +23 -28
  160. package/dist/services/QueueMaker/errors.d.ts +5 -7
  161. package/dist/services/QueueMaker/errors.d.ts.map +1 -1
  162. package/dist/services/QueueMaker/errors.js +11 -11
  163. package/dist/services/QueueMaker/memQueue.d.ts +6 -9
  164. package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
  165. package/dist/services/QueueMaker/memQueue.js +37 -39
  166. package/dist/services/QueueMaker/sbqueue.d.ts +6 -9
  167. package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
  168. package/dist/services/QueueMaker/sbqueue.js +41 -39
  169. package/dist/services/QueueMaker/service.d.ts +2 -4
  170. package/dist/services/QueueMaker/service.d.ts.map +1 -1
  171. package/dist/services/QueueMaker/service.js +8 -8
  172. package/dist/services/Repository/dsl.d.ts +8 -10
  173. package/dist/services/Repository/dsl.d.ts.map +1 -1
  174. package/dist/services/Repository/dsl.js +12 -13
  175. package/dist/services/Repository/ext.d.ts +34 -62
  176. package/dist/services/Repository/ext.d.ts.map +1 -1
  177. package/dist/services/Repository/ext.js +59 -70
  178. package/dist/services/RepositoryBase.d.ts +41 -47
  179. package/dist/services/RepositoryBase.d.ts.map +1 -1
  180. package/dist/services/RepositoryBase.js +182 -194
  181. package/dist/services/RequestContextContainer.d.ts +13 -21
  182. package/dist/services/RequestContextContainer.d.ts.map +1 -1
  183. package/dist/services/RequestContextContainer.js +21 -25
  184. package/dist/services/Store/ContextMapContainer.d.ts +11 -18
  185. package/dist/services/Store/ContextMapContainer.d.ts.map +1 -1
  186. package/dist/services/Store/ContextMapContainer.js +17 -18
  187. package/dist/services/Store/Cosmos/query.d.ts +3 -2
  188. package/dist/services/Store/Cosmos/query.d.ts.map +1 -1
  189. package/dist/services/Store/Cosmos/query.js +10 -11
  190. package/dist/services/Store/Cosmos.d.ts +2 -3
  191. package/dist/services/Store/Cosmos.d.ts.map +1 -1
  192. package/dist/services/Store/Cosmos.js +107 -90
  193. package/dist/services/Store/Disk.d.ts +4 -4
  194. package/dist/services/Store/Disk.d.ts.map +1 -1
  195. package/dist/services/Store/Disk.js +54 -50
  196. package/dist/services/Store/Memory.d.ts +6 -8
  197. package/dist/services/Store/Memory.d.ts.map +1 -1
  198. package/dist/services/Store/Memory.js +93 -89
  199. package/dist/services/Store/codeFilter.d.ts.map +1 -1
  200. package/dist/services/Store/codeFilter.js +3 -3
  201. package/dist/services/Store/codeFilter.test.d.ts.map +1 -1
  202. package/dist/services/Store/filterApi/query.d.ts +1 -1
  203. package/dist/services/Store/filterApi/query.d.ts.map +1 -1
  204. package/dist/services/Store/filterApi/query.js +3 -3
  205. package/dist/services/Store/index.d.ts +1 -2
  206. package/dist/services/Store/index.d.ts.map +1 -1
  207. package/dist/services/Store/index.js +7 -8
  208. package/dist/services/Store/service.d.ts +20 -23
  209. package/dist/services/Store/service.d.ts.map +1 -1
  210. package/dist/services/Store/service.js +6 -6
  211. package/dist/services/Store/utils.d.ts +3 -3
  212. package/dist/services/Store/utils.d.ts.map +1 -1
  213. package/dist/services/Store/utils.js +26 -28
  214. package/dist/services/query.d.ts +6 -6
  215. package/dist/services/query.d.ts.map +1 -1
  216. package/dist/services/query.js +5 -3
  217. package/dist/test.arbs.d.ts +0 -2
  218. package/dist/test.arbs.d.ts.map +1 -1
  219. package/dist/test.arbs.js +3 -4
  220. package/package.json +28 -168
  221. package/src/RequestContext.ts +1 -0
  222. package/src/_ext/Array.ts +5 -2
  223. package/src/api/reportError.ts +14 -10
  224. package/src/api/routing/base.ts +77 -110
  225. package/src/api/routing/defaultErrorHandler.ts +64 -54
  226. package/src/api/routing/makeRequestHandler.ts +165 -135
  227. package/src/api/routing/match.ts +14 -8
  228. package/src/api/{express → routing}/schema/jwt.ts +6 -5
  229. package/src/api/{express → routing}/schema/routing.ts +2 -1
  230. package/src/api/setupRequest.ts +30 -24
  231. package/src/errorReporter.ts +12 -11
  232. package/src/errors.ts +1 -0
  233. package/src/filter/types/path/index.ts +2 -2
  234. package/src/logger/jsonLogger.ts +6 -5
  235. package/src/logger/logFmtLogger.ts +4 -5
  236. package/src/logger/shared.ts +4 -3
  237. package/src/rateLimit.ts +37 -34
  238. package/src/services/Emailer/Sendgrid.ts +12 -10
  239. package/src/services/Emailer/fake.ts +7 -4
  240. package/src/services/Emailer/service.ts +4 -1
  241. package/src/services/Operations/live.ts +66 -59
  242. package/src/services/Operations/service.ts +41 -34
  243. package/src/services/QueueMaker/errors.ts +15 -11
  244. package/src/services/QueueMaker/memQueue.ts +59 -40
  245. package/src/services/QueueMaker/sbqueue.ts +54 -33
  246. package/src/services/QueueMaker/service.ts +7 -6
  247. package/src/services/Repository/dsl.ts +12 -8
  248. package/src/services/Repository/ext.ts +52 -44
  249. package/src/services/RepositoryBase.ts +278 -240
  250. package/src/services/RequestContextContainer.ts +30 -18
  251. package/src/services/Store/ContextMapContainer.ts +26 -13
  252. package/src/services/Store/Cosmos/query.ts +17 -11
  253. package/src/services/Store/Cosmos.ts +209 -168
  254. package/src/services/Store/Disk.ts +69 -53
  255. package/src/services/Store/Memory.ts +138 -97
  256. package/src/services/Store/{Redis.ts → Redis.ts.bak} +7 -5
  257. package/src/services/Store/codeFilter.test.ts +61 -36
  258. package/src/services/Store/codeFilter.ts +1 -0
  259. package/src/services/Store/filterApi/query.ts +1 -0
  260. package/src/services/Store/index.ts +7 -6
  261. package/src/services/Store/service.ts +4 -1
  262. package/src/services/Store/utils.ts +25 -23
  263. package/src/services/query.ts +3 -2
  264. package/src/services/simpledb/{cosmosdb.ts → cosmosdb.ts.bak} +1 -0
  265. package/src/services/simpledb/{diskdb.ts → diskdb.ts.bak} +2 -1
  266. package/src/services/simpledb/{memdb.ts → memdb.ts.bak} +3 -2
  267. package/src/services/simpledb/{mongodb.ts → mongodb.ts.bak} +1 -0
  268. package/src/services/simpledb/{redisdb.ts → redisdb.ts.bak} +17 -14
  269. package/src/services/simpledb/{shared.ts → shared.ts.bak} +2 -1
  270. package/src/services/simpledb/{simpledb.ts → simpledb.ts.bak} +6 -2
  271. package/tsconfig.json +4 -21
  272. package/tsconfig.json.bak +0 -4
  273. package/_cjs/_global.cjs +0 -6
  274. package/_cjs/_global.cjs.map +0 -1
  275. package/_cjs/_global.ext.cjs +0 -5
  276. package/_cjs/_global.ext.cjs.map +0 -1
  277. package/_cjs/_global.schema.cjs +0 -5
  278. package/_cjs/_global.schema.cjs.map +0 -1
  279. package/_cjs/api/defaultErrorHandler.cjs +0 -37
  280. package/_cjs/api/defaultErrorHandler.cjs.map +0 -1
  281. package/_cjs/api/express/schema/jwt.cjs.map +0 -1
  282. package/_cjs/api/express/schema/routing.cjs +0 -23
  283. package/_cjs/api/express/schema/routing.cjs.map +0 -1
  284. package/_cjs/api/http.cjs +0 -42
  285. package/_cjs/api/http.cjs.map +0 -1
  286. package/_cjs/services/Store/Redis.cjs +0 -73
  287. package/_cjs/services/Store/Redis.cjs.map +0 -1
  288. package/_cjs/services/simpledb/cosmosdb.cjs +0 -109
  289. package/_cjs/services/simpledb/cosmosdb.cjs.map +0 -1
  290. package/_cjs/services/simpledb/diskdb.cjs +0 -125
  291. package/_cjs/services/simpledb/diskdb.cjs.map +0 -1
  292. package/_cjs/services/simpledb/index.cjs +0 -38
  293. package/_cjs/services/simpledb/index.cjs.map +0 -1
  294. package/_cjs/services/simpledb/memdb.cjs +0 -72
  295. package/_cjs/services/simpledb/memdb.cjs.map +0 -1
  296. package/_cjs/services/simpledb/mongodb.cjs +0 -99
  297. package/_cjs/services/simpledb/mongodb.cjs.map +0 -1
  298. package/_cjs/services/simpledb/redisdb.cjs +0 -135
  299. package/_cjs/services/simpledb/redisdb.cjs.map +0 -1
  300. package/_cjs/services/simpledb/shared.cjs +0 -79
  301. package/_cjs/services/simpledb/shared.cjs.map +0 -1
  302. package/_cjs/services/simpledb/simpledb.cjs +0 -85
  303. package/_cjs/services/simpledb/simpledb.cjs.map +0 -1
  304. package/dist/_global.d.ts +0 -10
  305. package/dist/_global.d.ts.map +0 -1
  306. package/dist/_global.ext.d.ts +0 -34
  307. package/dist/_global.ext.d.ts.map +0 -1
  308. package/dist/_global.ext.js +0 -6
  309. package/dist/_global.js +0 -12
  310. package/dist/_global.schema.d.ts +0 -6
  311. package/dist/_global.schema.d.ts.map +0 -1
  312. package/dist/_global.schema.js +0 -9
  313. package/dist/api/defaultErrorHandler.d.ts +0 -6
  314. package/dist/api/defaultErrorHandler.d.ts.map +0 -1
  315. package/dist/api/defaultErrorHandler.js +0 -34
  316. package/dist/api/express/schema/jwt.d.ts +0 -6
  317. package/dist/api/express/schema/jwt.d.ts.map +0 -1
  318. package/dist/api/express/schema/jwt.js +0 -11
  319. package/dist/api/express/schema/routing.d.ts.map +0 -1
  320. package/dist/api/express/schema/routing.js +0 -10
  321. package/dist/api/http.d.ts +0 -16
  322. package/dist/api/http.d.ts.map +0 -1
  323. package/dist/api/http.js +0 -12
  324. package/dist/services/Store/Redis.d.ts +0 -6
  325. package/dist/services/Store/Redis.d.ts.map +0 -1
  326. package/dist/services/Store/Redis.js +0 -76
  327. package/dist/services/simpledb/cosmosdb.d.ts +0 -14
  328. package/dist/services/simpledb/cosmosdb.d.ts.map +0 -1
  329. package/dist/services/simpledb/cosmosdb.js +0 -103
  330. package/dist/services/simpledb/diskdb.d.ts +0 -12
  331. package/dist/services/simpledb/diskdb.d.ts.map +0 -1
  332. package/dist/services/simpledb/diskdb.js +0 -109
  333. package/dist/services/simpledb/index.d.ts +0 -7
  334. package/dist/services/simpledb/index.d.ts.map +0 -1
  335. package/dist/services/simpledb/index.js +0 -7
  336. package/dist/services/simpledb/memdb.d.ts +0 -11
  337. package/dist/services/simpledb/memdb.d.ts.map +0 -1
  338. package/dist/services/simpledb/memdb.js +0 -58
  339. package/dist/services/simpledb/mongodb.d.ts +0 -13
  340. package/dist/services/simpledb/mongodb.d.ts.map +0 -1
  341. package/dist/services/simpledb/mongodb.js +0 -68
  342. package/dist/services/simpledb/redisdb.d.ts +0 -35
  343. package/dist/services/simpledb/redisdb.d.ts.map +0 -1
  344. package/dist/services/simpledb/redisdb.js +0 -126
  345. package/dist/services/simpledb/shared.d.ts +0 -87
  346. package/dist/services/simpledb/shared.d.ts.map +0 -1
  347. package/dist/services/simpledb/shared.js +0 -52
  348. package/dist/services/simpledb/simpledb.d.ts +0 -23
  349. package/dist/services/simpledb/simpledb.d.ts.map +0 -1
  350. package/dist/services/simpledb/simpledb.js +0 -69
  351. package/src/_global.ext.ts +0 -36
  352. package/src/_global.schema.ts +0 -10
  353. package/src/_global.ts +0 -14
  354. package/src/api/defaultErrorHandler.ts +0 -59
  355. package/src/api/express/makeJsonSchema.test.ts.bak +0 -76
  356. package/src/api/express/makeJsonSchema.ts.bak +0 -166
  357. package/src/api/express/makeOpenApiSpecs.ts.bak +0 -62
  358. package/src/api/http.ts +0 -26
  359. package/tsplus.config.json +0 -9
  360. /package/src/services/simpledb/{index.ts → index.ts.bak} +0 -0
@@ -1,3 +1,4 @@
1
+ import { Cause, FiberId, HashMap, List, Logger, Option } from "effect-app"
1
2
  import { getRequestContext } from "./shared.js"
2
3
 
3
4
  export const jsonLogger = Logger.make<unknown, void>(
@@ -10,12 +11,12 @@ export const jsonLogger = Logger.make<unknown, void>(
10
11
  const data = {
11
12
  timestamp: now,
12
13
  level: logLevel.label,
13
- fiber: fiberId.threadName,
14
+ fiber: FiberId.threadName(fiberId),
14
15
  message,
15
- request: c.value,
16
- cause: cause != null && cause != Cause.empty ? cause.pretty : undefined,
17
- spans: spans.map((_) => ({ label: _.label, timing: nowMillis - _.startTime })).toArray,
18
- annotations: annotations.size > 0
16
+ request: Option.getOrUndefined(c),
17
+ cause: cause != null && cause != Cause.empty ? Cause.pretty(cause) : undefined,
18
+ spans: List.map(spans, (_) => ({ label: _.label, timing: nowMillis - _.startTime })).pipe(List.toArray),
19
+ annotations: HashMap.size(annotations) > 0
19
20
  ? [...annotations].reduce((prev, [k, v]) => {
20
21
  prev[k] = v
21
22
  return prev
@@ -1,23 +1,22 @@
1
+ import { HashMap, Logger, Option } from "effect-app"
1
2
  import { getRequestContext } from "./shared.js"
2
3
 
3
4
  export const logfmtLogger = Logger.make<unknown, void>(
4
5
  (_) => {
5
6
  let { annotations } = _
6
7
  const c = getRequestContext(_.context)
7
- const requestContext = c.value
8
+ const requestContext = Option.getOrUndefined(c)
8
9
  if (requestContext && requestContext.name !== "_root_") {
9
10
  annotations = HashMap.make(...[
10
11
  ...annotations,
11
- ...{
12
+ ...Object.entries({
12
13
  "request.root.id": requestContext.rootId,
13
14
  "request.id": requestContext.id,
14
15
  "request.name": requestContext.name,
15
16
  "request.namespace": requestContext.namespace,
16
17
  "request.locale": requestContext.locale,
17
18
  ...(requestContext.userProfile?.sub ? { "request.user.sub": requestContext.userProfile.sub } : {})
18
- }
19
- .$$
20
- .entries
19
+ })
21
20
  ])
22
21
  }
23
22
  const formatted = Logger.logfmtLogger.log({ ..._, annotations })
@@ -1,14 +1,15 @@
1
1
  import { RuntimeFlags } from "effect"
2
+ import { Context, FiberRef, Option, Runtime } from "effect-app"
2
3
  import * as FiberRefs from "effect/FiberRefs"
3
4
  import { RequestContextContainer } from "../services/RequestContextContainer.js"
4
5
 
5
6
  export function getRequestContext(fiberRefs: FiberRefs.FiberRefs) {
6
7
  const context = FiberRefs.getOrDefault(fiberRefs, FiberRef.currentContext)
7
- const a = context.getOption(RequestContextContainer)
8
- const c = a.map((_) => {
8
+ const a = Context.getOption(context, RequestContextContainer)
9
+ const c = Option.map(a, (_) => {
9
10
  // TODO: perhaps a litle expensive?
10
11
  const rt = Runtime.make({ context, fiberRefs, runtimeFlags: RuntimeFlags.none })
11
- return rt.runSync(_.requestContext)
12
+ return Runtime.runSync(rt)(_.requestContext)
12
13
  })
13
14
  return c
14
15
  }
package/src/rateLimit.ts CHANGED
@@ -23,6 +23,10 @@
23
23
  // }
24
24
  // }
25
25
 
26
+ import type { Semaphore } from "@effect-app/core/Effect"
27
+ import type { Duration, NonEmptyArray } from "effect-app"
28
+ import { Effect, ReadonlyArray } from "effect-app"
29
+
26
30
  /**
27
31
  * Executes the specified effect, acquiring the specified number of permits
28
32
  * immediately before the effect begins execution and releasing them
@@ -38,14 +42,12 @@ export function SEM_withPermitsDuration(permits: number, duration: Duration) {
38
42
  Effect.uninterruptibleMask(
39
43
  (restore) =>
40
44
  restore(self.take(permits))
41
- .andThen(
45
+ .pipe(Effect.andThen(
42
46
  restore(effect)
43
- .ensuring(
44
- self
45
- .release(permits)
46
- .delay(duration)
47
- )
48
- )
47
+ .pipe(Effect.ensuring(
48
+ Effect.delay(self.release(permits), duration)
49
+ ))
50
+ ))
49
51
  )
50
52
  }
51
53
  }
@@ -60,15 +62,14 @@ export function batchPar<R, E, A, R2, E2, A2, T>(
60
62
  forEachBatch: (a: NonEmptyArray<A>, i: number) => Effect<A2, E2, R2>
61
63
  ) {
62
64
  return (items: Iterable<T>) =>
63
- items
64
- .chunk(n)
65
- .forEachEffect(
66
- (_, i) =>
67
- _
68
- .forEachEffect((_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
69
- .flatMap((_) => forEachBatch(_ as NonEmptyArray<A>, i)),
70
- { concurrency: "inherit" }
71
- )
65
+ Effect.forEach(
66
+ ReadonlyArray.chunk_(items, n),
67
+ (_, i) =>
68
+ Effect
69
+ .forEach(_, (_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
70
+ .pipe(Effect.flatMap((_) => forEachBatch(_ as NonEmptyArray<A>, i))),
71
+ { concurrency: "inherit" }
72
+ )
72
73
  }
73
74
 
74
75
  /**
@@ -81,13 +82,13 @@ export function batch<R, E, A, R2, E2, A2, T>(
81
82
  forEachBatch: (a: NonEmptyArray<A>, i: number) => Effect<A2, E2, R2>
82
83
  ) {
83
84
  return (items: Iterable<T>) =>
84
- items
85
- .chunk(n)
86
- .forEachEffect((_, i) =>
87
- _
88
- .forEachEffect((_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
89
- .flatMap((_) => forEachBatch(_ as NonEmptyArray<A>, i))
90
- )
85
+ Effect.forEach(
86
+ ReadonlyArray.chunk_(items, n),
87
+ (_, i) =>
88
+ Effect
89
+ .forEach(_, (_, j) => forEachItem(_, j, i), { concurrency: "inherit" })
90
+ .pipe(Effect.flatMap((_) => forEachBatch(_ as NonEmptyArray<A>, i)))
91
+ )
91
92
  }
92
93
 
93
94
  // /**
@@ -117,20 +118,22 @@ export function batch<R, E, A, R2, E2, A2, T>(
117
118
 
118
119
  export function naiveRateLimit(
119
120
  n: number,
120
- d: DUR
121
+ d: Duration
121
122
  ) {
122
123
  return <T>(items: Iterable<T>) => (<R, E, A, R2, E2, A2>(
123
124
  forEachItem: (i: T) => Effect<A, E, R>,
124
125
  forEachBatch: (a: A[]) => Effect<A2, E2, R2>
125
126
  ) =>
126
- items
127
- .chunk(n)
128
- .forEachEffect((batch, i) =>
129
- ((i === 0) ? Effect.unit : Effect.sleep(d))
130
- .zipRight(
131
- batch
132
- .forEachEffect(forEachItem, { concurrency: n })
133
- .flatMap(forEachBatch)
134
- )
135
- ))
127
+ Effect.forEach(
128
+ ReadonlyArray.chunk_(items, n),
129
+ (batch, i) =>
130
+ ((i === 0)
131
+ ? Effect.unit
132
+ : Effect.sleep(d))
133
+ .pipe(Effect.zipRight(
134
+ Effect
135
+ .forEach(batch, forEachItem, { concurrency: n })
136
+ .pipe(Effect.flatMap(forEachBatch))
137
+ ))
138
+ ))
136
139
  }
@@ -1,13 +1,14 @@
1
1
  import { dropUndefinedT } from "@effect-app/core/utils"
2
2
  import type { EmailData } from "@sendgrid/helpers/classes/email-address.js"
3
3
  import sgMail from "@sendgrid/mail"
4
+ import { Effect, Equivalence, ReadonlyArray, Secret } from "effect-app"
4
5
  import { inspect } from "util"
5
6
  import { Emailer } from "./service.js"
6
7
  import type { EmailMsg, EmailMsgOptionalFrom, SendgridConfig } from "./service.js"
7
8
 
8
9
  const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPrefix }: SendgridConfig) =>
9
10
  Effect.sync(() => {
10
- sgMail.setApiKey(apiKey.value)
11
+ sgMail.setApiKey(Secret.value(apiKey))
11
12
 
12
13
  return new Emailer({
13
14
  sendMail(msg_: EmailMsgOptionalFrom) {
@@ -21,7 +22,7 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
21
22
 
22
23
  const renderedMsg_ = render(msg)
23
24
  const renderedMsg = { ...renderedMsg_, subject: `${subjectPrefix}${renderedMsg_.subject}` }
24
- yield* $(Effect.logDebug("Sending email").annotateLogs("msg", inspect(renderedMsg, false, 5)))
25
+ yield* $(Effect.logDebug("Sending email").pipe(Effect.annotateLogs("msg", inspect(renderedMsg, false, 5))))
25
26
 
26
27
  const ret = yield* $(
27
28
  Effect.async<[sgMail.ClientResponse, Record<string, unknown>], Error | sgMail.ResponseError>(
@@ -52,8 +53,7 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
52
53
  * @tsplus static Emailer.Ops SendgridLayer
53
54
  */
54
55
  export function Sendgrid(config: SendgridConfig) {
55
- return makeSendgrid(config)
56
- .toLayer(Emailer)
56
+ return Emailer.toLayer(makeSendgrid(config))
57
57
  }
58
58
 
59
59
  /**
@@ -97,18 +97,20 @@ function renderFake(addr: EmailData | EmailData[], makeId: () => number) {
97
97
  email: `test+${makeId()}@nomizz.com`
98
98
  }
99
99
  }
100
- const eq = Equivalence.string.mapInput((to: { name?: string; email: string } | string) =>
101
- typeof to === "string" ? to.toLowerCase() : to.email.toLowerCase()
100
+ const eq = Equivalence.mapInput(
101
+ Equivalence.string,
102
+ (to: { name?: string; email: string } | string) => typeof to === "string" ? to.toLowerCase() : to.email.toLowerCase()
102
103
  )
103
104
 
104
105
  // TODO: should just not add any already added email address
105
106
  // https://stackoverflow.com/a/53603076/11595834
106
107
  function renderFakeIfTest(addr: EmailData | EmailData[], makeId: () => number) {
107
108
  return Array.isArray(addr)
108
- ? addr
109
- .map((x) => (isTestAddress(x) ? renderFake(x, makeId) : x))
110
- .dedupeWith(eq)
111
- .toArray
109
+ ? ReadonlyArray.dedupeWith(
110
+ addr
111
+ .map((x) => (isTestAddress(x) ? renderFake(x, makeId) : x)),
112
+ eq
113
+ )
112
114
  : isTestAddress(addr)
113
115
  ? renderFake(addr, makeId)
114
116
  : addr
@@ -1,17 +1,20 @@
1
+ import { Effect, Layer } from "effect-app"
1
2
  import { pretty } from "effect-app/utils"
2
3
  import { Emailer } from "./service.js"
3
4
 
4
5
  const makeFake = Effect
5
6
  .logDebug("FAKE Emailer Service enabled")
6
- .map(() =>
7
+ .pipe(Effect.map(() =>
7
8
  new Emailer({
8
9
  sendMail(msg) {
9
- return Effect.logDebug(`Fake send mail`).annotateLogs("msg", pretty(msg))
10
+ return Effect
11
+ .logDebug(`Fake send mail`)
12
+ .pipe(Effect.annotateLogs("msg", pretty(msg)))
10
13
  }
11
14
  })
12
- )
15
+ ))
13
16
 
14
17
  /**
15
18
  * @tsplus static Emailer.Ops Fake
16
19
  */
17
- export const FakeSendgrid = makeFake.toLayer(Emailer)
20
+ export const FakeSendgrid = Layer.effect(Emailer, makeFake)
@@ -1,6 +1,9 @@
1
+ import type { Email, NonEmptyString255 } from "@effect-app/schema"
1
2
  import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js"
2
3
  import type { ResponseError } from "@sendgrid/mail"
3
4
  import type sgMail from "@sendgrid/mail"
5
+ import type { Effect, NonEmptyReadonlyArray, Secret } from "effect-app"
6
+ import { TagClassId } from "effect-app/service"
4
7
 
5
8
  /**
6
9
  * @tsplus type Emailer
@@ -15,7 +18,7 @@ export interface SendgridConfig {
15
18
  subjectPrefix: string
16
19
  realMail: boolean
17
20
  defaultFrom: Email | { name?: NonEmptyString255; email: Email }
18
- apiKey: Secret
21
+ apiKey: Secret.Secret
19
22
  }
20
23
  export type EmailMsg = sgMail.MailDataRequired
21
24
  export type EmailTemplateMsg = MailData & { templateId: string }
@@ -1,4 +1,8 @@
1
+ import { annotateLogscoped } from "@effect-app/core/Effect"
1
2
  import { reportError } from "@effect-app/infra/errorReporter"
3
+ import { NonEmptyString2k } from "@effect-app/schema"
4
+ import { subHours } from "date-fns"
5
+ import { Cause, copy, Duration, Effect, Exit, Layer, Option, S, Schedule } from "effect-app"
2
6
  import type { OperationProgress } from "effect-app/Operations"
3
7
  import { Failure, Operation, OperationId, Success } from "effect-app/Operations"
4
8
  import { Operations } from "./service.js"
@@ -11,18 +15,17 @@ const make = Effect.sync(() => {
11
15
 
12
16
  const cleanup = Effect
13
17
  .sync(() => {
14
- const before = new Date().subHours(1)
15
- ops
16
- .entries()
17
- .toChunk
18
+ const before = subHours(new Date(), 1)
19
+ ;[...ops
20
+ .entries()]
18
21
  .forEach(([id, op]) => {
19
- const lastChanged = Option.fromNullable(op.updatedAt).getOrElse(() => op.createdAt)
22
+ const lastChanged = Option.fromNullable(op.updatedAt).pipe(Option.getOrElse(() => op.createdAt))
20
23
  if (lastChanged < before) {
21
24
  ops.delete(id)
22
25
  }
23
26
  })
24
27
  })
25
- .withSpan("Operations.cleanup")
28
+ .pipe(Effect.withSpan("Operations.cleanup"))
26
29
 
27
30
  function addOp(id: OperationId) {
28
31
  return Effect.sync(() => {
@@ -33,57 +36,56 @@ const make = Effect.sync(() => {
33
36
  return Effect.sync(() => Option.fromNullable(ops.get(id)))
34
37
  }
35
38
  function finishOp(id: OperationId, exit: Exit<unknown, unknown>) {
36
- return findOp(id).flatMap((_) =>
39
+ return Effect.flatMap(findOp(id), (_) =>
37
40
  Effect.sync(() => {
38
- if (_.isNone()) {
41
+ if (Option.isNone(_)) {
39
42
  throw new Error("Not found")
40
43
  }
41
- ops.set(id, {
42
- ..._.value,
43
- updatedAt: new Date(),
44
- result: exit.isSuccess()
45
- ? new Success()
46
- : new Failure({
47
- message: exit.cause.isInterrupted()
48
- ? NonEmptyString2k("Interrupted")
49
- : exit.cause.isDie()
50
- ? NonEmptyString2k("Unknown error")
51
- : exit
52
- .cause
53
- .failureOption
54
- .flatMap((_) =>
55
- typeof _ === "object" && _ !== null && "message" in _ && NonEmptyString2k.is(_.message)
56
- ? Option.some(_.message)
57
- : Option.none()
58
- )
59
- .value ?? null
60
- })
61
- })
62
- })
63
- )
44
+ ops.set(
45
+ id,
46
+ copy(_.value, {
47
+ updatedAt: new Date(),
48
+ result: Exit.isSuccess(exit)
49
+ ? new Success()
50
+ : new Failure({
51
+ message: Cause.isInterrupted(exit.cause)
52
+ ? NonEmptyString2k("Interrupted")
53
+ : Cause.isDie(exit.cause)
54
+ ? NonEmptyString2k("Unknown error")
55
+ : Cause
56
+ .failureOption(exit.cause)
57
+ .pipe(
58
+ Option.flatMap((_) =>
59
+ typeof _ === "object" && _ !== null && "message" in _ && S.is(NonEmptyString2k)(_.message)
60
+ ? Option.some(_.message)
61
+ : Option.none()
62
+ ),
63
+ Option.getOrNull
64
+ )
65
+ })
66
+ })
67
+ )
68
+ }))
64
69
  }
65
70
  function update(id: OperationId, progress: OperationProgress) {
66
- return findOp(id).flatMap((_) =>
71
+ return Effect.flatMap(findOp(id), (_) =>
67
72
  Effect.sync(() => {
68
- if (_.isNone()) {
73
+ if (Option.isNone(_)) {
69
74
  throw new Error("Not found")
70
75
  }
71
- ops.set(id, { ..._.value, updatedAt: new Date(), progress })
72
- })
73
- )
76
+ ops.set(id, copy(_.value, { updatedAt: new Date(), progress }))
77
+ }))
74
78
  }
75
79
  return new Operations({
76
80
  cleanup,
77
- register: makeOp
78
- .tap((id) =>
79
- Effect
80
- .annotateLogscoped("operationId", id)
81
- .andThen(
82
- addOp(id).acquireRelease(
83
- (_, exit) => finishOp(id, exit)
84
- )
85
- )
86
- ),
81
+ register: Effect.tap(
82
+ makeOp,
83
+ (id) =>
84
+ Effect.andThen(
85
+ annotateLogscoped("operationId", id),
86
+ Effect.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit))
87
+ )
88
+ ),
87
89
 
88
90
  find: findOp,
89
91
  update
@@ -91,21 +93,26 @@ const make = Effect.sync(() => {
91
93
  })
92
94
 
93
95
  const cleanupLoop = Operations
94
- .flatMap((_) => _.cleanup)
95
- .exit
96
- .flatMap((_) => {
97
- if (_.isSuccess()) {
98
- return Effect.unit
99
- } else {
100
- return reportAppError(_.cause)
101
- }
102
- })
103
- .schedule(Schedule.fixed(Duration.minutes(1)))
104
- .forkScoped
96
+ .pipe(
97
+ Effect.flatMap((_) => _.cleanup),
98
+ Effect.exit,
99
+ Effect
100
+ .flatMap((_) => {
101
+ if (Exit.isSuccess(_)) {
102
+ return Effect.unit
103
+ } else {
104
+ return reportAppError(_.cause)
105
+ }
106
+ }),
107
+ Effect.schedule(Schedule.fixed(Duration.minutes(1))),
108
+ Effect.forkScoped
109
+ )
105
110
 
106
111
  /**
107
112
  * @tsplus static Operations.Ops Live
108
113
  */
109
114
  export const Live = cleanupLoop
110
- .toLayerScopedDiscard
111
- .provideMerge(make.toLayer(Operations))
115
+ .pipe(
116
+ Layer.scopedDiscard,
117
+ Layer.provideMerge(Layer.effect(Operations, make))
118
+ )
@@ -1,5 +1,9 @@
1
+ import type { Option } from "effect-app"
2
+ import { Effect } from "effect-app"
1
3
  import type { Operation, OperationId, OperationProgress } from "effect-app/Operations"
4
+ import { TagClassId } from "effect-app/service"
2
5
  import * as Scope from "effect/Scope"
6
+ import { forkDaemonReportRequestUnexpected } from "../../api/reportError.js"
3
7
 
4
8
  /**
5
9
  * @tsplus type Operations
@@ -21,41 +25,43 @@ export class Operations extends TagClassId("effect-app/Operations")<Operations,
21
25
  * @tsplus getter effect/io/Effect forkOperation
22
26
  */
23
27
  export function forkOperation<R, E, A>(self: Effect<A, E, R>) {
24
- return Operations.flatMap(
25
- (Operations) =>
26
- Scope
27
- .make()
28
- .flatMap((scope) =>
29
- Operations
30
- .register
31
- .extend(scope)
32
- .tap(() => self.use(scope).forkDaemonReportRequestUnexpected)
33
- )
34
- )
28
+ return Effect.flatMap(Operations, (Operations) =>
29
+ Effect.flatMap(
30
+ Scope.make(),
31
+ (scope) =>
32
+ Operations
33
+ .register
34
+ .pipe(
35
+ Scope.extend(scope),
36
+ Effect
37
+ .tap(() => forkDaemonReportRequestUnexpected(Scope.use(self, scope)))
38
+ )
39
+ ))
35
40
  }
36
41
 
37
42
  /**
38
43
  * @tsplus getter function forkOperation
39
44
  */
40
45
  export function forkOperationFunction<R, E, A, Inp>(fnc: (inp: Inp) => Effect<A, E, R>) {
41
- return (inp: Inp) => fnc(inp).forkOperation
46
+ return (inp: Inp) => fnc(inp).pipe(forkOperation)
42
47
  }
43
48
 
44
49
  /**
45
50
  * @tsplus static effect/io/Effect.Ops forkOperation
46
51
  */
47
52
  export function forkOperation2<R, E, A>(self: (opId: OperationId) => Effect<A, E, R>) {
48
- return Operations.flatMap(
49
- (Operations) =>
50
- Scope
51
- .make()
52
- .flatMap((scope) =>
53
- Operations
54
- .register
55
- .extend(scope)
56
- .tap((id) => self(id).use(scope).forkDaemonReportRequestUnexpected)
57
- )
58
- )
53
+ return Effect.flatMap(Operations, (Operations) =>
54
+ Effect.flatMap(
55
+ Scope.make(),
56
+ (scope) =>
57
+ Operations
58
+ .register
59
+ .pipe(
60
+ Scope.extend(scope),
61
+ Effect
62
+ .tap((id) => forkDaemonReportRequestUnexpected(Scope.use(self(id), scope)))
63
+ )
64
+ ))
59
65
  }
60
66
 
61
67
  /**
@@ -65,16 +71,17 @@ export function forkOperationWithEffect<R, R2, E, E2, A, A2>(
65
71
  self: (id: OperationId) => Effect<A, E, R>,
66
72
  fnc: (id: OperationId) => Effect<A2, E2, R2>
67
73
  ) {
68
- return Operations.flatMap(
69
- (Operations) =>
74
+ return Effect.flatMap(Operations, (Operations) =>
75
+ Effect.flatMap(
70
76
  Scope
71
- .make()
72
- .flatMap((scope) =>
73
- Operations
74
- .register
75
- .extend(scope)
76
- .tap((opId) => self(opId).use(scope).forkDaemonReportRequestUnexpected)
77
- .tap((opId) => fnc(opId).interruptible.forkScoped.extend(scope))
78
- )
79
- )
77
+ .make(),
78
+ (scope) =>
79
+ Operations
80
+ .register
81
+ .pipe(
82
+ Scope.extend(scope),
83
+ Effect.tap((opId) => forkDaemonReportRequestUnexpected(Scope.use(self(opId), scope))),
84
+ Effect.tap((opId) => Effect.interruptible(fnc(opId)).pipe(Effect.forkScoped, Scope.extend(scope)))
85
+ )
86
+ ))
80
87
  }
@@ -1,4 +1,5 @@
1
1
  import { reportError } from "@effect-app/infra/errorReporter"
2
+ import { Cause, Effect, Exit } from "effect-app"
2
3
 
3
4
  const reportQueueError_ = reportError("Queue")
4
5
 
@@ -15,7 +16,7 @@ export const reportQueueError = <E>(cause: Cause<E>, extras?: Record<string, unk
15
16
  * @tsplus getter effect/io/Effect forkDaemonReportQueue
16
17
  */
17
18
  export function forkDaemonReportQueue<R, E, A>(self: Effect<A, E, R>) {
18
- return self.tapErrorCause(reportNonInterruptedFailureCause({})).fork.daemonChildren
19
+ return self.pipe(Effect.tapErrorCause(reportNonInterruptedFailureCause({})), Effect.fork, Effect.daemonChildren)
19
20
  }
20
21
 
21
22
  export const reportFatalQueueError = reportError(
@@ -25,20 +26,23 @@ export const reportFatalQueueError = reportError(
25
26
  export function reportNonInterruptedFailure(context?: Record<string, unknown>) {
26
27
  const report = reportNonInterruptedFailureCause(context)
27
28
  return <R, E, A>(inp: Effect<A, E, R>): Effect<Exit<A, E>, never, R> =>
28
- inp
29
- .exit
30
- .flatMap((result) =>
31
- result.match({
32
- onFailure: (cause) => report(cause).map(() => result),
33
- onSuccess: () => Effect.sync(() => result)
34
- })
35
- )
29
+ inp.pipe(
30
+ Effect
31
+ .exit,
32
+ Effect
33
+ .flatMap((result) =>
34
+ Exit.match(result, {
35
+ onFailure: (cause) => Effect.map(report(cause), () => result),
36
+ onSuccess: () => Effect.sync(() => result)
37
+ })
38
+ )
39
+ )
36
40
  }
37
41
 
38
42
  export function reportNonInterruptedFailureCause(context?: Record<string, unknown>) {
39
43
  return <E>(cause: Cause<E>): Effect<void> => {
40
- if (cause.isInterrupted()) {
41
- return (cause as Cause<never>).failCause
44
+ if (Cause.isInterrupted(cause)) {
45
+ return Effect.failCause(cause as Cause<never>)
42
46
  }
43
47
  return reportQueueError(cause, context)
44
48
  }