@effect-app/infra 2.7.0 → 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 +19 -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 +53 -53
  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/Operations.d.ts.map +1 -0
  142. package/dist/Operations.js +102 -0
  143. package/dist/{services/OperationsRepo.d.ts → OperationsRepo.d.ts} +1 -1
  144. package/dist/OperationsRepo.d.ts.map +1 -0
  145. package/dist/OperationsRepo.js +14 -0
  146. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -0
  147. package/dist/QueueMaker/SQLQueue.js +136 -0
  148. package/dist/QueueMaker/errors.d.ts.map +1 -0
  149. package/dist/QueueMaker/errors.js +20 -0
  150. package/dist/QueueMaker/memQueue.d.ts.map +1 -0
  151. package/dist/QueueMaker/memQueue.js +78 -0
  152. package/dist/QueueMaker/sbqueue.d.ts.map +1 -0
  153. package/dist/QueueMaker/sbqueue.js +102 -0
  154. package/dist/{services/QueueMaker → QueueMaker}/service.d.ts +1 -1
  155. package/dist/QueueMaker/service.d.ts.map +1 -0
  156. package/dist/QueueMaker/service.js +4 -0
  157. package/dist/RequestFiberSet.d.ts.map +1 -0
  158. package/dist/RequestFiberSet.js +79 -0
  159. package/dist/Store/ContextMapContainer.d.ts.map +1 -0
  160. package/dist/{services/Store → Store}/ContextMapContainer.js +1 -1
  161. package/dist/{services/Store → Store}/Cosmos/query.d.ts +1 -1
  162. package/dist/Store/Cosmos/query.d.ts.map +1 -0
  163. package/dist/Store/Cosmos/query.js +164 -0
  164. package/dist/Store/Cosmos.d.ts.map +1 -0
  165. package/dist/Store/Cosmos.js +258 -0
  166. package/dist/Store/Disk.d.ts.map +1 -0
  167. package/dist/Store/Disk.js +109 -0
  168. package/dist/Store/Memory.d.ts.map +1 -0
  169. package/dist/Store/Memory.js +170 -0
  170. package/dist/{services/Store → Store}/codeFilter.d.ts +1 -1
  171. package/dist/Store/codeFilter.d.ts.map +1 -0
  172. package/dist/Store/codeFilter.js +117 -0
  173. package/dist/Store/index.d.ts.map +1 -0
  174. package/dist/Store/index.js +28 -0
  175. package/dist/{services/Store → Store}/service.d.ts +5 -5
  176. package/dist/Store/service.d.ts.map +1 -0
  177. package/dist/{services/Store → Store}/service.js +1 -1
  178. package/dist/{services/Store → Store}/utils.d.ts +1 -1
  179. package/dist/Store/utils.d.ts.map +1 -0
  180. package/dist/Store/utils.js +44 -0
  181. package/dist/Store.d.ts.map +1 -0
  182. package/dist/{services/Store.js → Store.js} +1 -1
  183. package/dist/{services/adapters → adapters}/SQL/Model.d.ts +23 -23
  184. package/dist/adapters/SQL/Model.d.ts.map +1 -0
  185. package/dist/adapters/SQL/Model.js +508 -0
  186. package/dist/adapters/SQL.d.ts.map +1 -0
  187. package/dist/{services/adapters → adapters}/SQL.js +1 -1
  188. package/dist/adapters/ServiceBus.d.ts.map +1 -0
  189. package/dist/adapters/ServiceBus.js +73 -0
  190. package/dist/adapters/cosmos-client.d.ts.map +1 -0
  191. package/dist/adapters/cosmos-client.js +8 -0
  192. package/dist/{services/adapters → adapters}/index.d.ts.map +1 -1
  193. package/dist/{services/adapters → adapters}/index.js +1 -1
  194. package/dist/adapters/logger.d.ts.map +1 -0
  195. package/dist/{services/adapters → adapters}/logger.js +1 -1
  196. package/dist/adapters/memQueue.d.ts.map +1 -0
  197. package/dist/adapters/memQueue.js +24 -0
  198. package/dist/adapters/mongo-client.d.ts.map +1 -0
  199. package/dist/adapters/mongo-client.js +12 -0
  200. package/dist/adapters/redis-client.d.ts.map +1 -0
  201. package/dist/adapters/redis-client.js +93 -0
  202. package/dist/api/setupRequest.js +3 -3
  203. package/dist/arbs.d.ts.map +1 -0
  204. package/dist/arbs.js +21 -0
  205. package/dist/logger/shared.js +2 -2
  206. package/dist/test.d.ts +1 -1
  207. package/dist/test.d.ts.map +1 -1
  208. package/dist/test.js +3 -3
  209. package/examples/query.ts +3 -3
  210. package/package.json +352 -362
  211. package/src/{services/CUPS.ts → CUPS.ts} +1 -1
  212. package/src/{services/Emailer → Emailer}/Sendgrid.ts +1 -1
  213. package/src/{services/Emailer → Emailer}/fake.ts +1 -1
  214. package/src/{services/MainFiberSet.ts → MainFiberSet.ts} +1 -1
  215. package/src/{services → Model}/Repository/ext.ts +23 -11
  216. package/src/{services → Model}/Repository/legacy.ts +78 -51
  217. package/src/{services/RepositoryBase.ts → Model/Repository/makeRepo.ts} +40 -38
  218. package/src/{services → Model}/Repository/service.ts +9 -8
  219. package/src/{services → Model}/Repository.ts +1 -1
  220. package/src/{services → Model}/query/dsl.ts +24 -6
  221. package/src/{services → Model}/query/new-kid-interpreter.ts +3 -3
  222. package/src/Model.ts +3 -1
  223. package/src/{services/Operations.ts → Operations.ts} +3 -3
  224. package/src/{services/OperationsRepo.ts → OperationsRepo.ts} +1 -1
  225. package/src/{services/QueueMaker → QueueMaker}/SQLQueue.ts +4 -4
  226. package/src/{services/QueueMaker → QueueMaker}/memQueue.ts +2 -2
  227. package/src/{services/QueueMaker → QueueMaker}/sbqueue.ts +2 -2
  228. package/src/{services/QueueMaker → QueueMaker}/service.ts +1 -1
  229. package/src/{services/RequestFiberSet.ts → RequestFiberSet.ts} +2 -2
  230. package/src/{services/Store → Store}/Cosmos/query.ts +2 -2
  231. package/src/{services/Store → Store}/Cosmos.ts +2 -2
  232. package/src/{services/Store → Store}/Disk.ts +1 -1
  233. package/src/{services/Store → Store}/Memory.ts +1 -1
  234. package/src/{services/Store → Store}/codeFilter.ts +1 -1
  235. package/src/{services/Store → Store}/service.ts +4 -4
  236. package/src/{services/Store → Store}/utils.ts +1 -1
  237. package/src/api/setupRequest.ts +2 -2
  238. package/src/logger/shared.ts +1 -1
  239. package/src/test.ts +2 -2
  240. package/test/dist/query.test.d.ts.map +1 -1
  241. package/test/query.test.ts +32 -5
  242. package/_cjs/_ext/Array.cjs +0 -22
  243. package/_cjs/_ext/Array.cjs.map +0 -1
  244. package/_cjs/filter/types/errors.cjs.map +0 -1
  245. package/_cjs/filter/types/fields.cjs.map +0 -1
  246. package/_cjs/filter/types/path/common.cjs.map +0 -1
  247. package/_cjs/filter/types/path/eager.cjs.map +0 -1
  248. package/_cjs/filter/types/path/index.cjs.map +0 -1
  249. package/_cjs/filter/types/utils.cjs.map +0 -1
  250. package/_cjs/filter/types/validator.cjs.map +0 -1
  251. package/_cjs/filter/types.cjs.map +0 -1
  252. package/_cjs/services/CUPS.cjs.map +0 -1
  253. package/_cjs/services/Emailer/Sendgrid.cjs.map +0 -1
  254. package/_cjs/services/Emailer/fake.cjs.map +0 -1
  255. package/_cjs/services/Emailer/service.cjs.map +0 -1
  256. package/_cjs/services/Emailer.cjs.map +0 -1
  257. package/_cjs/services/MainFiberSet.cjs.map +0 -1
  258. package/_cjs/services/Operations.cjs.map +0 -1
  259. package/_cjs/services/OperationsRepo.cjs.map +0 -1
  260. package/_cjs/services/QueueMaker/SQLQueue.cjs.map +0 -1
  261. package/_cjs/services/QueueMaker/errors.cjs.map +0 -1
  262. package/_cjs/services/QueueMaker/memQueue.cjs.map +0 -1
  263. package/_cjs/services/QueueMaker/sbqueue.cjs.map +0 -1
  264. package/_cjs/services/QueueMaker/service.cjs.map +0 -1
  265. package/_cjs/services/Repository/dsl.cjs.map +0 -1
  266. package/_cjs/services/Repository/ext.cjs.map +0 -1
  267. package/_cjs/services/Repository/legacy.cjs.map +0 -1
  268. package/_cjs/services/Repository/service.cjs.map +0 -1
  269. package/_cjs/services/Repository.cjs.map +0 -1
  270. package/_cjs/services/RepositoryBase.cjs.map +0 -1
  271. package/_cjs/services/RequestFiberSet.cjs.map +0 -1
  272. package/_cjs/services/Store/ContextMapContainer.cjs.map +0 -1
  273. package/_cjs/services/Store/Cosmos/query.cjs.map +0 -1
  274. package/_cjs/services/Store/Cosmos.cjs.map +0 -1
  275. package/_cjs/services/Store/Disk.cjs.map +0 -1
  276. package/_cjs/services/Store/Memory.cjs.map +0 -1
  277. package/_cjs/services/Store/codeFilter.cjs.map +0 -1
  278. package/_cjs/services/Store/filterApi/query.cjs +0 -6
  279. package/_cjs/services/Store/filterApi/query.cjs.map +0 -1
  280. package/_cjs/services/Store/index.cjs.map +0 -1
  281. package/_cjs/services/Store/service.cjs.map +0 -1
  282. package/_cjs/services/Store/utils.cjs.map +0 -1
  283. package/_cjs/services/Store.cjs.map +0 -1
  284. package/_cjs/services/adapters/SQL/Model.cjs.map +0 -1
  285. package/_cjs/services/adapters/SQL.cjs.map +0 -1
  286. package/_cjs/services/adapters/ServiceBus.cjs.map +0 -1
  287. package/_cjs/services/adapters/cosmos-client.cjs.map +0 -1
  288. package/_cjs/services/adapters/index.cjs.map +0 -1
  289. package/_cjs/services/adapters/logger.cjs.map +0 -1
  290. package/_cjs/services/adapters/memQueue.cjs.map +0 -1
  291. package/_cjs/services/adapters/mongo-client.cjs.map +0 -1
  292. package/_cjs/services/adapters/redis-client.cjs.map +0 -1
  293. package/_cjs/services/query/dsl.cjs.map +0 -1
  294. package/_cjs/services/query/new-kid-interpreter.cjs.map +0 -1
  295. package/_cjs/services/query.cjs.map +0 -1
  296. package/_cjs/test/arbs.cjs.map +0 -1
  297. package/dist/_ext/Array.d.ts +0 -13
  298. package/dist/_ext/Array.d.ts.map +0 -1
  299. package/dist/_ext/Array.js +0 -15
  300. package/dist/filter/types/errors.d.ts.map +0 -1
  301. package/dist/filter/types/fields.d.ts.map +0 -1
  302. package/dist/filter/types/path/common.d.ts.map +0 -1
  303. package/dist/filter/types/path/eager.d.ts.map +0 -1
  304. package/dist/filter/types/path/index.d.ts.map +0 -1
  305. package/dist/filter/types/utils.d.ts.map +0 -1
  306. package/dist/filter/types/validator.d.ts.map +0 -1
  307. package/dist/filter/types.d.ts.map +0 -1
  308. package/dist/services/CUPS.d.ts.map +0 -1
  309. package/dist/services/CUPS.js +0 -116
  310. package/dist/services/Emailer/Sendgrid.d.ts.map +0 -1
  311. package/dist/services/Emailer/Sendgrid.js +0 -99
  312. package/dist/services/Emailer/fake.d.ts.map +0 -1
  313. package/dist/services/Emailer/fake.js +0 -18
  314. package/dist/services/Emailer/service.d.ts.map +0 -1
  315. package/dist/services/Emailer.d.ts.map +0 -1
  316. package/dist/services/MainFiberSet.d.ts.map +0 -1
  317. package/dist/services/MainFiberSet.js +0 -54
  318. package/dist/services/Operations.d.ts.map +0 -1
  319. package/dist/services/Operations.js +0 -102
  320. package/dist/services/OperationsRepo.d.ts.map +0 -1
  321. package/dist/services/OperationsRepo.js +0 -14
  322. package/dist/services/QueueMaker/SQLQueue.d.ts.map +0 -1
  323. package/dist/services/QueueMaker/SQLQueue.js +0 -136
  324. package/dist/services/QueueMaker/errors.d.ts.map +0 -1
  325. package/dist/services/QueueMaker/errors.js +0 -20
  326. package/dist/services/QueueMaker/memQueue.d.ts.map +0 -1
  327. package/dist/services/QueueMaker/memQueue.js +0 -78
  328. package/dist/services/QueueMaker/sbqueue.d.ts.map +0 -1
  329. package/dist/services/QueueMaker/sbqueue.js +0 -102
  330. package/dist/services/QueueMaker/service.d.ts.map +0 -1
  331. package/dist/services/QueueMaker/service.js +0 -4
  332. package/dist/services/Repository/dsl.d.ts.map +0 -1
  333. package/dist/services/Repository/dsl.js +0 -46
  334. package/dist/services/Repository/ext.d.ts.map +0 -1
  335. package/dist/services/Repository/ext.js +0 -61
  336. package/dist/services/Repository/legacy.d.ts.map +0 -1
  337. package/dist/services/Repository/legacy.js +0 -124
  338. package/dist/services/Repository/service.d.ts.map +0 -1
  339. package/dist/services/Repository.d.ts.map +0 -1
  340. package/dist/services/Repository.js +0 -5
  341. package/dist/services/RepositoryBase.d.ts.map +0 -1
  342. package/dist/services/RepositoryBase.js +0 -256
  343. package/dist/services/RequestFiberSet.d.ts.map +0 -1
  344. package/dist/services/RequestFiberSet.js +0 -79
  345. package/dist/services/Store/ContextMapContainer.d.ts.map +0 -1
  346. package/dist/services/Store/Cosmos/query.d.ts.map +0 -1
  347. package/dist/services/Store/Cosmos/query.js +0 -164
  348. package/dist/services/Store/Cosmos.d.ts.map +0 -1
  349. package/dist/services/Store/Cosmos.js +0 -258
  350. package/dist/services/Store/Disk.d.ts.map +0 -1
  351. package/dist/services/Store/Disk.js +0 -109
  352. package/dist/services/Store/Memory.d.ts.map +0 -1
  353. package/dist/services/Store/Memory.js +0 -170
  354. package/dist/services/Store/codeFilter.d.ts.map +0 -1
  355. package/dist/services/Store/codeFilter.js +0 -117
  356. package/dist/services/Store/filterApi/query.d.ts.map +0 -1
  357. package/dist/services/Store/filterApi/query.js +0 -2
  358. package/dist/services/Store/index.d.ts.map +0 -1
  359. package/dist/services/Store/index.js +0 -28
  360. package/dist/services/Store/service.d.ts.map +0 -1
  361. package/dist/services/Store/utils.d.ts.map +0 -1
  362. package/dist/services/Store/utils.js +0 -44
  363. package/dist/services/Store.d.ts.map +0 -1
  364. package/dist/services/adapters/SQL/Model.d.ts.map +0 -1
  365. package/dist/services/adapters/SQL/Model.js +0 -508
  366. package/dist/services/adapters/SQL.d.ts.map +0 -1
  367. package/dist/services/adapters/ServiceBus.d.ts.map +0 -1
  368. package/dist/services/adapters/ServiceBus.js +0 -73
  369. package/dist/services/adapters/cosmos-client.d.ts.map +0 -1
  370. package/dist/services/adapters/cosmos-client.js +0 -8
  371. package/dist/services/adapters/logger.d.ts.map +0 -1
  372. package/dist/services/adapters/memQueue.d.ts.map +0 -1
  373. package/dist/services/adapters/memQueue.js +0 -24
  374. package/dist/services/adapters/mongo-client.d.ts.map +0 -1
  375. package/dist/services/adapters/mongo-client.js +0 -12
  376. package/dist/services/adapters/redis-client.d.ts.map +0 -1
  377. package/dist/services/adapters/redis-client.js +0 -93
  378. package/dist/services/query/dsl.d.ts.map +0 -1
  379. package/dist/services/query/dsl.js +0 -95
  380. package/dist/services/query/new-kid-interpreter.d.ts.map +0 -1
  381. package/dist/services/query/new-kid-interpreter.js +0 -133
  382. package/dist/services/query.d.ts.map +0 -1
  383. package/dist/test/arbs.d.ts.map +0 -1
  384. package/dist/test/arbs.js +0 -21
  385. package/src/_ext/Array.ts +0 -22
  386. /package/_cjs/{services/Emailer → Emailer}/service.cjs +0 -0
  387. /package/_cjs/{services/Emailer.cjs → Emailer.cjs} +0 -0
  388. /package/_cjs/{services → Model}/Repository/service.cjs +0 -0
  389. /package/_cjs/{services/Repository → Model}/dsl.cjs +0 -0
  390. /package/_cjs/{filter → Model/filter}/types/errors.cjs +0 -0
  391. /package/_cjs/{filter → Model/filter}/types/fields.cjs +0 -0
  392. /package/_cjs/{filter → Model/filter}/types/path/common.cjs +0 -0
  393. /package/_cjs/{filter → Model/filter}/types/path/eager.cjs +0 -0
  394. /package/_cjs/{filter → Model/filter}/types/path/index.cjs +0 -0
  395. /package/_cjs/{filter → Model/filter}/types/utils.cjs +0 -0
  396. /package/_cjs/{filter → Model/filter}/types/validator.cjs +0 -0
  397. /package/_cjs/{filter → Model/filter}/types.cjs +0 -0
  398. /package/_cjs/{services → Model}/query/dsl.cjs +0 -0
  399. /package/_cjs/{services → Model}/query/new-kid-interpreter.cjs +0 -0
  400. /package/_cjs/{services → Model}/query.cjs +0 -0
  401. /package/_cjs/{services/QueueMaker → QueueMaker}/errors.cjs +0 -0
  402. /package/_cjs/{services/Store → Store}/ContextMapContainer.cjs +0 -0
  403. /package/_cjs/{services/Store → Store}/codeFilter.cjs +0 -0
  404. /package/_cjs/{services/Store → Store}/index.cjs +0 -0
  405. /package/_cjs/{services/Store → Store}/service.cjs +0 -0
  406. /package/_cjs/{services/Store.cjs → Store.cjs} +0 -0
  407. /package/_cjs/{services/adapters → adapters}/SQL/Model.cjs +0 -0
  408. /package/_cjs/{services/adapters → adapters}/SQL.cjs +0 -0
  409. /package/_cjs/{services/adapters → adapters}/ServiceBus.cjs +0 -0
  410. /package/_cjs/{services/adapters → adapters}/cosmos-client.cjs +0 -0
  411. /package/_cjs/{services/adapters → adapters}/index.cjs +0 -0
  412. /package/_cjs/{services/adapters → adapters}/logger.cjs +0 -0
  413. /package/_cjs/{services/adapters → adapters}/memQueue.cjs +0 -0
  414. /package/_cjs/{services/adapters → adapters}/mongo-client.cjs +0 -0
  415. /package/_cjs/{services/adapters → adapters}/redis-client.cjs +0 -0
  416. /package/_cjs/{test/arbs.cjs → arbs.cjs} +0 -0
  417. /package/dist/{services/CUPS.d.ts → CUPS.d.ts} +0 -0
  418. /package/dist/{services/Emailer → Emailer}/Sendgrid.d.ts +0 -0
  419. /package/dist/{services/Emailer → Emailer}/fake.d.ts +0 -0
  420. /package/dist/{services/Emailer.d.ts → Emailer.d.ts} +0 -0
  421. /package/dist/{services/MainFiberSet.d.ts → MainFiberSet.d.ts} +0 -0
  422. /package/dist/{services/Repository → Model}/dsl.d.ts +0 -0
  423. /package/dist/{filter → Model/filter}/types/errors.d.ts +0 -0
  424. /package/dist/{filter → Model/filter}/types/fields.d.ts +0 -0
  425. /package/dist/{filter → Model/filter}/types/path/common.d.ts +0 -0
  426. /package/dist/{filter → Model/filter}/types/path/eager.d.ts +0 -0
  427. /package/dist/{filter → Model/filter}/types/path/index.d.ts +0 -0
  428. /package/dist/{filter → Model/filter}/types/utils.d.ts +0 -0
  429. /package/dist/{filter → Model/filter}/types/validator.d.ts +0 -0
  430. /package/dist/{filter → Model/filter}/types.d.ts +0 -0
  431. /package/dist/{services → Model}/query.d.ts +0 -0
  432. /package/dist/{services/Operations.d.ts → Operations.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,508 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
3
+ /* eslint-disable @typescript-eslint/no-empty-object-type */
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
6
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
7
+ /**
8
+ * @since 1.0.0
9
+ */
10
+ import * as RRX from "@effect/experimental/RequestResolver";
11
+ import * as VariantSchema from "@effect/experimental/VariantSchema";
12
+ import { SqlClient } from "@effect/sql/SqlClient";
13
+ import * as SqlResolver from "@effect/sql/SqlResolver";
14
+ import * as SqlSchema from "@effect/sql/SqlSchema";
15
+ import { randomUUID } from "crypto"; // TODO
16
+ import * as DateTime from "effect/DateTime";
17
+ import * as Effect from "effect/Effect";
18
+ import * as Option from "effect/Option";
19
+ import * as ParseResult from "effect/ParseResult";
20
+ import * as Schema from "effect/Schema";
21
+ const { Class, Field, FieldExcept, FieldOnly, Struct, Union, extract, fieldEvolve, fieldFromKey } = VariantSchema.make({
22
+ variants: ["select", "insert", "update", "json", "jsonCreate", "jsonUpdate"],
23
+ defaultVariant: "select"
24
+ });
25
+ export {
26
+ /**
27
+ * A base class used for creating domain model schemas.
28
+ *
29
+ * It supports common variants for database and JSON apis.
30
+ *
31
+ * @since 1.0.0
32
+ * @category constructors
33
+ * @example
34
+ * import { Schema } from "effect/Schema"
35
+ * import { Model } from "@effect/sql"
36
+ *
37
+ * export const GroupId = Schema.Number.pipe(Schema.brand("GroupId"))
38
+ *
39
+ * export class Group extends Model.Class<Group>("Group")({
40
+ * id: Model.Generated(GroupId),
41
+ * name: Schema.NonEmptyTrimmedString,
42
+ * createdAt: Model.DateTimeInsertFromDate,
43
+ * updatedAt: Model.DateTimeUpdateFromDate
44
+ * }) {}
45
+ *
46
+ * // schema used for selects
47
+ * Group
48
+ *
49
+ * // schema used for inserts
50
+ * Group.insert
51
+ *
52
+ * // schema used for updates
53
+ * Group.update
54
+ *
55
+ * // schema used for json api
56
+ * Group.json
57
+ * Group.jsonCreate
58
+ * Group.jsonUpdate
59
+ *
60
+ * // you can also turn them into classes
61
+ * class GroupJson extends Schema.Class<GroupJson>("GroupJson")(Group.json) {
62
+ * get upperName() {
63
+ * return this.name.toUpperCase()
64
+ * }
65
+ * }
66
+ */
67
+ Class,
68
+ /**
69
+ * @since 1.0.0
70
+ * @category extraction
71
+ */
72
+ extract,
73
+ /**
74
+ * @since 1.0.0
75
+ * @category fields
76
+ */
77
+ Field,
78
+ /**
79
+ * @since 1.0.0
80
+ * @category fields
81
+ */
82
+ fieldEvolve,
83
+ /**
84
+ * @since 1.0.0
85
+ * @category fields
86
+ */
87
+ FieldExcept,
88
+ /**
89
+ * @since 1.0.0
90
+ * @category fields
91
+ */
92
+ fieldFromKey,
93
+ /**
94
+ * @since 1.0.0
95
+ * @category fields
96
+ */
97
+ FieldOnly,
98
+ /**
99
+ * @since 1.0.0
100
+ * @category constructors
101
+ */
102
+ Struct,
103
+ /**
104
+ * @since 1.0.0
105
+ * @category constructors
106
+ */
107
+ Union };
108
+ /**
109
+ * @since 1.0.0
110
+ * @category fields
111
+ */
112
+ export const fields = VariantSchema.fields;
113
+ /**
114
+ * @since 1.0.0
115
+ * @category overrideable
116
+ */
117
+ export const Override = VariantSchema.Override;
118
+ /**
119
+ * A field that represents a column that is generated by the database.
120
+ *
121
+ * It is available for selection and update, but not for insertion.
122
+ *
123
+ * @since 1.0.0
124
+ * @category generated
125
+ */
126
+ export const Generated = (schema) => Field({
127
+ select: schema,
128
+ update: schema,
129
+ json: schema
130
+ });
131
+ /**
132
+ * A field that represents a column that is generated by the application.
133
+ *
134
+ * It is required by the database, but not by the JSON variants.
135
+ *
136
+ * @since 1.0.0
137
+ * @category generated
138
+ */
139
+ export const GeneratedByApp = (schema) => Field({
140
+ select: schema,
141
+ insert: schema,
142
+ update: schema,
143
+ json: schema
144
+ });
145
+ /**
146
+ * A field that represents a sensitive value that should not be exposed in the
147
+ * JSON variants.
148
+ *
149
+ * @since 1.0.0
150
+ * @category sensitive
151
+ */
152
+ export const Sensitive = (schema) => Field({
153
+ select: schema,
154
+ insert: schema,
155
+ update: schema
156
+ });
157
+ /**
158
+ * Convert a field to one that is optional for all variants.
159
+ *
160
+ * For the database variants, it will accept `null`able values.
161
+ * For the JSON variants, it will also accept missing keys.
162
+ *
163
+ * @since 1.0.0
164
+ * @category optional
165
+ */
166
+ export const FieldOption = fieldEvolve({
167
+ select: Schema.OptionFromNullOr,
168
+ insert: Schema.OptionFromNullOr,
169
+ update: Schema.OptionFromNullOr,
170
+ json: Schema.optionalWith({ as: "Option" }),
171
+ jsonCreate: Schema.optionalWith({ as: "Option", nullable: true }),
172
+ jsonUpdate: Schema.optionalWith({ as: "Option", nullable: true })
173
+ });
174
+ /**
175
+ * @since 1.0.0
176
+ * @category date & time
177
+ */
178
+ export const DateTimeFromDate = Schema.transform(Schema.ValidDateFromSelf, Schema.DateTimeUtcFromSelf, {
179
+ decode: DateTime.unsafeFromDate,
180
+ encode: DateTime.toDateUtc
181
+ });
182
+ /**
183
+ * A schema for a `DateTime.Utc` that is serialized as a date string in the
184
+ * format `YYYY-MM-DD`.
185
+ *
186
+ * @since 1.0.0
187
+ * @category date & time
188
+ */
189
+ export const Date = Schema.transformOrFail(Schema.String, Schema.DateTimeUtcFromSelf, {
190
+ decode: (s, _, ast) => DateTime.make(s).pipe(Option.map(DateTime.removeTime), Option.match({
191
+ onNone: () => ParseResult.fail(new ParseResult.Type(ast, s)),
192
+ onSome: (dt) => ParseResult.succeed(dt)
193
+ })),
194
+ encode: (dt) => ParseResult.succeed(DateTime.formatIsoDate(dt))
195
+ });
196
+ /**
197
+ * @since 1.0.0
198
+ * @category date & time
199
+ */
200
+ export const DateWithNow = VariantSchema.Overrideable(Date, Schema.DateTimeUtcFromSelf, {
201
+ generate: Option.match({
202
+ onNone: () => Effect.map(DateTime.now, DateTime.removeTime),
203
+ onSome: (dt) => Effect.succeed(DateTime.removeTime(dt))
204
+ })
205
+ });
206
+ /**
207
+ * @since 1.0.0
208
+ * @category date & time
209
+ */
210
+ export const DateTimeWithNow = VariantSchema.Overrideable(Schema.String, Schema.DateTimeUtcFromSelf, {
211
+ generate: Option.match({
212
+ onNone: () => Effect.map(DateTime.now, DateTime.formatIso),
213
+ onSome: (dt) => Effect.succeed(DateTime.formatIso(dt))
214
+ })
215
+ });
216
+ /**
217
+ * @since 1.0.0
218
+ * @category date & time
219
+ */
220
+ export const DateTimeFromDateWithNow = VariantSchema.Overrideable(Schema.DateFromSelf, Schema.DateTimeUtcFromSelf, {
221
+ generate: Option.match({
222
+ onNone: () => Effect.map(DateTime.now, DateTime.toDateUtc),
223
+ onSome: (dt) => Effect.succeed(DateTime.toDateUtc(dt))
224
+ })
225
+ });
226
+ /**
227
+ * @since 1.0.0
228
+ * @category date & time
229
+ */
230
+ export const DateTimeFromNumberWithNow = VariantSchema.Overrideable(Schema.Number, Schema.DateTimeUtcFromSelf, {
231
+ generate: Option.match({
232
+ onNone: () => Effect.map(DateTime.now, DateTime.toEpochMillis),
233
+ onSome: (dt) => Effect.succeed(DateTime.toEpochMillis(dt))
234
+ })
235
+ });
236
+ /**
237
+ * A field that represents a date-time value that is inserted as the current
238
+ * `DateTime.Utc`. It is serialized as a string for the database.
239
+ *
240
+ * It is omitted from updates and is available for selection.
241
+ *
242
+ * @since 1.0.0
243
+ * @category date & time
244
+ */
245
+ export const DateTimeInsert = Field({
246
+ select: Schema.DateTimeUtc,
247
+ insert: DateTimeWithNow,
248
+ json: Schema.DateTimeUtc
249
+ });
250
+ /**
251
+ * A field that represents a date-time value that is inserted as the current
252
+ * `DateTime.Utc`. It is serialized as a `Date` for the database.
253
+ *
254
+ * It is omitted from updates and is available for selection.
255
+ *
256
+ * @since 1.0.0
257
+ * @category date & time
258
+ */
259
+ export const DateTimeInsertFromDate = Field({
260
+ select: DateTimeFromDate,
261
+ insert: DateTimeFromDateWithNow,
262
+ json: Schema.DateTimeUtc
263
+ });
264
+ /**
265
+ * A field that represents a date-time value that is inserted as the current
266
+ * `DateTime.Utc`. It is serialized as a `number`.
267
+ *
268
+ * It is omitted from updates and is available for selection.
269
+ *
270
+ * @since 1.0.0
271
+ * @category date & time
272
+ */
273
+ export const DateTimeInsertFromNumber = Field({
274
+ select: Schema.DateTimeUtcFromNumber,
275
+ insert: DateTimeFromNumberWithNow,
276
+ json: Schema.DateTimeUtcFromNumber
277
+ });
278
+ /**
279
+ * A field that represents a date-time value that is updated as the current
280
+ * `DateTime.Utc`. It is serialized as a string for the database.
281
+ *
282
+ * It is set to the current `DateTime.Utc` on updates and inserts and is
283
+ * available for selection.
284
+ *
285
+ * @since 1.0.0
286
+ * @category date & time
287
+ */
288
+ export const DateTimeUpdate = Field({
289
+ select: Schema.DateTimeUtc,
290
+ insert: DateTimeWithNow,
291
+ update: DateTimeWithNow,
292
+ json: Schema.DateTimeUtc
293
+ });
294
+ /**
295
+ * A field that represents a date-time value that is updated as the current
296
+ * `DateTime.Utc`. It is serialized as a `Date` for the database.
297
+ *
298
+ * It is set to the current `DateTime.Utc` on updates and inserts and is
299
+ * available for selection.
300
+ *
301
+ * @since 1.0.0
302
+ * @category date & time
303
+ */
304
+ export const DateTimeUpdateFromDate = Field({
305
+ select: DateTimeFromDate,
306
+ insert: DateTimeFromDateWithNow,
307
+ update: DateTimeFromDateWithNow,
308
+ json: Schema.DateTimeUtc
309
+ });
310
+ /**
311
+ * A field that represents a date-time value that is updated as the current
312
+ * `DateTime.Utc`. It is serialized as a `number`.
313
+ *
314
+ * It is set to the current `DateTime.Utc` on updates and inserts and is
315
+ * available for selection.
316
+ *
317
+ * @since 1.0.0
318
+ * @category date & time
319
+ */
320
+ export const DateTimeUpdateFromNumber = Field({
321
+ select: Schema.DateTimeUtcFromNumber,
322
+ insert: DateTimeFromNumberWithNow,
323
+ update: DateTimeFromNumberWithNow,
324
+ json: Schema.DateTimeUtcFromNumber
325
+ });
326
+ /**
327
+ * A field that represents a JSON value stored as text in the database.
328
+ *
329
+ * The "json" variants will use the object schema directly.
330
+ *
331
+ * @since 1.0.0
332
+ * @category json
333
+ */
334
+ export const JsonFromString = (schema) => {
335
+ const parsed = Schema.parseJson(schema);
336
+ return Field({
337
+ select: parsed,
338
+ insert: parsed,
339
+ update: parsed,
340
+ json: schema,
341
+ jsonCreate: schema,
342
+ jsonUpdate: schema
343
+ });
344
+ };
345
+ /**
346
+ * Create a simple CRUD repository from a model.
347
+ *
348
+ * @since 1.0.0
349
+ * @category repository
350
+ */
351
+ export const makeRepository = (Model, options) => Effect.gen(function* () {
352
+ const sql = yield* SqlClient;
353
+ const idSchema = Model.fields[options.idColumn];
354
+ const idColumn = options.idColumn;
355
+ const versionColumn = options.versionColumn;
356
+ // TODO: insert version automatically...
357
+ // I guess we should hide the versionColumn and insert it in the schema instead
358
+ const insertSchema = SqlSchema.single({
359
+ Request: Model.insert,
360
+ Result: Model,
361
+ execute: (request) => sql.onDialectOrElse({
362
+ mysql: () => sql `insert into ${sql(options.tableName)} ${sql.insert(request)};
363
+ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID();`
364
+ .unprepared
365
+ .pipe(Effect.map(([, results]) => results)),
366
+ orElse: () => sql `insert into ${sql(options.tableName)} ${sql.insert(request).returning("*")}`
367
+ })
368
+ });
369
+ const insert = (insert) => insertSchema(insert).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.insert`, {
370
+ captureStackTrace: false,
371
+ attributes: { insert }
372
+ }));
373
+ const insertVoidSchema = SqlSchema.void({
374
+ Request: Model.insert,
375
+ execute: (request) => sql `insert into ${sql(options.tableName)} ${sql.insert(request)}`
376
+ });
377
+ const insertVoid = (insert) => insertVoidSchema(insert).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.insertVoid`, {
378
+ captureStackTrace: false,
379
+ attributes: { insert }
380
+ }));
381
+ const updateSchema = SqlSchema.single({
382
+ Request: Model.update,
383
+ Result: Model,
384
+ execute: versionColumn
385
+ ? (request) => sql.onDialectOrElse({
386
+ mysql: () => sql `update ${sql(options.tableName)} set ${sql.update({ ...request, [versionColumn]: randomUUID() }, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} and ${sql(versionColumn)} = ${request[versionColumn]};
387
+ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idColumn]};`
388
+ .unprepared
389
+ .pipe(Effect.map(([, results]) => results)),
390
+ orElse: () => sql `update ${sql(options.tableName)} set ${sql.update({ ...request, [versionColumn]: randomUUID() }, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} and ${sql(versionColumn)} = ${request[versionColumn]} returning *`
391
+ })
392
+ : (request) => sql.onDialectOrElse({
393
+ mysql: () => sql `update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]};
394
+ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idColumn]};`
395
+ .unprepared
396
+ .pipe(Effect.map(([, results]) => results)),
397
+ orElse: () => sql `update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} returning *`
398
+ })
399
+ });
400
+ const update = (update) => updateSchema(update).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.update`, {
401
+ captureStackTrace: false,
402
+ attributes: { update }
403
+ }));
404
+ const updateVoidSchema = SqlSchema.void({
405
+ Request: Model.update,
406
+ execute: versionColumn
407
+ ? (request) => sql `update ${sql(options.tableName)} set ${sql.update({ ...request, [versionColumn]: randomUUID() }, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} and ${sql(versionColumn)} = ${request[versionColumn]}`
408
+ : (request) => sql `update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]}`
409
+ });
410
+ const updateVoid = (update) => updateVoidSchema(update).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.updateVoid`, {
411
+ captureStackTrace: false,
412
+ attributes: { update }
413
+ }));
414
+ const findByIdSchema = SqlSchema.findOne({
415
+ Request: idSchema,
416
+ Result: Model,
417
+ execute: (id) => sql `select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}`
418
+ });
419
+ const findById = (id) => findByIdSchema(id).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.findById`, {
420
+ captureStackTrace: false,
421
+ attributes: { id }
422
+ }));
423
+ const deleteSchema = SqlSchema.void({
424
+ Request: idSchema,
425
+ execute: (id) => sql `delete from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}`
426
+ });
427
+ const delete_ = (id) => deleteSchema(id).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.delete`, {
428
+ captureStackTrace: false,
429
+ attributes: { id }
430
+ }));
431
+ return { insert, insertVoid, update, updateVoid, findById, delete: delete_ };
432
+ });
433
+ /**
434
+ * Create some simple data loaders from a model.
435
+ *
436
+ * @since 1.0.0
437
+ * @category repository
438
+ */
439
+ export const makeDataLoaders = (Model, options) => Effect.gen(function* () {
440
+ const sql = yield* SqlClient;
441
+ const idSchema = Model.fields[options.idColumn];
442
+ const idColumn = options.idColumn;
443
+ const insertResolver = yield* SqlResolver.ordered(`${options.spanPrefix}/insert`, {
444
+ Request: Model.insert,
445
+ Result: Model,
446
+ execute: (request) => sql.onDialectOrElse({
447
+ mysql: () => Effect.forEach(request, (request) => sql `insert into ${sql(options.tableName)} ${sql.insert(request)};
448
+ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID();`
449
+ .unprepared
450
+ .pipe(Effect.map(([, results]) => results)), { concurrency: 10 }),
451
+ orElse: () => sql `insert into ${sql(options.tableName)} ${sql.insert(request).returning("*")}`
452
+ })
453
+ });
454
+ const insertLoader = yield* RRX.dataLoader(insertResolver, {
455
+ window: options.window,
456
+ maxBatchSize: options.maxBatchSize
457
+ });
458
+ const insertExecute = insertResolver.makeExecute(insertLoader);
459
+ const insert = (insert) => insertExecute(insert).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.insert`, {
460
+ captureStackTrace: false,
461
+ attributes: { insert }
462
+ }));
463
+ const insertVoidResolver = yield* SqlResolver.void(`${options.spanPrefix}/insertVoid`, {
464
+ Request: Model.insert,
465
+ execute: (request) => sql `insert into ${sql(options.tableName)} ${sql.insert(request)}`
466
+ });
467
+ const insertVoidLoader = yield* RRX.dataLoader(insertVoidResolver, {
468
+ window: options.window,
469
+ maxBatchSize: options.maxBatchSize
470
+ });
471
+ const insertVoidExecute = insertVoidResolver.makeExecute(insertVoidLoader);
472
+ const insertVoid = (insert) => insertVoidExecute(insert).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.insertVoid`, {
473
+ captureStackTrace: false,
474
+ attributes: { insert }
475
+ }));
476
+ const findByIdResolver = yield* SqlResolver.findById(`${options.spanPrefix}/findById`, {
477
+ Id: idSchema,
478
+ Result: Model,
479
+ ResultId(request) {
480
+ return request[idColumn];
481
+ },
482
+ execute: (ids) => sql `select * from ${sql(options.tableName)} where ${sql.in(idColumn, ids)}`
483
+ });
484
+ const findByIdLoader = yield* RRX.dataLoader(findByIdResolver, {
485
+ window: options.window,
486
+ maxBatchSize: options.maxBatchSize
487
+ });
488
+ const findByIdExecute = findByIdResolver.makeExecute(findByIdLoader);
489
+ const findById = (id) => findByIdExecute(id).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.findById`, {
490
+ captureStackTrace: false,
491
+ attributes: { id }
492
+ }));
493
+ const deleteResolver = yield* SqlResolver.void(`${options.spanPrefix}/delete`, {
494
+ Request: idSchema,
495
+ execute: (ids) => sql `delete from ${sql(options.tableName)} where ${sql.in(idColumn, ids)}`
496
+ });
497
+ const deleteLoader = yield* RRX.dataLoader(deleteResolver, {
498
+ window: options.window,
499
+ maxBatchSize: options.maxBatchSize
500
+ });
501
+ const deleteExecute = deleteResolver.makeExecute(deleteLoader);
502
+ const delete_ = (id) => deleteExecute(id).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.delete`, {
503
+ captureStackTrace: false,
504
+ attributes: { id }
505
+ }));
506
+ return { insert, insertVoid, findById, delete: delete_ };
507
+ });
508
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvU1FML01vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtEQUErRDtBQUMvRCw0REFBNEQ7QUFDNUQsNERBQTREO0FBQzVELHVEQUF1RDtBQUN2RCwwREFBMEQ7QUFDMUQsd0RBQXdEO0FBQ3hEOztHQUVHO0FBQ0gsT0FBTyxLQUFLLEdBQUcsTUFBTSxzQ0FBc0MsQ0FBQTtBQUMzRCxPQUFPLEtBQUssYUFBYSxNQUFNLG9DQUFvQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFBO0FBQ3RELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQSxDQUFDLE9BQU87QUFFM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUUzQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssV0FBVyxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBR3ZDLE1BQU0sRUFDSixLQUFLLEVBQ0wsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxPQUFPLEVBQ1AsV0FBVyxFQUNYLFlBQVksRUFDYixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDckIsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7SUFDNUUsY0FBYyxFQUFFLFFBQVE7Q0FDekIsQ0FBQyxDQUFBO0FBd0NGLE9BQU87QUFD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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQL.d.ts","sourceRoot":"","sources":["../../src/adapters/SQL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA"}
@@ -1,2 +1,2 @@
1
1
  export * as SQLModel from "./SQL/Model.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2FkYXB0ZXJzL1NRTC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLGdCQUFnQixDQUFBIn0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXJzL1NRTC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLGdCQUFnQixDQUFBIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceBus.d.ts","sourceRoot":"","sources":["../../src/adapters/ServiceBus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAS,OAAO,EAAE,MAAM,EAAkB,KAAK,EAAE,MAAM,YAAY,CAAA;AAW1E,eAAO,MAAM,oBAAoB,QAAS,MAAM,gDAA0C,CAAA;AAY1F,eAAO,MAAM,MAAM,iDAA2D,CAAA;AAE9E,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,0DAG3C;;UAkBO,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC;iBAClE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC;;UADnG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC;iBAClE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC;;UADnG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC;iBAClE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC;;;;;;;;;;cADnG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC;qBAClE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC;;;AAJ3G,qBAAa,yBAA0B,SAAQ,8BAK3C;IACF,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAe,MAAM,qEAMlC;CACR;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,sBAAsB,EAC1E,OAAO,CAAC,EAAE,oBAAoB,gDAM/B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,qFA6C3F;AAED,MAAM,WAAW,eAAe,CAAC,IAAI,EAAE,IAAI;IACzC;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7E;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CAChE"}
@@ -0,0 +1,73 @@
1
+ import { ServiceBusClient } from "@azure/service-bus";
2
+ import { Cause, Context, Effect, Exit, FiberSet, Layer } from "effect-app";
3
+ import { InfraLogger } from "./logger.js";
4
+ function makeClient(url) {
5
+ return Effect.acquireRelease(Effect.sync(() => new ServiceBusClient(url)), (client) => Effect.promise(() => client.close()));
6
+ }
7
+ const Client = Context.GenericTag("@services/Client");
8
+ export const LiveServiceBusClient = (url) => Layer.scoped(Client)(makeClient(url));
9
+ function makeSender(queueName) {
10
+ return Effect.gen(function* () {
11
+ const serviceBusClient = yield* Client;
12
+ return yield* Effect.acquireRelease(Effect.sync(() => serviceBusClient.createSender(queueName)), (subscription) => Effect.promise(() => subscription.close()));
13
+ });
14
+ }
15
+ export const Sender = Context.GenericTag("@services/Sender");
16
+ export function LiveSender(queueName) {
17
+ return Layer
18
+ .scoped(Sender, makeSender(queueName));
19
+ }
20
+ function makeReceiver(queueName, waitTillEmpty, sessionId) {
21
+ return Effect.gen(function* () {
22
+ const serviceBusClient = yield* Client;
23
+ return yield* Effect.acquireRelease(sessionId
24
+ ? Effect.promise(() => serviceBusClient.acceptSession(queueName, sessionId))
25
+ : Effect.sync(() => serviceBusClient.createReceiver(queueName)), (r) => waitTillEmpty.pipe(Effect.andThen(Effect.promise(() => r.close()))));
26
+ });
27
+ }
28
+ export class ServiceBusReceiverFactory extends Context.TagId("ServiceBusReceiverFactory")() {
29
+ static Live = (queueName) => this.toLayer(Client.pipe(Effect.andThen((cl) => ({
30
+ make: (waitTillEmpty) => makeReceiver(queueName, waitTillEmpty).pipe(Effect.provideService(Client, cl)),
31
+ makeSession: (sessionId, waitTillEmpty) => makeReceiver(queueName, waitTillEmpty, sessionId).pipe(Effect.provideService(Client, cl))
32
+ }))));
33
+ }
34
+ export function sendMessages(messages, options) {
35
+ return Effect.gen(function* () {
36
+ const s = yield* Sender;
37
+ return yield* Effect.promise(() => s.sendMessages(messages, options));
38
+ });
39
+ }
40
+ export function subscribe(hndlr, sessionId) {
41
+ return Effect.gen(function* () {
42
+ const rf = yield* ServiceBusReceiverFactory;
43
+ const fs = yield* FiberSet.make();
44
+ const fr = yield* FiberSet.runtime(fs)();
45
+ const wait = Effect.gen(function* () {
46
+ if ((yield* FiberSet.size(fs)) > 0) {
47
+ yield* InfraLogger.logDebug("Waiting ServiceBusFiberSet to be empty: " + (yield* FiberSet.size(fs)));
48
+ }
49
+ while ((yield* FiberSet.size(fs)) > 0)
50
+ yield* Effect.sleep("250 millis");
51
+ });
52
+ const r = yield* sessionId
53
+ ? rf.makeSession(sessionId, wait)
54
+ : rf.make(wait);
55
+ const runEffect = (effect) => new Promise((resolve, reject) => fr(effect)
56
+ .addObserver((exit) => {
57
+ if (Exit.isSuccess(exit)) {
58
+ resolve(exit.value);
59
+ }
60
+ else {
61
+ reject(Cause.pretty(exit.cause, { renderErrorCause: true }));
62
+ }
63
+ }));
64
+ yield* Effect.acquireRelease(Effect.sync(() => r.subscribe({
65
+ processError: (err) => runEffect(hndlr
66
+ .processError(err)
67
+ .pipe(Effect.catchAllCause((cause) => Effect.logError("ServiceBus Error", cause)))),
68
+ processMessage: (msg) => runEffect(hndlr.processMessage(msg))
69
+ // DO NOT CATCH ERRORS here as they should return to the queue!
70
+ })), (subscription) => Effect.promise(() => subscription.close()));
71
+ });
72
+ }
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUJ1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9TZXJ2aWNlQnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXJELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXpDLFNBQVMsVUFBVSxDQUFDLEdBQVc7SUFDN0IsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDNUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQ2pELENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBbUIsa0JBQWtCLENBQUMsQ0FBQTtBQUN2RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUUxRixTQUFTLFVBQVUsQ0FBQyxTQUFpQjtJQUNuQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3pCLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXRDLE9BQU8sS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxH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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-client.d.ts","sourceRoot":"","sources":["../../src/adapters/cosmos-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAInD,eAAO,MAAM,gBAAgB,QAAS,MAAM,UAAU,MAAM;;gBACM,CAAA;AAElE,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;CAAG;AAE5F,eAAO,MAAM,YAAY,yCAA6D,CAAA;AAEtF,eAAO,MAAM,EAAE,sEAAwC,CAAA;AAEvD,eAAO,MAAM,iBAAiB,cAAe,MAAM,UAAU,MAAM,4CACF,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { CosmosClient as ComosClient_ } from "@azure/cosmos";
2
+ import { Context, Effect, Layer } from "effect-app";
3
+ const withClient = (url) => Effect.sync(() => new ComosClient_(url));
4
+ export const makeCosmosClient = (url, dbName) => Effect.map(withClient(url), (x) => ({ db: x.database(dbName) }));
5
+ export const CosmosClient = Context.GenericTag("@services/CosmosClient");
6
+ export const db = Effect.map(CosmosClient, (_) => _.db);
7
+ export const CosmosClientLayer = (cosmosUrl, dbName) => Layer.effect(CosmosClient, makeCosmosClient(cosmosUrl, dbName));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zbW9zLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9jb3Ntb3MtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVuRCxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBVyxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQzlELE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFJbEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQWUsd0JBQXdCLENBQUMsQ0FBQTtBQUV0RixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUV2RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQWlCLEVBQUUsTUFBYyxFQUFFLEVBQUUsQ0FDckUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/adapters/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYWRhcHRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9