@effect-app/infra 0.7.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 (438) hide show
  1. package/.eslintrc.cjs +11 -0
  2. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-314902b6271c341511f7398a50469024 +0 -0
  3. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-3f072cc7afa09b6adaead0527ab9df83 +0 -0
  4. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-74c3c295c110fc861b6a4c673afc3e24 +0 -0
  5. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-bf6dae8cb9ea9740ceb39aefaf12716c +0 -0
  6. package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-cf9d1486029526079a5f68f2041dea02 +0 -0
  7. package/.jest-cache/haste-map-4ca41cc04e60c616a19cbb483cbf487b-e2f1f4b6d87214e3c49442fed31f310c-b4710ed9fb3d0757c4bf23045c585670 +0 -0
  8. package/.jest-cache/haste-map-4ca41cc04e60c616a19cbb483cbf487b-e2f1f4b6d87214e3c49442fed31f310c-ee17e5395bb1b7b36a4e2e22a6ae1449 +0 -0
  9. package/.jest-cache/haste-map-7dc16d7fae8c072843ed1c69eae73100-a8a4225b317477b49bca31f54559afb3-c16136699bb7f463be85273162b447c3 +0 -0
  10. package/.jest-cache/haste-map-9aa1e395a82e108eb49698982c574272-e2f1f4b6d87214e3c49442fed31f310c-f7435f46fc41ac5a13d06a49cae9a650 +0 -0
  11. package/.jest-cache/haste-map-9d206b45d610536c9ec65eec263c6964-a8a4225b317477b49bca31f54559afb3-3510506a330b44f1ae629033aac8fbb3 +0 -0
  12. package/.jest-cache/haste-map-a00ab30d0d656f9d3990958a54b9ccfd-87603b0fc921b26b622a5859b4c92bed-17b550b450b18840c25861aa6e835f0c +0 -0
  13. package/.jest-cache/haste-map-a00ab30d0d656f9d3990958a54b9ccfd-87603b0fc921b26b622a5859b4c92bed-4dc31290b1efc98335eb4c89167d75c3 +0 -0
  14. package/.jest-cache/haste-map-ab843cb0ffbadfd0deea4adb182c7ecd-87603b0fc921b26b622a5859b4c92bed-997106edf4bbc31567a378146180e45e +0 -0
  15. package/.jest-cache/haste-map-ab843cb0ffbadfd0deea4adb182c7ecd-87603b0fc921b26b622a5859b4c92bed-f0cd25414f9ed16c446940ca3aa23c1b +0 -0
  16. package/.jest-cache/haste-map-cf17f2edf0e949eebfdfca561816457c-e7a7ff05756c055cb63be97ba8537525-2cac07d09e6384e2d37c49714edad0ba +0 -0
  17. package/.jest-cache/haste-map-cf17f2edf0e949eebfdfca561816457c-e7a7ff05756c055cb63be97ba8537525-d7967c2976c5feac7161c964f0aa442f +0 -0
  18. package/.jest-cache/haste-map-fb1a173276d25bbff02f815600059283-938122bdc1c8836874b6585d7acb2e99-f705929cca05ce95ceaa6d520b560ce8 +0 -0
  19. package/.prettierignore +6 -0
  20. package/_cjs/_global.cjs +6 -0
  21. package/_cjs/_global.cjs.map +1 -0
  22. package/_cjs/_global.ext.cjs +6 -0
  23. package/_cjs/_global.ext.cjs.map +1 -0
  24. package/_cjs/_global.schema.cjs +5 -0
  25. package/_cjs/_global.schema.cjs.map +1 -0
  26. package/_cjs/errors.cjs +82 -0
  27. package/_cjs/errors.cjs.map +1 -0
  28. package/_cjs/ext.cjs +4 -0
  29. package/_cjs/ext.cjs.map +1 -0
  30. package/_cjs/index.cjs +6 -0
  31. package/_cjs/index.cjs.map +1 -0
  32. package/_cjs/lib/RequestContext.cjs +70 -0
  33. package/_cjs/lib/RequestContext.cjs.map +1 -0
  34. package/_cjs/lib/api/authorization.jwt.cjs +44 -0
  35. package/_cjs/lib/api/authorization.jwt.cjs.map +1 -0
  36. package/_cjs/lib/api/defaultErrorHandler.cjs +45 -0
  37. package/_cjs/lib/api/defaultErrorHandler.cjs.map +1 -0
  38. package/_cjs/lib/api/reportError.cjs +64 -0
  39. package/_cjs/lib/api/reportError.cjs.map +1 -0
  40. package/_cjs/lib/api/routing.cjs +262 -0
  41. package/_cjs/lib/api/routing.cjs.map +1 -0
  42. package/_cjs/lib/api/setupRequest.cjs +35 -0
  43. package/_cjs/lib/api/setupRequest.cjs.map +1 -0
  44. package/_cjs/lib/api/util.cjs +17 -0
  45. package/_cjs/lib/api/util.cjs.map +1 -0
  46. package/_cjs/lib/api/writeDocs.cjs +31 -0
  47. package/_cjs/lib/api/writeDocs.cjs.map +1 -0
  48. package/_cjs/lib/errorReporter.cjs +72 -0
  49. package/_cjs/lib/errorReporter.cjs.map +1 -0
  50. package/_cjs/lib/ext/Array.cjs +30 -0
  51. package/_cjs/lib/ext/Array.cjs.map +1 -0
  52. package/_cjs/lib/fileUtil.cjs +36 -0
  53. package/_cjs/lib/fileUtil.cjs.map +1 -0
  54. package/_cjs/lib/filter/types/errors.cjs +6 -0
  55. package/_cjs/lib/filter/types/errors.cjs.map +1 -0
  56. package/_cjs/lib/filter/types/fields.cjs +6 -0
  57. package/_cjs/lib/filter/types/fields.cjs.map +1 -0
  58. package/_cjs/lib/filter/types/index.cjs +61 -0
  59. package/_cjs/lib/filter/types/index.cjs.map +1 -0
  60. package/_cjs/lib/filter/types/path/common.cjs +6 -0
  61. package/_cjs/lib/filter/types/path/common.cjs.map +1 -0
  62. package/_cjs/lib/filter/types/path/eager.cjs +6 -0
  63. package/_cjs/lib/filter/types/path/eager.cjs.map +1 -0
  64. package/_cjs/lib/filter/types/path/index.cjs +8 -0
  65. package/_cjs/lib/filter/types/path/index.cjs.map +1 -0
  66. package/_cjs/lib/filter/types/utils.cjs +6 -0
  67. package/_cjs/lib/filter/types/utils.cjs.map +1 -0
  68. package/_cjs/lib/filter/types/validator.cjs +6 -0
  69. package/_cjs/lib/filter/types/validator.cjs.map +1 -0
  70. package/_cjs/lib/filter.cjs +238 -0
  71. package/_cjs/lib/filter.cjs.map +1 -0
  72. package/_cjs/lib/instrument.cjs +20 -0
  73. package/_cjs/lib/instrument.cjs.map +1 -0
  74. package/_cjs/lib/rateLimit.cjs +88 -0
  75. package/_cjs/lib/rateLimit.cjs.map +1 -0
  76. package/_cjs/services/CUPS/service.cjs +15 -0
  77. package/_cjs/services/CUPS/service.cjs.map +1 -0
  78. package/_cjs/services/CUPS.cjs +113 -0
  79. package/_cjs/services/CUPS.cjs.map +1 -0
  80. package/_cjs/services/Cache.cjs +39 -0
  81. package/_cjs/services/Cache.cjs.map +1 -0
  82. package/_cjs/services/Emailer/Sendgrid.cjs +112 -0
  83. package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -0
  84. package/_cjs/services/Emailer/fake.cjs +24 -0
  85. package/_cjs/services/Emailer/fake.cjs.map +1 -0
  86. package/_cjs/services/Emailer/service.cjs +12 -0
  87. package/_cjs/services/Emailer/service.cjs.map +1 -0
  88. package/_cjs/services/Emailer.cjs +17 -0
  89. package/_cjs/services/Emailer.cjs.map +1 -0
  90. package/_cjs/services/Repository.cjs +247 -0
  91. package/_cjs/services/Repository.cjs.map +1 -0
  92. package/_cjs/services/ServiceBus.cjs +69 -0
  93. package/_cjs/services/ServiceBus.cjs.map +1 -0
  94. package/_cjs/services/Store/Cosmos.cjs +324 -0
  95. package/_cjs/services/Store/Cosmos.cjs.map +1 -0
  96. package/_cjs/services/Store/Cosmos.test.cjs +59 -0
  97. package/_cjs/services/Store/Cosmos.test.cjs.map +1 -0
  98. package/_cjs/services/Store/Disk.cjs +62 -0
  99. package/_cjs/services/Store/Disk.cjs.map +1 -0
  100. package/_cjs/services/Store/Memory.cjs +70 -0
  101. package/_cjs/services/Store/Memory.cjs.map +1 -0
  102. package/_cjs/services/Store/Redis.cjs +72 -0
  103. package/_cjs/services/Store/Redis.cjs.map +1 -0
  104. package/_cjs/services/Store/codeFilter.test.cjs +61 -0
  105. package/_cjs/services/Store/codeFilter.test.cjs.map +1 -0
  106. package/_cjs/services/Store/index.cjs +72 -0
  107. package/_cjs/services/Store/index.cjs.map +1 -0
  108. package/_cjs/services/Store/service.cjs +72 -0
  109. package/_cjs/services/Store/service.cjs.map +1 -0
  110. package/_cjs/services/Store/utils.cjs +78 -0
  111. package/_cjs/services/Store/utils.cjs.map +1 -0
  112. package/_cjs/services/Store.cjs +17 -0
  113. package/_cjs/services/Store.cjs.map +1 -0
  114. package/_cjs/services/memQueue.cjs +32 -0
  115. package/_cjs/services/memQueue.cjs.map +1 -0
  116. package/_cjs/test.arbs.cjs +32 -0
  117. package/_cjs/test.arbs.cjs.map +1 -0
  118. package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs +14 -0
  119. package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs.map +1 -0
  120. package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs +29 -0
  121. package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs.map +1 -0
  122. package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs +32 -0
  123. package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs.map +1 -0
  124. package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs +266 -0
  125. package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs.map +1 -0
  126. package/_cjs/vendor/Cache/Cache/_internal/CacheState.cjs +31 -0
  127. package/_cjs/vendor/Cache/Cache/_internal/CacheState.cjs.map +1 -0
  128. package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs +67 -0
  129. package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs.map +1 -0
  130. package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs +44 -0
  131. package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs.map +1 -0
  132. package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs +33 -0
  133. package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs.map +1 -0
  134. package/_cjs/vendor/Cache/Cache/definition.cjs +13 -0
  135. package/_cjs/vendor/Cache/Cache/definition.cjs.map +1 -0
  136. package/_cjs/vendor/Cache/Cache/operations/make.cjs +20 -0
  137. package/_cjs/vendor/Cache/Cache/operations/make.cjs.map +1 -0
  138. package/_cjs/vendor/Cache/Cache/operations/makeWith.cjs +23 -0
  139. package/_cjs/vendor/Cache/Cache/operations/makeWith.cjs.map +1 -0
  140. package/_cjs/vendor/Cache/Cache/operations.cjs +28 -0
  141. package/_cjs/vendor/Cache/Cache/operations.cjs.map +1 -0
  142. package/_cjs/vendor/Cache/Cache.cjs +28 -0
  143. package/_cjs/vendor/Cache/Cache.cjs.map +1 -0
  144. package/_cjs/vendor/Cache/CacheStats/definition.cjs +13 -0
  145. package/_cjs/vendor/Cache/CacheStats/definition.cjs.map +1 -0
  146. package/_cjs/vendor/Cache/CacheStats.cjs +17 -0
  147. package/_cjs/vendor/Cache/CacheStats.cjs.map +1 -0
  148. package/_cjs/vendor/Cache/EntryStats/definition.cjs +11 -0
  149. package/_cjs/vendor/Cache/EntryStats/definition.cjs.map +1 -0
  150. package/_cjs/vendor/Cache/EntryStats.cjs +17 -0
  151. package/_cjs/vendor/Cache/EntryStats.cjs.map +1 -0
  152. package/_cjs/vendor/Cache/Lookup/definition.cjs +6 -0
  153. package/_cjs/vendor/Cache/Lookup/definition.cjs.map +1 -0
  154. package/_cjs/vendor/Cache/Lookup.cjs +17 -0
  155. package/_cjs/vendor/Cache/Lookup.cjs.map +1 -0
  156. package/_cjs/vendor/Cache/index.cjs +17 -0
  157. package/_cjs/vendor/Cache/index.cjs.map +1 -0
  158. package/_src/_global.ext.ts +34 -0
  159. package/_src/_global.schema.ts +10 -0
  160. package/_src/_global.ts +14 -0
  161. package/_src/errors.ts +50 -0
  162. package/_src/ext.ts +1 -0
  163. package/_src/index.ts +0 -0
  164. package/_src/lib/RequestContext.ts +132 -0
  165. package/_src/lib/api/authorization.jwt.ts +52 -0
  166. package/_src/lib/api/defaultErrorHandler.ts +92 -0
  167. package/_src/lib/api/reportError.ts +50 -0
  168. package/_src/lib/api/routing.ts +623 -0
  169. package/_src/lib/api/setupRequest.ts +22 -0
  170. package/_src/lib/api/util.ts +14 -0
  171. package/_src/lib/api/writeDocs.ts +26 -0
  172. package/_src/lib/errorReporter.ts +63 -0
  173. package/_src/lib/ext/Array.ts +32 -0
  174. package/_src/lib/fileUtil.ts +56 -0
  175. package/_src/lib/filter/types/errors.ts +47 -0
  176. package/_src/lib/filter/types/fields.ts +50 -0
  177. package/_src/lib/filter/types/index.ts +5 -0
  178. package/_src/lib/filter/types/path/common.ts +404 -0
  179. package/_src/lib/filter/types/path/eager.ts +146 -0
  180. package/_src/lib/filter/types/path/index.ts +14 -0
  181. package/_src/lib/filter/types/utils.ts +106 -0
  182. package/_src/lib/filter/types/validator.ts +46 -0
  183. package/_src/lib/filter.ts +323 -0
  184. package/_src/lib/instrument.ts +9 -0
  185. package/_src/lib/rateLimit.ts +126 -0
  186. package/_src/services/CUPS/service.ts +16 -0
  187. package/_src/services/CUPS.ts +105 -0
  188. package/_src/services/Cache.ts +45 -0
  189. package/_src/services/Emailer/Sendgrid.ts +123 -0
  190. package/_src/services/Emailer/fake.ts +14 -0
  191. package/_src/services/Emailer/service.ts +33 -0
  192. package/_src/services/Emailer.ts +1 -0
  193. package/_src/services/Repository.ts +513 -0
  194. package/_src/services/ServiceBus.ts +111 -0
  195. package/_src/services/Store/Cosmos.test.ts +91 -0
  196. package/_src/services/Store/Cosmos.ts +545 -0
  197. package/_src/services/Store/Disk.ts +81 -0
  198. package/_src/services/Store/Memory.ts +77 -0
  199. package/_src/services/Store/Redis.ts +92 -0
  200. package/_src/services/Store/codeFilter.test.ts +74 -0
  201. package/_src/services/Store/index.test.ts.bak +112 -0
  202. package/_src/services/Store/index.ts +62 -0
  203. package/_src/services/Store/service.ts +174 -0
  204. package/_src/services/Store/utils.ts +126 -0
  205. package/_src/services/Store.ts +1 -0
  206. package/_src/services/memQueue.ts +30 -0
  207. package/_src/test.arbs.ts +27 -0
  208. package/_src/vendor/Cache/Cache/_internal/AtomicBoolean.ts +7 -0
  209. package/_src/vendor/Cache/Cache/_internal/AtomicNumber.ts +28 -0
  210. package/_src/vendor/Cache/Cache/_internal/AtomicReference.ts +30 -0
  211. package/_src/vendor/Cache/Cache/_internal/CacheInternal.ts +293 -0
  212. package/_src/vendor/Cache/Cache/_internal/CacheState.ts +56 -0
  213. package/_src/vendor/Cache/Cache/_internal/KeySet.ts +58 -0
  214. package/_src/vendor/Cache/Cache/_internal/MapKey.ts +43 -0
  215. package/_src/vendor/Cache/Cache/_internal/MapValue.ts +39 -0
  216. package/_src/vendor/Cache/Cache/definition.ts +112 -0
  217. package/_src/vendor/Cache/Cache/operations/make.ts +17 -0
  218. package/_src/vendor/Cache/Cache/operations/makeWith.ts +32 -0
  219. package/_src/vendor/Cache/Cache/operations.ts +4 -0
  220. package/_src/vendor/Cache/Cache.ts +4 -0
  221. package/_src/vendor/Cache/CacheStats/definition.ts +23 -0
  222. package/_src/vendor/Cache/CacheStats.ts +3 -0
  223. package/_src/vendor/Cache/EntryStats/definition.ts +19 -0
  224. package/_src/vendor/Cache/EntryStats.ts +3 -0
  225. package/_src/vendor/Cache/Lookup/definition.ts +15 -0
  226. package/_src/vendor/Cache/Lookup.ts +3 -0
  227. package/_src/vendor/Cache/global.ts.bak +23 -0
  228. package/_src/vendor/Cache/index.ts +4 -0
  229. package/dist/_global.d.ts +10 -0
  230. package/dist/_global.d.ts.map +1 -0
  231. package/dist/_global.ext.d.ts +34 -0
  232. package/dist/_global.ext.d.ts.map +1 -0
  233. package/dist/_global.ext.js +2 -0
  234. package/dist/_global.js +12 -0
  235. package/dist/_global.schema.d.ts +6 -0
  236. package/dist/_global.schema.d.ts.map +1 -0
  237. package/dist/_global.schema.js +9 -0
  238. package/dist/errors.d.ts +41 -0
  239. package/dist/errors.d.ts.map +1 -0
  240. package/dist/errors.js +51 -0
  241. package/dist/ext.d.ts +2 -0
  242. package/dist/ext.d.ts.map +1 -0
  243. package/dist/ext.js +2 -0
  244. package/dist/index.d.ts +2 -0
  245. package/dist/index.d.ts.map +1 -0
  246. package/dist/index.js +2 -0
  247. package/dist/lib/RequestContext.d.ts +122 -0
  248. package/dist/lib/RequestContext.d.ts.map +1 -0
  249. package/dist/lib/RequestContext.js +52 -0
  250. package/dist/lib/api/authorization.jwt.d.ts +7 -0
  251. package/dist/lib/api/authorization.jwt.d.ts.map +1 -0
  252. package/dist/lib/api/authorization.jwt.js +32 -0
  253. package/dist/lib/api/defaultErrorHandler.d.ts +8 -0
  254. package/dist/lib/api/defaultErrorHandler.d.ts.map +1 -0
  255. package/dist/lib/api/defaultErrorHandler.js +37 -0
  256. package/dist/lib/api/reportError.d.ts +32 -0
  257. package/dist/lib/api/reportError.d.ts.map +1 -0
  258. package/dist/lib/api/reportError.js +44 -0
  259. package/dist/lib/api/routing.d.ts +100 -0
  260. package/dist/lib/api/routing.d.ts.map +1 -0
  261. package/dist/lib/api/routing.js +248 -0
  262. package/dist/lib/api/setupRequest.d.ts +13 -0
  263. package/dist/lib/api/setupRequest.d.ts.map +1 -0
  264. package/dist/lib/api/setupRequest.js +25 -0
  265. package/dist/lib/api/util.d.ts +3 -0
  266. package/dist/lib/api/util.d.ts.map +1 -0
  267. package/dist/lib/api/util.js +14 -0
  268. package/dist/lib/api/writeDocs.d.ts +3 -0
  269. package/dist/lib/api/writeDocs.d.ts.map +1 -0
  270. package/dist/lib/api/writeDocs.js +23 -0
  271. package/dist/lib/errorReporter.d.ts +8 -0
  272. package/dist/lib/errorReporter.d.ts.map +1 -0
  273. package/dist/lib/errorReporter.js +45 -0
  274. package/dist/lib/ext/Array.d.ts +19 -0
  275. package/dist/lib/ext/Array.d.ts.map +1 -0
  276. package/dist/lib/ext/Array.js +21 -0
  277. package/dist/lib/fileUtil.d.ts +22 -0
  278. package/dist/lib/fileUtil.d.ts.map +1 -0
  279. package/dist/lib/fileUtil.js +23 -0
  280. package/dist/lib/filter/types/errors.d.ts +30 -0
  281. package/dist/lib/filter/types/errors.d.ts.map +1 -0
  282. package/dist/lib/filter/types/errors.js +2 -0
  283. package/dist/lib/filter/types/fields.d.ts +29 -0
  284. package/dist/lib/filter/types/fields.d.ts.map +1 -0
  285. package/dist/lib/filter/types/fields.js +2 -0
  286. package/dist/lib/filter/types/index.d.ts +6 -0
  287. package/dist/lib/filter/types/index.d.ts.map +1 -0
  288. package/dist/lib/filter/types/index.js +6 -0
  289. package/dist/lib/filter/types/path/common.d.ts +316 -0
  290. package/dist/lib/filter/types/path/common.d.ts.map +1 -0
  291. package/dist/lib/filter/types/path/common.js +2 -0
  292. package/dist/lib/filter/types/path/eager.d.ts +95 -0
  293. package/dist/lib/filter/types/path/eager.d.ts.map +1 -0
  294. package/dist/lib/filter/types/path/eager.js +2 -0
  295. package/dist/lib/filter/types/path/index.d.ts +4 -0
  296. package/dist/lib/filter/types/path/index.d.ts.map +1 -0
  297. package/dist/lib/filter/types/path/index.js +4 -0
  298. package/dist/lib/filter/types/utils.d.ts +68 -0
  299. package/dist/lib/filter/types/utils.d.ts.map +1 -0
  300. package/dist/lib/filter/types/utils.js +2 -0
  301. package/dist/lib/filter/types/validator.d.ts +30 -0
  302. package/dist/lib/filter/types/validator.d.ts.map +1 -0
  303. package/dist/lib/filter/types/validator.js +2 -0
  304. package/dist/lib/filter.d.ts +133 -0
  305. package/dist/lib/filter.d.ts.map +1 -0
  306. package/dist/lib/filter.js +171 -0
  307. package/dist/lib/instrument.d.ts +7 -0
  308. package/dist/lib/instrument.d.ts.map +1 -0
  309. package/dist/lib/instrument.js +12 -0
  310. package/dist/lib/rateLimit.d.ts +43 -0
  311. package/dist/lib/rateLimit.d.ts.map +1 -0
  312. package/dist/lib/rateLimit.js +76 -0
  313. package/dist/services/CUPS/service.d.ts +19 -0
  314. package/dist/services/CUPS/service.d.ts.map +1 -0
  315. package/dist/services/CUPS/service.js +5 -0
  316. package/dist/services/CUPS.d.ts +10 -0
  317. package/dist/services/CUPS.d.ts.map +1 -0
  318. package/dist/services/CUPS.js +89 -0
  319. package/dist/services/Cache.d.ts +28 -0
  320. package/dist/services/Cache.d.ts.map +1 -0
  321. package/dist/services/Cache.js +28 -0
  322. package/dist/services/Emailer/Sendgrid.d.ts +180 -0
  323. package/dist/services/Emailer/Sendgrid.d.ts.map +1 -0
  324. package/dist/services/Emailer/Sendgrid.js +102 -0
  325. package/dist/services/Emailer/fake.d.ts +7 -0
  326. package/dist/services/Emailer/fake.d.ts.map +1 -0
  327. package/dist/services/Emailer/fake.js +15 -0
  328. package/dist/services/Emailer/service.d.ts +41 -0
  329. package/dist/services/Emailer/service.d.ts.map +1 -0
  330. package/dist/services/Emailer/service.js +3 -0
  331. package/dist/services/Emailer.d.ts +2 -0
  332. package/dist/services/Emailer.d.ts.map +1 -0
  333. package/dist/services/Emailer.js +2 -0
  334. package/dist/services/Repository.d.ts +300 -0
  335. package/dist/services/Repository.d.ts.map +1 -0
  336. package/dist/services/Repository.js +193 -0
  337. package/dist/services/ServiceBus.d.ts +26 -0
  338. package/dist/services/ServiceBus.d.ts.map +1 -0
  339. package/dist/services/ServiceBus.js +53 -0
  340. package/dist/services/Store/Cosmos.d.ts +56 -0
  341. package/dist/services/Store/Cosmos.d.ts.map +1 -0
  342. package/dist/services/Store/Cosmos.js +321 -0
  343. package/dist/services/Store/Cosmos.test.d.ts.map +1 -0
  344. package/dist/services/Store/Disk.d.ts +14 -0
  345. package/dist/services/Store/Disk.d.ts.map +1 -0
  346. package/dist/services/Store/Disk.js +52 -0
  347. package/dist/services/Store/Memory.d.ts +17 -0
  348. package/dist/services/Store/Memory.d.ts.map +1 -0
  349. package/dist/services/Store/Memory.js +60 -0
  350. package/dist/services/Store/Redis.d.ts +12 -0
  351. package/dist/services/Store/Redis.d.ts.map +1 -0
  352. package/dist/services/Store/Redis.js +59 -0
  353. package/dist/services/Store/codeFilter.test.d.ts.map +1 -0
  354. package/dist/services/Store/index.d.ts +10 -0
  355. package/dist/services/Store/index.d.ts.map +1 -0
  356. package/dist/services/Store/index.js +52 -0
  357. package/dist/services/Store/service.d.ts +113 -0
  358. package/dist/services/Store/service.d.ts.map +1 -0
  359. package/dist/services/Store/service.js +63 -0
  360. package/dist/services/Store/utils.d.ts +14 -0
  361. package/dist/services/Store/utils.d.ts.map +1 -0
  362. package/dist/services/Store/utils.js +103 -0
  363. package/dist/services/Store.d.ts +2 -0
  364. package/dist/services/Store.d.ts.map +1 -0
  365. package/dist/services/Store.js +2 -0
  366. package/dist/services/memQueue.d.ts +18 -0
  367. package/dist/services/memQueue.d.ts.map +1 -0
  368. package/dist/services/memQueue.js +24 -0
  369. package/dist/test.arbs.d.ts +13 -0
  370. package/dist/test.arbs.d.ts.map +1 -0
  371. package/dist/test.arbs.js +22 -0
  372. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts +5 -0
  373. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts.map +1 -0
  374. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.js +7 -0
  375. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts +8 -0
  376. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts.map +1 -0
  377. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.js +22 -0
  378. package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts +10 -0
  379. package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts.map +1 -0
  380. package/dist/vendor/Cache/Cache/_internal/AtomicReference.js +25 -0
  381. package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts +51 -0
  382. package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts.map +1 -0
  383. package/dist/vendor/Cache/Cache/_internal/CacheInternal.js +253 -0
  384. package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts +33 -0
  385. package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts.map +1 -0
  386. package/dist/vendor/Cache/Cache/_internal/CacheState.js +21 -0
  387. package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts +20 -0
  388. package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts.map +1 -0
  389. package/dist/vendor/Cache/Cache/_internal/KeySet.js +61 -0
  390. package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts +24 -0
  391. package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts.map +1 -0
  392. package/dist/vendor/Cache/Cache/_internal/MapKey.js +37 -0
  393. package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts +32 -0
  394. package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts.map +1 -0
  395. package/dist/vendor/Cache/Cache/_internal/MapValue.js +24 -0
  396. package/dist/vendor/Cache/Cache/definition.d.ts +100 -0
  397. package/dist/vendor/Cache/Cache/definition.d.ts.map +1 -0
  398. package/dist/vendor/Cache/Cache/definition.js +5 -0
  399. package/dist/vendor/Cache/Cache/operations/make.d.ts +12 -0
  400. package/dist/vendor/Cache/Cache/operations/make.d.ts.map +1 -0
  401. package/dist/vendor/Cache/Cache/operations/make.js +12 -0
  402. package/dist/vendor/Cache/Cache/operations/makeWith.d.ts +14 -0
  403. package/dist/vendor/Cache/Cache/operations/makeWith.d.ts.map +1 -0
  404. package/dist/vendor/Cache/Cache/operations/makeWith.js +15 -0
  405. package/dist/vendor/Cache/Cache/operations.d.ts +3 -0
  406. package/dist/vendor/Cache/Cache/operations.d.ts.map +1 -0
  407. package/dist/vendor/Cache/Cache/operations.js +4 -0
  408. package/dist/vendor/Cache/Cache.d.ts +3 -0
  409. package/dist/vendor/Cache/Cache.d.ts.map +1 -0
  410. package/dist/vendor/Cache/Cache.js +4 -0
  411. package/dist/vendor/Cache/CacheStats/definition.d.ts +19 -0
  412. package/dist/vendor/Cache/CacheStats/definition.d.ts.map +1 -0
  413. package/dist/vendor/Cache/CacheStats/definition.js +6 -0
  414. package/dist/vendor/Cache/CacheStats.d.ts +2 -0
  415. package/dist/vendor/Cache/CacheStats.d.ts.map +1 -0
  416. package/dist/vendor/Cache/CacheStats.js +3 -0
  417. package/dist/vendor/Cache/EntryStats/definition.d.ts +17 -0
  418. package/dist/vendor/Cache/EntryStats/definition.d.ts.map +1 -0
  419. package/dist/vendor/Cache/EntryStats/definition.js +4 -0
  420. package/dist/vendor/Cache/EntryStats.d.ts +2 -0
  421. package/dist/vendor/Cache/EntryStats.d.ts.map +1 -0
  422. package/dist/vendor/Cache/EntryStats.js +3 -0
  423. package/dist/vendor/Cache/Lookup/definition.d.ts +17 -0
  424. package/dist/vendor/Cache/Lookup/definition.d.ts.map +1 -0
  425. package/dist/vendor/Cache/Lookup/definition.js +2 -0
  426. package/dist/vendor/Cache/Lookup.d.ts +2 -0
  427. package/dist/vendor/Cache/Lookup.d.ts.map +1 -0
  428. package/dist/vendor/Cache/Lookup.js +3 -0
  429. package/dist/vendor/Cache/index.d.ts +5 -0
  430. package/dist/vendor/Cache/index.d.ts.map +1 -0
  431. package/dist/vendor/Cache/index.js +5 -0
  432. package/package.json +756 -0
  433. package/tsconfig.json +107 -0
  434. package/tsconfig.json.bak +47 -0
  435. package/tsplus.config.json +6 -0
  436. package/types/modules.d.ts +1 -0
  437. package/vitest.config.ts +5 -0
  438. package/wallaby.cjs +1 -0
@@ -0,0 +1,60 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/Store/Memory.ts";
3
+ import * as tsplus_module_1 from "@fp-ts/data/Chunk";
4
+ import * as tsplus_module_2 from "@effect-app/core/Chunk";
5
+ import * as tsplus_module_3 from "@fp-ts/data/Option";
6
+ import * as tsplus_module_4 from "@effect-app/core/Array";
7
+ import * as tsplus_module_5 from "@effect-app/prelude";
8
+ import * as tsplus_module_6 from "@effect/io/Effect";
9
+ import * as tsplus_module_7 from "@effect/io/Ref";
10
+ import * as tsplus_module_8 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
11
+ import * as tsplus_module_9 from "@effect-app/core/Tag";
12
+ import { StoreMaker } from "./service.js";
13
+ import { codeFilter, codeFilterJoinSelect, makeETag, makeUpdateETag } from "./utils.js";
14
+ export function memFilter(filter, cursor) {
15
+ return ((c) => {
16
+ const skip = cursor?.skip;
17
+ const limit = cursor?.limit;
18
+ if (!skip && limit === 1) {
19
+ return tsplus_module_3.getOrElse(() => tsplus_module_1.empty())(tsplus_module_3.map(tsplus_module_1.make)(tsplus_module_2.findFirstMap(codeFilter(filter))(c)));
20
+ }
21
+ let r = tsplus_module_1.filterMap(codeFilter(filter))(c);
22
+ if (skip) {
23
+ r = tsplus_module_1.drop(skip)(r);
24
+ }
25
+ if (limit !== undefined) {
26
+ r = tsplus_module_1.take(limit)(r);
27
+ }
28
+ return tsplus_module_4.ext_itToChunk(r);
29
+ });
30
+ }
31
+ export const makeMemoryStore = () => ({
32
+ make: (name, existing, _config) => tracer_1.withCallTrace(fileName_1 + ":31:12")(tsplus_module_6.gen(function* ($) {
33
+ const updateETag = makeUpdateETag(name);
34
+ const items = yield* $(existing ?? tracer_1.withCallTrace(fileName_1 + ":33:42")(tsplus_module_6.sync(() => tsplus_module_5.ROMap.empty)));
35
+ const store = yield* $(tracer_1.withCallTrace(fileName_1 + ":35:13")(tsplus_module_7.make(tsplus_module_5.ROMap.make([...items.entries()].map(([id, e]) => [id, makeETag(e)])))));
36
+ const sem = tsplus_module_6.unsafeMakeSemaphore(1);
37
+ const withPermit = sem.withPermits(1);
38
+ const values = tracer_1.withCallTrace(fileName_1 + ":41:32")(tsplus_module_6.map(s => s.values()))(tsplus_module_7.get(store));
39
+ const all = tracer_1.withCallTrace(fileName_1 + ":42:26")(tsplus_module_6.map(tsplus_module_1.fromIterable))(values);
40
+ const batchSet = (items) => withPermit(tracer_1.withCallTrace(fileName_1 + ":55:12")(tsplus_module_6.map(_ => _.toReadonlyArray()))(tracer_1.withCallTrace(fileName_1 + ":46:12")(tsplus_module_6.tap(items => tracer_1.withCallTrace(fileName_1 + ":53:16")(tsplus_module_6.flatMap(_ => tsplus_module_7.set(store)(_)))(tracer_1.withCallTrace(fileName_1 + ":48:16")(tsplus_module_6.map(m => {
41
+ const mut = tsplus_module_5.ROMap.toMutable(m);
42
+ items.forEach(e => mut.set(e.id, e));
43
+ return tsplus_module_5.ROMap.fromMutable(mut);
44
+ }))(tsplus_module_7.get(store)))))(tsplus_module_8.ext_forEach(items, i => tracer_1.withCallTrace(fileName_1 + ":45:44")(tsplus_module_6.flatMap(current => updateETag(i, current)))(s.find(i.id))))));
45
+ const s = {
46
+ all,
47
+ find: id => tracer_1.withCallTrace(fileName_1 + ":59:31")(tsplus_module_6.map(tsplus_module_5.ROMap.lookup(id)))(tsplus_module_7.get(store)),
48
+ filter: (filter, cursor) => tracer_1.withCallTrace(fileName_1 + ":60:89")(tsplus_module_6.map(memFilter(filter, cursor)))(all),
49
+ filterJoinSelect: (filter) => tracer_1.withCallTrace(fileName_1 + ":62:15")(tsplus_module_6.map(c => c.flatMap(codeFilterJoinSelect(filter))))(all),
50
+ set: e => withPermit(tracer_1.withCallTrace(fileName_1 + ":67:14")(tsplus_module_6.tap(e => tracer_1.withCallTrace(fileName_1 + ":67:60")(tsplus_module_6.flatMap(_ => tsplus_module_7.set(store)(_)))(tracer_1.withCallTrace(fileName_1 + ":67:33")(tsplus_module_6.map(tsplus_module_5.ROMap.insert(e.id, e)))(tsplus_module_7.get(store)))))(tracer_1.withCallTrace(fileName_1 + ":66:14")(tsplus_module_6.flatMap(current => updateETag(e, current)))(s
51
+ .find(e.id)))),
52
+ batchSet,
53
+ bulkSet: batchSet,
54
+ remove: (e) => withPermit(tracer_1.withCallTrace(fileName_1 + ":71:62")(tsplus_module_6.flatMap(_ => tsplus_module_7.set(store)(_)))(tracer_1.withCallTrace(fileName_1 + ":71:38")(tsplus_module_6.map(tsplus_module_5.ROMap.remove(e.id)))(tsplus_module_7.get(store))))
55
+ };
56
+ return s;
57
+ }))
58
+ });
59
+ export const MemoryStoreLive = tsplus_module_9.makeLayer(StoreMaker)(makeMemoryStore());
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9NZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV2RixNQUFNLFVBQVUsU0FBUyxDQUEyQixNQUFpQixFQUFFLE1BQTBDO0lBQy9HLE9BQU8sQ0FBQyxDQUFDLENBQVcsRUFBWSxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUE7UUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssQ0FBQTtRQUMzQixJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTywwQkFBNkQsR0FBRyxFQUFFLENBQUMsdUJBQWEsRUFBaEYsMENBQUEsNkJBQWUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFqQyxDQUFDLENBQWlDLENBQWdCLENBQStCLENBQUE7U0FDekY7UUFDRCxJQUFJLENBQUMsR0FBRywwQkFBWSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQTlCLENBQUMsQ0FBOEIsQ0FBQTtRQUN2QyxJQUFJLElBQUksRUFBRTtZQUNSLENBQUMsR0FBRyxxQkFBTyxJQUFJLEVBQVgsQ0FBQyxDQUFXLENBQUE7U0FDakI7UUFDRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsQ0FBQyxHQUFHLHFCQUFPLEtBQUssRUFBWixDQUFDLENBQVksQ0FBQTtTQUNsQjtRQUNELHFDQUFPLENBQUMsRUFBUTtJQUNsQixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztJ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
@@ -0,0 +1,12 @@
1
+ import { Effect } from "@effect/io/Effect";
2
+ import { ROMap } from "@effect-app/prelude";
3
+ import { NonEmptyReadonlyArray } from "@fp-ts/data/ReadonlyArray";
4
+ import { Config } from "@effect/io/Config";
5
+ import * as RedisClient from "@effect-app/infra-adapters/redis-client";
6
+ import type { PersistenceModelType, StorageConfig, Store, StoreConfig } from "./service.js";
7
+ import { StoreMaker } from "./service.js";
8
+ export declare function makeRedisStore({ prefix }: StorageConfig): import("@effect/io/Effect").Effect<RedisClient.RedisClient, never, {
9
+ make: <Id extends string, PM extends PersistenceModelType<Id>, Id2 extends Id>(name: string, existing?: import("@effect/io/Effect").Effect<never, never, import("@effect-app/core/Prelude").Map<Id2, PM>> | undefined, _config?: StoreConfig<PM> | undefined) => import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
10
+ }>;
11
+ export declare function RedisStoreLive(config: Config<StorageConfig>): import("@effect/io/Layer").Layer<RedisClient.RedisClient, import("@effect/io/Config/Error").ConfigError, StoreMaker>;
12
+ //# sourceMappingURL=Redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Redis.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Redis.ts"],"names":[],"mappings":";;;;AACA,OAAO,KAAK,WAAW,MAAM,yCAAyC,CAAA;AAItE,OAAO,KAAK,EAA4B,oBAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACrH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa;yFAK1C,MAAM;GA0EnB;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,wHAE3D"}
@@ -0,0 +1,59 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/Store/Redis.ts";
3
+ import * as tsplus_module_1 from "@effect/io/Effect";
4
+ import * as tsplus_module_2 from "@effect-app/core/Effect";
5
+ import * as tsplus_module_3 from "@fp-ts/data/Option";
6
+ import * as tsplus_module_4 from "@effect-app/prelude";
7
+ import * as tsplus_module_5 from "@effect-app/prelude/_ext/Prelude.ext";
8
+ import * as tsplus_module_6 from "@fp-ts/data/Chunk";
9
+ import * as tsplus_module_7 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
10
+ /* eslint-disable @typescript-eslint/no-explicit-any */
11
+ import * as RedisClient from "@effect-app/infra-adapters/redis-client";
12
+ import { NotFoundError } from "../../errors.js";
13
+ import { memFilter } from "./Memory.js";
14
+ import { StoreMaker } from "./service.js";
15
+ import { codeFilterJoinSelect, makeETag, makeUpdateETag } from "./utils.js";
16
+ export function makeRedisStore({ prefix }) {
17
+ return tracer_1.withCallTrace(fileName_1 + ":11:17")(tsplus_module_1.gen(function* ($) {
18
+ const redis = yield* $(tsplus_module_1.service(RedisClient.RedisClient));
19
+ return {
20
+ make: (name, existing, _config) => tracer_1.withCallTrace(fileName_1 + ":19:16")(tsplus_module_1.gen(function* ($) {
21
+ const updateETag = makeUpdateETag(name);
22
+ // Very naive implementation of course.
23
+ const key = `${prefix}${name}`;
24
+ const current = yield* $(tracer_1.withCallTrace(fileName_1 + ":23:63")(tsplus_module_2.provideService(tsplus_module_1.orDie(RedisClient.get(key)), RedisClient.RedisClient, redis)));
25
+ if (!tsplus_module_3.isSome(current)) {
26
+ const m = yield* $(existing ?? tracer_1.withCallTrace(fileName_1 + ":25:44")(tsplus_module_1.sync(() => tsplus_module_4.ROMap.empty)));
27
+ yield* $(tracer_1.withCallTrace(fileName_1 + ":29:18")(tsplus_module_2.provideService(tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({ data: [...m.values()].map(e => makeETag(e)) }))), RedisClient.RedisClient, redis)));
28
+ }
29
+ const get = tracer_1.withCallTrace(fileName_1 + ":37:14")(tsplus_module_2.provideService(tracer_1.withCallTrace(fileName_1 + ":36:14")(tsplus_module_1.map(_ => _.data))(tracer_1.withCallTrace(fileName_1 + ":35:14")(tsplus_module_1.map(x => JSON.parse(x)))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":33:14")(tsplus_module_1.flatMap(x => tsplus_module_5.encaseMaybeInEffect_(x, () => new NotFoundError("data", ""))))(RedisClient.get(key))))), RedisClient.RedisClient, redis));
30
+ const set = (i) => tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({ data: [...i.values()] })));
31
+ const sem = tsplus_module_1.unsafeMakeSemaphore(1);
32
+ const withPermit = sem.withPermits(1);
33
+ const asMap = tracer_1.withCallTrace(fileName_1 + ":44:29")(tsplus_module_1.map(x => tsplus_module_4.ROMap.make(x.map(x => [x.id, x]))))(get);
34
+ const all = tracer_1.withCallTrace(fileName_1 + ":45:27")(tsplus_module_1.map(tsplus_module_6.fromIterable))(get);
35
+ const batchSet = (items) => tracer_1.withCallTrace(fileName_1 + ":60:16")(tsplus_module_2.provideService(withPermit(tracer_1.withCallTrace(fileName_1 + ":58:16")(tsplus_module_1.map(_ => _.toReadonlyArray()))(tracer_1.withCallTrace(fileName_1 + ":49:16")(tsplus_module_1.tap(items => tracer_1.withCallTrace(fileName_1 + ":56:20")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":51:20")(tsplus_module_1.map(m => {
36
+ const mut = tsplus_module_4.ROMap.toMutable(m);
37
+ items.forEach(e => mut.set(e.id, e));
38
+ return tsplus_module_4.ROMap.fromMutable(mut);
39
+ }))(asMap))))(tsplus_module_7.ext_forEach(items, e => tracer_1.withCallTrace(fileName_1 + ":48:48")(tsplus_module_1.flatMap(current => updateETag(e, current)))(s.find(e.id)))))), RedisClient.RedisClient, redis));
40
+ const s = {
41
+ all,
42
+ filter: (filter, cursor) => tracer_1.withCallTrace(fileName_1 + ":64:19")(tsplus_module_1.map(memFilter(filter, cursor)))(all),
43
+ filterJoinSelect: (filter) => tracer_1.withCallTrace(fileName_1 + ":66:19")(tsplus_module_1.map(c => c.flatMap(codeFilterJoinSelect(filter))))(all),
44
+ find: id => tracer_1.withCallTrace(fileName_1 + ":67:31")(tsplus_module_1.map(tsplus_module_4.ROMap.lookup(id)))(asMap),
45
+ set: e => tracer_1.withCallTrace(fileName_1 + ":74:18")(tsplus_module_2.provideService(withPermit(tracer_1.withCallTrace(fileName_1 + ":72:18")(tsplus_module_1.tap(e => tracer_1.withCallTrace(fileName_1 + ":72:60")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":72:33")(tsplus_module_1.map(tsplus_module_4.ROMap.insert(e.id, e)))(asMap))))(tracer_1.withCallTrace(fileName_1 + ":71:18")(tsplus_module_1.flatMap(current => updateETag(e, current)))(s
46
+ .find(e.id)))), RedisClient.RedisClient, redis)),
47
+ batchSet,
48
+ bulkSet: batchSet,
49
+ remove: (e) => tracer_1.withCallTrace(fileName_1 + ":80:18")(tsplus_module_2.provideService(withPermit(tracer_1.withCallTrace(fileName_1 + ":78:45")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":78:21")(tsplus_module_1.map(tsplus_module_4.ROMap.remove(e.id)))(asMap))), RedisClient.RedisClient, redis))
50
+ };
51
+ return s;
52
+ }))
53
+ };
54
+ }));
55
+ }
56
+ export function RedisStoreLive(config) {
57
+ return tsplus_module_1.toLayer(StoreMaker)(tracer_1.withCallTrace(fileName_1 + ":91:24")(tsplus_module_1.flatMap(makeRedisStore))(tsplus_module_1.config(config)));
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL1JlZGlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlDQUF5QyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFM0UsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBaUI7SUFDdEQscURBQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQVEsQ0FBQTtRQUN0RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQ0osSUFBWSxFQUNaLFFBQStDLEVBQy9DLE9BQXlCLEVBQ3pCLEVBQUUsK0NBQ0Ysb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN2Qyx1Q0FBdUM7Z0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFBO2dCQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLCtDQUFDLHFEQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQXNCLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUMsQ0FBQTtnQkFDbkcsSUFBSSxDQUFDLHVCQUFBLE9BQU8sQ0FBUyxF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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeFilter.test.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/codeFilter.test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAU/E,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAA2B,CAAA;AACnC,MAAM,MAAM,oBAAoB,GAAG,OAAO,EAAE,CAAA;AAE5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,gBAAgB,oBAEzF;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,CACT,CAAC,EAAE,oBAAoB,KACpB,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,EAChC,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,oBASpB;AAGD,KAAK,aAAa,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,KAAK,SAAS,GAAG;IACf,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAC5B,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { Config } from "@effect/io/Config";
2
+ import type { StorageConfig } from "./service.js";
3
+ import { StoreMaker } from "./service.js";
4
+ /**
5
+ * @tsplus static StoreMaker.Ops Live
6
+ * @tsplus location "@effect-app/infra/services/Store/index"
7
+ */
8
+ export declare function StoreMakerLive(config: Config<StorageConfig>): import("@effect/io/Layer").Layer<never, import("@effect/io/Config/Error").ConfigError, StoreMaker>;
9
+ export * from "./service.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/index.ts"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;;;;;AAKzC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,sGA2B3D;AAmBD,cAAc,cAAc,CAAA"}
@@ -0,0 +1,52 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/Store/index.ts";
3
+ import * as tsplus_module_1 from "@effect/io/Config/Secret";
4
+ import * as tsplus_module_2 from "@effect/io/Effect";
5
+ import * as tsplus_module_3 from "@effect-app/core/Effect";
6
+ import * as tsplus_module_4 from "@effect/io/Layer";
7
+ /* eslint-disable @typescript-eslint/no-explicit-any */
8
+ import * as CosmosClient from "@effect-app/infra-adapters/cosmos-client";
9
+ import * as RedisClient from "@effect-app/infra-adapters/redis-client";
10
+ import { createClient } from "redis";
11
+ import { makeCosmosStore } from "./Cosmos.js";
12
+ import { makeDiskStore } from "./Disk.js";
13
+ import { makeMemoryStore } from "./Memory.js";
14
+ import { makeRedisStore } from "./Redis.js";
15
+ import { StoreMaker } from "./service.js";
16
+ /**
17
+ * @tsplus static StoreMaker.Ops Live
18
+ */
19
+ export function StoreMakerLive(config) {
20
+ return tsplus_module_4.scoped(StoreMaker)(tracer_1.withCallTrace(fileName_1 + ":17:24")(tsplus_module_2.flatMap(cfg => {
21
+ const storageUrl = tsplus_module_1.value(cfg.url);
22
+ if (storageUrl.startsWith("mem://")) {
23
+ console.log("Using in memory store");
24
+ return tracer_1.withCallTrace(fileName_1 + ":21:14")(tsplus_module_2.sync(() => makeMemoryStore()));
25
+ }
26
+ if (storageUrl.startsWith("disk://")) {
27
+ console.log("Using disk store at ./.data");
28
+ return makeDiskStore(cfg);
29
+ }
30
+ if (storageUrl.startsWith("redis://")) {
31
+ console.log("Using Redis store");
32
+ return tracer_1.withCallTrace(fileName_1 + ":29:65")(tsplus_module_2.flatMap(client => tracer_1.withCallTrace(fileName_1 + ":30:29")(tsplus_module_3.provideService(makeRedisStore(cfg), RedisClient.RedisClient, client))))(RedisClient.makeRedisClient(makeRedis(storageUrl)));
33
+ }
34
+ console.log("Using Cosmos DB store");
35
+ return tracer_1.withCallTrace(fileName_1 + ":38:66")(tsplus_module_2.flatMap(client => tracer_1.withCallTrace(fileName_1 + ":39:28")(tsplus_module_3.provideService(makeCosmosStore(cfg), CosmosClient.CosmosClient, client))))(CosmosClient.makeCosmosClient(storageUrl, cfg.dbName));
36
+ }))(tsplus_module_2.config(config)));
37
+ }
38
+ function makeRedis(storageUrl) {
39
+ const url = new URL(storageUrl);
40
+ const hostname = url.hostname;
41
+ const password = url.password;
42
+ return () => createClient(storageUrl === "redis://"
43
+ ? {
44
+ host: hostname,
45
+ port: 6380,
46
+ auth_pass: password,
47
+ tls: { servername: hostname }
48
+ }
49
+ : storageUrl);
50
+ }
51
+ export * from "./service.js";
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssWUFBWSxNQUFNLDBDQUEwQyxDQUFBO0FBQ3hFLE9BQU8sS0FBSyxXQUFXLE1BQU0seUNBQXlDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQTZCO0lBQzFELE9BQU8sdUJBeUJVLFVBQVUsRUF6QnBCLHNFQUFzQixHQUFHLENBQUMsRUFBRTtRQUNqQyxNQUFNLFVBQVUseUJBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBTSxDQUFBO1FBQ2hDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUE7WUFDcEMscURBQU8sMkJBQU8sZUFBZSxFQUFFLENBQUMsRUFBQTtTQUNqQztRQUNELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUE7WUFDMUMsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDMUI7UUFDRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1lBQ2hDLE9BQU8sc0VBQTJELE1BQU0sQ0FBQyxFQUFFLCtDQUN6RSwrQkFBQSxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQ2pCLFdBQVcsQ0FBQyxXQUFXLEVBQ3ZCLE1BQU0sQ0FDUCxDQUFBLEdBSkksV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FLeEQsQ0FBQTtTQUNGO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQ3BDLE9BQU8sc0VBQThELE1BQU0sQ0FBQyxFQUFFLCtDQUM1RSwrQkFBQSxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQWdCLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUEsR0FEakUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBRTNELENBQUE7SUFDSCxDQUFDLDBCQXhCTSxNQUFNLEVBd0JYLENBQzBCLENBQUE7QUFDOUIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLFVBQWtCO0lBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQy9CLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUE7SUFDN0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQTtJQUM3QixPQUFPLEdBQUcsRUFBRSxDQUNWLFlBQVksQ0FDVixVQUFVLEtBQUssVUFBVTtRQUN2QixDQUFDLENBQUU7WUFDRCxJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLFFBQVE7WUFDbkIsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtTQUN0QjtRQUNULENBQUMsQ0FBRSxVQUFrQixDQUN4QixDQUFBO0FBQ0wsQ0FBQztBQUVELGNBQWMsY0FBYyxDQUFBIn0=
@@ -0,0 +1,113 @@
1
+ import { Effect } from "@effect/io/Effect";
2
+ import { Chunk } from "@fp-ts/data/Chunk";
3
+ import { Opt } from "@effect-app/core/Option";
4
+ import { NonEmptyReadonlyArray } from "@fp-ts/data/ReadonlyArray";
5
+ import { ROMap } from "@effect-app/prelude";
6
+ import { Tag } from "@fp-ts/data/Context";
7
+ import { ConfigSecret } from "@effect/io/Config/Secret";
8
+ import type { UniqueKey } from "@azure/cosmos";
9
+ import type { ParserEnv } from "@effect-app/schema/custom/Parser";
10
+ import type { OptimisticConcurrencyException } from "../../errors.js";
11
+ export type StoreConfig<E> = {
12
+ uniqueKeys?: UniqueKey[];
13
+ maxBulkSize?: number;
14
+ partitionValue: (e: E) => string | undefined;
15
+ };
16
+ export type SupportedValues = string | boolean | number | null;
17
+ export type Where = {
18
+ key: string;
19
+ t?: "eq" | "not-eq";
20
+ value: SupportedValues;
21
+ } | {
22
+ key: string;
23
+ t: "in" | "not-in";
24
+ value: readonly (SupportedValues)[];
25
+ };
26
+ export type StoreWhereFilter = {
27
+ type?: "where";
28
+ mode?: "and" | "or";
29
+ where: readonly [
30
+ Where,
31
+ ...(Where[])
32
+ ];
33
+ };
34
+ export type LegacyFilter<E> = {
35
+ by: keyof E;
36
+ type: "startsWith";
37
+ value: any;
38
+ } | {
39
+ by: keyof E;
40
+ type: "endsWith";
41
+ value: any;
42
+ } | {
43
+ by: keyof E;
44
+ type: "contains";
45
+ value: any;
46
+ };
47
+ export type JoinFindFilter = {
48
+ type: "join_find";
49
+ keys: readonly string[];
50
+ valueKey: string;
51
+ value: any;
52
+ };
53
+ export type Filter<E> = JoinFindFilter | StoreWhereFilter | LegacyFilter<E>;
54
+ export type FilterJoinSelect = {
55
+ type: "filter_join_select";
56
+ keys: readonly string[];
57
+ valueKey: string;
58
+ value: any;
59
+ };
60
+ export interface Store<PM extends PersistenceModelType<Id>, Id extends string> {
61
+ all: Effect<never, never, Chunk<PM>>;
62
+ filter: (filter: Filter<PM>, cursor?: {
63
+ limit?: number;
64
+ skip?: number;
65
+ }) => Effect<never, never, Chunk<PM>>;
66
+ filterJoinSelect: <T extends object>(filter: FilterJoinSelect) => Effect<never, never, Chunk<T & {
67
+ _rootId: string;
68
+ }>>;
69
+ find: (id: Id) => Effect<never, never, Opt<PM>>;
70
+ set: (e: PM) => Effect<never, OptimisticConcurrencyException, PM>;
71
+ batchSet: (items: NonEmptyReadonlyArray<PM>) => Effect<never, OptimisticConcurrencyException, NonEmptyReadonlyArray<PM>>;
72
+ bulkSet: (items: NonEmptyReadonlyArray<PM>) => Effect<never, OptimisticConcurrencyException, NonEmptyReadonlyArray<PM>>;
73
+ /**
74
+ * Requires the PM type, not Id, because various stores may need to calculate e.g partition keys.
75
+ */
76
+ remove: (e: PM) => Effect<never, never, void>;
77
+ }
78
+ export interface StoreMaker {
79
+ make: <E extends PersistenceModelType<Id>, Id extends string, Id2 extends Id>(name: string, existing?: Effect<never, never, ROMap<Id2, E>>, config?: StoreConfig<E>) => Effect<never, never, Store<E, Id>>;
80
+ }
81
+ /**
82
+ * @tsplus type StoreMaker.Ops
83
+ */
84
+ export interface StoreMakerOps extends Tag<StoreMaker> {
85
+ }
86
+ export declare const StoreMaker: StoreMakerOps;
87
+ /**
88
+ * @tsplus static ContextMap.Ops Make
89
+ * @tsplus location "@effect-app/infra/services/Store/service"
90
+ */
91
+ export declare const makeMap: import("@effect/io/Effect").Effect<never, never, {
92
+ get: (id: string) => string | undefined;
93
+ set: (id: string, eTag: string | undefined) => void;
94
+ parserEnv: ParserEnv;
95
+ }>;
96
+ export interface ContextMap extends Effect.Success<typeof makeMap> {
97
+ }
98
+ /**
99
+ * @tsplus type ContextMap.Ops
100
+ */
101
+ export interface ContextMapOps extends Tag<ContextMap> {
102
+ }
103
+ export declare const ContextMap: ContextMapOps;
104
+ export interface PersistenceModelType<Id extends string> {
105
+ id: Id;
106
+ _etag: string | undefined;
107
+ }
108
+ export interface StorageConfig {
109
+ url: ConfigSecret;
110
+ prefix: string;
111
+ dbName: string;
112
+ }
113
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/Store/service.ts";
3
+ import * as tsplus_module_1 from "@fp-ts/data/Context";
4
+ import * as tsplus_module_2 from "@effect-app/prelude";
5
+ import * as tsplus_module_3 from "@effect/io/Effect";
6
+ export const StoreMaker = tsplus_module_1.Tag();
7
+ /**
8
+ * @tsplus static ContextMap.Ops Make
9
+ */
10
+ export const makeMap = tracer_1.withCallTrace(fileName_1 + ":94:24")(tsplus_module_3.sync(() => {
11
+ const etags = tsplus_module_2.ROMap.make([])["|>"](tsplus_module_2.ROMap.toMutable);
12
+ const getEtag = (id) => etags.get(id);
13
+ const setEtag = (id, eTag) => {
14
+ eTag === undefined ? etags.delete(id) : etags.set(id, eTag);
15
+ };
16
+ const parsedCache = tsplus_module_2.ROMap.make([])["|>"](tsplus_module_2.ROMap.toMutable);
17
+ const parserCache = tsplus_module_2.ROMap.make([])["|>"](tsplus_module_2.ROMap.toMutable);
18
+ const setAndReturn = (p, np) => {
19
+ parserCache.set(p, np);
20
+ return np;
21
+ };
22
+ const parserEnv = {
23
+ // TODO: lax: true would turn off refinement checks, may help on large payloads
24
+ // but of course removes confirming of validation rules (which may be okay for a database owned by the app, as we write safely)
25
+ lax: false,
26
+ cache: {
27
+ getOrSetParser: p => parserCache.get(p) ?? setAndReturn(p, i => parserEnv.cache.getOrSet(i, p)),
28
+ getOrSetParsers: parsers => {
29
+ return Object.entries(parsers).reduce((prev, [k, v]) => {
30
+ prev[k] = parserEnv.cache.getOrSetParser(v);
31
+ return prev;
32
+ }, {});
33
+ },
34
+ getOrSet: (i, parse) => {
35
+ const c = parsedCache.get(parse);
36
+ if (c) {
37
+ const f = c.get(i);
38
+ if (f) {
39
+ // console.log("$$$ cache hit", i)
40
+ return f;
41
+ }
42
+ else {
43
+ const nf = parse(i, parserEnv);
44
+ c.set(i, nf);
45
+ return nf;
46
+ }
47
+ }
48
+ else {
49
+ const nf = parse(i, parserEnv);
50
+ parsedCache.set(parse, tsplus_module_2.ROMap.make([[i, nf]])["|>"](tsplus_module_2.ROMap.toMutable));
51
+ return nf;
52
+ }
53
+ }
54
+ }
55
+ };
56
+ return {
57
+ get: getEtag,
58
+ set: setEtag,
59
+ parserEnv
60
+ };
61
+ }));
62
+ export const ContextMap = tsplus_module_1.Tag();
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvU3RvcmUvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXdGQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLGdCQUFBLEdBQUcsRUFBYyxDQUFBO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxpREFBRyxxQkFBTyxHQUFHLEVBQUU7SUFDakMsTUFBTSxLQUFLLEdBQUcsZ0JBQUEsS0FBSyxDQUFDLElBQUksQ0FBaUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQUEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBVSxFQUFFLElBQXdCLEVBQUUsRUFBRTtRQUN2RCxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM3RCxDQUFDLENBQUE7SUFFRCxNQUFNLFdBQVcsR0FBRyxnQkFBQSxLQUFLLENBQUMsSUFBSSxDQUc1QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBQSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFNUIsTUFBTSxXQUFXLEdBQUcsZ0JBQUEsS0FBSyxDQUFDLElBQUksQ0FHNUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQUEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRTVCLE1BQU0sWUFBWSxHQUFHLENBQ25CLENBQWtCLEVBQ2xCLEVBQStCLEVBQy9CLEVBQUU7UUFDRixXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN0QixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUMsQ0FBQTtJQUVELE1BQU0sU0FBUyxHQUFjO1FBQzNCLCtFQUErRTtRQUMvRSwrSEFBK0g7UUFDL0gsR0FBRyxFQUFFLEtBQUs7UUFDVixLQUFLLEVBQUU7WUFDTCxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEcsZUFBZSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUN6QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3JELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDNUMsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFBO1lBQ2YsQ0FBQztZQUNELFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQU8sRUFBRTtnQkFDMUIsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDaEMsSUFBSSxDQUFDLEVBQUU7b0JBQ0wsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDbEIsSUFBSSxDQUFDLEVBQUU7d0JBQ0wsa0NBQWtDO3dCQUNsQyxPQUFPLENBQUMsQ0FBQTtxQkFDVDt5QkFBTTt3QkFDTCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO3dCQUM5QixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTt3QkFDWixPQUFPLEVBQUUsQ0FBQTtxQkFDVjtpQkFDRjtxQkFBTTtvQkFDTCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO29CQUM5QixXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFBLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO29CQUNwRSxPQUFPLEVBQUUsQ0FBQTtpQkFDVjtZQUNILENBQUM7U0FDRjtLQUNGLENBQUE7SUFFRCxPQUFPO1FBQ0wsR0FBRyxFQUFFLE9BQU87UUFDWixHQUFHLEVBQUUsT0FBTztRQUNaLFNBQVM7S0FDVixDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQU1GLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBa0IsZ0JBQUEsR0FBRyxFQUFjLENBQUEifQ==
@@ -0,0 +1,14 @@
1
+ import { Opt } from "@effect-app/core/Option";
2
+ import { OptimisticConcurrencyException } from "../../errors.js";
3
+ import type { Filter, FilterJoinSelect, PersistenceModelType } from "./service.js";
4
+ export declare const makeETag: <E extends PersistenceModelType<Id>, Id extends string>({ _etag, ...e }: E) => E;
5
+ export declare const makeUpdateETag: (name: string) => <E extends PersistenceModelType<Id>, Id extends string>(e: E, current: import("@fp-ts/data/Option").Option<E>) => import("@effect/io/Effect").Effect<never, OptimisticConcurrencyException, E>;
6
+ export declare function codeFilter<E extends {
7
+ id: string;
8
+ }, NE extends E>(filter: Filter<NE>): (x: E) => import("@fp-ts/data/Option").None | import("@fp-ts/data/Option").Some<NE>;
9
+ export declare function codeFilterJoinSelect<E extends {
10
+ id: string;
11
+ }, NE>(filter: FilterJoinSelect): (x: E) => import("@fp-ts/data/Chunk").Chunk<NE & {
12
+ _rootId: string;
13
+ }>;
14
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/utils.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAA;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAIlF,eAAO,MAAM,QAAQ,kFAMV,CAAA;AACX,eAAO,MAAM,cAAc,SAAU,MAAM,mMAUrC,CAAA;AAEN,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,OACxE,CAAC,+EA8Db;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,EAC/D,MAAM,EAAE,gBAAgB,OAEb,CAAC;;GAiBb"}
@@ -0,0 +1,103 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/Store/utils.ts";
3
+ import * as tsplus_module_1 from "@fp-ts/data/Option";
4
+ import * as tsplus_module_2 from "@effect/io/Effect";
5
+ import * as tsplus_module_3 from "@fp-ts/data/ReadonlyArray";
6
+ import * as tsplus_module_4 from "@effect-app/core/Array";
7
+ import { get } from "@effect-app/prelude/utils";
8
+ import { OptimisticConcurrencyException } from "../../errors.js";
9
+ import objectHash from "object-hash";
10
+ export const makeETag = ({ _etag, ...e }) => ({
11
+ ...e,
12
+ _etag: objectHash(e)
13
+ });
14
+ export const makeUpdateETag = (name) => (e, current) => tracer_1.withCallTrace(fileName_1 + ":18:12")(tsplus_module_2.gen(function* ($) {
15
+ if (tsplus_module_1.isSome(current) && current.value._etag !== e._etag) {
16
+ return yield* $(tracer_1.withCallTrace(fileName_1 + ":21:18")(tsplus_module_2.fail(new OptimisticConcurrencyException(name, current.value.id, current.value._etag, e._etag))));
17
+ }
18
+ const newE = makeETag(e);
19
+ return newE;
20
+ }));
21
+ export function codeFilter(filter) {
22
+ return (x) => filter.type === "startsWith"
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ ? lowercaseIfString(x[filter.by]).startsWith(filter.value.toLowerCase())
25
+ ? tsplus_module_1.some(x)
26
+ : tsplus_module_1.none
27
+ : filter.type === "endsWith"
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ ? lowercaseIfString(x[filter.by]).endsWith(filter.value.toLowerCase())
30
+ ? tsplus_module_1.some(x)
31
+ : tsplus_module_1.none
32
+ : filter.type === "contains"
33
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
35
+ ? lowercaseIfString(x[filter.by]).includes(filter.value.toLowerCase())
36
+ ? tsplus_module_1.some(x)
37
+ : tsplus_module_1.none
38
+ : filter.type === "join_find"
39
+ ? filter.keys.some(k => {
40
+ const value = get(x, k);
41
+ // we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
42
+ return (value &&
43
+ value.some(v => compareCaseInsensitive(v[filter.valueKey], filter.value)));
44
+ })
45
+ ? tsplus_module_1.some(x)
46
+ : tsplus_module_1.none
47
+ : // TODO: support mixed or/and
48
+ filter.mode === "or"
49
+ ? filter.where
50
+ .some(p => p.t === "in"
51
+ ? p.value.includes(get(x, p.key))
52
+ : p.t === "not-in"
53
+ ? !p.value.includes(get(x, p.key))
54
+ : p.t === "not-eq"
55
+ ? !compareCaseInsensitive(get(x, p.key), p.value)
56
+ : compareCaseInsensitive(get(x, p.key), p.value))
57
+ ? tsplus_module_1.some(x)
58
+ : tsplus_module_1.none
59
+ : filter.where
60
+ .every(p => p.t === "in"
61
+ ? p.value.includes(get(x, p.key))
62
+ : p.t === "not-in"
63
+ ? !p.value.includes(get(x, p.key))
64
+ : p.t === "not-eq"
65
+ ? p.key.includes(".-1.")
66
+ ? get(x, p.key.split(".-1.")[0])
67
+ // TODO: or vs and
68
+ .every(_ => !compareCaseInsensitive(get(_, p.key.split(".-1.")[1]), p.value))
69
+ : !compareCaseInsensitive(get(x, p.key), p.value)
70
+ : p.key.includes(".-1.")
71
+ ? get(x, p.key.split(".-1.")[0])
72
+ // TODO: or vs and
73
+ .some(_ => compareCaseInsensitive(get(_, p.key.split(".-1.")[1]), p.value))
74
+ : compareCaseInsensitive(get(x, p.key), p.value))
75
+ ? tsplus_module_1.some(x)
76
+ : tsplus_module_1.none;
77
+ }
78
+ export function codeFilterJoinSelect(filter) {
79
+ return (x) => tsplus_module_4.ext_itToChunk(tsplus_module_3.filterMap(k => {
80
+ const value = get(x, k);
81
+ // we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
82
+ return value
83
+ ? tsplus_module_1.some(tsplus_module_3.filterMap(v =>
84
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ compareCaseInsensitive(v[filter.valueKey], filter.value)
86
+ ? tsplus_module_1.some({ ...v, _rootId: x.id })
87
+ : tsplus_module_1.none)(value))
88
+ : tsplus_module_1.none;
89
+ })(filter.keys)
90
+ .flatMap(_ => _));
91
+ }
92
+ function lowercaseIfString(val) {
93
+ if (typeof val === "string") {
94
+ return val.toLowerCase();
95
+ }
96
+ return val;
97
+ }
98
+ function compareCaseInsensitive(valA, valB) {
99
+ return typeof valB === "string" && typeof valA === "string"
100
+ ? valA.toLowerCase() === valB.toLowerCase()
101
+ : valA === valB;
102
+ }
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUloRSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQ3RCLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFLLEVBQ2YsRUFBRSxDQUNMLENBQUM7SUFDQyxHQUFHLENBQUM7SUFDSixLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztDQUNyQixDQUFRLENBQUE7QUFDWCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUM3QyxDQUF3RCxDQUFJLEVBQUUsT0FBZSxFQUFFLEVBQUUsK0NBQy9FLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7SUFDcEIsSUFBSSx1QkFBQSxPQUFPLENBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFO1FBQ3ZELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQywrQ0FDYixxQkFBWSxJQUFJLDhCQUE4QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDdEcsQ0FBQTtLQUNGO0lBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hCLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQUVOLE1BQU0sVUFBVSxVQUFVLENBQXlDLE1BQWtCO0lBQ25G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
@@ -0,0 +1,2 @@
1
+ export * from "./Store/service.js";
2
+ //# sourceMappingURL=Store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../_src/services/Store.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./Store/service.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUEifQ==
@@ -0,0 +1,18 @@
1
+ import { Effect } from "@effect/io/Effect";
2
+ import { Queue } from "@effect/io/Queue";
3
+ import { Tag } from "@fp-ts/data/Context";
4
+ export interface MemQueue {
5
+ getOrCreateQueue: (k: string) => Effect<never, never, Queue<string>>;
6
+ }
7
+ /**
8
+ * @tsplus type MemQueue.Ops
9
+ */
10
+ export interface MemQueueOps extends Tag<MemQueue> {
11
+ }
12
+ export declare const MemQueue: MemQueueOps;
13
+ /**
14
+ * @tsplus static MemQueue.Ops Live
15
+ * @tsplus location "@effect-app/infra/services/memQueue"
16
+ */
17
+ export declare const LiveMemQueue: import("@effect/io/Layer").Layer<never, never, MemQueue>;
18
+ //# sourceMappingURL=memQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../_src/services/memQueue.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACrE;AAED;;GAEG;AAEH,MAAM,WAAW,WAAY,SAAQ,GAAG,CAAC,QAAQ,CAAC;CAAG;AACrD,eAAO,MAAM,QAAQ,EAAE,WAA6B,CAAA;;;;;AAKpD,eAAO,MAAM,YAAY,0DAaL,CAAA"}