@effect-app/infra 2.7.1 → 2.8.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 (480) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/_cjs/{services/CUPS.cjs → CUPS.cjs} +1 -1
  3. package/_cjs/CUPS.cjs.map +1 -0
  4. package/_cjs/{services/Emailer → Emailer}/Sendgrid.cjs +1 -1
  5. package/_cjs/Emailer/Sendgrid.cjs.map +1 -0
  6. package/_cjs/{services/Emailer → Emailer}/fake.cjs +1 -1
  7. package/_cjs/Emailer/fake.cjs.map +1 -0
  8. package/_cjs/Emailer/service.cjs.map +1 -0
  9. package/_cjs/Emailer.cjs.map +1 -0
  10. package/_cjs/{services/MainFiberSet.cjs → MainFiberSet.cjs} +1 -1
  11. package/_cjs/MainFiberSet.cjs.map +1 -0
  12. package/_cjs/{services → Model}/Repository/ext.cjs +1 -1
  13. package/_cjs/Model/Repository/ext.cjs.map +1 -0
  14. package/_cjs/{services → Model}/Repository/legacy.cjs +2 -3
  15. package/_cjs/Model/Repository/legacy.cjs.map +1 -0
  16. package/_cjs/{services/RepositoryBase.cjs → Model/Repository/makeRepo.cjs} +10 -12
  17. package/_cjs/Model/Repository/makeRepo.cjs.map +1 -0
  18. package/_cjs/Model/Repository/service.cjs.map +1 -0
  19. package/_cjs/{services → Model}/Repository.cjs +12 -10
  20. package/_cjs/Model/Repository.cjs.map +1 -0
  21. package/_cjs/Model/dsl.cjs.map +1 -0
  22. package/_cjs/Model/filter/filterApi.cjs +6 -0
  23. package/_cjs/Model/filter/filterApi.cjs.map +1 -0
  24. package/_cjs/Model/filter/types/errors.cjs.map +1 -0
  25. package/_cjs/Model/filter/types/fields.cjs.map +1 -0
  26. package/_cjs/Model/filter/types/path/common.cjs.map +1 -0
  27. package/_cjs/Model/filter/types/path/eager.cjs.map +1 -0
  28. package/_cjs/Model/filter/types/path/index.cjs.map +1 -0
  29. package/_cjs/Model/filter/types/utils.cjs.map +1 -0
  30. package/_cjs/Model/filter/types/validator.cjs.map +1 -0
  31. package/_cjs/Model/filter/types.cjs.map +1 -0
  32. package/_cjs/Model/query/dsl.cjs.map +1 -0
  33. package/_cjs/Model/query/new-kid-interpreter.cjs.map +1 -0
  34. package/_cjs/Model/query.cjs.map +1 -0
  35. package/_cjs/Model.cjs +23 -2
  36. package/_cjs/Model.cjs.map +1 -1
  37. package/_cjs/{services/Operations.cjs → Operations.cjs} +3 -3
  38. package/_cjs/Operations.cjs.map +1 -0
  39. package/_cjs/{services/OperationsRepo.cjs → OperationsRepo.cjs} +2 -2
  40. package/_cjs/OperationsRepo.cjs.map +1 -0
  41. package/_cjs/{services/QueueMaker → QueueMaker}/SQLQueue.cjs +3 -3
  42. package/_cjs/QueueMaker/SQLQueue.cjs.map +1 -0
  43. package/_cjs/QueueMaker/errors.cjs.map +1 -0
  44. package/_cjs/{services/QueueMaker → QueueMaker}/memQueue.cjs +2 -2
  45. package/_cjs/QueueMaker/memQueue.cjs.map +1 -0
  46. package/_cjs/{services/QueueMaker → QueueMaker}/sbqueue.cjs +2 -2
  47. package/_cjs/QueueMaker/sbqueue.cjs.map +1 -0
  48. package/_cjs/{services/QueueMaker → QueueMaker}/service.cjs +1 -1
  49. package/_cjs/QueueMaker/service.cjs.map +1 -0
  50. package/_cjs/{services/RequestFiberSet.cjs → RequestFiberSet.cjs} +2 -2
  51. package/_cjs/RequestFiberSet.cjs.map +1 -0
  52. package/_cjs/Store/ContextMapContainer.cjs.map +1 -0
  53. package/_cjs/{services/Store → Store}/Cosmos/query.cjs +1 -1
  54. package/_cjs/Store/Cosmos/query.cjs.map +1 -0
  55. package/_cjs/{services/Store → Store}/Cosmos.cjs +2 -2
  56. package/_cjs/Store/Cosmos.cjs.map +1 -0
  57. package/_cjs/{services/Store → Store}/Disk.cjs +1 -1
  58. package/_cjs/Store/Disk.cjs.map +1 -0
  59. package/_cjs/{services/Store → Store}/Memory.cjs +1 -1
  60. package/_cjs/Store/Memory.cjs.map +1 -0
  61. package/_cjs/Store/codeFilter.cjs.map +1 -0
  62. package/_cjs/Store/index.cjs.map +1 -0
  63. package/_cjs/Store/service.cjs.map +1 -0
  64. package/_cjs/{services/Store → Store}/utils.cjs +1 -1
  65. package/_cjs/Store/utils.cjs.map +1 -0
  66. package/_cjs/Store.cjs.map +1 -0
  67. package/_cjs/adapters/SQL/Model.cjs.map +1 -0
  68. package/_cjs/adapters/SQL.cjs.map +1 -0
  69. package/_cjs/adapters/ServiceBus.cjs.map +1 -0
  70. package/_cjs/adapters/cosmos-client.cjs.map +1 -0
  71. package/_cjs/adapters/index.cjs.map +1 -0
  72. package/_cjs/adapters/logger.cjs.map +1 -0
  73. package/_cjs/adapters/memQueue.cjs.map +1 -0
  74. package/_cjs/adapters/mongo-client.cjs.map +1 -0
  75. package/_cjs/adapters/redis-client.cjs.map +1 -0
  76. package/_cjs/api/setupRequest.cjs +2 -2
  77. package/_cjs/arbs.cjs.map +1 -0
  78. package/_cjs/logger/shared.cjs +1 -1
  79. package/_cjs/logger/shared.cjs.map +1 -1
  80. package/_cjs/test.cjs +1 -1
  81. package/dist/CUPS.d.ts.map +1 -0
  82. package/dist/CUPS.js +116 -0
  83. package/dist/Emailer/Sendgrid.d.ts.map +1 -0
  84. package/dist/Emailer/Sendgrid.js +99 -0
  85. package/dist/Emailer/fake.d.ts.map +1 -0
  86. package/dist/Emailer/fake.js +18 -0
  87. package/dist/{services/Emailer → Emailer}/service.d.ts +1 -1
  88. package/dist/Emailer/service.d.ts.map +1 -0
  89. package/dist/{services/Emailer → Emailer}/service.js +1 -1
  90. package/dist/Emailer.d.ts.map +1 -0
  91. package/dist/{services/Emailer.js → Emailer.js} +1 -1
  92. package/dist/MainFiberSet.d.ts.map +1 -0
  93. package/dist/MainFiberSet.js +54 -0
  94. package/dist/{services → Model}/Repository/ext.d.ts +12 -12
  95. package/dist/Model/Repository/ext.d.ts.map +1 -0
  96. package/dist/Model/Repository/ext.js +61 -0
  97. package/dist/{services → Model}/Repository/legacy.d.ts +54 -54
  98. package/dist/Model/Repository/legacy.d.ts.map +1 -0
  99. package/dist/Model/Repository/legacy.js +123 -0
  100. package/dist/{services/RepositoryBase.d.ts → Model/Repository/makeRepo.d.ts} +22 -22
  101. package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
  102. package/dist/Model/Repository/makeRepo.js +254 -0
  103. package/dist/{services → Model}/Repository/service.d.ts +8 -8
  104. package/dist/Model/Repository/service.d.ts.map +1 -0
  105. package/dist/{services → Model}/Repository/service.js +1 -1
  106. package/dist/{services → Model}/Repository.d.ts +1 -1
  107. package/dist/Model/Repository.d.ts.map +1 -0
  108. package/dist/Model/Repository.js +5 -0
  109. package/dist/Model/dsl.d.ts.map +1 -0
  110. package/dist/Model/dsl.js +46 -0
  111. package/dist/{services/Store/filterApi/query.d.ts → Model/filter/filterApi.d.ts} +1 -1
  112. package/dist/Model/filter/filterApi.d.ts.map +1 -0
  113. package/dist/Model/filter/filterApi.js +2 -0
  114. package/dist/Model/filter/types/errors.d.ts.map +1 -0
  115. package/dist/{filter → Model/filter}/types/errors.js +1 -1
  116. package/dist/Model/filter/types/fields.d.ts.map +1 -0
  117. package/dist/{filter → Model/filter}/types/fields.js +1 -1
  118. package/dist/Model/filter/types/path/common.d.ts.map +1 -0
  119. package/dist/{filter → Model/filter}/types/path/common.js +1 -1
  120. package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
  121. package/dist/{filter → Model/filter}/types/path/eager.js +1 -1
  122. package/dist/Model/filter/types/path/index.d.ts.map +1 -0
  123. package/dist/{filter → Model/filter}/types/path/index.js +1 -1
  124. package/dist/Model/filter/types/utils.d.ts.map +1 -0
  125. package/dist/{filter → Model/filter}/types/utils.js +1 -1
  126. package/dist/Model/filter/types/validator.d.ts.map +1 -0
  127. package/dist/{filter → Model/filter}/types/validator.js +1 -1
  128. package/dist/Model/filter/types.d.ts.map +1 -0
  129. package/dist/{filter → Model/filter}/types.js +1 -1
  130. package/dist/{services → Model}/query/dsl.d.ts +6 -6
  131. package/dist/Model/query/dsl.d.ts.map +1 -0
  132. package/dist/Model/query/dsl.js +95 -0
  133. package/dist/{services → Model}/query/new-kid-interpreter.d.ts +4 -4
  134. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
  135. package/dist/Model/query/new-kid-interpreter.js +133 -0
  136. package/dist/Model/query.d.ts.map +1 -0
  137. package/dist/{services → Model}/query.js +1 -1
  138. package/dist/Model.d.ts +3 -1
  139. package/dist/Model.d.ts.map +1 -1
  140. package/dist/Model.js +4 -2
  141. package/dist/{services/Operations.d.ts → Operations.d.ts} +3 -3
  142. package/dist/Operations.d.ts.map +1 -0
  143. package/dist/Operations.js +102 -0
  144. package/dist/{services/OperationsRepo.d.ts → OperationsRepo.d.ts} +1 -1
  145. package/dist/OperationsRepo.d.ts.map +1 -0
  146. package/dist/OperationsRepo.js +14 -0
  147. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -0
  148. package/dist/QueueMaker/SQLQueue.js +136 -0
  149. package/dist/QueueMaker/errors.d.ts.map +1 -0
  150. package/dist/QueueMaker/errors.js +20 -0
  151. package/dist/QueueMaker/memQueue.d.ts.map +1 -0
  152. package/dist/QueueMaker/memQueue.js +78 -0
  153. package/dist/QueueMaker/sbqueue.d.ts.map +1 -0
  154. package/dist/QueueMaker/sbqueue.js +102 -0
  155. package/dist/{services/QueueMaker → QueueMaker}/service.d.ts +1 -1
  156. package/dist/QueueMaker/service.d.ts.map +1 -0
  157. package/dist/QueueMaker/service.js +4 -0
  158. package/dist/RequestFiberSet.d.ts.map +1 -0
  159. package/dist/RequestFiberSet.js +79 -0
  160. package/dist/Store/ContextMapContainer.d.ts.map +1 -0
  161. package/dist/{services/Store → Store}/ContextMapContainer.js +1 -1
  162. package/dist/{services/Store → Store}/Cosmos/query.d.ts +1 -1
  163. package/dist/Store/Cosmos/query.d.ts.map +1 -0
  164. package/dist/Store/Cosmos/query.js +164 -0
  165. package/dist/Store/Cosmos.d.ts.map +1 -0
  166. package/dist/Store/Cosmos.js +258 -0
  167. package/dist/Store/Disk.d.ts.map +1 -0
  168. package/dist/Store/Disk.js +109 -0
  169. package/dist/Store/Memory.d.ts.map +1 -0
  170. package/dist/Store/Memory.js +170 -0
  171. package/dist/{services/Store → Store}/codeFilter.d.ts +1 -1
  172. package/dist/Store/codeFilter.d.ts.map +1 -0
  173. package/dist/Store/codeFilter.js +117 -0
  174. package/dist/Store/index.d.ts.map +1 -0
  175. package/dist/Store/index.js +28 -0
  176. package/dist/{services/Store → Store}/service.d.ts +5 -5
  177. package/dist/Store/service.d.ts.map +1 -0
  178. package/dist/{services/Store → Store}/service.js +1 -1
  179. package/dist/{services/Store → Store}/utils.d.ts +1 -1
  180. package/dist/Store/utils.d.ts.map +1 -0
  181. package/dist/Store/utils.js +44 -0
  182. package/dist/Store.d.ts.map +1 -0
  183. package/dist/{services/Store.js → Store.js} +1 -1
  184. package/dist/{services/adapters → adapters}/SQL/Model.d.ts +23 -23
  185. package/dist/adapters/SQL/Model.d.ts.map +1 -0
  186. package/dist/adapters/SQL/Model.js +508 -0
  187. package/dist/adapters/SQL.d.ts.map +1 -0
  188. package/dist/{services/adapters → adapters}/SQL.js +1 -1
  189. package/dist/adapters/ServiceBus.d.ts.map +1 -0
  190. package/dist/adapters/ServiceBus.js +73 -0
  191. package/dist/adapters/cosmos-client.d.ts.map +1 -0
  192. package/dist/adapters/cosmos-client.js +8 -0
  193. package/dist/{services/adapters → adapters}/index.d.ts.map +1 -1
  194. package/dist/{services/adapters → adapters}/index.js +1 -1
  195. package/dist/adapters/logger.d.ts.map +1 -0
  196. package/dist/{services/adapters → adapters}/logger.js +1 -1
  197. package/dist/adapters/memQueue.d.ts.map +1 -0
  198. package/dist/adapters/memQueue.js +24 -0
  199. package/dist/adapters/mongo-client.d.ts.map +1 -0
  200. package/dist/adapters/mongo-client.js +12 -0
  201. package/dist/adapters/redis-client.d.ts.map +1 -0
  202. package/dist/adapters/redis-client.js +93 -0
  203. package/dist/api/setupRequest.js +3 -3
  204. package/dist/arbs.d.ts.map +1 -0
  205. package/dist/arbs.js +21 -0
  206. package/dist/logger/shared.js +2 -2
  207. package/dist/test.d.ts +1 -1
  208. package/dist/test.d.ts.map +1 -1
  209. package/dist/test.js +3 -3
  210. package/examples/query.ts +3 -3
  211. package/package.json +352 -362
  212. package/src/{services/CUPS.ts → CUPS.ts} +1 -1
  213. package/src/{services/Emailer → Emailer}/Sendgrid.ts +1 -1
  214. package/src/{services/Emailer → Emailer}/fake.ts +1 -1
  215. package/src/{services/MainFiberSet.ts → MainFiberSet.ts} +1 -1
  216. package/src/{services → Model}/Repository/ext.ts +23 -11
  217. package/src/{services → Model}/Repository/legacy.ts +76 -49
  218. package/src/{services/RepositoryBase.ts → Model/Repository/makeRepo.ts} +40 -38
  219. package/src/{services → Model}/Repository/service.ts +9 -8
  220. package/src/{services → Model}/Repository.ts +1 -1
  221. package/src/{services → Model}/query/dsl.ts +24 -6
  222. package/src/{services → Model}/query/new-kid-interpreter.ts +3 -3
  223. package/src/Model.ts +3 -1
  224. package/src/{services/Operations.ts → Operations.ts} +3 -3
  225. package/src/{services/OperationsRepo.ts → OperationsRepo.ts} +1 -1
  226. package/src/{services/QueueMaker → QueueMaker}/SQLQueue.ts +4 -4
  227. package/src/{services/QueueMaker → QueueMaker}/memQueue.ts +2 -2
  228. package/src/{services/QueueMaker → QueueMaker}/sbqueue.ts +2 -2
  229. package/src/{services/QueueMaker → QueueMaker}/service.ts +1 -1
  230. package/src/{services/RequestFiberSet.ts → RequestFiberSet.ts} +2 -2
  231. package/src/{services/Store → Store}/Cosmos/query.ts +2 -2
  232. package/src/{services/Store → Store}/Cosmos.ts +2 -2
  233. package/src/{services/Store → Store}/Disk.ts +1 -1
  234. package/src/{services/Store → Store}/Memory.ts +1 -1
  235. package/src/{services/Store → Store}/codeFilter.ts +1 -1
  236. package/src/{services/Store → Store}/service.ts +4 -4
  237. package/src/{services/Store → Store}/utils.ts +1 -1
  238. package/src/api/setupRequest.ts +2 -2
  239. package/src/logger/shared.ts +1 -1
  240. package/src/test.ts +2 -2
  241. package/test/dist/query.test.d.ts.map +1 -1
  242. package/test/query.test.ts +32 -5
  243. package/_cjs/_ext/Array.cjs +0 -22
  244. package/_cjs/_ext/Array.cjs.map +0 -1
  245. package/_cjs/filter/types/errors.cjs.map +0 -1
  246. package/_cjs/filter/types/fields.cjs.map +0 -1
  247. package/_cjs/filter/types/path/common.cjs.map +0 -1
  248. package/_cjs/filter/types/path/eager.cjs.map +0 -1
  249. package/_cjs/filter/types/path/index.cjs.map +0 -1
  250. package/_cjs/filter/types/utils.cjs.map +0 -1
  251. package/_cjs/filter/types/validator.cjs.map +0 -1
  252. package/_cjs/filter/types.cjs.map +0 -1
  253. package/_cjs/services/CUPS.cjs.map +0 -1
  254. package/_cjs/services/Emailer/Sendgrid.cjs.map +0 -1
  255. package/_cjs/services/Emailer/fake.cjs.map +0 -1
  256. package/_cjs/services/Emailer/service.cjs.map +0 -1
  257. package/_cjs/services/Emailer.cjs.map +0 -1
  258. package/_cjs/services/MainFiberSet.cjs.map +0 -1
  259. package/_cjs/services/Operations.cjs.map +0 -1
  260. package/_cjs/services/OperationsRepo.cjs.map +0 -1
  261. package/_cjs/services/QueueMaker/SQLQueue.cjs.map +0 -1
  262. package/_cjs/services/QueueMaker/errors.cjs.map +0 -1
  263. package/_cjs/services/QueueMaker/memQueue.cjs.map +0 -1
  264. package/_cjs/services/QueueMaker/sbqueue.cjs.map +0 -1
  265. package/_cjs/services/QueueMaker/service.cjs.map +0 -1
  266. package/_cjs/services/Repository/dsl.cjs.map +0 -1
  267. package/_cjs/services/Repository/ext.cjs.map +0 -1
  268. package/_cjs/services/Repository/legacy.cjs.map +0 -1
  269. package/_cjs/services/Repository/service.cjs.map +0 -1
  270. package/_cjs/services/Repository.cjs.map +0 -1
  271. package/_cjs/services/RepositoryBase.cjs.map +0 -1
  272. package/_cjs/services/RequestFiberSet.cjs.map +0 -1
  273. package/_cjs/services/Store/ContextMapContainer.cjs.map +0 -1
  274. package/_cjs/services/Store/Cosmos/query.cjs.map +0 -1
  275. package/_cjs/services/Store/Cosmos.cjs.map +0 -1
  276. package/_cjs/services/Store/Disk.cjs.map +0 -1
  277. package/_cjs/services/Store/Memory.cjs.map +0 -1
  278. package/_cjs/services/Store/codeFilter.cjs.map +0 -1
  279. package/_cjs/services/Store/filterApi/query.cjs +0 -6
  280. package/_cjs/services/Store/filterApi/query.cjs.map +0 -1
  281. package/_cjs/services/Store/index.cjs.map +0 -1
  282. package/_cjs/services/Store/service.cjs.map +0 -1
  283. package/_cjs/services/Store/utils.cjs.map +0 -1
  284. package/_cjs/services/Store.cjs.map +0 -1
  285. package/_cjs/services/adapters/SQL/Model.cjs.map +0 -1
  286. package/_cjs/services/adapters/SQL.cjs.map +0 -1
  287. package/_cjs/services/adapters/ServiceBus.cjs.map +0 -1
  288. package/_cjs/services/adapters/cosmos-client.cjs.map +0 -1
  289. package/_cjs/services/adapters/index.cjs.map +0 -1
  290. package/_cjs/services/adapters/logger.cjs.map +0 -1
  291. package/_cjs/services/adapters/memQueue.cjs.map +0 -1
  292. package/_cjs/services/adapters/mongo-client.cjs.map +0 -1
  293. package/_cjs/services/adapters/redis-client.cjs.map +0 -1
  294. package/_cjs/services/query/dsl.cjs.map +0 -1
  295. package/_cjs/services/query/new-kid-interpreter.cjs.map +0 -1
  296. package/_cjs/services/query.cjs.map +0 -1
  297. package/_cjs/test/arbs.cjs.map +0 -1
  298. package/dist/_ext/Array.d.ts +0 -13
  299. package/dist/_ext/Array.d.ts.map +0 -1
  300. package/dist/_ext/Array.js +0 -15
  301. package/dist/filter/types/errors.d.ts.map +0 -1
  302. package/dist/filter/types/fields.d.ts.map +0 -1
  303. package/dist/filter/types/path/common.d.ts.map +0 -1
  304. package/dist/filter/types/path/eager.d.ts.map +0 -1
  305. package/dist/filter/types/path/index.d.ts.map +0 -1
  306. package/dist/filter/types/utils.d.ts.map +0 -1
  307. package/dist/filter/types/validator.d.ts.map +0 -1
  308. package/dist/filter/types.d.ts.map +0 -1
  309. package/dist/services/CUPS.d.ts.map +0 -1
  310. package/dist/services/CUPS.js +0 -116
  311. package/dist/services/Emailer/Sendgrid.d.ts.map +0 -1
  312. package/dist/services/Emailer/Sendgrid.js +0 -99
  313. package/dist/services/Emailer/fake.d.ts.map +0 -1
  314. package/dist/services/Emailer/fake.js +0 -18
  315. package/dist/services/Emailer/service.d.ts.map +0 -1
  316. package/dist/services/Emailer.d.ts.map +0 -1
  317. package/dist/services/MainFiberSet.d.ts.map +0 -1
  318. package/dist/services/MainFiberSet.js +0 -54
  319. package/dist/services/Operations.d.ts.map +0 -1
  320. package/dist/services/Operations.js +0 -102
  321. package/dist/services/OperationsRepo.d.ts.map +0 -1
  322. package/dist/services/OperationsRepo.js +0 -14
  323. package/dist/services/QueueMaker/SQLQueue.d.ts.map +0 -1
  324. package/dist/services/QueueMaker/SQLQueue.js +0 -136
  325. package/dist/services/QueueMaker/errors.d.ts.map +0 -1
  326. package/dist/services/QueueMaker/errors.js +0 -20
  327. package/dist/services/QueueMaker/memQueue.d.ts.map +0 -1
  328. package/dist/services/QueueMaker/memQueue.js +0 -78
  329. package/dist/services/QueueMaker/sbqueue.d.ts.map +0 -1
  330. package/dist/services/QueueMaker/sbqueue.js +0 -102
  331. package/dist/services/QueueMaker/service.d.ts.map +0 -1
  332. package/dist/services/QueueMaker/service.js +0 -4
  333. package/dist/services/Repository/dsl.d.ts.map +0 -1
  334. package/dist/services/Repository/dsl.js +0 -46
  335. package/dist/services/Repository/ext.d.ts.map +0 -1
  336. package/dist/services/Repository/ext.js +0 -61
  337. package/dist/services/Repository/legacy.d.ts.map +0 -1
  338. package/dist/services/Repository/legacy.js +0 -124
  339. package/dist/services/Repository/service.d.ts.map +0 -1
  340. package/dist/services/Repository.d.ts.map +0 -1
  341. package/dist/services/Repository.js +0 -5
  342. package/dist/services/RepositoryBase.d.ts.map +0 -1
  343. package/dist/services/RepositoryBase.js +0 -256
  344. package/dist/services/RequestFiberSet.d.ts.map +0 -1
  345. package/dist/services/RequestFiberSet.js +0 -79
  346. package/dist/services/Store/ContextMapContainer.d.ts.map +0 -1
  347. package/dist/services/Store/Cosmos/query.d.ts.map +0 -1
  348. package/dist/services/Store/Cosmos/query.js +0 -164
  349. package/dist/services/Store/Cosmos.d.ts.map +0 -1
  350. package/dist/services/Store/Cosmos.js +0 -258
  351. package/dist/services/Store/Disk.d.ts.map +0 -1
  352. package/dist/services/Store/Disk.js +0 -109
  353. package/dist/services/Store/Memory.d.ts.map +0 -1
  354. package/dist/services/Store/Memory.js +0 -170
  355. package/dist/services/Store/codeFilter.d.ts.map +0 -1
  356. package/dist/services/Store/codeFilter.js +0 -117
  357. package/dist/services/Store/filterApi/query.d.ts.map +0 -1
  358. package/dist/services/Store/filterApi/query.js +0 -2
  359. package/dist/services/Store/index.d.ts.map +0 -1
  360. package/dist/services/Store/index.js +0 -28
  361. package/dist/services/Store/service.d.ts.map +0 -1
  362. package/dist/services/Store/utils.d.ts.map +0 -1
  363. package/dist/services/Store/utils.js +0 -44
  364. package/dist/services/Store.d.ts.map +0 -1
  365. package/dist/services/adapters/SQL/Model.d.ts.map +0 -1
  366. package/dist/services/adapters/SQL/Model.js +0 -508
  367. package/dist/services/adapters/SQL.d.ts.map +0 -1
  368. package/dist/services/adapters/ServiceBus.d.ts.map +0 -1
  369. package/dist/services/adapters/ServiceBus.js +0 -73
  370. package/dist/services/adapters/cosmos-client.d.ts.map +0 -1
  371. package/dist/services/adapters/cosmos-client.js +0 -8
  372. package/dist/services/adapters/logger.d.ts.map +0 -1
  373. package/dist/services/adapters/memQueue.d.ts.map +0 -1
  374. package/dist/services/adapters/memQueue.js +0 -24
  375. package/dist/services/adapters/mongo-client.d.ts.map +0 -1
  376. package/dist/services/adapters/mongo-client.js +0 -12
  377. package/dist/services/adapters/redis-client.d.ts.map +0 -1
  378. package/dist/services/adapters/redis-client.js +0 -93
  379. package/dist/services/query/dsl.d.ts.map +0 -1
  380. package/dist/services/query/dsl.js +0 -95
  381. package/dist/services/query/new-kid-interpreter.d.ts.map +0 -1
  382. package/dist/services/query/new-kid-interpreter.js +0 -133
  383. package/dist/services/query.d.ts.map +0 -1
  384. package/dist/test/arbs.d.ts.map +0 -1
  385. package/dist/test/arbs.js +0 -21
  386. package/src/_ext/Array.ts +0 -22
  387. /package/_cjs/{services/Emailer → Emailer}/service.cjs +0 -0
  388. /package/_cjs/{services/Emailer.cjs → Emailer.cjs} +0 -0
  389. /package/_cjs/{services → Model}/Repository/service.cjs +0 -0
  390. /package/_cjs/{services/Repository → Model}/dsl.cjs +0 -0
  391. /package/_cjs/{filter → Model/filter}/types/errors.cjs +0 -0
  392. /package/_cjs/{filter → Model/filter}/types/fields.cjs +0 -0
  393. /package/_cjs/{filter → Model/filter}/types/path/common.cjs +0 -0
  394. /package/_cjs/{filter → Model/filter}/types/path/eager.cjs +0 -0
  395. /package/_cjs/{filter → Model/filter}/types/path/index.cjs +0 -0
  396. /package/_cjs/{filter → Model/filter}/types/utils.cjs +0 -0
  397. /package/_cjs/{filter → Model/filter}/types/validator.cjs +0 -0
  398. /package/_cjs/{filter → Model/filter}/types.cjs +0 -0
  399. /package/_cjs/{services → Model}/query/dsl.cjs +0 -0
  400. /package/_cjs/{services → Model}/query/new-kid-interpreter.cjs +0 -0
  401. /package/_cjs/{services → Model}/query.cjs +0 -0
  402. /package/_cjs/{services/QueueMaker → QueueMaker}/errors.cjs +0 -0
  403. /package/_cjs/{services/Store → Store}/ContextMapContainer.cjs +0 -0
  404. /package/_cjs/{services/Store → Store}/codeFilter.cjs +0 -0
  405. /package/_cjs/{services/Store → Store}/index.cjs +0 -0
  406. /package/_cjs/{services/Store → Store}/service.cjs +0 -0
  407. /package/_cjs/{services/Store.cjs → Store.cjs} +0 -0
  408. /package/_cjs/{services/adapters → adapters}/SQL/Model.cjs +0 -0
  409. /package/_cjs/{services/adapters → adapters}/SQL.cjs +0 -0
  410. /package/_cjs/{services/adapters → adapters}/ServiceBus.cjs +0 -0
  411. /package/_cjs/{services/adapters → adapters}/cosmos-client.cjs +0 -0
  412. /package/_cjs/{services/adapters → adapters}/index.cjs +0 -0
  413. /package/_cjs/{services/adapters → adapters}/logger.cjs +0 -0
  414. /package/_cjs/{services/adapters → adapters}/memQueue.cjs +0 -0
  415. /package/_cjs/{services/adapters → adapters}/mongo-client.cjs +0 -0
  416. /package/_cjs/{services/adapters → adapters}/redis-client.cjs +0 -0
  417. /package/_cjs/{test/arbs.cjs → arbs.cjs} +0 -0
  418. /package/dist/{services/CUPS.d.ts → CUPS.d.ts} +0 -0
  419. /package/dist/{services/Emailer → Emailer}/Sendgrid.d.ts +0 -0
  420. /package/dist/{services/Emailer → Emailer}/fake.d.ts +0 -0
  421. /package/dist/{services/Emailer.d.ts → Emailer.d.ts} +0 -0
  422. /package/dist/{services/MainFiberSet.d.ts → MainFiberSet.d.ts} +0 -0
  423. /package/dist/{services/Repository → Model}/dsl.d.ts +0 -0
  424. /package/dist/{filter → Model/filter}/types/errors.d.ts +0 -0
  425. /package/dist/{filter → Model/filter}/types/fields.d.ts +0 -0
  426. /package/dist/{filter → Model/filter}/types/path/common.d.ts +0 -0
  427. /package/dist/{filter → Model/filter}/types/path/eager.d.ts +0 -0
  428. /package/dist/{filter → Model/filter}/types/path/index.d.ts +0 -0
  429. /package/dist/{filter → Model/filter}/types/utils.d.ts +0 -0
  430. /package/dist/{filter → Model/filter}/types/validator.d.ts +0 -0
  431. /package/dist/{filter → Model/filter}/types.d.ts +0 -0
  432. /package/dist/{services → Model}/query.d.ts +0 -0
  433. /package/dist/{services/QueueMaker → QueueMaker}/SQLQueue.d.ts +0 -0
  434. /package/dist/{services/QueueMaker → QueueMaker}/errors.d.ts +0 -0
  435. /package/dist/{services/QueueMaker → QueueMaker}/memQueue.d.ts +0 -0
  436. /package/dist/{services/QueueMaker → QueueMaker}/sbqueue.d.ts +0 -0
  437. /package/dist/{services/RequestFiberSet.d.ts → RequestFiberSet.d.ts} +0 -0
  438. /package/dist/{services/Store → Store}/ContextMapContainer.d.ts +0 -0
  439. /package/dist/{services/Store → Store}/Cosmos.d.ts +0 -0
  440. /package/dist/{services/Store → Store}/Disk.d.ts +0 -0
  441. /package/dist/{services/Store → Store}/Memory.d.ts +0 -0
  442. /package/dist/{services/Store → Store}/index.d.ts +0 -0
  443. /package/dist/{services/Store.d.ts → Store.d.ts} +0 -0
  444. /package/dist/{services/adapters → adapters}/SQL.d.ts +0 -0
  445. /package/dist/{services/adapters → adapters}/ServiceBus.d.ts +0 -0
  446. /package/dist/{services/adapters → adapters}/cosmos-client.d.ts +0 -0
  447. /package/dist/{services/adapters → adapters}/index.d.ts +0 -0
  448. /package/dist/{services/adapters → adapters}/logger.d.ts +0 -0
  449. /package/dist/{services/adapters → adapters}/memQueue.d.ts +0 -0
  450. /package/dist/{services/adapters → adapters}/mongo-client.d.ts +0 -0
  451. /package/dist/{services/adapters → adapters}/redis-client.d.ts +0 -0
  452. /package/dist/{test/arbs.d.ts → arbs.d.ts} +0 -0
  453. /package/src/{services/Emailer → Emailer}/service.ts +0 -0
  454. /package/src/{services/Emailer.ts → Emailer.ts} +0 -0
  455. /package/src/{services/Repository → Model}/dsl.ts +0 -0
  456. /package/src/{services/Store/filterApi/query.ts → Model/filter/filterApi.ts} +0 -0
  457. /package/src/{filter → Model/filter}/types/errors.ts +0 -0
  458. /package/src/{filter → Model/filter}/types/fields.ts +0 -0
  459. /package/src/{filter → Model/filter}/types/path/common.ts +0 -0
  460. /package/src/{filter → Model/filter}/types/path/eager.ts +0 -0
  461. /package/src/{filter → Model/filter}/types/path/index.ts +0 -0
  462. /package/src/{filter → Model/filter}/types/utils.ts +0 -0
  463. /package/src/{filter → Model/filter}/types/validator.ts +0 -0
  464. /package/src/{filter → Model/filter}/types.ts +0 -0
  465. /package/src/{services → Model}/query.ts +0 -0
  466. /package/src/{services/QueueMaker → QueueMaker}/errors.ts +0 -0
  467. /package/src/{services/Store → Store}/ContextMapContainer.ts +0 -0
  468. /package/src/{services/Store → Store}/index.test.ts.bak +0 -0
  469. /package/src/{services/Store → Store}/index.ts +0 -0
  470. /package/src/{services/Store.ts → Store.ts} +0 -0
  471. /package/src/{services/adapters → adapters}/SQL/Model.ts +0 -0
  472. /package/src/{services/adapters → adapters}/SQL.ts +0 -0
  473. /package/src/{services/adapters → adapters}/ServiceBus.ts +0 -0
  474. /package/src/{services/adapters → adapters}/cosmos-client.ts +0 -0
  475. /package/src/{services/adapters → adapters}/index.ts +0 -0
  476. /package/src/{services/adapters → adapters}/logger.ts +0 -0
  477. /package/src/{services/adapters → adapters}/memQueue.ts +0 -0
  478. /package/src/{services/adapters → adapters}/mongo-client.ts +0 -0
  479. /package/src/{services/adapters → adapters}/redis-client.ts +0 -0
  480. /package/src/{test/arbs.ts → arbs.ts} +0 -0
@@ -0,0 +1,136 @@
1
+ import { getRequestContext, setupRequestContext } from "@effect-app/infra/api/setupRequest";
2
+ import { reportNonInterruptedFailure } from "@effect-app/infra/QueueMaker/errors";
3
+ import { QueueMeta } from "@effect-app/infra/QueueMaker/service";
4
+ import { SqlClient } from "@effect/sql";
5
+ import { randomUUID } from "crypto";
6
+ import { subMinutes } from "date-fns";
7
+ import { Effect, Fiber, Option, S, Tracer } from "effect-app";
8
+ import { pretty } from "effect-app/utils";
9
+ import { SQLModel } from "../adapters/SQL.js";
10
+ import { InfraLogger } from "../logger.js";
11
+ export const QueueId = S.Number.pipe(S.brand("QueueId"));
12
+ // TODO: let the model track and Auto Generate versionColumn on every update instead
13
+ export function makeSQLQueue(queueName, queueDrainName, schema, drainSchema) {
14
+ return Effect.gen(function* () {
15
+ const base = {
16
+ id: SQLModel.Generated(QueueId),
17
+ meta: SQLModel.JsonFromString(QueueMeta),
18
+ name: S.NonEmptyString255,
19
+ createdAt: SQLModel.DateTimeInsert,
20
+ updatedAt: SQLModel.DateTimeUpdate,
21
+ // TODO: at+owner
22
+ processingAt: SQLModel.FieldOption(S.Date),
23
+ finishedAt: SQLModel.FieldOption(S.Date),
24
+ etag: S.String // TODO: use a SQLModel thing that auto updates it?
25
+ // TODO: record locking.. / optimistic locking
26
+ // rowVersion: SQLModel.DateTimeFromNumberWithNow
27
+ };
28
+ class Queue extends SQLModel.Class("Queue")({
29
+ body: SQLModel.JsonFromString(schema),
30
+ ...base
31
+ }) {
32
+ }
33
+ class Drain extends SQLModel.Class("Drain")({
34
+ body: SQLModel.JsonFromString(drainSchema),
35
+ ...base
36
+ }) {
37
+ }
38
+ const sql = yield* SqlClient.SqlClient;
39
+ const queueRepo = yield* SQLModel.makeRepository(Queue, {
40
+ tableName: "queue",
41
+ spanPrefix: "QueueRepo",
42
+ idColumn: "id",
43
+ versionColumn: "etag"
44
+ });
45
+ const drainRepo = yield* SQLModel.makeRepository(Drain, {
46
+ tableName: "queue",
47
+ spanPrefix: "DrainRepo",
48
+ idColumn: "id",
49
+ versionColumn: "etag"
50
+ });
51
+ const decodeDrain = S.decode(Drain);
52
+ const drain = Effect
53
+ .sync(() => subMinutes(new Date(), 15))
54
+ .pipe(Effect
55
+ .andThen((limit) => sql `SELECT *
56
+ FROM queue
57
+ WHERE name = ${queueDrainName} AND finishedAt IS NULL AND (processingAt IS NULL OR processingAt < ${limit.getTime()})
58
+ LIMIT 1`));
59
+ const q = {
60
+ offer: (body, meta) => Effect.gen(function* () {
61
+ yield* queueRepo.insertVoid(Queue.insert.make({
62
+ body,
63
+ meta,
64
+ name: queueName,
65
+ processingAt: Option.none(),
66
+ finishedAt: Option.none(),
67
+ etag: randomUUID()
68
+ }));
69
+ }),
70
+ take: Effect.gen(function* () {
71
+ while (true) {
72
+ const [first] = yield* drain.pipe(Effect.withTracerEnabled(false)); // disable sql tracer otherwise we spam it..
73
+ if (first) {
74
+ const dec = yield* decodeDrain(first);
75
+ const { createdAt, updatedAt, ...rest } = dec;
76
+ return yield* drainRepo.update(Drain.update.make({ ...rest, processingAt: Option.some(new Date()) }) // auto in lib , etag: randomUUID()
77
+ );
78
+ }
79
+ if (first)
80
+ return first;
81
+ yield* Effect.sleep(250);
82
+ }
83
+ }),
84
+ finish: ({ createdAt, updatedAt, ...q }) => drainRepo.updateVoid(Drain.update.make({ ...q, finishedAt: Option.some(new Date()) })) // auto in lib , etag: randomUUID()
85
+ };
86
+ return {
87
+ publish: (...messages) => Effect
88
+ .gen(function* () {
89
+ const requestContext = yield* getRequestContext;
90
+ return yield* Effect
91
+ .forEach(messages, (m) => q.offer(m, requestContext), {
92
+ discard: true
93
+ });
94
+ })
95
+ .pipe(Effect.withSpan("queue.publish: " + queueName, {
96
+ captureStackTrace: false,
97
+ kind: "producer",
98
+ attributes: { "message_tags": messages.map((_) => _._tag) }
99
+ })),
100
+ drain: (handleEvent, sessionId) => Effect.gen(function* () {
101
+ const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
102
+ const processMessage = (msg) => Effect
103
+ .succeed(msg)
104
+ .pipe(Effect
105
+ .flatMap(({ body, meta }) => {
106
+ let effect = InfraLogger
107
+ .logInfo(`[${queueDrainName}] Processing incoming message`)
108
+ .pipe(Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }), Effect.zipRight(handleEvent(body)), silenceAndReportError, (_) => setupRequestContext(_, meta), Effect
109
+ .withSpan(`queue.drain: ${queueDrainName}.${body._tag}`, {
110
+ captureStackTrace: false,
111
+ kind: "consumer",
112
+ attributes: {
113
+ "queue.name": queueDrainName,
114
+ "queue.sessionId": sessionId,
115
+ "queue.input": body
116
+ }
117
+ }));
118
+ if (meta.span) {
119
+ effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
120
+ }
121
+ return effect;
122
+ }));
123
+ return yield* q
124
+ .take
125
+ .pipe(Effect.flatMap((x) => processMessage(x).pipe(Effect.uninterruptible, Effect.fork, Effect.flatMap(Fiber.join), Effect.tap(q.finish(x)))), silenceAndReportError, Effect.withSpan(`queue.drain: ${queueDrainName}`, {
126
+ attributes: {
127
+ "queue.type": "sql",
128
+ "queue.name": queueDrainName,
129
+ "queue.sessionId": sessionId
130
+ }
131
+ }), Effect.forever);
132
+ })
133
+ };
134
+ });
135
+ }
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUXVldWVNYWtlci9TUUxRdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUVqRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7QUFHeEQsb0ZBQW9GO0FBQ3BGLE1BQU0sVUFBVSxZQUFZLENBTTFCLFNBQTRCLEVBQzVCLGNBQWlDLEVBQ2pDLE1BQTJCLEVBQzNCLFdBQTBDO0lBRTFDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUc7WUFDWCxFQUFFLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDL0IsSUFBSSxFQUFF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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAIhD,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iGACnD,CAAA;AAElC,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAEnE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAUrE;AAED,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACxE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,IAAI,CAAC,CAM1C"}
@@ -0,0 +1,20 @@
1
+ import { reportError } from "@effect-app/infra/errorReporter";
2
+ import { Cause, Effect, Exit } from "effect-app";
3
+ const reportQueueError_ = reportError("Queue");
4
+ export const reportQueueError = (cause, extras) => reportQueueError_(cause, extras);
5
+ export function reportNonInterruptedFailure(context) {
6
+ const report = reportNonInterruptedFailureCause(context);
7
+ return (inp) => inp.pipe(Effect.onExit(Exit.match({
8
+ onFailure: report,
9
+ onSuccess: () => Effect.void
10
+ })), Effect.exit);
11
+ }
12
+ export function reportNonInterruptedFailureCause(context) {
13
+ return (cause) => {
14
+ if (Cause.isInterrupted(cause)) {
15
+ return Effect.failCause(cause);
16
+ }
17
+ return reportQueueError(cause, context);
18
+ };
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1F1ZXVlTWFrZXIvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFaEQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7QUFFOUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBSSxLQUFlLEVBQUUsTUFBZ0MsRUFBRSxFQUFFLENBQ3ZGLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUVsQyxNQUFNLFVBQVUsMkJBQTJCLENBQUMsT0FBaUM7SUFDM0UsTUFBTSxNQUFNLEdBQUcsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEQsT0FBTyxDQUFVLEdBQW9CLEVBQWdDLEVBQUUsQ0FDckUsR0FBRyxDQUFDLElBQUksQ0FDTixNQUFNLENBQUMsTUFBTSxDQUNYLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDVCxTQUFTLEVBQUUsTUFBTTtRQUNqQixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUk7S0FDN0IsQ0FBQyxDQUNILEVBQ0QsTUFBTSxDQUFDLElBQUksQ0FDWixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxPQUFpQztJQUNoRixPQUFPLENBQUksS0FBZSxFQUFnQixFQUFFO1FBQzFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFxQixDQUFDLENBQUE7UUFDaEQsQ0FBQztRQUNELE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3pDLENBQUMsQ0FBQTtBQUNILENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAe,CAAC,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAMlD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5C,QAAQ,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACjD,IAAI,EACJ,SAAS,EAET,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;;YAkC9B,MAAM,EAAE,MAAM,eACP,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,cAC/C,MAAM;oBA8DzB"}
@@ -0,0 +1,78 @@
1
+ import { Tracer } from "effect";
2
+ import { Effect, Fiber, flow, S } from "effect-app";
3
+ import { pretty } from "effect-app/utils";
4
+ import { MemQueue } from "../adapters/memQueue.js";
5
+ import { getRequestContext, setupRequestContext } from "../api/setupRequest.js";
6
+ import { InfraLogger } from "../logger.js";
7
+ import { reportNonInterruptedFailure } from "./errors.js";
8
+ import { QueueMeta } from "./service.js";
9
+ /**
10
+ * @tsplus static QueueMaker.Ops makeMem
11
+ */
12
+ export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
13
+ return Effect.gen(function* () {
14
+ const mem = yield* MemQueue;
15
+ const q = yield* mem.getOrCreateQueue(queueName);
16
+ const qDrain = yield* mem.getOrCreateQueue(queueDrainName);
17
+ const wireSchema = S.Struct({ body: schema, meta: QueueMeta });
18
+ const drainW = S.Struct({ body: drainSchema, meta: QueueMeta });
19
+ const parseDrain = flow(S.decodeUnknown(drainW), Effect.orDie);
20
+ return {
21
+ publish: (...messages) => Effect
22
+ .gen(function* () {
23
+ const requestContext = yield* getRequestContext;
24
+ return yield* Effect
25
+ .forEach(messages, (m) =>
26
+ // we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
27
+ S.encode(wireSchema)({ body: m, meta: requestContext }).pipe(Effect.orDie, Effect
28
+ .andThen(JSON.stringify),
29
+ // .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
30
+ Effect.flatMap((_) => q.offer(_))), { discard: true });
31
+ })
32
+ .pipe(Effect.withSpan("queue.publish: " + queueName, {
33
+ captureStackTrace: false,
34
+ kind: "producer",
35
+ attributes: { "message_tags": messages.map((_) => _._tag) }
36
+ })),
37
+ drain: (handleEvent, sessionId) => Effect.gen(function* () {
38
+ const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
39
+ const processMessage = (msg) =>
40
+ // we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
41
+ Effect
42
+ .sync(() => JSON.parse(msg))
43
+ .pipe(Effect.flatMap(parseDrain), Effect.orDie, Effect
44
+ .flatMap(({ body, meta }) => {
45
+ let effect = InfraLogger
46
+ .logInfo(`[${queueDrainName}] Processing incoming message`)
47
+ .pipe(Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }), Effect.zipRight(handleEvent(body)), silenceAndReportError, (_) => setupRequestContext(_, meta), Effect
48
+ .withSpan(`queue.drain: ${queueDrainName}.${body._tag}`, {
49
+ captureStackTrace: false,
50
+ kind: "consumer",
51
+ attributes: {
52
+ "queue.name": queueDrainName,
53
+ "queue.sessionId": sessionId,
54
+ "queue.input": body
55
+ }
56
+ }));
57
+ if (meta.span) {
58
+ effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
59
+ }
60
+ return effect;
61
+ }));
62
+ return yield* qDrain
63
+ .take
64
+ .pipe(Effect.flatMap((x) => processMessage(x).pipe(Effect.uninterruptible, Effect.fork, Effect.flatMap(Fiber.join))),
65
+ // TODO: normally a failed item would be returned to the queue and retried up to X times.
66
+ // .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
67
+ silenceAndReportError, Effect.withSpan(`queue.drain: ${queueDrainName}`, {
68
+ attributes: {
69
+ "queue.type": "mem",
70
+ "queue.name": queueDrainName,
71
+ "queue.sessionId": sessionId
72
+ }
73
+ }), Effect.forever);
74
+ })
75
+ };
76
+ });
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUXVldWVNYWtlci9tZW1RdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzFDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN6RCxPQUFPLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV4RDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBTTFCLFNBQWlCLEVBQ2pCLGNBQXNCLEVBQ3RCLE1BQTJCLEVBQzNCLFdBQTBDO0lBRTFDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDekIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFBO1FBQzNCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUE7UUFFMUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxD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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/sbqueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAS,MAAM,EAAQ,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAIL,yBAAyB,EAE1B,MAAM,2BAA2B,CAAA;AAMlC;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1C,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,EACJ,SAAS,EAET,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;YAoB9B,MAAM,EAAE,MAAM,eACP,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,cAC/C,MAAM;;qFAqGzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wGAI1F"}
@@ -0,0 +1,102 @@
1
+ import { Tracer } from "effect";
2
+ import { Cause, Effect, flow, Layer, S } from "effect-app";
3
+ import { pretty } from "effect-app/utils";
4
+ import { LiveSender, LiveServiceBusClient, Sender, ServiceBusReceiverFactory, subscribe } from "../adapters/ServiceBus.js";
5
+ import { getRequestContext, setupRequestContext } from "../api/setupRequest.js";
6
+ import { InfraLogger } from "../logger.js";
7
+ import { reportNonInterruptedFailure, reportNonInterruptedFailureCause, reportQueueError } from "./errors.js";
8
+ import { QueueMeta } from "./service.js";
9
+ /**
10
+ * @tsplus static QueueMaker.Ops makeServiceBus
11
+ */
12
+ export function makeServiceBusQueue(queueName, queueDrainName, schema, drainSchema) {
13
+ const wireSchema = S.Struct({
14
+ body: schema,
15
+ meta: QueueMeta
16
+ });
17
+ const drainW = S.Struct({ body: drainSchema, meta: QueueMeta });
18
+ const parseDrain = flow(S.decodeUnknown(drainW), Effect.orDie);
19
+ return Effect.gen(function* () {
20
+ const s = yield* Sender;
21
+ const receiver = yield* ServiceBusReceiverFactory;
22
+ const silenceAndReportError = reportNonInterruptedFailure({ name: "ServiceBusQueue.drain." + queueDrainName });
23
+ const reportError = reportNonInterruptedFailureCause({ name: "ServiceBusQueue.drain." + queueDrainName });
24
+ // TODO: or do async?
25
+ // This will make sure that the host receives the error (MainFiberSet.join), who will then interrupt everything and commence a shutdown and restart of app
26
+ // const deferred = yield* Deferred.make<never, ServiceBusError | Error>()
27
+ return {
28
+ drain: (handleEvent, sessionId) => Effect
29
+ .gen(function* () {
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ function processMessage(messageBody) {
32
+ return Effect
33
+ .sync(() => JSON.parse(messageBody))
34
+ .pipe(Effect.flatMap((x) => parseDrain(x)), Effect.orDie, Effect
35
+ .flatMap(({ body, meta }) => {
36
+ let effect = InfraLogger
37
+ .logInfo(`[${queueDrainName}] Processing incoming message`)
38
+ .pipe(Effect.annotateLogs({
39
+ body: pretty(body),
40
+ meta: pretty(meta)
41
+ }), Effect.zipRight(handleEvent(body)), Effect.orDie)
42
+ // we silenceAndReportError here, so that the error is reported, and moves into the Exit.
43
+ .pipe(silenceAndReportError, (_) => setupRequestContext(_, meta), Effect
44
+ .withSpan(`queue.drain: ${queueDrainName}${sessionId ? `#${sessionId}` : ""}.${body._tag}`, {
45
+ captureStackTrace: false,
46
+ kind: "consumer",
47
+ attributes: {
48
+ "queue.name": queueDrainName,
49
+ "queue.sessionId": sessionId,
50
+ "queue.input": body
51
+ }
52
+ }));
53
+ if (meta.span) {
54
+ effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
55
+ }
56
+ return effect;
57
+ }), Effect
58
+ // we reportError here, so that we report the error only, and keep flowing
59
+ .tapErrorCause(reportError));
60
+ }
61
+ return yield* subscribe({
62
+ processMessage: (x) => processMessage(x.body).pipe(Effect.uninterruptible),
63
+ processError: (err) => reportQueueError(Cause.fail(err.error))
64
+ // Deferred.completeWith(
65
+ // deferred,
66
+ // reportFatalQueueError(Cause.fail(err.error))
67
+ // .pipe(Effect.andThen(Effect.fail(err.error)))
68
+ // )
69
+ }, sessionId)
70
+ .pipe(Effect.provideService(ServiceBusReceiverFactory, receiver));
71
+ })
72
+ // .pipe(Effect.andThen(Deferred.await(deferred).pipe(Effect.orDie))),
73
+ .pipe(Effect.andThen(Effect.never)),
74
+ publish: (...messages) => Effect
75
+ .gen(function* () {
76
+ const requestContext = yield* getRequestContext;
77
+ return yield* Effect
78
+ .promise((abortSignal) => s.sendMessages(messages.map((m) => ({
79
+ body: JSON.stringify(S.encodeSync(wireSchema)({
80
+ body: m,
81
+ meta: requestContext
82
+ })),
83
+ messageId: m.id, /* correllationid: requestId */
84
+ contentType: "application/json",
85
+ sessionId: "sessionId" in m ? m.sessionId : undefined
86
+ })), { abortSignal }));
87
+ })
88
+ .pipe(Effect.withSpan("queue.publish: " + queueName, {
89
+ captureStackTrace: false,
90
+ kind: "producer",
91
+ attributes: { "message_tags": messages.map((_) => _._tag) }
92
+ }))
93
+ };
94
+ });
95
+ }
96
+ /**
97
+ * @tsplus static QueueMaker.Ops makeServiceBusLayers
98
+ */
99
+ export function makeServiceBusLayers(url, queueName, queueDrainName) {
100
+ return Layer.merge(ServiceBusReceiverFactory.Live(queueDrainName), LiveSender(queueName)).pipe(Layer.provide(LiveServiceBusClient(url)));
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9RdWV1ZU1ha2VyL3NicXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxFQUNMLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLHlCQUF5QixFQUN6QixTQUFTLEVBQ1YsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzFDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxnQ0FBZ0MsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3RyxPQUFPLEVBQWtCLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV4RDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FNakMsU0FBaUIsRUFDakIsY0FBc0IsRUFDdEIsTUFBMkIsRUFDM0IsV0FBMEM7SUFFMUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLEVBQUUsTUFBTTtRQUNaLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQTtJQUNGLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxD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
@@ -1,5 +1,5 @@
1
1
  import type { Effect, NonEmptyReadonlyArray, Scope } from "effect-app";
2
- import { RequestContext } from "../../RequestContext.js";
2
+ import { RequestContext } from "../RequestContext.js";
3
3
  export interface QueueBase<Evt, DrainEvt> {
4
4
  drain: <DrainE, DrainR>(makeHandleEvent: (ks: DrainEvt) => Effect<void, DrainE, DrainR>, sessionId?: string) => Effect<never, never, Scope | DrainR>;
5
5
  publish: (...messages: NonEmptyReadonlyArray<Evt>) => Effect<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,WAAW,SAAS,CAAC,GAAG,EAAE,QAAQ;IACtC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EACpB,eAAe,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAC/D,SAAS,CAAC,EAAE,MAAM,KACf,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAA;IACzC,OAAO,EAAE,CACP,GAAG,QAAQ,EAAE,qBAAqB,CAAC,GAAG,CAAC,KACpC,MAAM,CAAC,IAAI,CAAC,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;CAAG;AACjC,eAAO,MAAM,UAAU,EAAE,aAAkB,CAAA;AAE3C,eAAO,MAAM,SAAS,uBAAiB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { RequestContext } from "../RequestContext.js";
2
+ export const QueueMaker = {};
3
+ export const QueueMeta = RequestContext;
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9RdWV1ZU1ha2VyL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBZ0JyRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEVBQUUsQ0FBQTtBQUUzQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFBIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestFiberSet.d.ts","sourceRoot":"","sources":["../src/RequestFiberSet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { Context, Effect, Fiber, FiberSet, Option } from "effect-app";
2
+ import { reportRequestError, reportUnknownRequestError } from "./api/reportError.js";
3
+ import { InfraLogger } from "./logger.js";
4
+ const getRootParentSpan = Effect.gen(function* () {
5
+ let span = yield* Effect.currentSpan.pipe(Effect.catchTag("NoSuchElementException", () => Effect.succeed(null)));
6
+ if (!span)
7
+ return span;
8
+ while (span._tag === "Span" && Option.isSome(span.parent)) {
9
+ span = span.parent.value;
10
+ }
11
+ return span;
12
+ });
13
+ export const setRootParentSpan = (self) => getRootParentSpan.pipe(Effect.andThen((span) => span ? Effect.withParentSpan(self, span) : self));
14
+ const make = Effect.gen(function* () {
15
+ const set = yield* FiberSet.make();
16
+ const add = (...fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
17
+ const addAll = (fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
18
+ const join = FiberSet.size(set).pipe(Effect.andThen((count) => InfraLogger.logInfo(`Joining ${count} current fibers on the RequestFiberSet`)), Effect.andThen(FiberSet.join(set)));
19
+ const run = FiberSet.run(set);
20
+ const register = (self) => self.pipe(Effect.fork, Effect.tap(add), Effect.andThen(Fiber.join));
21
+ // const waitUntilEmpty = Effect.gen(function*() {
22
+ // const currentSize = yield* FiberSet.size(set)
23
+ // if (currentSize === 0) {
24
+ // return
25
+ // }
26
+ // yield* Effect.logInfo("Waiting RequestFiberSet to be empty: " + currentSize)
27
+ // while ((yield* FiberSet.size(set)) > 0) yield* Effect.sleep("250 millis")
28
+ // yield* Effect.logDebug("RequestFiberSet is empty")
29
+ // })
30
+ // TODO: loop and interrupt all fibers in the set continuously?
31
+ const interrupt = Fiber.interruptAll(set);
32
+ /**
33
+ * Forks the effect into a new fiber attached to the RequestFiberSet scope. Because the
34
+ * new fiber isn't attached to the parent, when the fiber executing the
35
+ * returned effect terminates, the forked fiber will continue running.
36
+ * The fiber will be interrupted when the RequestFiberSet scope is closed.
37
+ *
38
+ * The parent span is set to the root span of the current fiber.
39
+ * Reports errors.
40
+ */
41
+ function forkDaemonReport(self) {
42
+ return self.pipe(reportRequestError, setRootParentSpan, Effect.uninterruptible, run);
43
+ }
44
+ /**
45
+ * Forks the effect into a new fiber attached to the RequestFiberSet scope. Because the
46
+ * new fiber isn't attached to the parent, when the fiber executing the
47
+ * returned effect terminates, the forked fiber will continue running.
48
+ * The fiber will be interrupted when the RequestFiberSet scope is closed.
49
+ *
50
+ * The parent span is set to the root span of the current fiber.
51
+ * Reports unexpected errors.
52
+ */
53
+ function forkDaemonReportUnexpected(self) {
54
+ return self
55
+ .pipe(reportUnknownRequestError, setRootParentSpan, Effect.uninterruptible, run);
56
+ }
57
+ return {
58
+ interrupt,
59
+ join,
60
+ run,
61
+ add,
62
+ addAll,
63
+ register,
64
+ forkDaemonReport,
65
+ forkDaemonReportUnexpected
66
+ };
67
+ });
68
+ /**
69
+ * Whenever you fork a fiber for a Request, and you want to prevent dependent services to close prematurely on interruption,
70
+ * like the ServiceBus Sender, you should register these fibers in this FiberSet.
71
+ */
72
+ export class RequestFiberSet extends Context.TagMakeId("RequestFiberSet", make)() {
73
+ static Live = this.toLayerScoped();
74
+ static register = (self) => this.use((_) => _.register(self));
75
+ static run = (self) => this.use((_) => _.run(self));
76
+ static forkDaemonReport = (self) => this.use((_) => _.forkDaemonReport(self));
77
+ static forkDaemonReportUnexpected = (self) => this.use((_) => _.forkDaemonReportUnexpected(self));
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWVzdEZpYmVyU2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1JlcXVlc3RGaWJlclNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXpDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDNUMsSUFBSSxJQUFJLEdBQTBCLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUM5RCxNQUFNLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDdEUsQ0FBQTtJQUNELElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFELElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQTtJQUMxQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUMsQ0FBQTtBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQVUsSUFBcUIsRUFBRSxFQUFFLENBQ2xFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFj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QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNoRyxNQUFNLENBQVUsR0FBRyxHQUFHLENBQVUsSUFBcUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3RGLE1BQU0sQ0FBVSxnQkFBZ0IsR0FBRyxDQUFVLElBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2hILE1BQU0sQ0FBVSwwQkFBMEIsR0FBRyxDQUFVLElBQXFCLEVBQUUsRUFBRSxDQUM5RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMapContainer.d.ts","sourceRoot":"","sources":["../../src/Store/ContextMapContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAY,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;;;;AAUzC,qBAAa,yBAA0B,SAAQ,8BAA6C;CAAG;AAE/F,eAAO,MAAM,aAAa,6DAEzB,CAAA;AAED,eAAO,MAAM,eAAe,mCAA+E,CAAA"}
@@ -10,4 +10,4 @@ export class ContextMapNotStartedError extends Data.TaggedError("ContextMapNotSt
10
10
  }
11
11
  export const getContextMap = FiberRef.get(ContextMapContainer).pipe(Effect.filterOrFail((_) => _ !== "root", () => new ContextMapNotStartedError()));
12
12
  export const startContextMap = Effect.flatMap(ContextMap.make, (_) => FiberRef.set(ContextMapContainer, _));
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dE1hcENvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9TdG9yZS9Db250ZXh0TWFwQ29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLDZEQUE2RDtBQUM3RCwwQ0FBMEM7QUFDMUMseUVBQXlFO0FBQ3pFLDRHQUE0RztBQUM1Ryx5RkFBeUY7QUFFekYsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFzQixNQUFNLENBQUMsQ0FBQTtBQUU1RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztDQUFHO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUNqRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUkseUJBQXlCLEVBQUUsQ0FBQyxDQUNoRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBIn0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dE1hcENvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TdG9yZS9Db250ZXh0TWFwQ29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLDZEQUE2RDtBQUM3RCwwQ0FBMEM7QUFDMUMseUVBQXlFO0FBQ3pFLDRHQUE0RztBQUM1Ryx5RkFBeUY7QUFFekYsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFzQixNQUFNLENBQUMsQ0FBQTtBQUU1RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztDQUFHO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUNqRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUkseUJBQXlCLEVBQUUsQ0FBQyxDQUNoRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBIn0=
@@ -1,6 +1,6 @@
1
1
  import { Effect } from "effect-app";
2
2
  import type { NonEmptyReadonlyArray } from "effect-app";
3
- import type { FilterResult } from "../filterApi/query.js";
3
+ import type { FilterResult } from "../../Model/filter/filterApi.js";
4
4
  import type { SupportedValues } from "../service.js";
5
5
  export declare function logQuery(q: {
6
6
  query: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/Store/Cosmos/query.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,MAAM,EAAqB,MAAM,YAAY,CAAA;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGvD,OAAO,KAAK,EAAW,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,eAAe,GAAG,SAAS,eAAe,EAAE,CAAA;KACpD,EAAE,CAAA;CACJ,qCAcA;AAKD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACtC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAAC,EACzE,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;;;EAyKf"}