@effect-app/infra 0.198.1 → 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 +26 -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 -2
  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 -4
  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 -3
  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,18 +1,21 @@
1
1
  import { MemQueue } from "@effect-app/infra-adapters/memQueue"
2
2
  import { RequestContext } from "@effect-app/infra/RequestContext"
3
+ import { NonEmptyString255, struct } from "@effect-app/schema"
3
4
  import { Tracer } from "effect"
4
- import type { S } from "effect-app"
5
+ import { Effect, Fiber, flow, S } from "effect-app"
5
6
  import { RequestId } from "effect-app/ids"
7
+ import { pretty } from "effect-app/utils"
8
+ import { setupRequestContext } from "../../api/setupRequest.js"
6
9
  import { RequestContextContainer } from "../RequestContextContainer.js"
7
- import { reportNonInterruptedFailure } from "./errors.js"
10
+ import { forkDaemonReportQueue, reportNonInterruptedFailure } from "./errors.js"
8
11
  import { type QueueBase, QueueMeta } from "./service.js"
9
12
 
10
13
  /**
11
14
  * @tsplus static QueueMaker.Ops makeMem
12
15
  */
13
16
  export function makeMemQueue<
14
- Evt extends { id: StringId; _tag: string },
15
- DrainEvt extends { id: StringId; _tag: string },
17
+ Evt extends { id: S.StringId; _tag: string },
18
+ DrainEvt extends { id: S.StringId; _tag: string },
16
19
  EvtE,
17
20
  DrainEvtE
18
21
  >(
@@ -29,27 +32,28 @@ export function makeMemQueue<
29
32
 
30
33
  const wireSchema = struct({ body: schema, meta: QueueMeta })
31
34
  const drainW = struct({ body: drainSchema, meta: QueueMeta })
32
- const parseDrain = flow(drainW.decodeUnknown, (_) => _.orDie)
35
+ const parseDrain = flow(S.decodeUnknown(drainW), Effect.orDie)
33
36
 
34
37
  return {
35
38
  publish: (...messages) =>
36
39
  Effect.gen(function*($) {
37
40
  const requestContext = yield* $(rcc.requestContext)
38
- const currentSpan = yield* $(Effect.currentSpan.orDie)
41
+ const currentSpan = yield* $(Effect.currentSpan.pipe(Effect.orDie))
39
42
  const span = Tracer.externalSpan(currentSpan)
40
43
  return yield* $(
41
- messages
42
- .forEachEffect((m) =>
44
+ Effect
45
+ .forEach(messages, (m) =>
43
46
  // we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
44
- wireSchema
45
- .encode({ body: m, meta: { requestContext, span } })
46
- .orDie
47
- .andThen(JSON.stringify)
47
+ S.encode(wireSchema)({ body: m, meta: { requestContext, span } }).pipe(
48
+ Effect.orDie,
49
+ Effect
50
+ .andThen(JSON.stringify),
48
51
  // .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
49
- .flatMap((_) => q.offer(_))
50
- .asUnit
51
- )
52
- .forkDaemonReportQueue
52
+ Effect.flatMap((_) => q.offer(_)),
53
+ Effect
54
+ .asUnit
55
+ ))
56
+ .pipe(forkDaemonReportQueue)
53
57
  )
54
58
  }),
55
59
  makeDrain: <DrainE, DrainR>(
@@ -61,35 +65,50 @@ export function makeMemQueue<
61
65
  // we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
62
66
  Effect
63
67
  .sync(() => JSON.parse(msg))
64
- .flatMap(parseDrain)
65
- .orDie
66
- .flatMap(({ body, meta }) =>
68
+ .pipe(
69
+ Effect.flatMap(parseDrain),
67
70
  Effect
68
- .logDebug(`$$ [${queueDrainName}] Processing incoming message`)
69
- .pipe(Effect.annotateLogs({ body: body.$$.pretty, meta: meta.$$.pretty }))
70
- .zipRight(handleEvent(body))
71
- .pipe(silenceAndReportError)
72
- .setupRequestContext(RequestContext.inherit(meta.requestContext, {
73
- id: RequestId(body.id),
74
- locale: "en" as const,
75
- name: NonEmptyString255(body._tag)
76
- }))
77
- .withSpan("queue.drain", {
78
- attributes: { "queue.name": queueDrainName },
79
- parent: meta.span
80
- ? Tracer.externalSpan(meta.span)
81
- : undefined
82
- })
71
+ .orDie,
72
+ Effect
73
+ .flatMap(({ body, meta }) =>
74
+ Effect
75
+ .logDebug(`$$ [${queueDrainName}] Processing incoming message`)
76
+ .pipe(
77
+ Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }),
78
+ Effect.zipRight(handleEvent(body)),
79
+ silenceAndReportError,
80
+ (_) =>
81
+ setupRequestContext(
82
+ _,
83
+ RequestContext.inherit(meta.requestContext, {
84
+ id: RequestId(body.id),
85
+ locale: "en" as const,
86
+ name: NonEmptyString255(body._tag)
87
+ })
88
+ ),
89
+ Effect
90
+ .withSpan("queue.drain", {
91
+ attributes: { "queue.name": queueDrainName },
92
+ parent: meta.span
93
+ ? Tracer.externalSpan(meta.span)
94
+ : undefined
95
+ })
96
+ )
97
+ )
83
98
  )
84
99
  return yield* $(
85
100
  qDrain
86
101
  .take
87
- .flatMap((x) => processMessage(x).uninterruptible.fork.flatMap((_) => _.join))
88
- // TODO: normally a failed item would be returned to the queue and retried up to X times.
89
- // .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
90
- .pipe(silenceAndReportError)
91
- .forever
92
- .forkScoped
102
+ .pipe(
103
+ Effect.flatMap((x) =>
104
+ processMessage(x).pipe(Effect.uninterruptible, Effect.fork, Effect.flatMap(Fiber.join))
105
+ ),
106
+ // TODO: normally a failed item would be returned to the queue and retried up to X times.
107
+ // .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
108
+ silenceAndReportError,
109
+ Effect.forever,
110
+ Effect.forkScoped
111
+ )
93
112
  )
94
113
  })
95
114
  } satisfies QueueBase<Evt, DrainEvt>
@@ -10,11 +10,14 @@ import type {} from "@azure/service-bus"
10
10
  import { captureException } from "@effect-app/infra/errorReporter"
11
11
  import { RequestContext } from "@effect-app/infra/RequestContext"
12
12
  import { Tracer } from "effect"
13
- import type { S } from "effect-app"
13
+ import { Effect, flow, Layer, S } from "effect-app"
14
14
  import { RequestId } from "effect-app/ids"
15
- import { struct } from "effect-app/schema"
15
+ import type { StringId } from "effect-app/schema"
16
+ import { NonEmptyString255, struct } from "effect-app/schema"
17
+ import { pretty } from "effect-app/utils"
18
+ import { setupRequestContext } from "../../api/setupRequest.js"
16
19
  import { RequestContextContainer } from "../RequestContextContainer.js"
17
- import { reportNonInterruptedFailure, reportNonInterruptedFailureCause } from "./errors.js"
20
+ import { forkDaemonReportQueue, reportNonInterruptedFailure, reportNonInterruptedFailureCause } from "./errors.js"
18
21
  import { type QueueBase, QueueMeta } from "./service.js"
19
22
 
20
23
  /**
@@ -36,12 +39,12 @@ export function makeServiceBusQueue<
36
39
  meta: QueueMeta
37
40
  })
38
41
  const drainW = struct({ body: drainSchema, meta: QueueMeta })
39
- const parseDrain = flow(drainW.decodeUnknown, (_) => _.orDie)
42
+ const parseDrain = flow(S.decodeUnknown(drainW), Effect.orDie)
40
43
 
41
44
  return Effect.gen(function*($) {
42
45
  const s = yield* $(Sender)
43
46
  const receiver = yield* $(Receiver)
44
- const receiverLayer = Receiver.makeLayer(receiver)
47
+ const receiverLayer = Layer.succeed(Receiver, receiver)
45
48
  const silenceAndReportError = reportNonInterruptedFailure({ name: "ServiceBusQueue.drain." + queueDrainName })
46
49
  const reportError = reportNonInterruptedFailureCause({ name: "ServiceBusQueue.drain." + queueDrainName })
47
50
  const rcc = yield* $(RequestContextContainer)
@@ -55,45 +58,63 @@ export function makeServiceBusQueue<
55
58
  function processMessage(messageBody: any) {
56
59
  return Effect
57
60
  .sync(() => JSON.parse(messageBody))
58
- .flatMap((x) => parseDrain(x))
59
- .orDie
60
- .flatMap(({ body, meta }) =>
61
+ .pipe(
62
+ Effect.flatMap((x) => parseDrain(x)),
63
+ Effect.orDie,
61
64
  Effect
62
- .logDebug(`$$ [${queueDrainName}] Processing incoming message`)
63
- .pipe(Effect.annotateLogs({ body: body.$$.pretty, meta: meta.$$.pretty }))
64
- .zipRight(handleEvent(body))
65
- .orDie
66
- // we silenceAndReportError here, so that the error is reported, and moves into the Exit.
67
- .pipe(silenceAndReportError)
68
- .setupRequestContext(RequestContext.inherit(meta.requestContext, {
69
- id: RequestId(body.id),
70
- locale: "en" as const,
71
- name: NonEmptyString255(body._tag)
72
- }))
73
- .withSpan("queue.drain", {
74
- attributes: { "queue.name": queueDrainName },
75
- parent: meta.span
76
- ? Tracer.externalSpan(meta.span)
77
- : undefined
78
- })
65
+ .flatMap(({ body, meta }) =>
66
+ Effect
67
+ .logDebug(`$$ [${queueDrainName}] Processing incoming message`)
68
+ .pipe(
69
+ Effect.annotateLogs({
70
+ body: pretty(body),
71
+ meta: pretty(meta)
72
+ }),
73
+ Effect
74
+ .zipRight(handleEvent(body)),
75
+ Effect
76
+ .orDie
77
+ )
78
+ // we silenceAndReportError here, so that the error is reported, and moves into the Exit.
79
+ .pipe(
80
+ silenceAndReportError,
81
+ (_) =>
82
+ setupRequestContext(
83
+ _,
84
+ RequestContext.inherit(meta.requestContext, {
85
+ id: RequestId(body.id),
86
+ locale: "en" as const,
87
+ name: NonEmptyString255(body._tag)
88
+ })
89
+ ),
90
+ Effect
91
+ .withSpan("queue.drain", {
92
+ attributes: { "queue.name": queueDrainName },
93
+ parent: meta.span
94
+ ? Tracer.externalSpan(meta.span)
95
+ : undefined
96
+ })
97
+ )
98
+ ),
99
+ Effect
100
+ // we reportError here, so that we report the error only, and keep flowing
101
+ .tapErrorCause(reportError)
79
102
  )
80
- // we reportError here, so that we report the error only, and keep flowing
81
- .tapErrorCause(reportError)
82
103
  }
83
104
 
84
105
  return yield* $(
85
106
  subscribe({
86
- processMessage: (x) => processMessage(x.body).uninterruptible,
107
+ processMessage: (x) => processMessage(x.body).pipe(Effect.uninterruptible),
87
108
  processError: (err) => Effect.sync(() => captureException(err.error))
88
109
  })
89
- .provide(receiverLayer)
110
+ .pipe(Effect.provide(receiverLayer))
90
111
  )
91
112
  }),
92
113
 
93
114
  publish: (...messages) =>
94
115
  Effect.gen(function*($) {
95
116
  const requestContext = yield* $(rcc.requestContext)
96
- const currentSpan = yield* $(Effect.currentSpan.orDie)
117
+ const currentSpan = yield* $(Effect.currentSpan.pipe(Effect.orDie))
97
118
  const span = Tracer.externalSpan(currentSpan)
98
119
  return yield* $(
99
120
  Effect
@@ -101,14 +122,14 @@ export function makeServiceBusQueue<
101
122
  s.sendMessages(
102
123
  messages.map((m) => ({
103
124
  body: JSON.stringify(
104
- wireSchema.encodeSync({ body: m, meta: { requestContext, span } })
125
+ S.encodeSync(wireSchema)({ body: m, meta: { requestContext, span } })
105
126
  ),
106
127
  messageId: m.id, /* correllationid: requestId */
107
128
  contentType: "application/json"
108
129
  }))
109
130
  )
110
131
  )
111
- .forkDaemonReportQueue
132
+ .pipe(forkDaemonReportQueue)
112
133
  )
113
134
  })
114
135
  } satisfies QueueBase<Evt, DrainEvt>
@@ -119,5 +140,5 @@ export function makeServiceBusQueue<
119
140
  * @tsplus static QueueMaker.Ops makeServiceBusLayers
120
141
  */
121
142
  export function makeServiceBusLayers(url: string, queueName: string, queueDrainName: string) {
122
- return Layer.merge(LiveReceiver(queueDrainName), LiveSender(queueName)).provide(LiveServiceBusClient(url))
143
+ return Layer.merge(LiveReceiver(queueDrainName), LiveSender(queueName)).pipe(Layer.provide(LiveServiceBusClient(url)))
123
144
  }
@@ -1,3 +1,5 @@
1
+ import { struct } from "@effect-app/schema"
2
+ import { type Effect, type NonEmptyReadonlyArray, S, type Scope } from "effect-app"
1
3
  import { RequestContext } from "../../RequestContext.js"
2
4
  import type { RequestContextContainer } from "../RequestContextContainer.js"
3
5
  import type { ContextMapContainer } from "../Store/ContextMapContainer.js"
@@ -19,10 +21,9 @@ export const QueueMaker: QueueMakerOps = {}
19
21
 
20
22
  export const QueueMeta = struct({
21
23
  requestContext: RequestContext,
22
- span: struct({
23
- spanId: string,
24
- traceId: string,
25
- sampled: boolean.optional()
26
- })
27
- .optional()
24
+ span: S.optional(struct({
25
+ spanId: S.string,
26
+ traceId: S.string,
27
+ sampled: S.optional(S.boolean)
28
+ }))
28
29
  })
@@ -1,4 +1,8 @@
1
- import type { FixEnv, PureLogT } from "effect-app/Pure"
1
+ import { toNonEmptyArray } from "@effect-app/core/Array"
2
+ import type { NonEmptyReadonlyArray } from "effect-app"
3
+ import { Effect } from "effect-app"
4
+ import { get, logMany, set } from "effect-app/Pure"
5
+ import type { FixEnv, Pure, PureEnvEnv, PureLogT } from "effect-app/Pure"
2
6
 
3
7
  export interface PureDSL<S, S2, W> {
4
8
  get: Pure<never, S, S, never, never, S>
@@ -7,9 +11,9 @@ export interface PureDSL<S, S2, W> {
7
11
  }
8
12
 
9
13
  export const AnyPureDSL: PureDSL<any, any, any> = {
10
- get: Pure.get(),
11
- set: Pure.set as any,
12
- log: (...evt: any[]) => Pure.logMany(evt)
14
+ get: get(),
15
+ set: set as any,
16
+ log: (...evt: any[]) => logMany(evt)
13
17
  }
14
18
 
15
19
  const anyDSL = makeDSL<any, any, any>()
@@ -78,7 +82,7 @@ export function makeDSL<S1, S2, Evt>() {
78
82
  dsl: PureDSL<S1, S2, Evt>
79
83
  ) => Effect<A, E, R>
80
84
  ): Effect<A, E, FixEnv<R, Evt, S1, S2>> {
81
- return dsl.get.flatMap((items) => pure(items, dsl)) as any
85
+ return dsl.get.pipe(Effect.flatMap((items) => pure(items, dsl))) as any
82
86
  }
83
87
 
84
88
  function update<
@@ -90,7 +94,7 @@ export function makeDSL<S1, S2, Evt>() {
90
94
  log: (...evt: Evt[]) => PureLogT<Evt>
91
95
  ) => Effect<S2, E, R>
92
96
  ): Effect<S2, E, FixEnv<R, Evt, S1, S2>> {
93
- return dsl.get.flatMap((items) => pure(items, dsl.log).tap(dsl.set)) as any
97
+ return dsl.get.pipe(Effect.flatMap((items) => pure(items, dsl.log).pipe(Effect.tap(dsl.set)))) as any
94
98
  }
95
99
 
96
100
  function withDSL<
@@ -120,12 +124,12 @@ export function makeDSL<S1, S2, Evt>() {
120
124
  export interface DSLExt<S1, S2, Evt> extends ReturnType<typeof makeDSL<S1, S2, Evt>> {}
121
125
 
122
126
  export function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>) {
123
- return (items: Iterable<T>) => Effect.sync(() => items.toNonEmptyArray).flatMapOpt(fn)
127
+ return (items: Iterable<T>) => Effect.flatMapOption(Effect.sync(() => toNonEmptyArray([...items])), fn)
124
128
  }
125
129
 
126
130
  /**
127
131
  * @tsplus fluent Iterable ifAny
128
132
  */
129
133
  export function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>) {
130
- return Effect.sync(() => items.toNonEmptyArray).flatMapOpt(fn)
134
+ return Effect.flatMapOption(Effect.sync(() => toNonEmptyArray([...items])), fn)
131
135
  }
@@ -1,7 +1,11 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  // Update = Must return updated items
3
3
  // Modify = Must `set` updated items, and can return anything.
4
- import type { FixEnv } from "effect-app/Pure"
4
+ import { toNonEmptyArray } from "@effect-app/core/Array"
5
+ import { NonNegativeInt } from "@effect-app/schema"
6
+ import { Effect, ReadonlyArray } from "effect-app"
7
+ import type { NonEmptyArray, NonEmptyReadonlyArray, Option } from "effect-app"
8
+ import { type FixEnv, type PureEnv, runTerm } from "effect-app/Pure"
5
9
  import type { InvalidStateError, OptimisticConcurrencyException } from "../../errors.js"
6
10
  import { NotFoundError } from "../../errors.js"
7
11
  import type { Filter, PersistenceModelType } from "../../services/Store.js"
@@ -23,7 +27,7 @@ export function get<
23
27
  ) {
24
28
  return self
25
29
  .find(id)
26
- .flatMap((_) => _.encaseInEffect(() => new NotFoundError<ItemType>({ type: self.itemType, id })))
30
+ .pipe(Effect.flatMap((_) => Effect.mapError(_, () => new NotFoundError<ItemType>({ type: self.itemType, id }))))
27
31
  }
28
32
 
29
33
  /**
@@ -109,12 +113,11 @@ export function projectEffect<
109
113
  >
110
114
  ): Effect<S[], E, R> {
111
115
  // TODO: a projection that gets sent to the db instead.
112
- return map.flatMap((f) =>
116
+ return Effect.flatMap(map, (f) =>
113
117
  self
114
118
  .utils
115
119
  .filter(f)
116
- .map((_) => f.collect ? _.filterMap(f.collect) : _ as unknown as S[])
117
- )
120
+ .pipe(Effect.map((_) => f.collect ? ReadonlyArray.filterMap(_, f.collect) : _ as unknown as S[])))
118
121
  }
119
122
 
120
123
  /**
@@ -168,7 +171,7 @@ export function project<
168
171
  skip?: number
169
172
  }
170
173
  ): Effect<S[]> {
171
- return self.projectEffect(Effect.sync(() => map))
174
+ return projectEffect(self, Effect.sync(() => map))
172
175
  }
173
176
 
174
177
  /**
@@ -184,9 +187,8 @@ export function count<
184
187
  self: RepositoryBaseC<T, PM, Evt, ItemType>,
185
188
  filter?: Filter<PM>
186
189
  ) {
187
- return self
188
- .projectEffect(Effect.sync(() => ({ filter })))
189
- .map((_) => NonNegativeInt(_.length))
190
+ return projectEffect(self, Effect.sync(() => ({ filter })))
191
+ .pipe(Effect.map((_) => NonNegativeInt(_.length)))
190
192
  }
191
193
 
192
194
  /**
@@ -205,11 +207,12 @@ export function queryEffect<
205
207
  // TODO: think about collectPM, collectE, and collect(Parsed)
206
208
  map: Effect<{ filter?: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }, E, R>
207
209
  ) {
208
- return map.flatMap((f) =>
210
+ return Effect.flatMap(map, (f) =>
209
211
  (f.filter ? self.utils.filter(f) : self.utils.all)
210
- .flatMap((_) => self.utils.parseMany(_))
211
- .map((_) => f.collect ? _.filterMap(f.collect) : _ as any as S[])
212
- )
212
+ .pipe(
213
+ Effect.flatMap((_) => self.utils.parseMany(_)),
214
+ Effect.map((_) => f.collect ? ReadonlyArray.filterMap(_, f.collect) : _ as unknown[] as S[])
215
+ ))
213
216
  }
214
217
 
215
218
  /**
@@ -253,16 +256,24 @@ export function queryOneEffect<
253
256
  // TODO: think about collectPM, collectE, and collect(Parsed)
254
257
  map: Effect<{ filter?: Filter<PM>; collect?: (t: T) => Option<S> }, E, R>
255
258
  ): Effect<S, E | NotFoundError<ItemType>, R> {
256
- return map.flatMap((f) =>
259
+ return Effect.flatMap(map, (f) =>
257
260
  (f.filter ? self.utils.filter({ filter: f.filter, limit: 1 }) : self.utils.all)
258
- .flatMap((_) => self.utils.parseMany(_))
259
- .flatMap((_) =>
260
- (f.collect ? _.filterMap(f.collect) : _ as any as S[])
261
- .toNonEmpty
262
- .encaseInEffect(() => new NotFoundError<ItemType>({ type: self.itemType, id: f.filter }))
263
- .map((_) => _[0])
264
- )
265
- )
261
+ .pipe(
262
+ Effect.flatMap((_) => self.utils.parseMany(_)),
263
+ Effect
264
+ .flatMap((_) =>
265
+ toNonEmptyArray(
266
+ f.collect
267
+ ? ReadonlyArray.filterMap(_, f.collect)
268
+ : _ as unknown[] as S[]
269
+ )
270
+ .pipe(
271
+ Effect.mapError(() => new NotFoundError<ItemType>({ type: self.itemType, id: f.filter })),
272
+ Effect
273
+ .map((_) => _[0])
274
+ )
275
+ )
276
+ ))
266
277
  }
267
278
 
268
279
  /**
@@ -279,7 +290,7 @@ export function query<
279
290
  // TODO: think about collectPM, collectE, and collect(Parsed)
280
291
  map: { filter?: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }
281
292
  ) {
282
- return self.queryEffect(Effect.sync(() => map))
293
+ return queryEffect(self, Effect.sync(() => map))
283
294
  }
284
295
 
285
296
  /**
@@ -314,7 +325,7 @@ export function queryOne<
314
325
  self: RepositoryBaseC<T, PM, Evt, ItemType>,
315
326
  map: { filter?: Filter<PM>; collect?: (t: T) => Option<S> }
316
327
  ) {
317
- return self.queryOneEffect(Effect.sync(() => map))
328
+ return queryOneEffect(self, Effect.sync(() => map))
318
329
  }
319
330
 
320
331
  /**
@@ -367,7 +378,7 @@ export function queryAndSaveOnePureEffect(
367
378
  ) {
368
379
  return (pure: any) =>
369
380
  queryOneEffect(self, map)
370
- .flatMap((_) => saveWithPure_(self, _, pure))
381
+ .pipe(Effect.flatMap((_) => saveWithPure_(self, _, pure)))
371
382
  }
372
383
 
373
384
  /**
@@ -428,7 +439,7 @@ export function queryAndSavePureEffect<
428
439
  ) {
429
440
  return <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) =>
430
441
  queryEffect(self, map)
431
- .flatMap((_) => self.saveManyWithPure_(_, pure))
442
+ .pipe(Effect.flatMap((_) => saveManyWithPure_(self, _, pure)))
432
443
  }
433
444
 
434
445
  /**
@@ -444,7 +455,7 @@ export function queryAndSavePure<
444
455
  self: RepositoryBaseC<T, PM, Evt, ItemType>,
445
456
  map: { filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }
446
457
  ) {
447
- return self.queryAndSavePureEffect(Effect.sync(() => map))
458
+ return queryAndSavePureEffect(self, Effect.sync(() => map))
448
459
  }
449
460
 
450
461
  /**
@@ -470,7 +481,7 @@ export function byIdAndSaveWithPure<
470
481
  ItemType extends string
471
482
  >(self: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"]) {
472
483
  return <R, A, E, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, T, S2>>) =>
473
- get(self, id).flatMap((item) => saveWithPure_(self, item, pure))
484
+ get(self, id).pipe(Effect.flatMap((item) => saveWithPure_(self, item, pure)))
474
485
  }
475
486
 
476
487
  /**
@@ -509,7 +520,7 @@ export function saveManyWithPure_<
509
520
  ) {
510
521
  return saveAllWithEffectInt(
511
522
  self,
512
- pure.runTerm([...items])
523
+ runTerm(pure, [...items])
513
524
  )
514
525
  }
515
526
 
@@ -533,9 +544,9 @@ export function saveWithPure_<
533
544
  ) {
534
545
  return saveAllWithEffectInt(
535
546
  self,
536
- pure
537
- .runTerm(item)
538
- .map(([item, events, a]) => [[item], events, a])
547
+ runTerm(pure, item)
548
+ .pipe(Effect
549
+ .map(([item, events, a]) => [[item], events, a]))
539
550
  )
540
551
  }
541
552
 
@@ -552,10 +563,7 @@ export function saveAllWithEffectInt<
552
563
  self: RepositoryBaseC<T, PM, Evt, ItemType>,
553
564
  gen: Effect<readonly [Iterable<P>, Iterable<Evt>, A], E, R>
554
565
  ) {
555
- return gen
556
- .flatMap(
557
- ([items, events, a]) => self.saveAndPublish(items, events).map(() => a)
558
- )
566
+ return Effect.flatMap(gen, ([items, events, a]) => self.saveAndPublish(items, events).pipe(Effect.map(() => a)))
559
567
  }
560
568
 
561
569
  /**
@@ -577,7 +585,7 @@ export function queryAndSavePureEffectBatched<
577
585
  ) {
578
586
  return <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) =>
579
587
  queryEffect(self, map)
580
- .flatMap((_) => self.saveManyWithPureBatched_(_, pure, batchSize))
588
+ .pipe(Effect.flatMap((_) => saveManyWithPureBatched_(self, _, pure, batchSize)))
581
589
  }
582
590
 
583
591
  /**
@@ -595,7 +603,7 @@ export function queryAndSavePureBatched<
595
603
  map: { filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number },
596
604
  batchSize = 100
597
605
  ) {
598
- return self.queryAndSavePureEffectBatched(Effect.sync(() => map), batchSize)
606
+ return queryAndSavePureEffectBatched(self, Effect.sync(() => map), batchSize)
599
607
  }
600
608
 
601
609
  /**
@@ -630,14 +638,14 @@ export function saveManyWithPureBatched_<
630
638
  pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>,
631
639
  batchSize = 100
632
640
  ) {
633
- return items
634
- .chunk(batchSize)
635
- .forEachEffect((batch) =>
641
+ return Effect.forEach(
642
+ ReadonlyArray.chunk_(items, batchSize),
643
+ (batch) =>
636
644
  saveAllWithEffectInt(
637
645
  self,
638
- pure.runTerm(batch)
646
+ runTerm(pure, batch)
639
647
  )
640
- )
648
+ )
641
649
  }
642
650
 
643
651
  /**
@@ -683,7 +691,7 @@ export function itemUpdateWithEffect<
683
691
  id: T["id"],
684
692
  mod: (item: T) => Effect<T, E, R>
685
693
  ) {
686
- return repo.get(id).andThen(mod).andThen(repo.save)
694
+ return get(repo, id).pipe(Effect.andThen(mod), Effect.andThen(save(repo)))
687
695
  }
688
696
 
689
697
  /**