@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,76 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/lib/rateLimit.ts";
3
+ import * as tsplus_module_1 from "@effect/stm/TSemaphore";
4
+ import * as tsplus_module_2 from "@effect/stm/STM";
5
+ import * as tsplus_module_3 from "@effect/io/Effect";
6
+ import * as tsplus_module_4 from "@effect-app/core/Array";
7
+ import * as tsplus_module_5 from "@effect-app/core/Effect";
8
+ /**
9
+ * Executes the specified effect, acquiring the specified number of permits
10
+ * immediately before the effect begins execution and releasing them
11
+ * delayed by duration after the effect completes execution, whether by success,
12
+ * failure, or interruption.
13
+ *
14
+ * @tsplus static effect/stm/TSemaphore.Ops withPermitsDuration
15
+ * @tsplus pipeable effect/stm/TSemaphore withPermitsDuration
16
+ */
17
+ export function withPermitsDuration(permits, duration) {
18
+ return (self) => {
19
+ return effect => tracer_1.withCallTrace(fileName_1 + ":13:14")(tsplus_module_3.uninterruptibleMask(restore => tsplus_module_3.zipRight(tracer_1.withCallTrace(fileName_1 + ":17:16")(tsplus_module_3.ensuring(tracer_1.withCallTrace(fileName_1 + ":20:20")(tsplus_module_3.delay(duration))(tsplus_module_2.commit(tracer_1.withCallTrace(fileName_1 + ":18:22")(tsplus_module_1.releaseN(permits))(self)))))(restore(effect)))(restore(tsplus_module_2.commit(tracer_1.withCallTrace(fileName_1 + ":15:24")(tsplus_module_1.acquireN(permits))(self))))));
20
+ };
21
+ }
22
+ /**
23
+ * Executes the specified effect, acquiring the specified number of permits
24
+ * immediately before the effect begins execution and releasing them
25
+ * delayed by duration after the effect completes execution, whether by success,
26
+ * failure, or interruption.
27
+ *
28
+ * @tsplus static effect/io/Effect/Semaphore.Ops withPermitsDuration
29
+ * @tsplus pipeable effect/io/Effect/Semaphore withPermitsDuration
30
+ */
31
+ export function SEM_withPermitsDuration(permits, duration) {
32
+ return (self) => {
33
+ return effect => tracer_1.withCallTrace(fileName_1 + ":38:14")(tsplus_module_3.uninterruptibleMask(restore => tsplus_module_3.zipRight(tracer_1.withCallTrace(fileName_1 + ":42:16")(tsplus_module_3.ensuring(tracer_1.withCallTrace(fileName_1 + ":44:20")(tsplus_module_3.delay(duration))(self.release(permits))))(restore(effect)))(restore(self.take(permits)))));
34
+ };
35
+ }
36
+ /**
37
+ * @tsplus pipeable Iterable batchNPar
38
+ * @tsplus static Collection.Aspects batchNPar
39
+ */
40
+ export function batchNPar(n, forEachItem, forEachBatch) {
41
+ return (items) => tsplus_module_4.ext_forEachParWithIndex(tsplus_module_4.chunk_(items, n), (_, i) => tracer_1.withCallTrace(fileName_1 + ":63:12")(tsplus_module_3.flatMap(_ => forEachBatch(_, i)))(tracer_1.withCallTrace(fileName_1 + ":62:11")(tsplus_module_3.forEachParWithIndex((_, j) => forEachItem(_, j, i)))(_)));
42
+ }
43
+ /**
44
+ * @tsplus pipeable Iterable batch
45
+ * @tsplus static Collection.Aspects batch
46
+ */
47
+ export function batch(n, forEachItem, forEachBatch) {
48
+ return (items) => tsplus_module_4.ext_forEachWithIndex(tsplus_module_4.chunk_(items, n), (_, i) => tracer_1.withCallTrace(fileName_1 + ":80:12")(tsplus_module_3.flatMap(_ => forEachBatch(_, i)))(tracer_1.withCallTrace(fileName_1 + ":79:11")(tsplus_module_3.forEachParWithIndex((_, j) => forEachItem(_, j, i)))(_)));
49
+ }
50
+ // /**
51
+ // * @tsplus pipeable Iterable rateLimit
52
+ // * @tsplus static Collection.Aspects rateLimit
53
+ // */
54
+ // export function rateLimit(
55
+ // n: number,
56
+ // d: DUR
57
+ // ) {
58
+ // return <T>(items: Iterable<T>) =>
59
+ // <R, E, A, R2, E2, A2>(
60
+ // forEachItem: (i: T) => Effect<R, E, A>,
61
+ // forEachBatch: (a: Chunk<A>) => Effect<R2, E2, A2>
62
+ // ) =>
63
+ // Stream.fromCollection(items)
64
+ // .rechunk(n)
65
+ // .throttleShape(n, d, () => n)
66
+ // .mapChunksEffect(_ => _.forEachEffectPar(forEachItem).tap(forEachBatch))
67
+ // .runCollect
68
+ // }
69
+ /**
70
+ * @tsplus pipeable Iterable naiveRateLimit
71
+ * @tsplus static Collection.Aspects naiveRateLimit
72
+ */
73
+ export function naiveRateLimit(n, d) {
74
+ return (items) => ((forEachItem, forEachBatch) => tsplus_module_4.ext_forEachWithIndex(tsplus_module_4.chunk_(items, n), (batch, i) => tracer_1.withCallTrace(fileName_1 + ":120:12")(tsplus_module_3.zipRight(tracer_1.withCallTrace(fileName_1 + ":123:16")(tsplus_module_3.flatMap(forEachBatch))(tracer_1.withCallTrace(fileName_1 + ":122:16")(tsplus_module_3.withParallelism(n))(tsplus_module_4.ext_forEachEffectPar(batch, forEachItem)))))(((i === 0) ? tsplus_module_5.unit : tracer_1.withCallTrace(fileName_1 + ":119:48")(tsplus_module_3.delay(d))(tsplus_module_5.unit)))));
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vX3NyYy9saWIvcmF0ZUxpbWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxPQUFlLEVBQUUsUUFBYTtJQUNoRSxPQUFPLENBQUMsSUFBZ0IsRUFBeUQsRUFBRTtRQUNqRixPQUFPLE1BQU0sQ0FBQyxFQUFFLCtDQUNkLG9DQUNFLE9BQU8sQ0FBQyxFQUFFLDBCQUVKLHVFQUVFLG9FQUVTLFFBQVEsMEJBRmpCLHVFQUFjLE9BQU8sR0FBckIsSUFBSSxDQUFrQixFQUVKLEdBSnBCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FLZCxFQU5MLE9BQU8sd0JBQUMsdUVBQWMsT0FBTyxHQUFyQixJQUFJLENBQWtCLEVBQVEsQ0FNakMsQ0FDUixDQUFBLENBQUE7SUFDTCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBZSxFQUFFLFFBQWE7SUFDcEUsT0FBTyxDQUFDLElBQWUsRUFBeUQsRUFBRTtRQUNoRixPQUFPLE1BQU0sQ0FBQyxFQUFFLCtDQUNkLG9DQUNFLE9BQU8sQ0FBQyxFQUFFLDBCQUVKLHVFQUVFLG9FQUNTLFFBQVEsR0FEakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDSCxHQUhwQixPQUFPLENBQUMsTUFBTSxDQUFDLENBSWQsRUFMTCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUt0QixDQUNSLENBQUEsQ0FBQTtJQUNMLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixDQUFTLEVBQ1QsV0FBMEUsRUFDMUUsWUFBNEQ7SUFFNUQsT0FBTyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUM1Qix3Q0FBQSx1QkFBQSxLQUFLLEVBQU8sQ0FBQyxDQUFDLEVBQ2UsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDbEMsc0VBQ1csQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQURsQyxrRkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBcEQsQ0FBQyxDQUFvRCxDQUNsQixDQUNwQyxDQUFBO0FBQ1AsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQ25CLENBQVMsRUFDVCxXQUErRSxFQUMvRSxZQUE0RDtJQUU1RCxPQUFPLENBQUMsS0FBa0IsRUFBRSxFQUFFLENBQzVCLHFDQUFBLHVCQUFBLEtBQUssRUFBTyxDQUFDLENBQUMsRUFDWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUMvQixzRUFDVyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBRGxDLGtGQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFwRCxDQUFDLENBQW9ELENBQ2xCLENBQ3BDLENBQUE7QUFDUCxDQUFDO0FBRUQsTUFBTTtBQUNOLHlDQUF5QztBQUN6QyxpREFBaUQ7QUFDakQsTUFBTTtBQUNOLDZCQUE2QjtBQUM3QixlQUFlO0FBQ2YsV0FBVztBQUNYLE1BQU07QUFDTixzQ0FBc0M7QUFDdEMsNkJBQTZCO0FBQzdCLGdEQUFnRDtBQUNoRCwwREFBMEQ7QUFDMUQsV0FBVztBQUNYLHFDQUFxQztBQUNyQyxzQkFBc0I7QUFDdEIsd0NBQXdDO0FBQ3hDLG1GQUFtRjtBQUNuRixzQkFBc0I7QUFDdEIsSUFBSTtBQUVKOzs7R0FHRztBQUVILE1BQU0sVUFBVSxjQUFjLENBQzVCLENBQVMsRUFDVCxDQUFNO0lBRU4sT0FBTyxDQUFJLEtBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDakMsV0FBc0MsRUFDdEMsWUFBaUQsRUFDakQsRUFBRSxDQUNGLHFDQUFBLHVCQUFBLEtBQUssRUFBTyxDQUFDLENBQUMsRUFDWSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNuQyx3RUFFSSx1RUFFVyxZQUFZLEdBRnZCLCtFQUNtQixDQUFDLEdBRHBCLHFDQUFBLEtBQUssRUFBa0IsV0FBVyxDQUFDLENBQ2QsQ0FDRyxHQUo1QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQWEsQ0FBQyxDQUFDLHFFQUFrQixDQUFDLHdCQUFDLENBQUMsQ0FLN0MsQ0FDSixDQUFDLENBQUE7QUFDUixDQUFDIn0=
@@ -0,0 +1,19 @@
1
+ import { ReasonableString } from "@effect-app/prelude/schema";
2
+ import { Effect } from "@effect/io/Effect";
3
+ import { Tag } from "@fp-ts/data/Context";
4
+ export declare const PrinterId: import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>>>;
5
+ export type PrinterId = ReasonableString;
6
+ export interface CUPS {
7
+ print: (buffer: ArrayBuffer, printerId: PrinterId, ...options: string[]) => Effect<never, unknown, {
8
+ stdout: string;
9
+ stderr: string;
10
+ }>;
11
+ getAvailablePrinters: Effect<never, unknown, ReasonableString[]>;
12
+ }
13
+ /**
14
+ * @tsplus type CUPS.Ops
15
+ */
16
+ export interface CUPSOps extends Tag<CUPS> {
17
+ }
18
+ export declare const CUPS: CUPSOps;
19
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/CUPS/service.ts"],"names":[],"mappings":";;;AAAA,eAAO,MAAM,SAAS,2cAAmB,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,gBAAgB,CAAA;AAExC,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;QACjG,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;IACF,oBAAoB,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,OAAQ,SAAQ,GAAG,CAAC,IAAI,CAAC;CAAG;AAC7C,eAAO,MAAM,IAAI,EAAE,OAAqB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import * as tsplus_module_1 from "@effect-app/prelude/schema";
2
+ import * as tsplus_module_2 from "@fp-ts/data/Context";
3
+ export const PrinterId = tsplus_module_1.ReasonableString;
4
+ export const CUPS = tsplus_module_2.Tag();
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvQ1VQUy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTSxDQUFDLE1BQU0sU0FBUyxtQkFBRyxnQkFBZ0IsQ0FBQTtBQWV6QyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQVksZ0JBQUEsR0FBRyxFQUFRLENBQUEifQ==
@@ -0,0 +1,10 @@
1
+ import { Effect } from "@effect/io/Effect";
2
+ import { CUPS } from "./CUPS/service.js";
3
+ export * from "./CUPS/service.js";
4
+ /**
5
+ * @tsplus static CUPS.Ops Live
6
+ * @tsplus location "@effect-app/infra/services/CUPS"
7
+ */
8
+ export declare function LiveCUPS(cupsServer?: URL): import("@effect/io/Layer").Layer<never, never, CUPS>;
9
+ export declare const prepareTempDir: Effect<never, never, void>;
10
+ //# sourceMappingURL=CUPS.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CUPS.d.ts","sourceRoot":"","sources":["../../_src/services/CUPS.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAK1C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,cAAc,mBAAmB,CAAA;;;;;AAKjC,wBAAgB,QAAQ,CAAC,UAAU,CAAC,EAAE,GAAG,wDAExC;AAiDD,eAAO,MAAM,cAAc,4BAUzB,CAAA"}
@@ -0,0 +1,89 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/CUPS.ts";
3
+ import * as tsplus_module_1 from "@effect/io/Effect";
4
+ import * as tsplus_module_2 from "@effect-app/prelude/utils";
5
+ import * as tsplus_module_3 from "@effect-app/prelude/_ext/Prelude.ext";
6
+ import cp from "child_process";
7
+ import util from "util";
8
+ import { tempFile } from "../lib/fileUtil.js";
9
+ import { isTruthy } from "@effect-app/core/utils";
10
+ import { ReasonableString } from "@effect-app/schema";
11
+ import "@effect/io/Effect";
12
+ import fs from "fs";
13
+ import os from "os";
14
+ import path from "path";
15
+ import { CUPS } from "./CUPS/service.js";
16
+ export * from "./CUPS/service.js";
17
+ /**
18
+ * @tsplus static CUPS.Ops Live
19
+ */
20
+ export function LiveCUPS(cupsServer) {
21
+ return tsplus_module_1.toLayer(CUPS)(makeCUPS(cupsServer));
22
+ }
23
+ function makeCUPS(cupsServer) {
24
+ return tsplus_module_1.sync(() => {
25
+ function print_(buffer, printerId, ...options) {
26
+ const print = printBuffer({
27
+ id: printerId,
28
+ url: cupsServer
29
+ }, options);
30
+ return print(buffer);
31
+ }
32
+ return {
33
+ print: print_,
34
+ getAvailablePrinters: getAvailablePrinters(cupsServer?.host)
35
+ };
36
+ });
37
+ }
38
+ const exec_ = util.promisify(cp.exec);
39
+ const exec = (command) => tsplus_module_1.zipRight(tracer_1.withCallTrace(fileName_1 + ":43:8")(tsplus_module_1.tap(r => (tracer_1.withCallTrace(fileName_1 + ":43:46")(tsplus_module_1.logAnnotate("result", tsplus_module_2.RecordPretty(tsplus_module_2.object$(r))))(tracer_1.withCallTrace(fileName_1 + ":43:25")(tsplus_module_1.logDebug(`Executed`))))))(tracer_1.withCallTrace(fileName_1 + ":42:14")(tsplus_module_1.tryPromise(() => exec_(command)))))(tracer_1.withCallTrace(fileName_1 + ":41:10")(tsplus_module_1.logDebug(`Executing: ${command}`)));
40
+ function printFile(printer, options) {
41
+ return (filePath) => printFile_(filePath, printer, options);
42
+ }
43
+ function printFile_(filePath, printer, options) {
44
+ return exec(["lp", ...buildPrintArgs(filePath, printer, options)].join(" "));
45
+ }
46
+ function* buildPrintArgs(filePath, printer, options) {
47
+ if (printer) {
48
+ if (printer.url) {
49
+ yield `-h ${printer.url.host}`;
50
+ if (printer.url.username) {
51
+ yield `-U ${printer.url.username}`;
52
+ }
53
+ }
54
+ yield `-d "${printer.id}"`;
55
+ for (const o of options) {
56
+ yield `-o ${o}`;
57
+ }
58
+ }
59
+ yield `"${filePath}"`;
60
+ }
61
+ export const prepareTempDir = tsplus_module_1.sync(() => {
62
+ // TODO
63
+ try {
64
+ fs.mkdirSync(path.join(os.tmpdir(), "effect-ts-app"));
65
+ }
66
+ catch (err) {
67
+ if (`${err}`.includes("EEXIST")) {
68
+ return;
69
+ }
70
+ throw err;
71
+ }
72
+ });
73
+ const makeTempFile = tempFile("effect-ts-app");
74
+ const makePrintJobTempFile = makeTempFile("print-job");
75
+ function printBuffer(printer, options) {
76
+ return (buffer) => tsplus_module_3.flatMapScoped(makePrintJobTempFile(Buffer.from(buffer)), printFile(printer, options));
77
+ }
78
+ function getAvailablePrinters(host) {
79
+ return tsplus_module_1.map(({ stdout }) => [...stdout.matchAll(/device for (\w+):/g)]
80
+ .map(_ => _[1])
81
+ .filter(isTruthy)
82
+ .map(ReasonableString))(exec(["lpstat", ...buildListArgs({ host }), "-s"].join(" ")));
83
+ }
84
+ function* buildListArgs(config) {
85
+ if (config?.host) {
86
+ yield `-h ${config.host}`;
87
+ }
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ1VQUy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvc2VydmljZXMvQ1VQUy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRTdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRCxPQUF1QixtQkFBbUIsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ25CLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUV2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFeEMsY0FBYyxtQkFBbUIsQ0FBQTtBQUVqQzs7R0FFRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsVUFBZ0I7SUFDdkMsT0FBTyx3QkFBNkIsSUFBSSxFQUFqQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQWMsQ0FBQTtBQUMzQyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsVUFBZ0I7SUFDaEMsT0FBTyxxQkFBTyxHQUFHLEVBQUU7UUFDakIsU0FBUyxNQUFNLENBQUMsTUFBbUIsRUFBRSxTQUFvQixFQUFFLEdBQUcsT0FBaUI7WUFDN0UsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDO2dCQUN4QixFQUFFLEVBQUUsU0FBUztnQkFDYixHQUFHLEVBQUUsVUFBVTthQUNoQixFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ1gsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdEIsQ0FBQztRQUNELE9BQU87WUFDTCxLQUFLLEVBQUUsTUFBTTtZQUNiLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7U0FDN0QsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3JDLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsMEJBRTNCLGlFQUNLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQywwRUFBd0MsUUFBUSx1REFBRSxDQUFDLG1EQUFuRCx5QkFBZ0IsVUFBVSxDQUFDLEVBQW1DLENBQUMsaURBRDFFLDJCQUFrQixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDb0MsZ0RBRi9FLHlCQUFnQixjQUFjLE9BQU8sRUFBRSxDQUFDLEVBRXVDLENBQUE7QUFHakYsU0FBUyxTQUFTLENBQUMsT0FBa0MsRUFBRSxPQUFpQjtJQUN0RSxPQUFPLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDckUsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLFFBQWdCLEVBQUUsT0FBa0MsRUFBRSxPQUFpQjtJQUN6RixPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDOUUsQ0FBQztBQUVELFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFnQixFQUFFLE9BQWtDLEVBQUUsT0FBaUI7SUFDOUYsSUFBSSxPQUFPLEVBQUU7UUFDWCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUM5QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO2dCQUN4QixNQUFNLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQTthQUNuQztTQUNGO1FBQ0QsTUFBTSxPQUFPLE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQTtRQUMxQixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRTtZQUN2QixNQUFNLE1BQU0sQ0FBQyxFQUFFLENBQUE7U0FDaEI7S0FDRjtJQUNELE1BQU0sSUFBSSxRQUFRLEdBQUcsQ0FBQTtBQUN2QixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLHFCQUFPLEdBQUcsRUFBRTtJQUN4QyxPQUFPO0lBQ1AsSUFBSTtRQUNGLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQTtLQUN0RDtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMvQixPQUFNO1NBQ1A7UUFDRCxNQUFNLEdBQUcsQ0FBQTtLQUNWO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFRixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUE7QUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUE7QUFFdEQsU0FBUyxXQUFXLENBQUMsT0FBc0IsRUFBRSxPQUFpQjtJQUM1RCxPQUFPLENBQUMsTUFBbUIsRUFBRSxFQUFFLENBQzdCLDhCQUFBLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDeEIsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ2pELENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLElBQWE7SUFDekMsNEJBQ1EsRUFBRSxNQUFNLEVBQUUsS0FDVCxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQzlDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNkLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDaEIsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBSkgsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFLakY7QUFDSixDQUFDO0FBRUQsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQTBCO0lBQ2hELElBQUksTUFBTSxFQUFFLElBQUksRUFBRTtRQUNoQixNQUFNLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0tBQzFCO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,28 @@
1
+ import { DUR } from "@fp-ts/data/Duration";
2
+ import { Effect } from "@effect/io/Effect";
3
+ import { Chunk } from "@fp-ts/data/Chunk";
4
+ import { Exit } from "@effect/io/Exit";
5
+ import type { Cache as _Cache } from "../vendor/Cache/Cache.js";
6
+ import type { Lookup } from "../vendor/Cache/Lookup.js";
7
+ /**
8
+ * @tsplus type ets/cache/Cache
9
+ */
10
+ export interface Cache<Key, Error, Value> extends _Cache<Key, Error, Value> {
11
+ }
12
+ /**
13
+ * @tsplus type ets/cache/CacheOps
14
+ */
15
+ export interface CacheOps {
16
+ }
17
+ export declare const Cache: CacheOps;
18
+ /**
19
+ * @tsplus static ets/cache/CacheOps make
20
+ * @tsplus location "@effect-app/infra/services/Cache"
21
+ */
22
+ export declare function make<Key, Environment, Error, Value>(capacity: number, duration: DUR, lookup: Lookup<Key, Environment, Error, Value>): import("@effect/io/Effect").Effect<Environment, never, Cache<Key, Error, Value>>;
23
+ /**
24
+ * @tsplus getter ets/cache/Cache results
25
+ * @tsplus location "@effect-app/infra/services/Cache"
26
+ */
27
+ export declare function results<Key, Error, Value>(self: Cache<Key, Error, Value>): Effect<never, never, Chunk<[Key, Exit<Error, Value>]>>;
28
+ //# sourceMappingURL=Cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.d.ts","sourceRoot":"","sources":["../../_src/services/Cache.ts"],"names":[],"mappings":";;;;AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAE,SAAQ,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;CAAG;AAE9E;;GAEG;AAEH,MAAM,WAAW,QAAQ;CAAG;AAE5B,eAAO,MAAM,KAAK,EAAE,QAAa,CAAA;;;;;AAKjC,wBAAgB,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EACjD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,GAAG,EACb,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,oFAG/C;;;;;AAKD,wBAAgB,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EACvC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAC7B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAUxD"}
@@ -0,0 +1,28 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/Cache.ts";
3
+ const fileName_2 = "/Users/patrickroza/Projects/effect-ts-app/libs/packages/infra/_src/services/Cache.ts";
4
+ import * as tsplus_module_1 from "@fp-ts/data/Chunk";
5
+ import * as tsplus_module_2 from "@effect/io/Effect";
6
+ import { make as _make } from "../vendor/Cache/Cache.js";
7
+ export const Cache = {};
8
+ /**
9
+ * @tsplus static ets/cache/CacheOps make
10
+ */
11
+ export function make(capacity, duration, lookup) {
12
+ return _make(capacity, duration, lookup, fileName_2 + ":27:15");
13
+ }
14
+ /**
15
+ * @tsplus getter ets/cache/Cache results
16
+ */
17
+ export function results(self) {
18
+ return tracer_1.withCallTrace(fileName_1 + ":36:10")(tsplus_module_2.sync(() => {
19
+ const values = [];
20
+ for (const [key, value] of self.cacheState.map) {
21
+ if (value._tag === "Complete") {
22
+ values.push([key, value.exit]);
23
+ }
24
+ }
25
+ return tsplus_module_1.fromIterable(values);
26
+ }));
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL3NlcnZpY2VzL0NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQWV4RCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFBO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FDbEIsUUFBZ0IsRUFDaEIsUUFBYSxFQUNiLE1BQThDO0lBRTlDLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBeUQsQ0FBQTtBQUNsRyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUNyQixJQUE4QjtJQUU5QixxREFBTyxxQkFBTyxHQUFHLEVBQUU7UUFDakIsTUFBTSxNQUFNLEdBQXFDLEVBQUUsQ0FBQTtRQUNuRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQU0sSUFBWSxDQUFDLFVBQTRDLENBQUMsR0FBRyxFQUFFO1lBQzFGLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7Z0JBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7YUFDL0I7U0FDRjtRQUNELE9BQU8sNkJBQW1CLE1BQU0sQ0FBQyxDQUFBO0lBQ25DLENBQUMsQ0FBQyxFQUFBO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,180 @@
1
+ import { Config } from "@effect/io/Config";
2
+ import type { EmailData } from "@sendgrid/helpers/classes/email-address.js";
3
+ import { Emailer } from "./service.js";
4
+ import type { EmailMsg, SendgridConfig } from "./service.js";
5
+ /**
6
+ * @tsplus static Emailer.Ops LiveSendgrid
7
+ * @tsplus location "@effect-app/infra/services/Emailer/Sendgrid"
8
+ */
9
+ export declare function LiveSendgrid(config: Config<SendgridConfig>): import("@effect/io/Layer").Layer<never, import("@effect/io/Config/Error").ConfigError, Emailer>;
10
+ /**
11
+ * @hidden
12
+ */
13
+ export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
14
+ to: EmailData | EmailData[] | undefined;
15
+ cc: EmailData | EmailData[] | undefined;
16
+ bcc: EmailData | EmailData[] | undefined;
17
+ from: EmailData;
18
+ replyTo?: EmailData | undefined;
19
+ sendAt?: number | undefined;
20
+ subject?: string | undefined;
21
+ text: string;
22
+ html?: string | undefined;
23
+ content?: import("@sendgrid/helpers/classes/mail.js").MailContent[] | undefined;
24
+ templateId?: string | undefined;
25
+ personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[] | undefined;
26
+ attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[] | undefined;
27
+ ipPoolName?: string | undefined;
28
+ batchId?: string | undefined;
29
+ sections?: {
30
+ [key: string]: string;
31
+ } | undefined;
32
+ headers?: {
33
+ [key: string]: string;
34
+ } | undefined;
35
+ categories?: string[] | undefined;
36
+ category?: string | undefined;
37
+ customArgs?: {
38
+ [key: string]: any;
39
+ } | undefined;
40
+ asm?: import("@sendgrid/helpers/classes/mail.js").ASMOptions | undefined;
41
+ mailSettings?: import("@sendgrid/helpers/classes/mail.js").MailSettings | undefined;
42
+ trackingSettings?: import("@sendgrid/helpers/classes/mail.js").TrackingSettings | undefined;
43
+ substitutions?: {
44
+ [key: string]: string;
45
+ } | undefined;
46
+ substitutionWrappers?: string[] | undefined;
47
+ isMultiple?: boolean | undefined;
48
+ dynamicTemplateData?: {
49
+ [key: string]: any;
50
+ } | undefined;
51
+ hideWarnings?: boolean | undefined;
52
+ replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[] | undefined;
53
+ } | {
54
+ to: EmailData | EmailData[] | undefined;
55
+ cc: EmailData | EmailData[] | undefined;
56
+ bcc: EmailData | EmailData[] | undefined;
57
+ from: EmailData;
58
+ replyTo?: EmailData | undefined;
59
+ sendAt?: number | undefined;
60
+ subject?: string | undefined;
61
+ text?: string | undefined;
62
+ html: string;
63
+ content?: import("@sendgrid/helpers/classes/mail.js").MailContent[] | undefined;
64
+ templateId?: string | undefined;
65
+ personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[] | undefined;
66
+ attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[] | undefined;
67
+ ipPoolName?: string | undefined;
68
+ batchId?: string | undefined;
69
+ sections?: {
70
+ [key: string]: string;
71
+ } | undefined;
72
+ headers?: {
73
+ [key: string]: string;
74
+ } | undefined;
75
+ categories?: string[] | undefined;
76
+ category?: string | undefined;
77
+ customArgs?: {
78
+ [key: string]: any;
79
+ } | undefined;
80
+ asm?: import("@sendgrid/helpers/classes/mail.js").ASMOptions | undefined;
81
+ mailSettings?: import("@sendgrid/helpers/classes/mail.js").MailSettings | undefined;
82
+ trackingSettings?: import("@sendgrid/helpers/classes/mail.js").TrackingSettings | undefined;
83
+ substitutions?: {
84
+ [key: string]: string;
85
+ } | undefined;
86
+ substitutionWrappers?: string[] | undefined;
87
+ isMultiple?: boolean | undefined;
88
+ dynamicTemplateData?: {
89
+ [key: string]: any;
90
+ } | undefined;
91
+ hideWarnings?: boolean | undefined;
92
+ replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[] | undefined;
93
+ } | {
94
+ to: EmailData | EmailData[] | undefined;
95
+ cc: EmailData | EmailData[] | undefined;
96
+ bcc: EmailData | EmailData[] | undefined;
97
+ from: EmailData;
98
+ replyTo?: EmailData | undefined;
99
+ sendAt?: number | undefined;
100
+ subject?: string | undefined;
101
+ text?: string | undefined;
102
+ html?: string | undefined;
103
+ content?: import("@sendgrid/helpers/classes/mail.js").MailContent[] | undefined;
104
+ templateId: string;
105
+ personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[] | undefined;
106
+ attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[] | undefined;
107
+ ipPoolName?: string | undefined;
108
+ batchId?: string | undefined;
109
+ sections?: {
110
+ [key: string]: string;
111
+ } | undefined;
112
+ headers?: {
113
+ [key: string]: string;
114
+ } | undefined;
115
+ categories?: string[] | undefined;
116
+ category?: string | undefined;
117
+ customArgs?: {
118
+ [key: string]: any;
119
+ } | undefined;
120
+ asm?: import("@sendgrid/helpers/classes/mail.js").ASMOptions | undefined;
121
+ mailSettings?: import("@sendgrid/helpers/classes/mail.js").MailSettings | undefined;
122
+ trackingSettings?: import("@sendgrid/helpers/classes/mail.js").TrackingSettings | undefined;
123
+ substitutions?: {
124
+ [key: string]: string;
125
+ } | undefined;
126
+ substitutionWrappers?: string[] | undefined;
127
+ isMultiple?: boolean | undefined;
128
+ dynamicTemplateData?: {
129
+ [key: string]: any;
130
+ } | undefined;
131
+ hideWarnings?: boolean | undefined;
132
+ replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[] | undefined;
133
+ } | {
134
+ to: EmailData | EmailData[] | undefined;
135
+ cc: EmailData | EmailData[] | undefined;
136
+ bcc: EmailData | EmailData[] | undefined;
137
+ from: EmailData;
138
+ replyTo?: EmailData | undefined;
139
+ sendAt?: number | undefined;
140
+ subject?: string | undefined;
141
+ text?: string | undefined;
142
+ html?: string | undefined;
143
+ content: import("@sendgrid/helpers/classes/mail.js").MailContent[] & {
144
+ 0: import("@sendgrid/helpers/classes/mail.js").MailContent;
145
+ };
146
+ templateId?: string | undefined;
147
+ personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[] | undefined;
148
+ attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[] | undefined;
149
+ ipPoolName?: string | undefined;
150
+ batchId?: string | undefined;
151
+ sections?: {
152
+ [key: string]: string;
153
+ } | undefined;
154
+ headers?: {
155
+ [key: string]: string;
156
+ } | undefined;
157
+ categories?: string[] | undefined;
158
+ category?: string | undefined;
159
+ customArgs?: {
160
+ [key: string]: any;
161
+ } | undefined;
162
+ asm?: import("@sendgrid/helpers/classes/mail.js").ASMOptions | undefined;
163
+ mailSettings?: import("@sendgrid/helpers/classes/mail.js").MailSettings | undefined;
164
+ trackingSettings?: import("@sendgrid/helpers/classes/mail.js").TrackingSettings | undefined;
165
+ substitutions?: {
166
+ [key: string]: string;
167
+ } | undefined;
168
+ substitutionWrappers?: string[] | undefined;
169
+ isMultiple?: boolean | undefined;
170
+ dynamicTemplateData?: {
171
+ [key: string]: any;
172
+ } | undefined;
173
+ hideWarnings?: boolean | undefined;
174
+ replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[] | undefined;
175
+ };
176
+ /**
177
+ * @hidden
178
+ */
179
+ export declare function isTestAddress(to: EmailData): boolean;
180
+ //# sourceMappingURL=Sendgrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sendgrid.d.ts","sourceRoot":"","sources":["../../../_src/services/Emailer/Sendgrid.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAA;AAG3E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAwB,cAAc,EAAE,MAAM,cAAc,CAAA;;;;;AAgDlF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,mGAI1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,SAUpC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,WAO1C"}
@@ -0,0 +1,102 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/Emailer/Sendgrid.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/Prelude";
6
+ import * as tsplus_module_4 from "@effect-app/core/_ext/ord.ext";
7
+ import * as tsplus_module_5 from "@effect-app/core/Array";
8
+ import sgMail from "@sendgrid/mail";
9
+ import { inspect } from "util";
10
+ import { Emailer } from "./service.js";
11
+ const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) => tracer_1.withCallTrace(fileName_1 + ":8:3")(tsplus_module_2.sync(() => {
12
+ sgMail.setApiKey(tsplus_module_1.value(apiKey));
13
+ return {
14
+ sendMail(msg_) {
15
+ return tracer_1.withCallTrace(fileName_1 + ":13:23")(tsplus_module_2.gen(function* ($) {
16
+ const msg = { ...msg_, from: msg_.from ?? defaultFrom };
17
+ const render = renderMessage(!realMail);
18
+ const renderedMsg_ = render(msg);
19
+ const renderedMsg = { ...renderedMsg_, subject: `${subjectPrefix}${renderedMsg_.subject}` };
20
+ yield* $(tracer_1.withCallTrace(fileName_1 + ":19:53")(tsplus_module_2.logAnnotate("msg", inspect(renderedMsg, false, 5)))(tracer_1.withCallTrace(fileName_1 + ":19:27")(tsplus_module_2.logDebug("Sending email"))));
21
+ const ret = yield* $(tracer_1.withCallTrace(fileName_1 + ":22:20")(tsplus_module_2.async(cb => void sgMail.send(renderedMsg, false, (err, result) => err ?
22
+ cb(tracer_1.withCallTrace(fileName_1 + ":30:31")(tsplus_module_2.fail(err))) :
23
+ cb(tracer_1.withCallTrace(fileName_1 + ":31:24")(tsplus_module_2.sync(() => result)))))));
24
+ // const event = {
25
+ // name: "EmailSent",
26
+ // properties: {
27
+ // templateId: msg.templateId
28
+ // }
29
+ // }
30
+ // yield* $(Effect.logDebug("Tracking email event").logAnnotate("event", event.$$.pretty))
31
+ // const { trackEvent } = yield* $(AiContextService.access)
32
+ // trackEvent(event)
33
+ return ret;
34
+ }));
35
+ }
36
+ };
37
+ })
38
+ /**
39
+ * @tsplus static Emailer.Ops LiveSendgrid
40
+ */
41
+ );
42
+ /**
43
+ * @tsplus static Emailer.Ops LiveSendgrid
44
+ */
45
+ export function LiveSendgrid(config) {
46
+ return tsplus_module_2.toLayer(Emailer)(tracer_1.withCallTrace(fileName_1 + ":55:6")(tsplus_module_2.flatMap(makeLiveSendgrid))(tsplus_module_2.config(config)));
47
+ }
48
+ /**
49
+ * @hidden
50
+ */
51
+ export function renderMessage(forceFake) {
52
+ let i = 0;
53
+ const makeId = () => i++;
54
+ return forceFake
55
+ ? (msg) => ({
56
+ ...msg,
57
+ to: msg.to && renderFake(msg.to, makeId),
58
+ cc: msg.cc && renderFake(msg.cc, makeId),
59
+ bcc: msg.bcc && renderFake(msg.bcc, makeId)
60
+ })
61
+ : (msg) => ({
62
+ ...msg,
63
+ to: msg.to && renderFakeIfTest(msg.to, makeId),
64
+ cc: msg.cc && renderFakeIfTest(msg.cc, makeId),
65
+ bcc: msg.bcc && renderFakeIfTest(msg.bcc, makeId)
66
+ });
67
+ }
68
+ /**
69
+ * @hidden
70
+ */
71
+ export function isTestAddress(to) {
72
+ return ((typeof to === "string" && to.toLowerCase().endsWith(".test")) ||
73
+ (typeof to === "object" &&
74
+ "email" in to &&
75
+ to.email.toLowerCase().endsWith(".test")));
76
+ }
77
+ function renderFake(addr, makeId) {
78
+ return {
79
+ name: renderMailData(addr),
80
+ email: `test+${makeId()}@nomizz.com`
81
+ };
82
+ }
83
+ const eq = tsplus_module_4.EqlContramap(tsplus_module_3.Equal.string, (to) => typeof to === "string" ? to.toLowerCase() : to.email.toLowerCase());
84
+ // TODO: should just not add any already added email address
85
+ // https://stackoverflow.com/a/53603076/11595834
86
+ function renderFakeIfTest(addr, makeId) {
87
+ return Array.isArray(addr)
88
+ ? tsplus_module_5.iterableToArray(tsplus_module_4.uniqArray(eq)(addr
89
+ .map(x => (isTestAddress(x) ? renderFake(x, makeId) : x)))) : isTestAddress(addr)
90
+ ? renderFake(addr, makeId)
91
+ : addr;
92
+ }
93
+ function renderMailData(md) {
94
+ if (Array.isArray(md)) {
95
+ return md.map(renderMailData).join(", ");
96
+ }
97
+ if (typeof md === "string") {
98
+ return md;
99
+ }
100
+ return md.email;
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL0VtYWlsZXIvU2VuZGdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBLE9BQU8sTUFBTSxNQUFNLGdCQUFnQixDQUFBO0FBQ25DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUd0QyxNQUFNLGdCQUFnQixHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQWtCLEVBQUUsRUFBRSw2Q0FDNUYscUJBQU8sR0FBRyxFQUFFO0lBQ1YsTUFBTSxDQUFDLFNBQVMsdUJBQUMsTUFBTSxFQUFPLENBQUE7SUFFOUIsT0FBTztRQUNMLFFBQVEsQ0FBQyxJQUEwQjtZQUNqQyxxREFBTyxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUMzQixNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFBO2dCQUN2RCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFFdkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQyxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLGFBQWEsR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtnQkFDM0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBFQUE2QyxLQUFLLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLGlEQUFsRix5QkFBZ0IsZUFBZSxDQUFDLEVBQW1ELENBQUMsQ0FBQTtnQkFFN0YsTUFBTSxHQUFHLEdB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
@@ -0,0 +1,7 @@
1
+ import { Emailer } from "./service.js";
2
+ /**
3
+ * @tsplus static Emailer.Ops Fake
4
+ * @tsplus location "@effect-app/infra/services/Emailer/fake"
5
+ */
6
+ export declare const FakeSendgrid: import("@effect/io/Layer").Layer<never, never, Emailer>;
7
+ //# sourceMappingURL=fake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../../../_src/services/Emailer/fake.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;;;;;AAYtC,eAAO,MAAM,YAAY,yDAA4B,CAAA"}
@@ -0,0 +1,15 @@
1
+ import * as tracer_1 from "@effect/io/Debug";
2
+ const fileName_1 = "packages/infra/_src/services/Emailer/fake.ts";
3
+ import * as tsplus_module_1 from "@effect/io/Effect";
4
+ import { pretty } from "@effect-app/prelude/utils";
5
+ import { Emailer } from "./service.js";
6
+ const makeFake = tracer_1.withCallTrace(fileName_1 + ":5:4")(tsplus_module_1.map(() => ({
7
+ sendMail(msg) {
8
+ return tracer_1.withCallTrace(fileName_1 + ":7:48")(tsplus_module_1.logAnnotate("msg", pretty(msg)))(tracer_1.withCallTrace(fileName_1 + ":7:21")(tsplus_module_1.logDebug(`Fake send mail`)));
9
+ }
10
+ })))(tracer_1.withCallTrace(fileName_1 + ":4:25")(tsplus_module_1.logDebug("FAKE Emailer Service enabled")));
11
+ /**
12
+ * @tsplus static Emailer.Ops Fake
13
+ */
14
+ export const FakeSendgrid = tsplus_module_1.toLayer(Emailer)(makeFake);
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvRW1haWxlci9mYWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXRDLE1BQU0sUUFBUSxHQUFHLGdFQUNWLEdBQVksRUFBRSxDQUFDLENBQUM7SUFDbkIsUUFBUSxDQUFDLEdBQUc7UUFDVixPQUFPLHlFQUE4QyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnREFBaEUseUJBQWdCLGdCQUFnQixDQUFDLEVBQWdDLENBQUE7SUFDMUUsQ0FBQztDQUNGLENBQUMsZ0RBTGEseUJBQWdCLDhCQUE4QixDQUFDLEVBSzNELENBQUE7QUFFTDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyx3QkFBaUIsT0FBTyxFQUF4QixRQUFRLENBQWlCLENBQUEifQ==