@effect-app/infra 4.0.0-beta.26 → 4.0.0-beta.260

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 (503) hide show
  1. package/CHANGELOG.md +1966 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +30 -11
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +35 -14
  6. package/dist/ClusterCosmos.d.ts +64 -0
  7. package/dist/ClusterCosmos.d.ts.map +1 -0
  8. package/dist/ClusterCosmos.js +487 -0
  9. package/dist/ClusterServiceBus.d.ts +67 -0
  10. package/dist/ClusterServiceBus.d.ts.map +1 -0
  11. package/dist/ClusterServiceBus.js +82 -0
  12. package/dist/ContextProvider.d.ts +34 -0
  13. package/dist/ContextProvider.d.ts.map +1 -0
  14. package/dist/ContextProvider.js +40 -0
  15. package/dist/Emailer/Sendgrid.d.ts +111 -147
  16. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  17. package/dist/Emailer/Sendgrid.js +24 -19
  18. package/dist/Emailer/fake.d.ts +2 -2
  19. package/dist/Emailer/fake.d.ts.map +1 -1
  20. package/dist/Emailer/fake.js +4 -4
  21. package/dist/MainFiberSet.d.ts +12 -9
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +10 -6
  24. package/dist/QueueMaker/SQLQueue.d.ts +8 -9
  25. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  26. package/dist/QueueMaker/SQLQueue.js +138 -120
  27. package/dist/QueueMaker/errors.d.ts +5 -3
  28. package/dist/QueueMaker/errors.d.ts.map +1 -1
  29. package/dist/QueueMaker/errors.js +4 -2
  30. package/dist/QueueMaker/memQueue.d.ts +10 -6
  31. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  32. package/dist/QueueMaker/memQueue.js +84 -68
  33. package/dist/QueueMaker/sbqueue.d.ts +9 -5
  34. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  35. package/dist/QueueMaker/sbqueue.js +60 -58
  36. package/dist/RequestFiberSet.d.ts +10 -7
  37. package/dist/RequestFiberSet.d.ts.map +1 -1
  38. package/dist/RequestFiberSet.js +13 -8
  39. package/dist/SQL/Model.d.ts +468 -0
  40. package/dist/SQL/Model.d.ts.map +1 -0
  41. package/dist/SQL/Model.js +469 -0
  42. package/dist/SQL.d.ts +2 -0
  43. package/dist/SQL.d.ts.map +1 -0
  44. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  45. package/dist/ServiceBus.d.ts +61 -0
  46. package/dist/ServiceBus.d.ts.map +1 -0
  47. package/dist/ServiceBus.js +108 -0
  48. package/dist/Store/Cosmos/query.d.ts +15 -4
  49. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  50. package/dist/Store/Cosmos/query.js +179 -41
  51. package/dist/Store/Cosmos.d.ts +3 -3
  52. package/dist/Store/Cosmos.d.ts.map +1 -1
  53. package/dist/Store/Cosmos.js +344 -246
  54. package/dist/Store/Disk.d.ts +5 -5
  55. package/dist/Store/Disk.d.ts.map +1 -1
  56. package/dist/Store/Disk.js +78 -38
  57. package/dist/Store/Memory.d.ts +7 -10
  58. package/dist/Store/Memory.d.ts.map +1 -1
  59. package/dist/Store/Memory.js +326 -66
  60. package/dist/Store/SQL/Pg.d.ts +4 -0
  61. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  62. package/dist/Store/SQL/Pg.js +232 -0
  63. package/dist/Store/SQL/query.d.ts +49 -0
  64. package/dist/Store/SQL/query.d.ts.map +1 -0
  65. package/dist/Store/SQL/query.js +527 -0
  66. package/dist/Store/SQL.d.ts +21 -0
  67. package/dist/Store/SQL.d.ts.map +1 -0
  68. package/dist/Store/SQL.js +449 -0
  69. package/dist/Store/codeFilter.d.ts +5 -5
  70. package/dist/Store/codeFilter.d.ts.map +1 -1
  71. package/dist/Store/codeFilter.js +6 -3
  72. package/dist/Store/index.d.ts +7 -5
  73. package/dist/Store/index.d.ts.map +1 -1
  74. package/dist/Store/index.js +18 -5
  75. package/dist/Store/utils.d.ts +4 -3
  76. package/dist/Store/utils.d.ts.map +1 -1
  77. package/dist/Store/utils.js +5 -5
  78. package/dist/WorkflowEngineCosmos.d.ts +29 -0
  79. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  80. package/dist/WorkflowEngineCosmos.js +521 -0
  81. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  82. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  83. package/dist/WorkflowEngineSqlite.js +550 -0
  84. package/dist/arbs.d.ts +2 -2
  85. package/dist/arbs.d.ts.map +1 -1
  86. package/dist/arbs.js +5 -3
  87. package/dist/codec.d.ts +5 -0
  88. package/dist/codec.d.ts.map +1 -0
  89. package/dist/codec.js +5 -0
  90. package/dist/cosmos-client.d.ts +16 -0
  91. package/dist/cosmos-client.d.ts.map +1 -0
  92. package/dist/cosmos-client.js +11 -0
  93. package/dist/errorReporter.d.ts +7 -5
  94. package/dist/errorReporter.d.ts.map +1 -1
  95. package/dist/errorReporter.js +23 -27
  96. package/dist/errors.d.ts +1 -1
  97. package/dist/fileUtil.d.ts +2 -2
  98. package/dist/fileUtil.d.ts.map +1 -1
  99. package/dist/fileUtil.js +2 -2
  100. package/dist/index.d.ts +3 -2
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +3 -2
  103. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  104. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  105. package/dist/internal/RequestContextMiddleware.js +45 -0
  106. package/dist/internal/auth.d.ts +53 -0
  107. package/dist/internal/auth.d.ts.map +1 -0
  108. package/dist/internal/auth.js +180 -0
  109. package/dist/internal/events.d.ts +11 -0
  110. package/dist/internal/events.d.ts.map +1 -0
  111. package/dist/internal/events.js +49 -0
  112. package/dist/internal/health.d.ts +3 -0
  113. package/dist/internal/health.d.ts.map +1 -0
  114. package/dist/internal/health.js +5 -0
  115. package/dist/layerUtils.d.ts +32 -0
  116. package/dist/layerUtils.d.ts.map +1 -0
  117. package/dist/layerUtils.js +17 -0
  118. package/dist/logger/jsonLogger.d.ts +2 -2
  119. package/dist/logger/jsonLogger.d.ts.map +1 -1
  120. package/dist/logger/jsonLogger.js +5 -3
  121. package/dist/logger/logFmtLogger.d.ts +2 -2
  122. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  123. package/dist/logger/logFmtLogger.js +3 -3
  124. package/dist/logger/shared.d.ts +3 -3
  125. package/dist/logger/shared.d.ts.map +1 -1
  126. package/dist/logger/shared.js +5 -5
  127. package/dist/logger.d.ts +1 -1
  128. package/dist/logger.d.ts.map +1 -1
  129. package/dist/memQueue.d.ts +15 -0
  130. package/dist/memQueue.d.ts.map +1 -0
  131. package/dist/memQueue.js +21 -0
  132. package/dist/middlewares.d.ts +10 -0
  133. package/dist/middlewares.d.ts.map +1 -0
  134. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  135. package/dist/mongo-client.d.ts +11 -0
  136. package/dist/mongo-client.d.ts.map +1 -0
  137. package/dist/mongo-client.js +15 -0
  138. package/dist/otel.d.ts +75 -0
  139. package/dist/otel.d.ts.map +1 -0
  140. package/dist/otel.js +65 -0
  141. package/dist/rateLimit.d.ts +12 -4
  142. package/dist/rateLimit.d.ts.map +1 -1
  143. package/dist/rateLimit.js +7 -12
  144. package/dist/redis-client.d.ts +42 -0
  145. package/dist/redis-client.d.ts.map +1 -0
  146. package/dist/redis-client.js +98 -0
  147. package/dist/reportError.d.ts +4 -0
  148. package/dist/reportError.d.ts.map +1 -0
  149. package/dist/reportError.js +28 -0
  150. package/dist/routing/middleware/RouterMiddleware.d.ts +16 -0
  151. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  152. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  153. package/dist/routing/middleware/middleware.d.ts +48 -0
  154. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  155. package/dist/routing/middleware/middleware.js +128 -0
  156. package/dist/routing/middleware.d.ts +3 -0
  157. package/dist/routing/middleware.d.ts.map +1 -0
  158. package/dist/{api/routing → routing}/middleware.js +1 -2
  159. package/dist/routing/schema/jwt.d.ts +4 -0
  160. package/dist/routing/schema/jwt.d.ts.map +1 -0
  161. package/dist/routing/schema/jwt.js +13 -0
  162. package/dist/routing/tsort.d.ts +8 -0
  163. package/dist/routing/tsort.d.ts.map +1 -0
  164. package/dist/routing/tsort.js +51 -0
  165. package/dist/routing/utils.d.ts +19 -0
  166. package/dist/routing/utils.d.ts.map +1 -0
  167. package/dist/routing/utils.js +45 -0
  168. package/dist/routing.d.ts +184 -0
  169. package/dist/routing.d.ts.map +1 -0
  170. package/dist/routing.js +236 -0
  171. package/dist/test.d.ts +3 -3
  172. package/dist/test.d.ts.map +1 -1
  173. package/dist/test.js +2 -2
  174. package/dist/util.d.ts +3 -0
  175. package/dist/util.d.ts.map +1 -0
  176. package/dist/util.js +14 -0
  177. package/dist/vitest.d.ts +1 -1
  178. package/docs/cluster-storage.md +26 -0
  179. package/docs/workflow-engine.md +262 -0
  180. package/examples/query.ts +47 -39
  181. package/package.json +31 -345
  182. package/run.sh +1 -0
  183. package/src/CUPS.ts +52 -13
  184. package/src/ClusterCosmos.ts +954 -0
  185. package/src/ClusterServiceBus.ts +242 -0
  186. package/src/{api/ContextProvider.ts → ContextProvider.ts} +19 -16
  187. package/src/Emailer/Sendgrid.ts +82 -59
  188. package/src/Emailer/fake.ts +3 -3
  189. package/src/MainFiberSet.ts +12 -10
  190. package/src/QueueMaker/SQLQueue.ts +153 -156
  191. package/src/QueueMaker/errors.ts +3 -1
  192. package/src/QueueMaker/memQueue.ts +113 -107
  193. package/src/QueueMaker/sbqueue.ts +78 -90
  194. package/src/RequestFiberSet.ts +13 -8
  195. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  196. package/src/ServiceBus.ts +219 -0
  197. package/src/Store/Cosmos/query.ts +216 -52
  198. package/src/Store/Cosmos.ts +493 -353
  199. package/src/Store/Disk.ts +109 -69
  200. package/src/Store/Memory.ts +365 -96
  201. package/src/Store/SQL/Pg.ts +363 -0
  202. package/src/Store/SQL/query.ts +603 -0
  203. package/src/Store/SQL.ts +735 -0
  204. package/src/Store/codeFilter.ts +8 -5
  205. package/src/Store/index.ts +21 -6
  206. package/src/Store/utils.ts +26 -24
  207. package/src/WorkflowEngineCosmos.ts +719 -0
  208. package/src/WorkflowEngineSqlite.ts +813 -0
  209. package/src/arbs.ts +5 -3
  210. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  211. package/src/errorReporter.ts +66 -76
  212. package/src/fileUtil.ts +1 -1
  213. package/src/index.ts +2 -1
  214. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  215. package/src/internal/auth.ts +272 -0
  216. package/src/{api/internal → internal}/events.ts +22 -13
  217. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  218. package/src/logger/jsonLogger.ts +4 -2
  219. package/src/logger/logFmtLogger.ts +2 -2
  220. package/src/logger/shared.ts +5 -4
  221. package/src/{adapters/memQueue.ts → memQueue.ts} +5 -4
  222. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  223. package/src/otel.ts +152 -0
  224. package/src/rateLimit.ts +34 -23
  225. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  226. package/src/{api/reportError.ts → reportError.ts} +3 -2
  227. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  228. package/src/{api/routing → routing}/middleware/middleware.ts +62 -17
  229. package/src/routing/middleware.ts +4 -0
  230. package/src/{api/routing → routing}/schema/jwt.ts +2 -1
  231. package/src/{api/routing → routing}/utils.ts +2 -1
  232. package/src/routing.ts +768 -0
  233. package/src/test.ts +2 -2
  234. package/test/auth.test.ts +101 -0
  235. package/test/cluster-cosmos.test.ts +503 -0
  236. package/test/cluster-servicebus.test.ts +180 -0
  237. package/test/contextProvider.test.ts +15 -12
  238. package/test/controller.test.ts +28 -32
  239. package/test/cosmos-query.test.ts +159 -0
  240. package/test/dist/_check-agg-infer.test-d.d.ts +2 -0
  241. package/test/dist/_check-agg-infer.test-d.d.ts.map +1 -0
  242. package/test/dist/_check-agg-infer.test-d.js +19 -0
  243. package/test/dist/_check-proj-infer.test-d.d.ts +2 -0
  244. package/test/dist/_check-proj-infer.test-d.d.ts.map +1 -0
  245. package/test/dist/_check-proj-infer.test-d.js +16 -0
  246. package/test/dist/_check-tighten.test-d.d.ts +2 -0
  247. package/test/dist/_check-tighten.test-d.d.ts.map +1 -0
  248. package/test/dist/_check-tighten.test-d.js +21 -0
  249. package/test/dist/auth.test.d.ts.map +1 -0
  250. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  251. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  252. package/test/dist/contextProvider.test.d.ts.map +1 -1
  253. package/test/dist/controller.test.d.ts.map +1 -1
  254. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  255. package/test/dist/date-query.test.d.ts.map +1 -0
  256. package/test/dist/fixtures.d.ts +30 -12
  257. package/test/dist/fixtures.d.ts.map +1 -1
  258. package/test/dist/fixtures.js +17 -10
  259. package/test/dist/query.test.d.ts.map +1 -1
  260. package/test/dist/rawQuery.test.d.ts.map +1 -1
  261. package/test/dist/repository-ext.test.d.ts.map +1 -0
  262. package/test/dist/requires.test.d.ts.map +1 -1
  263. package/test/dist/router-generator.test.d.ts.map +1 -0
  264. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  265. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  266. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  267. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  268. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  269. package/test/dist/sql-store.test.d.ts.map +1 -0
  270. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  271. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  272. package/test/fixtures.ts +16 -9
  273. package/test/layerUtils.test.ts +2 -2
  274. package/test/query.test.ts +905 -40
  275. package/test/rawQuery.test.ts +340 -22
  276. package/test/repository-ext.test.ts +62 -0
  277. package/test/requires.test.ts +10 -5
  278. package/test/router-generator.test.ts +187 -0
  279. package/test/routing-interruptibility.test.ts +66 -0
  280. package/test/rpc-context-map-streaming.test.ts +262 -0
  281. package/test/rpc-e2e-invalidation.test.ts +256 -0
  282. package/test/rpc-multi-middleware.test.ts +85 -10
  283. package/test/rpc-stream-fullstack.test.ts +304 -0
  284. package/test/sql-store.test.ts +1711 -0
  285. package/test/validateSample.test.ts +26 -14
  286. package/test/workflow-engine-cosmos.test.ts +354 -0
  287. package/test/workflow-engine-sqlite.test.ts +299 -0
  288. package/tsconfig.examples.json +1 -1
  289. package/tsconfig.json +2 -1
  290. package/tsconfig.json.bak +2 -2
  291. package/tsconfig.src.json +35 -35
  292. package/tsconfig.test.json +2 -2
  293. package/dist/Emailer/service.d.ts +0 -55
  294. package/dist/Emailer/service.d.ts.map +0 -1
  295. package/dist/Emailer/service.js +0 -6
  296. package/dist/Emailer.d.ts +0 -2
  297. package/dist/Emailer.d.ts.map +0 -1
  298. package/dist/Emailer.js +0 -2
  299. package/dist/Model/Repository/ext.d.ts +0 -41
  300. package/dist/Model/Repository/ext.d.ts.map +0 -1
  301. package/dist/Model/Repository/ext.js +0 -65
  302. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  303. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  304. package/dist/Model/Repository/internal/internal.js +0 -316
  305. package/dist/Model/Repository/legacy.d.ts +0 -19
  306. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  307. package/dist/Model/Repository/legacy.js +0 -2
  308. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  309. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  310. package/dist/Model/Repository/makeRepo.js +0 -24
  311. package/dist/Model/Repository/service.d.ts +0 -89
  312. package/dist/Model/Repository/service.d.ts.map +0 -1
  313. package/dist/Model/Repository/service.js +0 -2
  314. package/dist/Model/Repository/validation.d.ts +0 -42
  315. package/dist/Model/Repository/validation.d.ts.map +0 -1
  316. package/dist/Model/Repository/validation.js +0 -32
  317. package/dist/Model/Repository.d.ts +0 -6
  318. package/dist/Model/Repository.d.ts.map +0 -1
  319. package/dist/Model/Repository.js +0 -6
  320. package/dist/Model/dsl.d.ts +0 -32
  321. package/dist/Model/dsl.d.ts.map +0 -1
  322. package/dist/Model/dsl.js +0 -44
  323. package/dist/Model/filter/filterApi.d.ts +0 -30
  324. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  325. package/dist/Model/filter/filterApi.js +0 -2
  326. package/dist/Model/filter/types/errors.d.ts +0 -29
  327. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  328. package/dist/Model/filter/types/errors.js +0 -2
  329. package/dist/Model/filter/types/fields.d.ts +0 -15
  330. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  331. package/dist/Model/filter/types/fields.js +0 -2
  332. package/dist/Model/filter/types/path/common.d.ts +0 -316
  333. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  334. package/dist/Model/filter/types/path/common.js +0 -2
  335. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  336. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  337. package/dist/Model/filter/types/path/eager.js +0 -31
  338. package/dist/Model/filter/types/path/index.d.ts +0 -4
  339. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  340. package/dist/Model/filter/types/path/index.js +0 -3
  341. package/dist/Model/filter/types/utils.d.ts +0 -79
  342. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  343. package/dist/Model/filter/types/utils.js +0 -2
  344. package/dist/Model/filter/types/validator.d.ts +0 -30
  345. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  346. package/dist/Model/filter/types/validator.js +0 -2
  347. package/dist/Model/filter/types.d.ts +0 -5
  348. package/dist/Model/filter/types.d.ts.map +0 -1
  349. package/dist/Model/filter/types.js +0 -7
  350. package/dist/Model/query/dsl.d.ts +0 -248
  351. package/dist/Model/query/dsl.d.ts.map +0 -1
  352. package/dist/Model/query/dsl.js +0 -104
  353. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  354. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  355. package/dist/Model/query/new-kid-interpreter.js +0 -165
  356. package/dist/Model/query.d.ts +0 -15
  357. package/dist/Model/query.d.ts.map +0 -1
  358. package/dist/Model/query.js +0 -3
  359. package/dist/Model.d.ts +0 -4
  360. package/dist/Model.d.ts.map +0 -1
  361. package/dist/Model.js +0 -4
  362. package/dist/Operations.d.ts +0 -55
  363. package/dist/Operations.d.ts.map +0 -1
  364. package/dist/Operations.js +0 -102
  365. package/dist/OperationsRepo.d.ts +0 -41
  366. package/dist/OperationsRepo.d.ts.map +0 -1
  367. package/dist/OperationsRepo.js +0 -14
  368. package/dist/QueueMaker/service.d.ts +0 -11
  369. package/dist/QueueMaker/service.d.ts.map +0 -1
  370. package/dist/QueueMaker/service.js +0 -4
  371. package/dist/RequestContext.d.ts +0 -63
  372. package/dist/RequestContext.d.ts.map +0 -1
  373. package/dist/RequestContext.js +0 -49
  374. package/dist/Store/ContextMapContainer.d.ts +0 -14
  375. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  376. package/dist/Store/ContextMapContainer.js +0 -16
  377. package/dist/Store/service.d.ts +0 -108
  378. package/dist/Store/service.d.ts.map +0 -1
  379. package/dist/Store/service.js +0 -71
  380. package/dist/Store.d.ts +0 -2
  381. package/dist/Store.d.ts.map +0 -1
  382. package/dist/Store.js +0 -2
  383. package/dist/adapters/SQL/Model.d.ts +0 -479
  384. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  385. package/dist/adapters/SQL/Model.js +0 -478
  386. package/dist/adapters/SQL.d.ts +0 -2
  387. package/dist/adapters/SQL.d.ts.map +0 -1
  388. package/dist/adapters/ServiceBus.d.ts +0 -58
  389. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  390. package/dist/adapters/ServiceBus.js +0 -99
  391. package/dist/adapters/cosmos-client.d.ts +0 -14
  392. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  393. package/dist/adapters/cosmos-client.js +0 -9
  394. package/dist/adapters/index.d.ts +0 -2
  395. package/dist/adapters/index.d.ts.map +0 -1
  396. package/dist/adapters/index.js +0 -2
  397. package/dist/adapters/logger.d.ts +0 -9
  398. package/dist/adapters/logger.d.ts.map +0 -1
  399. package/dist/adapters/logger.js +0 -3
  400. package/dist/adapters/memQueue.d.ts +0 -13
  401. package/dist/adapters/memQueue.d.ts.map +0 -1
  402. package/dist/adapters/memQueue.js +0 -20
  403. package/dist/adapters/mongo-client.d.ts +0 -10
  404. package/dist/adapters/mongo-client.d.ts.map +0 -1
  405. package/dist/adapters/mongo-client.js +0 -13
  406. package/dist/adapters/redis-client.d.ts +0 -39
  407. package/dist/adapters/redis-client.d.ts.map +0 -1
  408. package/dist/adapters/redis-client.js +0 -94
  409. package/dist/api/ContextProvider.d.ts +0 -31
  410. package/dist/api/ContextProvider.d.ts.map +0 -1
  411. package/dist/api/ContextProvider.js +0 -38
  412. package/dist/api/codec.d.ts +0 -5
  413. package/dist/api/codec.d.ts.map +0 -1
  414. package/dist/api/codec.js +0 -5
  415. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  416. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  417. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  418. package/dist/api/internal/auth.d.ts +0 -15
  419. package/dist/api/internal/auth.d.ts.map +0 -1
  420. package/dist/api/internal/auth.js +0 -47
  421. package/dist/api/internal/events.d.ts +0 -9
  422. package/dist/api/internal/events.d.ts.map +0 -1
  423. package/dist/api/internal/events.js +0 -42
  424. package/dist/api/internal/health.d.ts +0 -3
  425. package/dist/api/internal/health.d.ts.map +0 -1
  426. package/dist/api/internal/health.js +0 -5
  427. package/dist/api/layerUtils.d.ts +0 -24
  428. package/dist/api/layerUtils.d.ts.map +0 -1
  429. package/dist/api/layerUtils.js +0 -16
  430. package/dist/api/middlewares.d.ts +0 -10
  431. package/dist/api/middlewares.d.ts.map +0 -1
  432. package/dist/api/reportError.d.ts +0 -4
  433. package/dist/api/reportError.d.ts.map +0 -1
  434. package/dist/api/reportError.js +0 -27
  435. package/dist/api/routing/middleware/RouterMiddleware.d.ts +0 -15
  436. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  437. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  438. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  439. package/dist/api/routing/middleware/middleware.js +0 -92
  440. package/dist/api/routing/middleware.d.ts +0 -4
  441. package/dist/api/routing/middleware.d.ts.map +0 -1
  442. package/dist/api/routing/schema/jwt.d.ts +0 -4
  443. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  444. package/dist/api/routing/schema/jwt.js +0 -12
  445. package/dist/api/routing/tsort.d.ts +0 -8
  446. package/dist/api/routing/tsort.d.ts.map +0 -1
  447. package/dist/api/routing/tsort.js +0 -51
  448. package/dist/api/routing/utils.d.ts +0 -19
  449. package/dist/api/routing/utils.d.ts.map +0 -1
  450. package/dist/api/routing/utils.js +0 -44
  451. package/dist/api/routing.d.ts +0 -138
  452. package/dist/api/routing.d.ts.map +0 -1
  453. package/dist/api/routing.js +0 -166
  454. package/dist/api/setupRequest.d.ts +0 -12
  455. package/dist/api/setupRequest.d.ts.map +0 -1
  456. package/dist/api/setupRequest.js +0 -44
  457. package/dist/api/util.d.ts +0 -3
  458. package/dist/api/util.d.ts.map +0 -1
  459. package/dist/api/util.js +0 -14
  460. package/eslint.config.mjs +0 -24
  461. package/src/Emailer/service.ts +0 -52
  462. package/src/Emailer.ts +0 -1
  463. package/src/Model/Repository/ext.ts +0 -283
  464. package/src/Model/Repository/internal/internal.ts +0 -577
  465. package/src/Model/Repository/legacy.ts +0 -27
  466. package/src/Model/Repository/makeRepo.ts +0 -139
  467. package/src/Model/Repository/service.ts +0 -627
  468. package/src/Model/Repository/validation.ts +0 -31
  469. package/src/Model/Repository.ts +0 -5
  470. package/src/Model/dsl.ts +0 -128
  471. package/src/Model/filter/filterApi.ts +0 -60
  472. package/src/Model/filter/types/errors.ts +0 -47
  473. package/src/Model/filter/types/fields.ts +0 -50
  474. package/src/Model/filter/types/path/common.ts +0 -404
  475. package/src/Model/filter/types/path/eager.ts +0 -298
  476. package/src/Model/filter/types/path/index.ts +0 -4
  477. package/src/Model/filter/types/utils.ts +0 -128
  478. package/src/Model/filter/types/validator.ts +0 -46
  479. package/src/Model/filter/types.ts +0 -6
  480. package/src/Model/query/dsl.ts +0 -2110
  481. package/src/Model/query/new-kid-interpreter.ts +0 -210
  482. package/src/Model/query.ts +0 -13
  483. package/src/Model.ts +0 -3
  484. package/src/Operations.ts +0 -235
  485. package/src/OperationsRepo.ts +0 -16
  486. package/src/QueueMaker/service.ts +0 -17
  487. package/src/RequestContext.ts +0 -63
  488. package/src/Store/ContextMapContainer.ts +0 -20
  489. package/src/Store/service.ts +0 -184
  490. package/src/Store.ts +0 -1
  491. package/src/adapters/ServiceBus.ts +0 -209
  492. package/src/adapters/index.ts +0 -0
  493. package/src/adapters/logger.ts +0 -3
  494. package/src/api/internal/auth.ts +0 -68
  495. package/src/api/routing/middleware.ts +0 -6
  496. package/src/api/routing.ts +0 -598
  497. package/src/api/setupRequest.ts +0 -84
  498. /package/src/{adapters/SQL.ts → SQL.ts} +0 -0
  499. /package/src/{api/codec.ts → codec.ts} +0 -0
  500. /package/src/{api/internal → internal}/health.ts +0 -0
  501. /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
  502. /package/src/{api/routing → routing}/tsort.ts +0 -0
  503. /package/src/{api/util.ts → util.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusterServiceBus.d.ts","sourceRoot":"","sources":["../src/ClusterServiceBus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { ServiceBusClient } from "@azure/service-bus";
2
+ import * as Context from "effect-app/Context";
3
+ import * as Effect from "effect-app/Effect";
4
+ import * as Layer from "effect-app/Layer";
5
+ import * as Data from "effect/Data";
6
+ import * as Scope from "effect/Scope";
7
+ import * as ClusterError from "effect/unstable/cluster/ClusterError";
8
+ import { Persisted } from "effect/unstable/cluster/ClusterSchema";
9
+ import * as Runners from "effect/unstable/cluster/Runners";
10
+ import * as Sharding from "effect/unstable/cluster/Sharding";
11
+ import * as Snowflake from "effect/unstable/cluster/Snowflake";
12
+ export class ClusterServiceBus extends Context.Service()("@effect-app/infra/ClusterServiceBus") {
13
+ }
14
+ export const layerClient = (connectionString, options) => Layer.effect(ClusterServiceBus, Effect.acquireRelease(Effect.sync(() => ClusterServiceBus.of({ client: new ServiceBusClient(connectionString, options) })), ({ client }) => Effect.promise(() => client.close()).pipe(Effect.ignore)));
15
+ export const layerClientFrom = (client) => Layer.succeed(ClusterServiceBus)(ClusterServiceBus.of({ client }));
16
+ export const makeRunners = Effect.fnUntraced(function* (options) {
17
+ const serviceBus = yield* ClusterServiceBus;
18
+ const scope = yield* Effect.scope;
19
+ const sender = serviceBus.client.createSender(options.topicName, options.senderOptions);
20
+ yield* Scope.addFinalizer(scope, Effect.promise(() => sender.close()).pipe(Effect.ignore));
21
+ const publish = (message) => Effect
22
+ .tryPromise({
23
+ try: () => sender.sendMessages(storageNotification(message)),
24
+ catch: (cause) => new ServiceBusPublishError({ cause })
25
+ })
26
+ .pipe(Effect.catch((cause) => Effect.logDebug("Could not publish cluster storage notification", cause)));
27
+ return yield* Runners.make({
28
+ ping: (address) => Effect.fail(new ClusterError.RunnerUnavailable({ address })),
29
+ send: ({ address, message }) => {
30
+ const persisted = Context.get(message.rpc.annotations, Persisted);
31
+ return (persisted ? publish(message) : Effect.void).pipe(Effect.andThen(Effect.fail(new ClusterError.RunnerUnavailable({ address }))));
32
+ },
33
+ notify: ({ message }) => publish(message),
34
+ onRunnerUnavailable: () => Effect.void
35
+ });
36
+ });
37
+ export const layerRunners = (options) => Layer.effect(Runners.Runners, makeRunners(options)).pipe(Layer.provide(Snowflake.layerGenerator));
38
+ export const makeStoragePoller = Effect.fnUntraced(function* (options) {
39
+ const serviceBus = yield* ClusterServiceBus;
40
+ const sharding = yield* Sharding.Sharding;
41
+ const scope = yield* Effect.scope;
42
+ const receiver = serviceBus.client.createReceiver(options.topicName, options.subscriptionName, {
43
+ receiveMode: "receiveAndDelete",
44
+ ...options.receiverOptions
45
+ });
46
+ const subscription = receiver.subscribe({
47
+ processMessage: () => Effect.runPromise(sharding.pollStorage.pipe(Effect.catchCause((cause) => Effect.logDebug("Could not wake cluster storage poller", cause)))),
48
+ processError: (args) => Effect.runPromise(Effect.logDebug("Error receiving cluster storage notification", args.error).pipe(Effect.annotateLogs({
49
+ entityPath: args.entityPath,
50
+ errorSource: args.errorSource,
51
+ fullyQualifiedNamespace: args.fullyQualifiedNamespace
52
+ })))
53
+ }, options.subscribeOptions);
54
+ yield* Scope.addFinalizer(scope, Effect.promise(() => subscription.close()).pipe(Effect.andThen(Effect.promise(() => receiver.close())), Effect.ignore));
55
+ });
56
+ export const layerStoragePoller = (options) => Layer.effectDiscard(makeStoragePoller(options));
57
+ export const layer = (options) => {
58
+ const sharding = Sharding.layer.pipe(Layer.provideMerge(layerRunners(options)));
59
+ return Layer.merge(sharding, layerStoragePoller(options).pipe(Layer.provide(sharding)));
60
+ };
61
+ const storageNotification = (message) => {
62
+ const envelope = message.envelope;
63
+ const envelopeId = envelope._tag === "Request" ? envelope.requestId : envelope.id;
64
+ const body = {
65
+ _tag: "EffectClusterStorageNotification",
66
+ envelopeId: String(envelopeId),
67
+ requestId: String(envelope.requestId),
68
+ shardId: envelope.address.shardId.toString(),
69
+ entityType: envelope.address.entityType,
70
+ entityId: envelope.address.entityId
71
+ };
72
+ return {
73
+ body,
74
+ contentType: "application/json",
75
+ correlationId: body.requestId,
76
+ messageId: body.envelopeId,
77
+ subject: body._tag
78
+ };
79
+ };
80
+ class ServiceBusPublishError extends Data.TaggedError("ServiceBusPublishError") {
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlclNlcnZpY2VCdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2x1c3RlclNlcnZpY2VCdXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUE2SSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hNLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxJQUFJLE1BQU0sYUFBYSxDQUFBO0FBQ25DLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxZQUFZLE1BQU0sc0NBQXNDLENBQUE7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBSWpFLE9BQU8sS0FBSyxPQUFPLE1BQU0saUNBQWlDLENBQUE7QUFFMUQsT0FBTyxLQUFLLFFBQVEsTUFBTSxrQ0FBa0MsQ0FBQTtBQUU1RCxPQUFPLEtBQUssU0FBUyxNQUFNLG1DQUFtQyxDQUFBO0FBeUM5RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsT0FBTyxDQUFDLE9BQU8sRUFFbEQsQ0FBQyxxQ0FBcUMsQ0FBQztDQUFHO0FBc0I5QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FDekIsZ0JBQXdCLEVBQ3hCLE9BQTZDLEVBQ2IsRUFBRSxDQUNsQyxLQUFLLENBQUMsTUFBTSxDQUNWLGlCQUFpQixFQUNqQixNQUFNLENBQUMsY0FBYyxDQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNwRyxDQUFDLEVBQUUsTUFBTSxFQUFF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
@@ -0,0 +1,34 @@
1
+ import type { NonEmptyReadonlyArray } from "effect-app/Array";
2
+ import * as Context from "effect-app/Context";
3
+ import * as Effect from "effect-app/Effect";
4
+ import * as Layer from "effect-app/Layer";
5
+ import type * as Scope from "effect/Scope";
6
+ import { type HttpRouter } from "effect-app/http";
7
+ import { type EffectGenUtils } from "effect-app/utils/gen";
8
+ import { type ContextTagWithDefault, type GetContext, type LayerUtils } from "./layerUtils.js";
9
+ export interface ContextProviderId {
10
+ _tag: "ContextProvider";
11
+ }
12
+ /**
13
+ * TDeps is an array of services with Default implementation
14
+ * each service is an effect which builds some context for each request
15
+ */
16
+ type TDepsArr<TDeps extends ReadonlyArray<any>> = {
17
+ [K in keyof TDeps]: TDeps[K] extends ContextTagWithDefault.Base<Effect.Effect<Context.Context<infer _1>, never, infer _R>> ? [_R] extends [HttpRouter.Provided] ? TDeps[K] : `HttpLayerRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : TDeps[K] extends (ContextTagWithDefault.Base<(() => Generator<infer _YW, infer _1, infer _2>)>) ? [_YW] extends [never] ? TDeps[K] : [_YW] extends [Effect.Effect<any, never, infer _R>] ? [_R] extends [HttpRouter.Provided] ? TDeps[K] : `HttpLayerRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : "WTF are you yielding man?" : `You cannot throw errors from providers`;
18
+ };
19
+ export declare const mergeContextProviders: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => {
20
+ dependencies: { [K in keyof TDeps]: TDeps[K]["Default"]; };
21
+ effect: Effect.Effect<Effect.Effect<Context.Context<GetContext<EffectGenUtils.Success<Context.Service.Shape<TDeps[number]>>>>, never, EffectGenUtils.Context<Context.Service.Shape<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
22
+ };
23
+ export declare const ContextProvider: <ContextProviderA, MakeContextProviderE, MakeContextProviderR, ContextProviderR extends Scope.Scope, Dependencies extends NonEmptyReadonlyArray<Layer.Any>>(input: {
24
+ effect: Effect.Effect<Effect.Effect<ContextProviderA, never, ContextProviderR> | (() => Generator<Effect.Effect<any, never, ContextProviderR>, ContextProviderA>), MakeContextProviderE, MakeContextProviderR | Scope.Scope>;
25
+ dependencies?: Dependencies;
26
+ }) => Context.Service<ContextProviderId, Effect.Effect<ContextProviderA, never, ContextProviderR>> & {
27
+ Default: Layer.Layer<ContextProviderId, MakeContextProviderE | LayerUtils.GetLayersError<Dependencies>, Exclude<MakeContextProviderR, LayerUtils.GetLayersSuccess<Dependencies>> | LayerUtils.GetLayersContext<Dependencies>>;
28
+ };
29
+ export declare const MergedContextProvider: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => ContextTagWithDefault<ContextProviderId, Effect.Effect<Context.Context<GetContext<EffectGenUtils.Success<Context.Service.Shape<TDeps[number]>>>>, never, EffectGenUtils.Context<Context.Service.Shape<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, Exclude<Context.Service.Identifier<TDeps[number]>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>> | LayerUtils.GetLayersContext<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
30
+ export declare const EmptyContextProvider: Context.Service<ContextProviderId, Effect.Effect<Context.Context<never>, never, never>> & {
31
+ Default: Layer.Layer<ContextProviderId, never, never>;
32
+ };
33
+ export {};
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29udGV4dFByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDN0QsT0FBTyxLQUFLLE9BQU8sTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sa0JBQWtCLENBQUE7QUFFekMsT0FBTyxLQUFLLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLFVBQVUsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQTtBQUU3RyxNQUFNLFdBQVcsaUJBQWlCO0lBQ2hDLElBQUksRUFBRSxpQkFBaUIsQ0FBQTtDQUN4QjtBQUVEOzs7R0FHRztBQUNILEtBQUssUUFBUSxDQUFDLEtBQUssU0FBUyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUk7S0FLL0MsQ0FBQyxJQUFJLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FJNUIscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQ2pGLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUM3QyxvREFBb0QsS0FBSyxDQUFDLENBQUMs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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../src/ContextProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import * as Context from "effect-app/Context";
2
+ import * as Effect from "effect-app/Effect";
3
+ import * as Layer from "effect-app/Layer";
4
+ import { pipe } from "effect/Function";
5
+ import { mergeContexts } from "./layerUtils.js";
6
+ // Note: the type here must be aligned with MergedContextProvider
7
+ export const mergeContextProviders = (
8
+ // long life to reverse mapped types
9
+ ...deps) => ({
10
+ dependencies: deps.map((_) => _.Default),
11
+ effect: Effect.gen(function* () {
12
+ // uses the tags to request the context providers
13
+ const makers = yield* Effect.all(deps);
14
+ return Effect
15
+ .gen(function* () {
16
+ const services = makers.map((handle, i) => ({
17
+ maker: deps[i],
18
+ handle: handle[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(handle)() : handle
19
+ }));
20
+ // services are effects which return some Context.Context<...>
21
+ const context = yield* mergeContexts(services);
22
+ return context;
23
+ });
24
+ })
25
+ });
26
+ // Effect Rpc Middleware: for single tag providing, we could use Provides, for providing Context or Layer (bad boy) we could use Wrap..
27
+ export const ContextProvider = (input) => {
28
+ const ctx = Context.Service("ContextProvider");
29
+ const e = input.effect.pipe(Effect.map((eg) => eg[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(eg)() : eg));
30
+ const l = Layer.effect(ctx, e);
31
+ return Object.assign(ctx, {
32
+ Default: l.pipe(input.dependencies ? Layer.provide([...input.dependencies]) : (_) => _)
33
+ });
34
+ };
35
+ // Note: the type here must be aligned with mergeContextProviders
36
+ export const MergedContextProvider = (
37
+ // long life to reverse mapped types
38
+ ...deps) => pipe(deps, (_) => mergeContextProviders(..._), (_) => ContextProvider(_));
39
+ export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NvbnRleHRQcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFLdEMsT0FBTyxFQUFnRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQTBDN0csaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0FBR25DLG9DQUFvQztBQUNwQyxHQUFHLElBQXFCLEVBY3hCLEVBQUUsQ0FBQyxDQUFDO0lBQ0osWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVMsQ0FBQyxPQUFPLENBQVE7SUFDeEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzFCLGlEQUFpRDtRQUNqRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQWEsQ0FBQyxDQUFBO1FBQy9DLE9BQU8sTUFBTTthQUNWLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDWixNQUFNLFFBQVEsR0FBSSxNQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ3BEO2dCQUNFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNkLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU07YUFDbEcsQ0FDRixDQUFDLENBQUE7WUFDRiw4REFBOEQ7WUFDOUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQWUsQ0FBQyxDQUFBO1lBQ3JELE9BQU8sT0FBTyxDQUFBO1FBQ2hCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFRO0NBQ1YsQ0FBQyxDQUFBO0FBRUYsdUlBQXVJO0FBQ3ZJLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQU83QixLQVdDLEVBQ0QsRUFBRTtJQUNGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBSXpCLGlCQUFpQixDQUNsQixDQUFBO0lBQ0QsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFFLEVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ2xILENBQUE7SUFDRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFRLENBQUMsQ0FBQTtJQUNyQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ3hCLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNiLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQWdDLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FPbEg7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7QUFHbkMsb0NBQW9DO0FBQ3BDLEdBQUcsSUFBcUIsRUFDeEIsRUFBRSxDQUNGLElBQUksQ0FDRixJQUFxRCxFQUNyRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDbEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFRLENBQUMsQ0FpQmpDLENBQUE7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBIn0=
@@ -1,171 +1,135 @@
1
- import type { EmailData } from "@sendgrid/helpers/classes/email-address.js";
2
- import type { MailContent } from "@sendgrid/helpers/classes/mail.js";
3
- import { Array } from "effect-app";
4
- import { Emailer, type EmailMsg, type SendgridConfig } from "./service.js";
1
+ import * as Array from "effect-app/Array";
2
+ import { type EmailData, Emailer, type EmailMsg } from "effect-app/Emailer";
3
+ import * as Redacted from "effect/Redacted";
4
+ export interface SendgridConfig {
5
+ defaultReplyTo?: EmailData;
6
+ subjectPrefix: string;
7
+ realMail: boolean;
8
+ defaultFrom: EmailData;
9
+ apiKey: Redacted.Redacted;
10
+ /**
11
+ * Email address used for fake/test recipients. Use `{i}` as a placeholder for
12
+ * an auto-incrementing index to ensure uniqueness.
13
+ *
14
+ * @example "test+{i}@example.com"
15
+ */
16
+ fakeMailAddress: string;
17
+ }
5
18
  export declare function Sendgrid(config: SendgridConfig): import("effect/Layer").Layer<Emailer, never, never>;
6
19
  /**
7
20
  * @hidden
8
21
  */
9
- export declare function renderMessage(forceFake: boolean): (msg: EmailMsg) => {
10
- to: EmailData | EmailData[];
11
- cc: EmailData | EmailData[];
12
- bcc: EmailData | EmailData[];
22
+ export declare function renderMessage(forceFake: boolean, fakeMailAddress: string): (msg: EmailMsg) => {
23
+ from: EmailData;
13
24
  replyTo?: EmailData;
14
- sendAt?: number;
15
25
  subject?: string;
16
- text: string;
17
- html?: string;
18
- templateId?: string;
19
- personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
20
- attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
21
- ipPoolName?: string;
22
- batchId?: string;
23
- sections?: {
24
- [key: string]: string;
25
- };
26
- headers?: {
27
- [key: string]: string;
28
- };
29
- categories?: string[];
30
- category?: string;
31
- customArgs?: {
32
- [key: string]: any;
33
- };
34
- asm?: import("@sendgrid/helpers/classes/mail.js").ASMOptions;
35
- mailSettings?: import("@sendgrid/helpers/classes/mail.js").MailSettings;
36
- trackingSettings?: import("@sendgrid/helpers/classes/mail.js").TrackingSettings;
37
- substitutions?: {
38
- [key: string]: string;
39
- };
40
- substitutionWrappers?: string[];
41
26
  isMultiple?: boolean;
42
- dynamicTemplateData?: {
43
- [key: string]: any;
44
- };
45
- hideWarnings?: boolean;
46
- replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[];
47
- from: import("./service.js").EmailData;
27
+ text: string;
28
+ to: ({
29
+ name: string;
30
+ email: string;
31
+ } | EmailData)[] | {
32
+ name: string;
33
+ email: string;
34
+ } | EmailData;
35
+ cc: ({
36
+ name: string;
37
+ email: string;
38
+ } | EmailData)[] | {
39
+ name: string;
40
+ email: string;
41
+ } | EmailData;
42
+ bcc: ({
43
+ name: string;
44
+ email: string;
45
+ } | EmailData)[] | {
46
+ name: string;
47
+ email: string;
48
+ } | EmailData;
48
49
  } | {
49
- to: EmailData | EmailData[];
50
- cc: EmailData | EmailData[];
51
- bcc: EmailData | EmailData[];
50
+ from: EmailData;
52
51
  replyTo?: EmailData;
53
- sendAt?: number;
54
52
  subject?: string;
55
- text?: string;
56
- html: string;
57
- templateId?: string;
58
- personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
59
- attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
60
- ipPoolName?: string;
61
- batchId?: string;
62
- sections?: {
63
- [key: string]: string;
64
- };
65
- headers?: {
66
- [key: string]: string;
67
- };
68
- categories?: string[];
69
- category?: string;
70
- customArgs?: {
71
- [key: string]: any;
72
- };
73
- asm?: import("@sendgrid/helpers/classes/mail.js").ASMOptions;
74
- mailSettings?: import("@sendgrid/helpers/classes/mail.js").MailSettings;
75
- trackingSettings?: import("@sendgrid/helpers/classes/mail.js").TrackingSettings;
76
- substitutions?: {
77
- [key: string]: string;
78
- };
79
- substitutionWrappers?: string[];
80
53
  isMultiple?: boolean;
81
- dynamicTemplateData?: {
82
- [key: string]: any;
83
- };
84
- hideWarnings?: boolean;
85
- replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[];
86
- from: import("./service.js").EmailData;
54
+ html: string;
55
+ to: ({
56
+ name: string;
57
+ email: string;
58
+ } | EmailData)[] | {
59
+ name: string;
60
+ email: string;
61
+ } | EmailData;
62
+ cc: ({
63
+ name: string;
64
+ email: string;
65
+ } | EmailData)[] | {
66
+ name: string;
67
+ email: string;
68
+ } | EmailData;
69
+ bcc: ({
70
+ name: string;
71
+ email: string;
72
+ } | EmailData)[] | {
73
+ name: string;
74
+ email: string;
75
+ } | EmailData;
87
76
  } | {
88
- to: EmailData | EmailData[];
89
- cc: EmailData | EmailData[];
90
- bcc: EmailData | EmailData[];
77
+ from: EmailData;
91
78
  replyTo?: EmailData;
92
- sendAt?: number;
93
79
  subject?: string;
94
- text?: string;
95
- html?: string;
96
- templateId: string;
97
- personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
98
- attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
99
- ipPoolName?: string;
100
- batchId?: string;
101
- sections?: {
102
- [key: string]: string;
103
- };
104
- headers?: {
105
- [key: string]: string;
106
- };
107
- categories?: string[];
108
- category?: string;
109
- customArgs?: {
110
- [key: string]: any;
111
- };
112
- asm?: import("@sendgrid/helpers/classes/mail.js").ASMOptions;
113
- mailSettings?: import("@sendgrid/helpers/classes/mail.js").MailSettings;
114
- trackingSettings?: import("@sendgrid/helpers/classes/mail.js").TrackingSettings;
115
- substitutions?: {
116
- [key: string]: string;
117
- };
118
- substitutionWrappers?: string[];
119
80
  isMultiple?: boolean;
120
- dynamicTemplateData?: {
121
- [key: string]: any;
122
- };
123
- hideWarnings?: boolean;
124
- replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[];
125
- from: import("./service.js").EmailData;
81
+ templateId: string;
82
+ to: ({
83
+ name: string;
84
+ email: string;
85
+ } | EmailData)[] | {
86
+ name: string;
87
+ email: string;
88
+ } | EmailData;
89
+ cc: ({
90
+ name: string;
91
+ email: string;
92
+ } | EmailData)[] | {
93
+ name: string;
94
+ email: string;
95
+ } | EmailData;
96
+ bcc: ({
97
+ name: string;
98
+ email: string;
99
+ } | EmailData)[] | {
100
+ name: string;
101
+ email: string;
102
+ } | EmailData;
126
103
  } | {
127
- to: EmailData | EmailData[];
128
- cc: EmailData | EmailData[];
129
- bcc: EmailData | EmailData[];
104
+ from: EmailData;
130
105
  replyTo?: EmailData;
131
- sendAt?: number;
132
106
  subject?: string;
133
- text?: string;
134
- html?: string;
135
- templateId?: string;
136
- personalizations?: import("@sendgrid/helpers/classes/personalization.js").PersonalizationData[];
137
- attachments?: import("@sendgrid/helpers/classes/attachment.js").AttachmentData[];
138
- ipPoolName?: string;
139
- batchId?: string;
140
- sections?: {
141
- [key: string]: string;
142
- };
143
- headers?: {
144
- [key: string]: string;
145
- };
146
- categories?: string[];
147
- category?: string;
148
- customArgs?: {
149
- [key: string]: any;
150
- };
151
- asm?: import("@sendgrid/helpers/classes/mail.js").ASMOptions;
152
- mailSettings?: import("@sendgrid/helpers/classes/mail.js").MailSettings;
153
- trackingSettings?: import("@sendgrid/helpers/classes/mail.js").TrackingSettings;
154
- substitutions?: {
155
- [key: string]: string;
156
- };
157
- substitutionWrappers?: string[];
158
107
  isMultiple?: boolean;
159
- dynamicTemplateData?: {
160
- [key: string]: any;
161
- };
162
- hideWarnings?: boolean;
163
- replyToList?: import("@sendgrid/helpers/classes/email-address.js").EmailJSON | import("@sendgrid/helpers/classes/email-address.js").EmailJSON[];
164
- from: import("./service.js").EmailData;
165
- content: Array.NonEmptyReadonlyArray<MailContent>;
108
+ content: Array.NonEmptyReadonlyArray<import("effect-app/Emailer").EmailContentPart>;
109
+ to: ({
110
+ name: string;
111
+ email: string;
112
+ } | EmailData)[] | {
113
+ name: string;
114
+ email: string;
115
+ } | EmailData;
116
+ cc: ({
117
+ name: string;
118
+ email: string;
119
+ } | EmailData)[] | {
120
+ name: string;
121
+ email: string;
122
+ } | EmailData;
123
+ bcc: ({
124
+ name: string;
125
+ email: string;
126
+ } | EmailData)[] | {
127
+ name: string;
128
+ email: string;
129
+ } | EmailData;
166
130
  };
167
131
  /**
168
132
  * @hidden
169
133
  */
170
134
  export declare function isTestAddress(to: EmailData): boolean;
171
- //# sourceMappingURL=Sendgrid.d.ts.map
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9FbWFpbGVyL1NlbmRncmlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxLQUFLLE1BQU0sa0JBQWtCLENBQUE7QUFFekMsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQTtBQUdySCxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBSTNDLE1BQU0sV0FBVyxjQUFjO0lBQzdCLGNBQWMsQ0FBQyxFQUFFLFNBQVMsQ0FBQTtJQUMxQixhQUFhLEVBQUUsTUFBTSxDQUFBO0lBQ3JCLFFBQVEsRUFBRSxPQUFPLENBQUE7SUFDakIsV0FBVyxFQUFFLFNBQVMsQ0FBQTtJQUN0QixNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQTtJQUN6Qjs7Ozs7T0FLRztJQUNILGVBQWUsRUFBRSxNQUFNLENBQUE7Q0FDeEI7QUE2REQsd0JBQWdCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsY0FBYyx1REFFOUM7QUFFRDs7R0FFRztBQUNILHdCQUFnQixhQUFhLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQVk3RCxRQUFROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFPbkI7QUFFRDs7R0FFRztBQUNILHdCQUFnQixhQUFhLENBQUMsRUFBRSxFQUFFLFNBQVMsV0FPMUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"Sendgrid.d.ts","sourceRoot":"","sources":["../../src/Emailer/Sendgrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAEpE,OAAO,EAAE,KAAK,EAAiC,MAAM,YAAY,CAAA;AAIjE,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAA6B,KAAK,cAAc,EAAiB,MAAM,cAAc,CAAA;AAwDpH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,uDAE9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,SAWpC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,WAO1C"}
1
+ {"version":3,"file":"Sendgrid.d.ts","sourceRoot":"","sources":["../../src/Emailer/Sendgrid.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,KAAK,SAAS,EAAE,OAAO,EAAE,KAAK,QAAQ,EAA4C,MAAM,oBAAoB,CAAA;AAGrH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAI3C,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,SAAS,CAAA;IACtB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAA;IACzB;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAA;CACxB;AA6DD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,uDAE9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,SAY7D,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,WAO1C"}
@@ -1,19 +1,23 @@
1
1
  import sgMail from "@sendgrid/mail";
2
- import { Array, Effect, Equivalence, Redacted } from "effect-app";
2
+ import * as Array from "effect-app/Array";
3
+ import * as Effect from "effect-app/Effect";
4
+ import { Emailer, SendMailError } from "effect-app/Emailer";
3
5
  import { dropUndefinedT } from "effect-app/utils";
6
+ import * as Equivalence from "effect/Equivalence";
7
+ import * as Redacted from "effect/Redacted";
4
8
  import { inspect } from "util";
5
9
  import { InfraLogger } from "../logger.js";
6
- import { Emailer, SendMailError } from "./service.js";
7
- const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPrefix }) => Effect.sync(() => {
10
+ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, fakeMailAddress, realMail, subjectPrefix }) => Effect.sync(() => {
8
11
  sgMail.setApiKey(Redacted.value(apiKey));
9
12
  return Emailer.of({
10
- sendMail: Effect.fn("Sendgrid.sendMail")(function* (msg_) {
13
+ sendMail: Effect.fn("Emailer.sendMail", { attributes: { "messaging.system": "sendgrid" } })(function* (msg_) {
14
+ const replyTo = msg_.replyTo ?? (msg_.from ? undefined : defaultReplyTo);
11
15
  const msg = dropUndefinedT({
12
16
  ...msg_,
13
17
  from: msg_.from ?? defaultFrom,
14
- replyTo: msg_.replyTo ?? (msg_.from ? undefined : defaultReplyTo)
18
+ replyTo
15
19
  });
16
- const render = renderMessage(!realMail);
20
+ const render = renderMessage(!realMail, fakeMailAddress);
17
21
  const renderedMsg_ = render(msg);
18
22
  const renderedMsg = {
19
23
  ...renderedMsg_,
@@ -48,21 +52,22 @@ export function Sendgrid(config) {
48
52
  /**
49
53
  * @hidden
50
54
  */
51
- export function renderMessage(forceFake) {
55
+ export function renderMessage(forceFake, fakeMailAddress) {
52
56
  let i = 0;
53
57
  const makeId = () => i++;
58
+ const makeFakeEmail = () => fakeMailAddress.replace("{i}", String(makeId()));
54
59
  return forceFake
55
60
  ? (msg) => dropUndefinedT({
56
61
  ...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)
62
+ to: msg.to && renderFake(msg.to, makeFakeEmail),
63
+ cc: msg.cc && renderFake(msg.cc, makeFakeEmail),
64
+ bcc: msg.bcc && renderFake(msg.bcc, makeFakeEmail)
60
65
  })
61
66
  : (msg) => dropUndefinedT({
62
67
  ...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)
68
+ to: msg.to && renderFakeIfTest(msg.to, makeFakeEmail),
69
+ cc: msg.cc && renderFakeIfTest(msg.cc, makeFakeEmail),
70
+ bcc: msg.bcc && renderFakeIfTest(msg.bcc, makeFakeEmail)
66
71
  });
67
72
  }
68
73
  /**
@@ -74,10 +79,10 @@ export function isTestAddress(to) {
74
79
  && "email" in to
75
80
  && to.email.toLowerCase().endsWith(".test")));
76
81
  }
77
- function renderFake(addr, makeId) {
82
+ function renderFake(addr, makeEmail) {
78
83
  return {
79
84
  name: renderMailData(addr),
80
- email: `test+${makeId()}@nomizz.com`
85
+ email: makeEmail()
81
86
  };
82
87
  }
83
88
  const eq = Equivalence.mapInput(Equivalence.String, (to) => typeof to === "string" ? to.toLowerCase() : to.email.toLowerCase());
@@ -86,11 +91,11 @@ function isEmailDataArray(md) {
86
91
  }
87
92
  // TODO: should just not add any already added email address
88
93
  // https://stackoverflow.com/a/53603076/11595834
89
- function renderFakeIfTest(addr, makeId) {
94
+ function renderFakeIfTest(addr, makeEmail) {
90
95
  if (isEmailDataArray(addr)) {
91
- return Array.dedupeWith(addr.map((x) => (isTestAddress(x) ? renderFake(x, makeId) : x)), eq);
96
+ return Array.dedupeWith(addr.map((x) => (isTestAddress(x) ? renderFake(x, makeEmail) : x)), eq);
92
97
  }
93
- return isTestAddress(addr) ? renderFake(addr, makeId) : addr;
98
+ return isTestAddress(addr) ? renderFake(addr, makeEmail) : addr;
94
99
  }
95
100
  function renderMailData(md) {
96
101
  if (isEmailDataArray(md)) {
@@ -101,4 +106,4 @@ function renderMailData(md) {
101
106
  }
102
107
  return md.email;
103
108
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRW1haWxlci9TZW5kZ3JpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBaUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXBILE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFrQixFQUFFLEVBQUUsQ0FDeEcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDZixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUV4QyxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDaEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQyxJQUEwQjtZQUMzRSxNQUFNLEdBQUcsR0FBYSxjQUFjLENBQUM7Z0JBQ25DLEdBQUcsSUFBSTtnQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXO2dCQUM5QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO2FBQ2xFLENBQUMsQ0FB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
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRW1haWxlci9TZW5kZ3JpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFrQixPQUFPLEVBQTRDLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3JILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEtBQUssV0FBVyxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBaUIxQyxNQUFNLFlBQVksR0FBRyxDQUNuQixFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFrQixFQUNqRyxFQUFFLENBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDZixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUV4QyxPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDaEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQ3pGLFFBQVEsQ0FBQyxFQUFDLElBQTBCO1lBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMs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
@@ -1,3 +1,3 @@
1
- import { Emailer } from "./service.js";
1
+ import { Emailer } from "effect-app/Emailer";
2
2
  export declare const FakeSendgrid: import("effect/Layer").Layer<Emailer, never, never>;
3
- //# sourceMappingURL=fake.d.ts.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0VtYWlsZXIvZmFrZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFnQjVDLGVBQU8sTUFBTSxZQUFZLHFEQUE0QixDQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../../src/Emailer/fake.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AActC,eAAO,MAAM,YAAY,qDAA4B,CAAA"}
1
+ {"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../../src/Emailer/fake.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAgB5C,eAAO,MAAM,YAAY,qDAA4B,CAAA"}