@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,15 +1,19 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* eslint-disable @typescript-eslint/ban-types */
3
3
  import type { EnforceNonEmptyRecord } from "@effect-app/core/utils"
4
- import { pretty } from "@effect-app/core/utils"
4
+ import { copy, pretty } from "@effect-app/core/utils"
5
5
  import { snipString } from "@effect-app/infra/api/util"
6
6
  import { reportError } from "@effect-app/infra/errorReporter"
7
7
  import type { ValidationError } from "@effect-app/infra/errors"
8
8
  import type { RequestContextContainer } from "@effect-app/infra/services/RequestContextContainer"
9
9
  import type { ContextMapContainer } from "@effect-app/infra/services/Store/ContextMapContainer"
10
- import type { REST, StructFields } from "effect-app/schema"
11
- import type { HttpRequestError } from "../http.js"
12
- import { HttpBody, HttpRouteContext, HttpServerRequest, HttpServerResponse } from "../http.js"
10
+ import type { Layer } from "effect-app"
11
+ import { Effect, FiberRef, Option, S } from "effect-app"
12
+ import type { HttpServerError } from "effect-app/http"
13
+ import { HttpBody, HttpRouter, HttpServerRequest, HttpServerResponse } from "effect-app/http"
14
+ import { NonEmptyString255 } from "effect-app/schema"
15
+ import type { REST, Schema, StructFields } from "effect-app/schema"
16
+ import { updateRequestContext } from "../setupRequest.js"
13
17
  import { makeRequestParsers, parseRequestParams } from "./base.js"
14
18
  import type { RequestHandler, RequestHandlerBase } from "./base.js"
15
19
 
@@ -90,16 +94,16 @@ export function makeRequestHandler<
90
94
  Config
91
95
  >,
92
96
  errorHandler: <R>(
93
- req: HttpServerRequest,
94
- res: HttpServerResponse,
95
- r2: Effect<HttpServerResponse, ValidationError | ResE | MiddlewareE, R>
96
- ) => Effect<HttpServerResponse, never, RErr | R>,
97
+ req: HttpServerRequest.ServerRequest,
98
+ res: HttpServerResponse.ServerResponse,
99
+ r2: Effect<HttpServerResponse.ServerResponse, ValidationError | ResE | MiddlewareE, R>
100
+ ) => Effect<HttpServerResponse.ServerResponse, never, RErr | R>,
97
101
  middlewareLayer?: Layer<PR, MiddlewareE, R2>
98
102
  ): Effect<
99
- HttpServerResponse,
100
- HttpRequestError,
101
- | HttpRouteContext
102
- | HttpServerRequest
103
+ HttpServerResponse.ServerResponse,
104
+ HttpServerError.RequestError,
105
+ | HttpRouter.RouteContext
106
+ | HttpServerRequest.ServerRequest
103
107
  | RequestContextContainer
104
108
  | ContextMapContainer
105
109
  | RErr
@@ -108,16 +112,16 @@ export function makeRequestHandler<
108
112
  > {
109
113
  const { Request, Response, h: handle } = handler
110
114
 
111
- const response: REST.ReqRes<any, any, any> = Response ? Response : Void
115
+ const response: REST.ReqRes<any, any, any> = Response ? Response : S.void
112
116
  const resp = response as typeof response & { struct?: Schema<any, any, any> }
113
117
  // TODO: consider if the alternative of using the struct schema is perhaps just better.
114
118
  const encoder = "struct" in resp && resp.struct
115
- ? resp.struct.encode
119
+ ? S.encode(resp.struct)
116
120
  // ? (i: any) => {
117
- // if (i instanceof (response as any)) return response.encodeSync(i)
118
- // else return response.encodeSync(new (response as any)(i))
121
+ // if (i instanceof (response as any)) return S.encodeSync(response)(i)
122
+ // else return S.encodeSync(response)(new (response as any)(i))
119
123
  // }
120
- : resp.encode
124
+ : S.encode(resp)
121
125
  // const encodeResponse = adaptResponse
122
126
  // ? (req: ReqA) => Encoder.for(adaptResponse(req))
123
127
  // : () => encoder
@@ -125,12 +129,16 @@ export function makeRequestHandler<
125
129
  const requestParsers = makeRequestParsers(Request)
126
130
  const parseRequest = parseRequestParams(requestParsers)
127
131
 
128
- const getParams = Effect
129
- .all({
130
- rcx: HttpRouteContext,
131
- req: HttpServerRequest.flatMap((req) => req.json.map((body) => ({ body, headers: req.headers })))
132
- })
133
- .map((
132
+ const getParams = Effect.map(
133
+ Effect
134
+ .all({
135
+ rcx: HttpRouter.RouteContext,
136
+ req: Effect.flatMap(
137
+ HttpServerRequest.ServerRequest,
138
+ (req) => req.json.pipe(Effect.map((body) => ({ body, headers: req.headers })))
139
+ )
140
+ }),
141
+ (
134
142
  { rcx, req }
135
143
  ) => ({
136
144
  params: rcx.params,
@@ -138,140 +146,162 @@ export function makeRequestHandler<
138
146
  body: req.body,
139
147
  headers: req.headers,
140
148
  cookies: {} // req.cookies
141
- }))
149
+ })
150
+ )
142
151
 
143
152
  return Effect
144
153
  .gen(function*($) {
145
- const req = yield* $(HttpServerRequest)
154
+ const req = yield* $(HttpServerRequest.ServerRequest)
146
155
  const res = HttpServerResponse
147
156
  .empty()
148
- .pipe((_) => req.method === "GET" ? _.setHeader("Cache-Control", "no-store") : _)
157
+ .pipe((_) => req.method === "GET" ? HttpServerResponse.setHeader(_, "Cache-Control", "no-store") : _)
149
158
 
150
159
  const pars = yield* $(getParams)
151
160
 
152
- const settings = yield* $(RequestSettings.get)
161
+ const settings = yield* $(FiberRef.get(RequestSettings))
153
162
 
154
163
  const eff =
155
164
  // TODO: we don;t have access to user id here cause context is not yet created
156
165
  Effect
157
166
  .logInfo("Incoming request")
158
- .annotateLogs({
159
- method: req.method,
160
- path: req.originalUrl,
161
- ...(settings.verbose
162
- ? {
163
- reqPath: pars.params.$$.pretty,
164
- reqQuery: pars.query.$$.pretty,
165
- reqBody: pretty(pars.body),
166
- reqCookies: pretty(pars.cookies),
167
- reqHeaders: pretty(pars.headers)
168
- }
169
- : undefined)
170
- })
171
- .andThen(
172
- Effect.suspend(() => {
173
- const handleRequest = parseRequest(pars)
174
- .map(({ body, path, query }) => {
175
- const hn = {
176
- ...body.value as any,
177
- ...query.value as any,
178
- ...path.value as any
179
- } as unknown as ReqA
180
- return hn
181
- })
182
- .flatMap((parsedReq) =>
183
- handle(parsedReq as any)
184
- .provideService(handler.Request.Tag, parsedReq as any)
185
- .flatMap(encoder)
186
- .map((r) =>
187
- res
188
- .setBody(HttpBody.unsafeJson(r))
189
- .setStatus(r === undefined ? 204 : 200)
190
- )
191
- ) as Effect<
192
- HttpServerResponse,
193
- ValidationError | ResE,
194
- Exclude<R, EnforceNonEmptyRecord<M>>
195
- >
167
+ .pipe(
168
+ Effect.annotateLogs({
169
+ method: req.method,
170
+ path: req.originalUrl,
171
+ ...(settings.verbose
172
+ ? {
173
+ reqPath: pretty(pars.params),
174
+ reqQuery: pretty(pars.query),
175
+ reqBody: pretty(pars.body),
176
+ reqCookies: pretty(pars.cookies),
177
+ reqHeaders: pretty(pars.headers)
178
+ }
179
+ : undefined)
180
+ }),
181
+ Effect
182
+ .andThen(
183
+ Effect.suspend(() => {
184
+ const handleRequest = parseRequest(pars)
185
+ .pipe(
186
+ Effect.map(({ body, path, query }) => {
187
+ const hn = {
188
+ ...body.pipe(Option.getOrUndefined) ?? {},
189
+ ...query.pipe(Option.getOrUndefined) ?? {},
190
+ ...path.pipe(Option.getOrUndefined) ?? {}
191
+ } as unknown as ReqA
192
+ return hn
193
+ }),
194
+ Effect
195
+ .flatMap((parsedReq) =>
196
+ handle(parsedReq)
197
+ .pipe(
198
+ Effect.provideService(handler.Request.Tag, parsedReq as any),
199
+ Effect
200
+ .flatMap(encoder),
201
+ Effect
202
+ .map((r) =>
203
+ res.pipe(
204
+ HttpServerResponse.setBody(HttpBody.unsafeJson(r)),
205
+ HttpServerResponse.setStatus(r === undefined ? 204 : 200)
206
+ )
207
+ )
208
+ )
209
+ )
210
+ ) as Effect<
211
+ HttpServerResponse.ServerResponse,
212
+ ValidationError | ResE,
213
+ Exclude<R, EnforceNonEmptyRecord<M>>
214
+ >
196
215
 
197
- // Commands should not be interruptable.
198
- const r = req.method !== "GET" ? handleRequest.uninterruptible : handleRequest // .instrument("Performance.RequestResponse")
199
- const r2 = middlewareLayer
200
- ? r.provide(middlewareLayer)
201
- // PR is not relevant here
202
- : (r as Effect<
203
- HttpServerResponse,
204
- ResE | MiddlewareE | ValidationError,
205
- Exclude<Exclude<R, EnforceNonEmptyRecord<M>>, PR>
206
- >)
207
- return errorHandler(
208
- req,
209
- res,
210
- r2
211
- )
212
- })
213
- )
214
- .catchAllCause((cause) =>
216
+ // Commands should not be interruptable.
217
+ const r = req.method !== "GET" ? Effect.uninterruptible(handleRequest) : handleRequest // .instrument("Performance.RequestResponse")
218
+ const r2 = middlewareLayer
219
+ ? Effect.provide(r, middlewareLayer)
220
+ // PR is not relevant here
221
+ : (r as Effect<
222
+ HttpServerResponse.ServerResponse,
223
+ ResE | MiddlewareE | ValidationError,
224
+ Exclude<Exclude<R, EnforceNonEmptyRecord<M>>, PR>
225
+ >)
226
+ return errorHandler(
227
+ req,
228
+ res,
229
+ r2
230
+ )
231
+ })
232
+ ),
215
233
  Effect
216
- .sync(() => res.setStatus(500))
217
- .tap((res) =>
234
+ .catchAllCause((cause) =>
218
235
  Effect
219
- .all([
220
- reportError("request")(cause, {
221
- path: req.originalUrl,
222
- method: req.method
223
- }),
224
- Effect.suspend(() => {
225
- const headers = res.headers
226
- return Effect
227
- .logError("Finished request", cause)
228
- .annotateLogs({
229
- method: req.method,
230
- path: req.originalUrl,
231
- statusCode: res.status.toString(),
236
+ .sync(() => HttpServerResponse.setStatus(res, 500))
237
+ .pipe(Effect
238
+ .tap((res) =>
239
+ Effect
240
+ .all([
241
+ reportError("request")(cause, {
242
+ path: req.originalUrl,
243
+ method: req.method
244
+ }),
245
+ Effect.suspend(() => {
246
+ const headers = res.headers
247
+ return Effect
248
+ .logError("Finished request", cause)
249
+ .pipe(Effect.annotateLogs({
250
+ method: req.method,
251
+ path: req.originalUrl,
252
+ statusCode: res.status.toString(),
232
253
 
233
- reqPath: pars.params.$$.pretty,
234
- reqQuery: pars.query.$$.pretty,
235
- reqBody: pretty(pars.body),
236
- reqCookies: pretty(pars.cookies),
237
- reqHeaders: pretty(pars.headers),
254
+ reqPath: pretty(pars.params),
255
+ reqQuery: pretty(pars.query),
256
+ reqBody: pretty(pars.body),
257
+ reqCookies: pretty(pars.cookies),
258
+ reqHeaders: pretty(pars.headers),
238
259
 
239
- resHeaders: Object
240
- .entries(headers)
241
- .reduce((prev, [key, value]) => {
242
- prev[key] = value && typeof value === "string" ? snipString(value) : value
243
- return prev
244
- }, {} as Record<string, any>)
245
- .$$
246
- .pretty
247
- })
248
- })
249
- ], { concurrency: "inherit" })
250
- )
251
- .tapErrorCause((cause) => Effect.sync(() => console.error("Error occurred while reporting error", cause)))
252
- )
253
- .tap((res) =>
260
+ resHeaders: pretty(
261
+ Object
262
+ .entries(headers)
263
+ .reduce((prev, [key, value]) => {
264
+ prev[key] = value && typeof value === "string" ? snipString(value) : value
265
+ return prev
266
+ }, {} as Record<string, any>)
267
+ )
268
+ }))
269
+ })
270
+ ], { concurrency: "inherit" })
271
+ ))
272
+ .pipe(
273
+ Effect.tapErrorCause((cause) =>
274
+ Effect.sync(() => console.error("Error occurred while reporting error", cause))
275
+ )
276
+ )
277
+ ),
254
278
  Effect
255
- .logInfo("Finished request")
256
- .annotateLogs({
257
- method: req.method,
258
- path: req.originalUrl,
259
- statusCode: res.status.toString(),
260
- ...(settings.verbose
261
- ? {
262
- resHeaders: pretty(res.headers)
263
- }
264
- : undefined)
265
- })
279
+ .tap((res) =>
280
+ Effect
281
+ .logInfo("Finished request")
282
+ .pipe(Effect.annotateLogs({
283
+ method: req.method,
284
+ path: req.originalUrl,
285
+ statusCode: res.status.toString(),
286
+ ...(settings.verbose
287
+ ? {
288
+ resHeaders: pretty(res.headers)
289
+ }
290
+ : undefined)
291
+ }))
292
+ )
266
293
  )
267
294
 
268
295
  return yield* $(eff)
269
296
  })
270
- .updateRequestContext((_) =>
271
- _.$$.copy({
272
- name: NonEmptyString255(
273
- handler.name
274
- )
275
- })
297
+ .pipe((_) =>
298
+ updateRequestContext(
299
+ _,
300
+ copy((_) => ({
301
+ name: NonEmptyString255(
302
+ handler.name
303
+ )
304
+ }))
305
+ )
276
306
  )
277
307
  }
@@ -1,16 +1,18 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* eslint-disable @typescript-eslint/ban-types */
3
- import { type RouteDescriptorAny } from "@effect-app/infra/api/express/schema/routing"
4
3
  import type { ValidationError } from "@effect-app/infra/errors"
5
4
  import type { StructFields } from "effect-app/schema"
5
+ import { type RouteDescriptorAny } from "./schema/routing.js"
6
6
  import type {} from "effect-app/utils"
7
- import { HttpRouter } from "../http.js"
8
- import type { HttpRouteContext, HttpServerRequest, HttpServerResponse } from "../http.js"
7
+ import type { Layer, Ref, Scope } from "effect-app"
8
+ import { Context, Effect } from "effect-app"
9
+ import { HttpRouter } from "effect-app/http"
10
+ import type { HttpServerRequest, HttpServerResponse } from "effect-app/http"
9
11
  import type { RequestHandler } from "./base.js"
10
12
  import { makeRequestHandler } from "./makeRequestHandler.js"
11
13
  import type { Middleware } from "./makeRequestHandler.js"
12
14
 
13
- export const RouteDescriptors = GenericTag<Ref<RouteDescriptorAny[]>>("@services/RouteDescriptors")
15
+ export const RouteDescriptors = Context.GenericTag<Ref<RouteDescriptorAny[]>>("@services/RouteDescriptors")
14
16
 
15
17
  export function match<
16
18
  R,
@@ -49,10 +51,14 @@ export function match<
49
51
  Config
50
52
  >,
51
53
  errorHandler: <R>(
52
- req: HttpServerRequest,
53
- res: HttpServerResponse,
54
- r2: Effect<HttpServerResponse, ValidationError | MiddlewareE | ResE, R>
55
- ) => Effect<HttpServerResponse, never, Exclude<RErr | R, HttpServerRequest | HttpRouteContext | Scope>>,
54
+ req: HttpServerRequest.ServerRequest,
55
+ res: HttpServerResponse.ServerResponse,
56
+ r2: Effect<HttpServerResponse.ServerResponse, ValidationError | MiddlewareE | ResE, R>
57
+ ) => Effect<
58
+ HttpServerResponse.ServerResponse,
59
+ never,
60
+ Exclude<RErr | R, HttpServerRequest.ServerRequest | HttpRouter.RouteContext | Scope>
61
+ >,
56
62
  middleware?: Middleware<
57
63
  R,
58
64
  M,
@@ -2,24 +2,25 @@
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  /* eslint-disable @typescript-eslint/ban-types */
4
4
  import type { ParseIssue } from "@effect/schema/ParseResult"
5
+ import type { Effect } from "effect-app"
5
6
  import * as S from "effect-app/schema"
6
7
  import { jwtDecode, type JwtDecodeOptions } from "jwt-decode"
7
8
 
8
9
  export const parseJwt = <R, I, A>(
9
- schema: Schema<A, I, R>,
10
+ schema: S.Schema<A, I, R>,
10
11
  options?: JwtDecodeOptions | undefined
11
- ): Schema<A, string, R> =>
12
+ ): S.Schema<A, string, R> =>
12
13
  S
13
14
  .transformOrFail(
14
15
  S.string,
15
16
  S.unknown,
16
17
  (s, __, ast) =>
17
- ParseResult.try({
18
+ S.ParseResult.try({
18
19
  try: () => jwtDecode(s, options),
19
- catch: (e: any) => ParseResult.type(ast, s, e?.message)
20
+ catch: (e: any) => S.ParseResult.type(ast, s, e?.message)
20
21
  }),
21
22
  (_): Effect<string, ParseIssue> => {
22
23
  throw new Error("not implemented")
23
24
  }
24
25
  )
25
- .compose(schema, { strict: false })
26
+ .pipe(S.compose(schema, { strict: false }))
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ import type { Context } from "effect-app"
3
4
  import type { REST } from "effect-app/schema"
4
5
 
5
6
  export type Request<
@@ -19,7 +20,7 @@ export type Request<
19
20
  Body?: REST.ReqRes<BodyA, unknown, any>
20
21
  Query?: REST.ReqRes<QueryA, Record<string, string>, any>
21
22
  Headers?: REST.ReqRes<HeaderA, Record<string, string>, any>
22
- Tag: Tag<M, M>
23
+ Tag: Context.Tag<M, M>
23
24
  }
24
25
 
25
26
  export interface RouteRequestHandler<
@@ -1,6 +1,8 @@
1
+ import { NonEmptyString255 } from "@effect-app/schema"
2
+ import { Effect, Layer, pipe } from "effect-app"
1
3
  import { RequestId } from "effect-app/ids"
2
4
  import { RequestContext } from "../RequestContext.js"
3
- import { RequestContextContainer } from "../services/RequestContextContainer.js"
5
+ import { RequestContextContainer, spanAttributes } from "../services/RequestContextContainer.js"
4
6
  import { ContextMapContainer } from "../services/Store/ContextMapContainer.js"
5
7
 
6
8
  function makeInternalRequestContext(name: string) {
@@ -16,35 +18,39 @@ function makeInternalRequestContext(name: string) {
16
18
  }
17
19
 
18
20
  const withRequestSpan = <R, E, A>(f: Effect<A, E, R>) =>
19
- RequestContextContainer
20
- .get
21
- .andThen((ctx) =>
22
- f
23
- .withSpan("request", { attributes: ctx.spanAttributes })
21
+ Effect.andThen(
22
+ RequestContextContainer
23
+ .get,
24
+ (ctx) =>
25
+ f.pipe(
26
+ Effect.withSpan("request", { attributes: spanAttributes(ctx) }),
24
27
  // request context info is picked up directly in the logger for annotations.
25
- .withLogSpan("request")
26
- )
28
+ Effect.withLogSpan("request")
29
+ )
30
+ )
27
31
 
28
- const setupContextMap = ContextMapContainer.andThen((_) => _.start).toLayerDiscard
32
+ const setupContextMap = Effect.andThen(ContextMapContainer, (_) => _.start).pipe(Layer.effectDiscard)
29
33
 
30
34
  // const RequestContextLiveFromRequestContext = (requestContext: RequestContext) =>
31
35
  // RequestContext.Tag.makeLayer(requestContext)
32
36
  // memoization problem
33
37
  // const RequestContextLive = RequestContextContainer.get.toLayer(RequestContext.Tag)
34
38
  const RequestContextStartLiveFromRequestContext = (requestContext: RequestContext) =>
35
- setupContextMap
39
+ Layer.provideMerge(
40
+ setupContextMap,
36
41
  // .provideMerge(RequestContextLiveFromRequestContext(requestContext))
37
- .provideMerge(
38
- RequestContextContainer
39
- .andThen((_) => _.start(requestContext))
40
- .toLayerDiscard
41
- )
42
+ Effect
43
+ .andThen(RequestContextContainer, (_) => _.start(requestContext))
44
+ .pipe(Layer.effectDiscard)
45
+ )
42
46
 
43
47
  const RequestContextStartLive = (requestContext: RequestContext | string) =>
44
48
  typeof requestContext === "string"
45
- ? makeInternalRequestContext(requestContext)
46
- .andThen(RequestContextStartLiveFromRequestContext)
47
- .unwrapLayer
49
+ ? pipe(
50
+ makeInternalRequestContext(requestContext),
51
+ Effect.andThen(RequestContextStartLiveFromRequestContext),
52
+ Layer.unwrapEffect
53
+ )
48
54
  : RequestContextStartLiveFromRequestContext(requestContext)
49
55
 
50
56
  /**
@@ -52,18 +58,18 @@ const RequestContextStartLive = (requestContext: RequestContext | string) =>
52
58
  */
53
59
  export function setupRequestContext<R, E, A>(self: Effect<A, E, R>, requestContext: RequestContext | string) {
54
60
  return self
55
- .pipe(withRequestSpan)
56
- .provide(RequestContextStartLive(requestContext))
61
+ .pipe(
62
+ withRequestSpan,
63
+ Effect.provide(RequestContextStartLive(requestContext))
64
+ )
57
65
  }
58
66
 
59
67
  const UpdateRequestContextLive = (f: (rc: RequestContext) => RequestContext) =>
60
- RequestContextContainer.andThen((rcc) => rcc.update(f)).toLayerDiscard
68
+ Effect.andThen(RequestContextContainer, (rcc) => rcc.update(f)).pipe(Layer.effectDiscard)
61
69
 
62
70
  /**
63
71
  * @tsplus fluent effect/io/Effect updateRequestContext
64
72
  */
65
73
  export function updateRequestContext<R, E, A>(self: Effect<A, E, R>, f: (rc: RequestContext) => RequestContext) {
66
- return self
67
- // .provideServiceEffect(RequestContext.Tag, RequestContextContainer.get)
68
- .provide(UpdateRequestContextLive(f))
74
+ return Effect.provide(self, UpdateRequestContextLive(f))
69
75
  }
@@ -1,5 +1,6 @@
1
1
  import { dropUndefined } from "@effect-app/core/utils"
2
2
  import * as Sentry from "@sentry/node"
3
+ import { Cause, Effect, Option } from "effect-app"
3
4
  import { CauseException } from "./errors.js"
4
5
  import { RequestContextContainer } from "./services/RequestContextContainer.js"
5
6
 
@@ -8,8 +9,8 @@ export function reportError(
8
9
  ) {
9
10
  return (cause: Cause<unknown>, extras?: Record<string, unknown>) =>
10
11
  Effect.gen(function*($) {
11
- if (cause.isInterrupted()) {
12
- yield* $(Effect.logDebug("Interrupted").annotateLogs("extras", JSON.stringify(extras ?? {})))
12
+ if (Cause.isInterrupted(cause)) {
13
+ yield* $(Effect.logDebug("Interrupted").pipe(Effect.annotateLogs("extras", JSON.stringify(extras ?? {}))))
13
14
  return
14
15
  }
15
16
  yield* $(reportSentry(cause, name, extras))
@@ -17,11 +18,11 @@ export function reportError(
17
18
  yield* $(
18
19
  Effect
19
20
  .logError("Reporting error", cause)
20
- .annotateLogs(dropUndefined({
21
+ .pipe(Effect.annotateLogs(dropUndefined({
21
22
  extras,
22
23
  __cause__: error.toJSON(),
23
24
  __error_name__: name
24
- }))
25
+ })))
25
26
  )
26
27
  })
27
28
  }
@@ -31,15 +32,15 @@ function reportSentry(
31
32
  name: string,
32
33
  extras: Record<string, unknown> | undefined
33
34
  ) {
34
- return RequestContextContainer.getOption.map((ctx) => {
35
- const context = ctx.value!
35
+ return RequestContextContainer.getOption.pipe(Effect.map((ctx) => {
36
+ const context = Option.getOrUndefined(ctx)
36
37
  const scope = new Sentry.Scope()
37
38
  if (context) scope.setContext("context", context as unknown as Record<string, unknown>)
38
39
  if (extras) scope.setContext("extras", extras)
39
40
  const error = new CauseException(cause, name)
40
41
  scope.setContext("error", error.toJSON() as any)
41
42
  Sentry.captureException(error, scope)
42
- })
43
+ }))
43
44
  }
44
45
 
45
46
  export function logError<E>(
@@ -47,19 +48,19 @@ export function logError<E>(
47
48
  ) {
48
49
  return (cause: Cause<E>, extras?: Record<string, unknown>) =>
49
50
  Effect.gen(function*($) {
50
- if (cause.isInterrupted()) {
51
- yield* $(Effect.logDebug("Interrupted").annotateLogs(dropUndefined({ extras })))
51
+ if (Cause.isInterrupted(cause)) {
52
+ yield* $(Effect.logDebug("Interrupted").pipe(Effect.annotateLogs(dropUndefined({ extras }))))
52
53
  return
53
54
  }
54
55
  const error = new CauseException(cause, name)
55
56
  yield* $(
56
57
  Effect
57
58
  .logWarning("Logging error", cause)
58
- .annotateLogs(dropUndefined({
59
+ .pipe(Effect.annotateLogs(dropUndefined({
59
60
  extras,
60
61
  __cause__: error.toJSON(),
61
62
  __error_name__: name
62
- }))
63
+ })))
63
64
  )
64
65
  })
65
66
  }
package/src/errors.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
+ import { Cause } from "effect-app"
2
3
  import { makeFiberFailure } from "effect/Runtime"
3
4
 
4
5
  export * from "effect-app/client/errors"
@@ -1,7 +1,7 @@
1
1
  /** Re-export public API */
2
2
 
3
- export { PathString } from "./common.js"
4
- export {
3
+ export type { PathString } from "./common.js"
4
+ export type {
5
5
  ArrayPath,
6
6
  FieldArrayPath,
7
7
  FieldArrayPathValue,