@effect-app/infra 0.198.2 → 0.199.2

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 +32 -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 +212 -197
  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 +11 -13
  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 +101 -71
  179. package/dist/services/RepositoryBase.d.ts.map +1 -1
  180. package/dist/services/RepositoryBase.js +229 -226
  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 +18 -14
  248. package/src/services/Repository/ext.ts +58 -50
  249. package/src/services/RepositoryBase.ts +478 -351
  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,26 +1,17 @@
1
- import * as tsplus_module_1 from "effect-app/_ext/misc";
2
- import * as tsplus_module_2 from "effect-app/schema";
3
- import * as tsplus_module_3 from "@effect-app/core/Array";
4
- import * as tsplus_module_4 from "@effect-app/core/_ext/Iterable";
5
- import * as tsplus_module_5 from "@effect/schema/Schema";
6
- import * as tsplus_module_6 from "@effect-app/core/Chunk";
7
- import * as tsplus_module_7 from "@effect-app/core/Effect";
8
- import * as tsplus_module_8 from "effect/Effect";
9
- import * as tsplus_module_9 from "@effect-app/core/Function";
10
- import * as tsplus_module_10 from "effect/PubSub";
11
- import * as tsplus_module_11 from "@effect-app/infra/services/Repository/ext";
12
- import * as tsplus_module_12 from "effect-app/service";
13
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
14
2
  /* eslint-disable @typescript-eslint/ban-types */
15
3
  // import type { ParserEnv } from "@effect-app/schema/custom/Parser"
16
4
  import { AnyPureDSL, byIdAndSaveWithPure, get, queryEffect, queryOneEffect, saveAllWithEffectInt, saveManyWithPure_, saveManyWithPureBatched_, saveWithPure_ } from "./Repository.js";
17
5
  import { StoreMaker } from "./Store.js";
6
+ import { toNonEmptyArray } from "@effect-app/core/Array";
18
7
  import { flatMapOption } from "@effect-app/core/Effect";
19
8
  import { makeFilters } from "@effect-app/infra/filter";
20
- import { Effect, S } from "effect-app";
9
+ import { NonNegativeInt } from "@effect-app/schema";
10
+ import { Chunk, Effect, flow, Option, pipe, PubSub, ReadonlyArray, S } from "effect-app";
21
11
  import { runTerm } from "effect-app/Pure";
12
+ import { assignTag } from "effect-app/service";
22
13
  import { NotFoundError } from "../errors.js";
23
- import { make as makeQuery, query } from "./query.js";
14
+ import { make as makeQuery, page, query } from "./query.js";
24
15
  import { ContextMapContainer } from "./Store/ContextMapContainer.js";
25
16
  import * as Q from "./Store/filterApi/query.js";
26
17
  /**
@@ -62,114 +53,107 @@ export class RepositoryBaseC2 extends RepositoryBaseC1 {
62
53
  const anyQb = Q.QueryBuilder.make();
63
54
  export class RepositoryBaseC3 extends RepositoryBaseC2 {
64
55
  get(id) {
65
- return this
66
- .find(id)
67
- .flatMap((_) => tsplus_module_1.encaseMaybeInEffect_(_, () => new NotFoundError({ type: this.itemType, id })));
56
+ return Effect.andThen(this
57
+ .find(id), (_) => Effect.mapError(_, () => new NotFoundError({ type: this.itemType, id })));
68
58
  }
69
59
  log = (evt) => AnyPureDSL.log(evt);
70
60
  removeById(id) {
71
- return this.get(id).andThen((_) => this.removeAndPublish([_]));
61
+ return Effect.andThen(this.get(id), (_) => this.removeAndPublish([_]));
72
62
  }
63
+ count(filter) {
64
+ return Effect.map(this.projectEffect(Effect.sync(() => ({ filter }))), (_) => NonNegativeInt(_.length));
65
+ }
66
+ save = (...items) => this.saveAndPublish(items);
67
+ saveWithEvents = (events) => (...items) => this.saveAndPublish(items, events);
68
+ q2AndSaveOnePure = (q, pure) => this.q2(flow(q, page({ limit: 1 }))).pipe(Effect.map(ReadonlyArray.toNonEmptyArray), Effect.flatMap(Effect.mapError(() => new NotFoundError({ type: this.itemType, id: q }))), Effect.andThen((_) => saveWithPure_(this, _[0], pure)));
69
+ q2AndSavePure = (q, pure, batchSize) => this.q2(flow(q, page({ limit: 1 }))).pipe(Effect.andThen((_) => batchSize === undefined
70
+ ? saveManyWithPure_(this, _, pure)
71
+ : saveManyWithPureBatched_(this, _, pure, batchSize)));
72
+ /**
73
+ * NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
74
+ */
75
+ handleByIdAndSaveWithPure = (pure) => (req, ctx) => byIdAndSaveWithPure(this, req.id)(pure(req, ctx));
76
+ saveManyWithPure = (items, pure) => saveAllWithEffectInt(this, runTerm(pure, [...items]));
77
+ byIdAndSaveWithPure = (id, pure) => get(this, id).pipe(Effect.flatMap((item) => saveWithPure_(this, item, pure)));
78
+ saveWithPure(item, pure) {
79
+ return saveAllWithEffectInt(this, runTerm(pure, item)
80
+ .pipe(Effect.map(([item, events, a]) => [[item], events, a])));
81
+ }
82
+ /** @deprecated use q2 */
73
83
  projectEffect(map) {
74
84
  // TODO: a projection that gets sent to the db instead.
75
- return map.flatMap((f) => this
85
+ return Effect.flatMap(map, (f) => Effect.map(this
76
86
  .utils
77
- .filter(f)
78
- .map((_) => f.collect ? _.filterMap(f.collect) : _));
87
+ .filter(f), (_) => f.collect ? ReadonlyArray.filterMap(_, f.collect) : _));
79
88
  }
89
+ /** @deprecated use q2 */
80
90
  project(map) {
81
91
  return this.projectEffect(Effect.sync(() => map));
82
92
  }
83
- count(filter) {
84
- return this
85
- .projectEffect(Effect.sync(() => ({ filter })))
86
- .map((_) => tsplus_module_2.NonNegativeInt(_.length));
87
- }
93
+ /** @deprecated use q2 */
88
94
  queryEffect(
89
95
  // TODO: think about collectPM, collectE, and collect(Parsed)
90
96
  map) {
91
- return map.flatMap((f) => (f.filter ? this.utils.filter(f) : this.utils.all)
92
- .flatMap((_) => this.utils.parseMany(_))
93
- .map((_) => f.collect ? _.filterMap(f.collect) : _));
97
+ return Effect.flatMap(map, (f) => (f.filter ? this.utils.filter(f) : this.utils.all)
98
+ .pipe(Effect.flatMap((_) => this.utils.parseMany(_)), Effect.map((_) => f.collect ? ReadonlyArray.filterMap(_, f.collect) : _)));
94
99
  }
100
+ /** @deprecated use q2 */
95
101
  queryOneEffect(
96
102
  // TODO: think about collectPM, collectE, and collect(Parsed)
97
103
  map) {
98
- return map.flatMap((f) => (f.filter ? this.utils.filter({ filter: f.filter, limit: 1 }) : this.utils.all)
99
- .flatMap((_) => this.utils.parseMany(_))
100
- .flatMap((_) => tsplus_module_1.encaseMaybeInEffect_((f.collect ? _.filterMap(f.collect) : _)
101
- .toNonEmpty, () => new NotFoundError({ type: this.itemType, id: f.filter }))
102
- .map((_) => _[0])));
104
+ return Effect.flatMap(map, (f) => (f.filter ? this.utils.filter({ filter: f.filter, limit: 1 }) : this.utils.all)
105
+ .pipe(Effect.flatMap((_) => this.utils.parseMany(_)), Effect
106
+ .flatMap((_) => toNonEmptyArray(f.collect
107
+ ? ReadonlyArray.filterMap(_, f.collect)
108
+ : _)
109
+ .pipe(Effect.mapError(() => new NotFoundError({ type: this.itemType, id: f.filter })), Effect.map((_) => _[0])))));
103
110
  }
111
+ /** @deprecated use q2 */
104
112
  queryLegacy(
105
113
  // TODO: think about collectPM, collectE, and collect(Parsed)
106
114
  map) {
107
115
  return this.queryEffect(Effect.sync(() => map));
108
116
  }
117
+ /** @deprecated use q2 */
109
118
  query(b) {
110
119
  return this.queryEffect(Effect.sync(() => ({ filter: anyQb((_, fields) => b(_, fields)) })));
111
120
  }
121
+ /** @deprecated use q2 */
112
122
  queryOne(map) {
113
123
  return this.queryOneEffect(Effect.sync(() => map));
114
124
  }
125
+ /** @deprecated */
115
126
  queryAndSaveOnePureEffect(map) {
116
- return (pure) => queryOneEffect(this, map)
117
- .flatMap((_) => saveWithPure_(this, _, pure));
127
+ return (pure) => Effect.flatMap(queryOneEffect(this, map), (_) => saveWithPure_(this, _, pure));
118
128
  }
129
+ /** @deprecated */
119
130
  queryAndSaveOnePure(map) {
120
131
  return this.queryAndSaveOnePureEffect(Effect.sync(() => map));
121
132
  }
133
+ /** @deprecated */
122
134
  queryAndSavePureEffect(map) {
123
- return (pure) => queryEffect(this, map)
124
- .flatMap((_) => this.saveManyWithPure_(_, pure));
135
+ return (pure) => Effect.flatMap(queryEffect(this, map), (_) => this.saveManyWithPure(_, pure));
125
136
  }
137
+ /** @deprecated */
126
138
  queryAndSavePure(map) {
127
139
  return this.queryAndSavePureEffect(Effect.sync(() => map));
128
140
  }
129
- get saveManyWithPure() {
130
- return (pure) => (items) => saveManyWithPure_(this, items, pure);
131
- }
132
- byIdAndSaveWithPure(id, pure) {
133
- if (pure)
134
- return get(this, id).flatMap((item) => saveWithPure_(this, item, pure));
135
- return (pure) => get(this, id).flatMap((item) => saveWithPure_(this, item, pure));
136
- }
137
- /**
138
- * NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
139
- */
140
- get handleByIdAndSaveWithPure() {
141
- return (pure) => (req, ctx) => byIdAndSaveWithPure(this, req.id)(pure(req, ctx));
142
- }
143
- saveManyWithPure_(items, pure) {
144
- return saveAllWithEffectInt(this, runTerm(pure, [...items]));
145
- }
146
- saveWithPure_(item, pure) {
147
- return saveAllWithEffectInt(this, runTerm(pure, item)
148
- .map(([item, events, a]) => [[item], events, a]));
149
- }
150
- saveAllWithEffectInt(gen) {
151
- return gen
152
- .flatMap(([items, events, a]) => this.saveAndPublish(items, events).map(() => a));
153
- }
141
+ /** @deprecated use q2 */
154
142
  queryAndSavePureEffectBatched(
155
143
  // TODO: think about collectPM, collectE, and collect(Parsed)
156
144
  map, batchSize = 100) {
157
- return (pure) => queryEffect(this, map)
158
- .flatMap((_) => this.saveManyWithPureBatched_(_, pure, batchSize));
145
+ return (pure) => Effect.flatMap(queryEffect(this, map), (_) => this.saveManyWithPureBatched(_, pure, batchSize));
159
146
  }
147
+ /** @deprecated use q2 */
160
148
  queryAndSavePureBatched(
161
149
  // TODO: think about collectPM, collectE, and collect(Parsed)
162
150
  map, batchSize = 100) {
163
151
  return this.queryAndSavePureEffectBatched(Effect.sync(() => map), batchSize);
164
152
  }
165
- saveManyWithPureBatched(batchSize = 100) {
166
- return (pure) => (items) => saveManyWithPureBatched_(this, items, pure, batchSize);
167
- }
168
- saveManyWithPureBatched_(items, pure, batchSize = 100) {
169
- return tsplus_module_4.ext_forEach(tsplus_module_3.chunk_(items, batchSize), (batch) => saveAllWithEffectInt(this, runTerm(pure, batch)));
153
+ /** @deprecated use q2 */
154
+ saveManyWithPureBatched(items, pure, batchSize = 100) {
155
+ return Effect.forEach(ReadonlyArray.chunk_(items, batchSize), (batch) => saveAllWithEffectInt(this, runTerm(pure, batch)));
170
156
  }
171
- save = (...items) => this.saveAndPublish(items);
172
- saveWithEvents = (events) => (...items) => this.saveAndPublish(items, events);
173
157
  }
174
158
  /**
175
159
  * A base implementation to create a repository.
@@ -186,140 +170,143 @@ export function makeRepo() {
186
170
  }
187
171
  const mkStore = makeStore()(name, schema, mapTo);
188
172
  function make(args) {
189
- return tsplus_module_8.withLogSpan(tsplus_module_8.flatMap(Effect.context(), rctx => {
190
- const encode = tsplus_module_9.flow(tsplus_module_5.encode(schema), Effect.provide(rctx));
191
- const decode = tsplus_module_9.flow(tsplus_module_5.decode(schema), Effect.provide(rctx));
192
- return tsplus_module_8.flatMap(mkStore(args.makeInitial, args.config), store => tsplus_module_8.flatMap(ContextMapContainer, ({ get }) => {
193
- const cms = get.andThen((_) => ({
194
- get: (id) => _.get(`${name}.${id}`),
195
- set: (id, etag) => _.set(`${name}.${id}`, etag)
173
+ return Effect
174
+ .gen(function* ($) {
175
+ const rctx = yield* $(Effect.context());
176
+ const encode = flow(S.encode(schema), Effect.provide(rctx));
177
+ const decode = flow(S.decode(schema), Effect.provide(rctx));
178
+ const store = yield* $(mkStore(args.makeInitial, args.config));
179
+ const { get } = yield* $(ContextMapContainer);
180
+ const cms = Effect.andThen(get, (_) => ({
181
+ get: (id) => _.get(`${name}.${id}`),
182
+ set: (id, etag) => _.set(`${name}.${id}`, etag)
183
+ }));
184
+ const pubCfg = yield* $(Effect.context());
185
+ const pub = "publishEvents" in args
186
+ ? flow(args.publishEvents, Effect.provide(pubCfg))
187
+ : () => Effect.unit;
188
+ const changeFeed = yield* $(PubSub.unbounded());
189
+ const allE = store.all.pipe(Effect.flatMap((items) => Effect.gen(function* ($) {
190
+ const { set } = yield* $(cms);
191
+ return items.map((_) => mapReverse(_, set));
192
+ })));
193
+ const all = Effect.flatMap(allE, (_) => Effect.forEach(_, (_) => decode(_), { concurrency: "inherit", batching: true }).pipe(Effect.orDie));
194
+ const structSchema = schema;
195
+ const i = ("struct" in structSchema ? structSchema["struct"] : schema).pipe((_) => _.ast._tag === "Union"
196
+ // we need to get the TypeLiteral, incase of class it's behind a transform...
197
+ ? S.union(..._.ast.types.map((_) => S.make(_._tag === "Transform" ? _.from : _)
198
+ .pipe(S.pick("id"))))
199
+ : _
200
+ .ast
201
+ ._tag === "Transform"
202
+ ? S
203
+ .make(_
204
+ .ast
205
+ .from)
206
+ .pipe(S
207
+ .pick("id"))
208
+ : _
209
+ .pipe(S
210
+ .pick("id")));
211
+ const encodeId = flow(S.encode(i), Effect.provide(rctx));
212
+ function findEId(id) {
213
+ return Effect.flatMap(store.find(id), (item) => Effect.gen(function* ($) {
214
+ const { set } = yield* $(cms);
215
+ return item.pipe(Option.map((_) => mapReverse(_, set)));
196
216
  }));
197
- return tsplus_module_8.flatMap(Effect.context(), pubCfg => {
198
- const pub = "publishEvents" in args ? tsplus_module_9.flow(args.publishEvents, (_) => tsplus_module_8.provide(_, pubCfg)) : () => Effect.unit;
199
- return tsplus_module_8.map(tsplus_module_10.unbounded(), changeFeed => {
200
- const allE = store.all.flatMap((items) => tsplus_module_8.map(cms, ({ set }) => items.map((_) => mapReverse(_, set))));
201
- const all = allE.flatMap((_) => _.forEachEffect((_) => decode(_), { concurrency: "inherit", batching: true }).orDie);
202
- const structSchema = schema;
203
- const i = ("struct" in structSchema ? structSchema["struct"] : schema).pipe((_) => _.ast._tag === "Union"
204
- // we need to get the TypeLiteral, incase of class it's behind a transform...
205
- ? S.union(..._.ast.types.map((_) => S.make(_._tag === "Transform" ? _.from : _)
206
- .pipe(S.pick("id"))))
207
- : _
208
- .ast
209
- ._tag === "Transform"
210
- ? S
211
- .make(_
212
- .ast
213
- .from)
214
- .pipe(S
215
- .pick("id"))
216
- : _
217
- .pipe(S
218
- .pick("id")));
219
- const encodeId = tsplus_module_9.flow(tsplus_module_5.encode(i), Effect.provide(rctx));
220
- function findEId(id) {
221
- return store
222
- .find(id)
223
- .flatMap((item) => tsplus_module_8.map(cms, ({ set }) => item.map((_) => mapReverse(_, set))));
224
- }
225
- function findE(id) {
226
- return encodeId({ id })
227
- .orDie
228
- .map((_) => _.id)
229
- .flatMap(findEId);
230
- }
231
- function find(id) {
232
- return tsplus_module_7.flatMapOption(findE(id), (_) => decode(_).orDie);
233
- }
234
- const saveAllE = (a) => tsplus_module_7.flatMapOption(Effect
235
- .sync(() => tsplus_module_4.CollectionToNonEmptyReadonlyArray(a)), (a) => tsplus_module_8.flatMap(cms, ({ get, set }) => {
236
- const items = a.map((_) => mapToPersistenceModel(_, get));
237
- return tsplus_module_8.map(store.batchSet(items), ret => {
238
- ret.forEach((_) => set(_.id, _._etag));
239
- });
240
- }))
241
- .asUnit;
242
- const saveAll = (a) => tsplus_module_4.ext_forEach(tsplus_module_6.fromIterable(a), (_) => encode(_), { concurrency: "inherit", batching: true }).orDie.andThen(saveAllE);
243
- const saveAndPublish = (items, events = []) => {
244
- const it = tsplus_module_6.fromIterable(items);
245
- return tsplus_module_7.flatMapOption(saveAll(it)
246
- .andThen(Effect.sync(() => tsplus_module_4.CollectionToNonEmptyReadonlyArray(events)))
247
- // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
248
- , pub)
249
- .andThen(changeFeed
250
- .publish([tsplus_module_6.toArray(it), "save"]))
251
- .asUnit;
252
- };
253
- function removeAndPublish(a, events = []) {
254
- return Effect.gen(function* ($) {
255
- const { get, set } = yield* $(cms);
256
- const it = tsplus_module_6.fromIterable(a);
257
- const items = yield* $(tsplus_module_4.ext_forEach(it, (_) => encode(_), { concurrency: "inherit", batching: true }).orDie);
258
- // TODO: we should have a batchRemove on store so the adapter can actually batch...
259
- for (const e of items) {
260
- yield* $(store.remove(mapToPersistenceModel(e, get)));
261
- set(e.id, undefined);
262
- }
263
- yield* $(tsplus_module_7.flatMapOption(Effect
264
- .sync(() => tsplus_module_4.CollectionToNonEmptyReadonlyArray(events))
265
- // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
266
- , pub));
267
- yield* $(changeFeed.publish([tsplus_module_6.toArray(it), "remove"]));
268
- });
269
- }
270
- const r = {
271
- /**
272
- * @internal
273
- */
274
- utils: {
275
- parseMany: (items) => cms.flatMap((cm) => items
276
- .forEachEffect((_) => decode(mapReverse(_, cm.set)), { concurrency: "inherit", batching: true })
277
- .orDie),
278
- parseMany2: (items, schema) => cms.flatMap((cm) => items
279
- .forEachEffect((_) => tsplus_module_5.decode(schema)(mapReverse(_, cm.set)), {
280
- concurrency: "inherit",
281
- batching: true
282
- })
283
- .orDie),
284
- filter: (args) => store
285
- .filter(args)
286
- .tap((items) => args.select
287
- ? Effect.unit
288
- : cms.map(({ set }) => items.forEach((_) => set(_.id, _._etag)))),
289
- all: store.all.tap((items) => cms.map(({ set }) => items.forEach((_) => set(_.id, _._etag))))
290
- },
291
- mapped: (schema) => {
292
- // const enc = S.encode(schema)
293
- const dec = S.decode(schema);
294
- const encMany = S.encode(S.array(schema));
295
- const decMany = S.decode(S.array(schema));
296
- return {
297
- all: cms
298
- .flatMap((cm) => r.utils.all.map((_) => _.map((_) => mapReverse(_, cm.set))))
299
- .flatMap(decMany)
300
- .map((_) => _),
301
- find: (id) => flatMapOption(findE(id), dec),
302
- query: (b) => r
303
- .utils
304
- .filter({ filter: b })
305
- .flatMap(decMany)
306
- .map((_) => _),
307
- save: (...xes) => encMany(xes).flatMap((_) => saveAllE(_))
308
- };
309
- },
310
- changeFeed,
311
- itemType: name,
312
- find,
313
- all,
314
- saveAndPublish,
315
- removeAndPublish,
316
- q2: (q) => query(r, typeof q === "function" ? q(makeQuery()) : q)
317
- };
318
- return r;
319
- });
217
+ }
218
+ function findE(id) {
219
+ return pipe(encodeId({ id }), Effect.orDie, Effect.map((_) => _.id), Effect.flatMap(findEId));
220
+ }
221
+ function find(id) {
222
+ return Effect.flatMapOption(findE(id), (_) => Effect.orDie(decode(_)));
223
+ }
224
+ const saveAllE = (a) => Effect
225
+ .flatMapOption(Effect
226
+ .sync(() => toNonEmptyArray([...a])), (a) => Effect.gen(function* ($) {
227
+ const { get, set } = yield* $(cms);
228
+ const items = a.map((_) => mapToPersistenceModel(_, get));
229
+ const ret = yield* $(store.batchSet(items));
230
+ ret.forEach((_) => set(_.id, _._etag));
231
+ }))
232
+ .pipe(Effect.asUnit);
233
+ const saveAll = (a) => Effect
234
+ .forEach(Array.from(a), (_) => encode(_), { concurrency: "inherit", batching: true })
235
+ .pipe(Effect.orDie, Effect.andThen(saveAllE));
236
+ const saveAndPublish = (items, events = []) => {
237
+ const it = Chunk.fromIterable(items);
238
+ return saveAll(it)
239
+ .pipe(Effect.andThen(Effect.sync(() => toNonEmptyArray([...events]))),
240
+ // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
241
+ (_) => Effect.flatMapOption(_, pub), Effect.andThen(changeFeed.publish([Chunk.toArray(it), "save"])), Effect.asUnit);
242
+ };
243
+ function removeAndPublish(a, events = []) {
244
+ return Effect.gen(function* ($) {
245
+ const { get, set } = yield* $(cms);
246
+ const it = [...a];
247
+ const items = yield* $(Effect.forEach(it, (_) => encode(_), { concurrency: "inherit", batching: true }).pipe(Effect.orDie));
248
+ // TODO: we should have a batchRemove on store so the adapter can actually batch...
249
+ for (const e of items) {
250
+ yield* $(store.remove(mapToPersistenceModel(e, get)));
251
+ set(e.id, undefined);
252
+ }
253
+ yield* $(Effect
254
+ .sync(() => toNonEmptyArray([...events]))
255
+ // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
256
+ .pipe((_) => Effect.flatMapOption(_, pub)));
257
+ yield* $(changeFeed.publish([it, "remove"]));
320
258
  });
321
- }));
322
- }), "Repository.make: " + name);
259
+ }
260
+ const r = {
261
+ /**
262
+ * @internal
263
+ */
264
+ utils: {
265
+ parseMany: (items) => Effect.flatMap(cms, (cm) => Effect
266
+ .forEach(items, (_) => decode(mapReverse(_, cm.set)), { concurrency: "inherit", batching: true })
267
+ .pipe(Effect.orDie)),
268
+ parseMany2: (items, schema) => Effect.flatMap(cms, (cm) => Effect
269
+ .forEach(items, (_) => S.decode(schema)(mapReverse(_, cm.set)), {
270
+ concurrency: "inherit",
271
+ batching: true
272
+ })
273
+ .pipe(Effect.orDie)),
274
+ filter: (args) => store
275
+ .filter(args)
276
+ .pipe(Effect.tap((items) => args.select
277
+ ? Effect.unit
278
+ : Effect.map(cms, ({ set }) => items.forEach((_) => set(_.id, _._etag))))),
279
+ all: Effect.tap(store.all, (items) => Effect.map(cms, ({ set }) => items.forEach((_) => set(_.id, _._etag))))
280
+ },
281
+ mapped: (schema) => {
282
+ // const enc = S.encode(schema)
283
+ const dec = S.decode(schema);
284
+ const encMany = S.encode(S.array(schema));
285
+ const decMany = S.decode(S.array(schema));
286
+ return {
287
+ all: cms
288
+ .pipe(Effect.flatMap((cm) => Effect.map(r.utils.all, (_) => _.map((_) => mapReverse(_, cm.set)))), Effect.flatMap(decMany), Effect.map((_) => _)),
289
+ find: (id) => flatMapOption(findE(id), dec),
290
+ query: (b) => r
291
+ .utils
292
+ .filter({ filter: b })
293
+ .pipe(Effect.flatMap(decMany), Effect.map((_) => _)),
294
+ save: (...xes) => Effect.flatMap(encMany(xes), (_) => saveAllE(_))
295
+ };
296
+ },
297
+ changeFeed,
298
+ itemType: name,
299
+ find,
300
+ all,
301
+ saveAndPublish,
302
+ removeAndPublish,
303
+ q2: (q) => query(r, typeof q === "function" ? q(makeQuery()) : q)
304
+ };
305
+ return r;
306
+ })
307
+ .pipe(Effect
308
+ // .withSpan("Repository.make [effect-app/infra]", { attributes: { "repository.model_name": name } })
309
+ .withLogSpan("Repository.make: " + name));
323
310
  }
324
311
  return {
325
312
  make,
@@ -333,7 +320,7 @@ export function makeRepo() {
333
320
  * @tsplus fluent Repository removeById
334
321
  */
335
322
  export function removeById(self, id) {
336
- return tsplus_module_11.get(self, id).flatMap((_) => self.removeAndPublish([_]));
323
+ return get(self, id).pipe(Effect.flatMap((_) => self.removeAndPublish([_])));
337
324
  }
338
325
  export function makeWhere() {
339
326
  const f_ = makeFilters();
@@ -360,34 +347,50 @@ export function makeStore() {
360
347
  return (name, schema, mapTo) => {
361
348
  function encodeToPM() {
362
349
  const getEtag = () => undefined;
363
- return (t) => tsplus_module_5.encode(schema)(t)
364
- .orDie
365
- .map((_) => mapToPersistenceModel(_, getEtag));
350
+ return (t) => S.encode(schema)(t).pipe(Effect.orDie, Effect.map((_) => mapToPersistenceModel(_, getEtag)));
366
351
  }
367
352
  function mapToPersistenceModel(e, getEtag) {
368
353
  return mapTo(e, getEtag(e.id));
369
354
  }
370
355
  function makeStore(makeInitial, config) {
371
- return tsplus_module_8.flatMap(StoreMaker, ({ make }) => tsplus_module_8.map(make(pluralize(name), makeInitial
372
- ? tsplus_module_8.withSpan((makeInitial
373
- .flatMap((_) => _.forEachEffect(encodeToPM()))), "Repository.makeInitial [effect-app/infra]", {
374
- attributes: { "repository.model_name": name }
375
- })
376
- : undefined, {
377
- ...config,
378
- partitionValue: config?.partitionValue
379
- ?? ((_) => "primary") /*(isIntegrationEvent(r) ? r.companyId : r.id*/
380
- }), store => store));
356
+ return Effect.gen(function* ($) {
357
+ const { make } = yield* $(StoreMaker);
358
+ const store = yield* $(make(pluralize(name), makeInitial
359
+ ? makeInitial
360
+ .pipe(Effect.flatMap(Effect.forEach(encodeToPM())), Effect.withSpan("Repository.makeInitial [effect-app/infra]", {
361
+ attributes: { "repository.model_name": name }
362
+ }))
363
+ : undefined, {
364
+ ...config,
365
+ partitionValue: config?.partitionValue
366
+ ?? ((_) => "primary") /*(isIntegrationEvent(r) ? r.companyId : r.id*/
367
+ }));
368
+ return store;
369
+ });
381
370
  }
382
371
  return makeStore;
383
372
  };
384
373
  }
385
374
  const makeRepoFunctions = (tag) => {
386
375
  const { all } = Effect.serviceConstants(tag);
387
- const { find, get, q2, query, queryLegacy, removeAndPublish, removeById, save, saveAndPublish } = Effect
388
- .serviceFunctions(tag);
376
+ const { byIdAndSaveWithPure, find, get, q2, q2AndSaveOnePure, q2AndSavePure, query, queryLegacy, removeAndPublish, removeById, save, saveAndPublish } = Effect.serviceFunctions(tag);
389
377
  const mapped = (s) => tag.map((_) => _.mapped(s));
390
- return { all, find, removeById, saveAndPublish, removeAndPublish, save, get, query, queryLegacy, q2, mapped };
378
+ return {
379
+ all,
380
+ byIdAndSaveWithPure,
381
+ find,
382
+ removeById,
383
+ saveAndPublish,
384
+ removeAndPublish,
385
+ save,
386
+ get,
387
+ query,
388
+ queryLegacy,
389
+ q2,
390
+ mapped,
391
+ q2AndSaveOnePure,
392
+ q2AndSavePure
393
+ };
391
394
  };
392
395
  export const RepositoryBaseImpl = () => {
393
396
  return () => (itemType, schema, jitM) => {
@@ -397,12 +400,12 @@ export const RepositoryBaseImpl = () => {
397
400
  super(itemType);
398
401
  }
399
402
  static make = mkRepo.make;
400
- static makeWith = ((a, b) => mkRepo.make(a).map(b));
403
+ static makeWith = ((a, b) => Effect.map(mkRepo.make(a), b));
401
404
  static Where = makeWhere();
402
405
  static Query = Q.QueryBuilder.make();
403
406
  static type = undefined;
404
407
  }
405
- return tsplus_module_12.assignTag()(Object.assign(Cls, makeRepoFunctions(Cls)));
408
+ return assignTag()(Object.assign(Cls, makeRepoFunctions(Cls)));
406
409
  };
407
410
  };
408
411
  export const RepositoryDefaultImpl = () => {
@@ -413,12 +416,12 @@ export const RepositoryDefaultImpl = () => {
413
416
  super(itemType, impl);
414
417
  }
415
418
  static make = mkRepo.make;
416
- static makeWith = ((a, b) => mkRepo.make(a).map(b));
419
+ static makeWith = ((a, b) => Effect.map(mkRepo.make(a), b));
417
420
  static Where = makeWhere();
418
421
  static Query = Q.QueryBuilder.make();
419
422
  static type = undefined;
420
423
  }
421
- return tsplus_module_12.assignTag()(Object.assign(Cls, makeRepoFunctions(Cls))); // impl is missing, but its marked protected
424
+ return assignTag()(Object.assign(Cls, makeRepoFunctions(Cls))); // impl is missing, but its marked protected
422
425
  };
423
426
  };
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvUmVwb3NpdG9yeUJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXVEO0FBQ3ZELGlEQUFpRDtBQUNqRCxvRUFBb0U7QUFDcEUsT0FBTyxFQUNMLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsR0FBRyxFQUNILFdBQVcsRUFDWCxjQUFjLEVBRWQsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsYUFBYSxFQUNkLE1BQU0saUJBQWlCLENBQUE7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUl2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3RDLE9BQU8sRUFBZSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0RCxPQUFPLEVBQTBCLGFBQWEsRUFBdUMsTUFBTSxjQUFjLENBQUE7QUFFekcsT0FBTyxFQUFFLElBQUksSUFBSSxTQUFTLEVBQXlCLEtBQUssRUFBd0IsTUFBTSxZQUFZLENBQUE7QUFDbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDcEUsT0FBTyxLQUFLLENBQUMsTUFBTSw0QkFBNEIsQ0FBQTtBQStCL0M7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGVBQWU7Q0EyQ3BDO0FBRUQsTUFBTSxPQUFnQixnQkFLcEIsU0FBUSxlQUFxQztJQUUzQjtJQURsQixZQUNrQixRQUFrQjtRQUVsQyxLQUFLLEVBQUUsQ0FBQTtRQUZTLGFBQVEsR0FBUixRQUFRLENBQVU7SUFHcEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFP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QUN2QixDQUFDO1lBQ0QsTUFBTSxDQUFVLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFBO1lBQ2xDLE1BQU0sQ0FBVSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFRLENBQUE7WUFFN0UsTUFBTSxDQUFVLEtBQUssR0FBRyxTQUFTLEVBQU0sQ0FBQTtZQUN2QyxNQUFNLENBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFNLENBQUE7WUFFakQsTUFBTSxDQUFVLElBQUksR0FBcUMsU0FBZ0IsQ0FBQTs7UUFFM0UsT0FBTyxpQkFBQSxTQUFTLEVBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFRLENBQUEsQ0FBQyw0Q0FBNEM7SUFDN0gsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIn0=
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvUmVwb3NpdG9yeUJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELGlEQUFpRDtBQUNqRCxvRUFBb0U7QUFDcEUsT0FBTyxFQUNMLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsR0FBRyxFQUNILFdBQVcsRUFDWCxjQUFjLEVBRWQsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsYUFBYSxFQUNkLE1BQU0saUJBQWlCLENBQUE7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUl2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXpDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM5QyxPQUFPLEVBQTBCLGFBQWEsRUFBdUMsTUFBTSxjQUFjLENBQUE7QUFFekcsT0FBTyxFQUFFLElBQUksSUFBSSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUNwRSxPQUFPLEtBQUssQ0FBQyxNQUFNLDRC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