@effect-app/infra 4.0.0-beta.99 → 4.0.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 (486) hide show
  1. package/CHANGELOG.md +2884 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +28 -9
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +35 -14
  6. package/dist/ClusterCosmos.d.ts +67 -0
  7. package/dist/ClusterCosmos.d.ts.map +1 -0
  8. package/dist/ClusterCosmos.js +588 -0
  9. package/dist/ClusterServiceBus.d.ts +67 -0
  10. package/dist/ClusterServiceBus.d.ts.map +1 -0
  11. package/dist/ClusterServiceBus.js +84 -0
  12. package/dist/{api/ContextProvider.d.ts → ContextProvider.d.ts} +7 -4
  13. package/dist/ContextProvider.d.ts.map +1 -0
  14. package/dist/ContextProvider.js +40 -0
  15. package/dist/Emailer/Sendgrid.d.ts +110 -146
  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 +1 -1
  19. package/dist/Emailer/fake.d.ts.map +1 -1
  20. package/dist/Emailer/fake.js +4 -4
  21. package/dist/MainFiberSet.d.ts +11 -7
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +22 -6
  24. package/dist/QueueMaker/errors.d.ts +3 -1
  25. package/dist/QueueMaker/errors.d.ts.map +1 -1
  26. package/dist/QueueMaker/errors.js +4 -2
  27. package/dist/{adapters/SQL → SQL}/Model.d.ts +34 -45
  28. package/dist/SQL/Model.d.ts.map +1 -0
  29. package/dist/SQL/Model.js +469 -0
  30. package/dist/SQL.d.ts.map +1 -0
  31. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  32. package/dist/Store/Cosmos/query.d.ts +16 -4
  33. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  34. package/dist/Store/Cosmos/query.js +238 -42
  35. package/dist/Store/Cosmos.d.ts +2 -2
  36. package/dist/Store/Cosmos.d.ts.map +1 -1
  37. package/dist/Store/Cosmos.js +394 -319
  38. package/dist/Store/Disk.d.ts +4 -4
  39. package/dist/Store/Disk.d.ts.map +1 -1
  40. package/dist/Store/Disk.js +91 -39
  41. package/dist/Store/Memory.d.ts +7 -10
  42. package/dist/Store/Memory.d.ts.map +1 -1
  43. package/dist/Store/Memory.js +348 -78
  44. package/dist/Store/SQL/Pg.d.ts +2 -2
  45. package/dist/Store/SQL/Pg.d.ts.map +1 -1
  46. package/dist/Store/SQL/Pg.js +229 -154
  47. package/dist/Store/SQL/query.d.ts +19 -3
  48. package/dist/Store/SQL/query.d.ts.map +1 -1
  49. package/dist/Store/SQL/query.js +306 -12
  50. package/dist/Store/SQL.d.ts +22 -5
  51. package/dist/Store/SQL.d.ts.map +1 -1
  52. package/dist/Store/SQL.js +369 -98
  53. package/dist/Store/codeFilter.d.ts +4 -4
  54. package/dist/Store/codeFilter.d.ts.map +1 -1
  55. package/dist/Store/codeFilter.js +71 -22
  56. package/dist/Store/index.d.ts +6 -4
  57. package/dist/Store/index.d.ts.map +1 -1
  58. package/dist/Store/index.js +9 -6
  59. package/dist/Store/jsonDocument.d.ts +67 -0
  60. package/dist/Store/jsonDocument.d.ts.map +1 -0
  61. package/dist/Store/jsonDocument.js +107 -0
  62. package/dist/Store/utils.d.ts +21 -2
  63. package/dist/Store/utils.d.ts.map +1 -1
  64. package/dist/Store/utils.js +253 -10
  65. package/dist/WorkflowEngineCosmos.d.ts +30 -0
  66. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  67. package/dist/WorkflowEngineCosmos.js +542 -0
  68. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  69. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  70. package/dist/WorkflowEngineSqlite.js +550 -0
  71. package/dist/arbs.d.ts +6 -3
  72. package/dist/arbs.d.ts.map +1 -1
  73. package/dist/arbs.js +20 -4
  74. package/dist/codec.d.ts.map +1 -0
  75. package/dist/codec.js +5 -0
  76. package/dist/cosmos-client.d.ts +40 -0
  77. package/dist/cosmos-client.d.ts.map +1 -0
  78. package/dist/cosmos-client.js +41 -0
  79. package/dist/errorReporter.d.ts +6 -4
  80. package/dist/errorReporter.d.ts.map +1 -1
  81. package/dist/errorReporter.js +23 -27
  82. package/dist/fileUtil.d.ts +1 -1
  83. package/dist/fileUtil.d.ts.map +1 -1
  84. package/dist/fileUtil.js +2 -2
  85. package/dist/index.d.ts +2 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +3 -2
  88. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  89. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  90. package/dist/internal/RequestContextMiddleware.js +45 -0
  91. package/dist/internal/auth.d.ts +53 -0
  92. package/dist/internal/auth.d.ts.map +1 -0
  93. package/dist/internal/auth.js +180 -0
  94. package/dist/internal/events.d.ts +11 -0
  95. package/dist/internal/events.d.ts.map +1 -0
  96. package/dist/internal/events.js +49 -0
  97. package/dist/{api/internal → internal}/health.d.ts +1 -1
  98. package/dist/internal/health.d.ts.map +1 -0
  99. package/dist/internal/health.js +5 -0
  100. package/dist/{api/layerUtils.d.ts → layerUtils.d.ts} +10 -2
  101. package/dist/layerUtils.d.ts.map +1 -0
  102. package/dist/layerUtils.js +17 -0
  103. package/dist/logger/jsonLogger.d.ts +1 -1
  104. package/dist/logger/jsonLogger.d.ts.map +1 -1
  105. package/dist/logger/jsonLogger.js +5 -3
  106. package/dist/logger/logFmtLogger.d.ts +1 -1
  107. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  108. package/dist/logger/logFmtLogger.js +3 -3
  109. package/dist/logger/shared.d.ts +2 -2
  110. package/dist/logger/shared.d.ts.map +1 -1
  111. package/dist/logger/shared.js +6 -6
  112. package/dist/logger.d.ts.map +1 -1
  113. package/dist/middlewares.d.ts.map +1 -0
  114. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  115. package/dist/{adapters/mongo-client.d.ts → mongo-client.d.ts} +2 -1
  116. package/dist/mongo-client.d.ts.map +1 -0
  117. package/dist/mongo-client.js +15 -0
  118. package/dist/otel.d.ts +75 -0
  119. package/dist/otel.d.ts.map +1 -0
  120. package/dist/otel.js +84 -0
  121. package/dist/rateLimit.d.ts +11 -3
  122. package/dist/rateLimit.d.ts.map +1 -1
  123. package/dist/rateLimit.js +7 -12
  124. package/dist/{adapters/redis-client.d.ts → redis-client.d.ts} +4 -1
  125. package/dist/redis-client.d.ts.map +1 -0
  126. package/dist/redis-client.js +98 -0
  127. package/dist/{api/reportError.d.ts → reportError.d.ts} +1 -1
  128. package/dist/reportError.d.ts.map +1 -0
  129. package/dist/reportError.js +28 -0
  130. package/dist/{api/routing → routing}/middleware/RouterMiddleware.d.ts +2 -1
  131. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  132. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  133. package/dist/{api/routing → routing}/middleware/middleware.d.ts +11 -6
  134. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  135. package/dist/routing/middleware/middleware.js +152 -0
  136. package/dist/{api/routing → routing}/middleware.d.ts +0 -1
  137. package/dist/routing/middleware.d.ts.map +1 -0
  138. package/dist/{api/routing → routing}/middleware.js +1 -2
  139. package/dist/routing/schema/jwt.d.ts.map +1 -0
  140. package/dist/routing/schema/jwt.js +12 -0
  141. package/dist/routing/tsort.d.ts.map +1 -0
  142. package/dist/routing/tsort.js +51 -0
  143. package/dist/{api/routing → routing}/utils.d.ts +3 -3
  144. package/dist/routing/utils.d.ts.map +1 -0
  145. package/dist/routing/utils.js +45 -0
  146. package/dist/routing.d.ts +182 -0
  147. package/dist/routing.d.ts.map +1 -0
  148. package/dist/routing.js +256 -0
  149. package/dist/test.d.ts +2 -2
  150. package/dist/test.d.ts.map +1 -1
  151. package/dist/test.js +5 -5
  152. package/dist/util.d.ts.map +1 -0
  153. package/dist/util.js +14 -0
  154. package/docs/cluster-storage.md +26 -0
  155. package/docs/workflow-engine.md +262 -0
  156. package/examples/query.ts +23 -19
  157. package/package.json +36 -364
  158. package/src/CUPS.ts +53 -14
  159. package/src/ClusterCosmos.ts +1170 -0
  160. package/src/ClusterServiceBus.ts +244 -0
  161. package/src/{api/ContextProvider.ts → ContextProvider.ts} +10 -7
  162. package/src/Emailer/Sendgrid.ts +83 -60
  163. package/src/Emailer/fake.ts +4 -4
  164. package/src/MainFiberSet.ts +31 -12
  165. package/src/QueueMaker/errors.ts +3 -1
  166. package/src/{adapters/SQL → SQL}/Model.ts +48 -47
  167. package/src/SQL.ts +1 -0
  168. package/src/Store/Cosmos/query.ts +275 -55
  169. package/src/Store/Cosmos.ts +597 -511
  170. package/src/Store/Disk.ts +145 -71
  171. package/src/Store/Memory.ts +420 -115
  172. package/src/Store/SQL/Pg.ts +352 -268
  173. package/src/Store/SQL/query.ts +366 -20
  174. package/src/Store/SQL.ts +742 -293
  175. package/src/Store/codeFilter.ts +78 -28
  176. package/src/Store/index.ts +18 -13
  177. package/src/Store/jsonDocument.ts +143 -0
  178. package/src/Store/utils.ts +307 -30
  179. package/src/WorkflowEngineCosmos.ts +749 -0
  180. package/src/WorkflowEngineSqlite.ts +813 -0
  181. package/src/arbs.ts +25 -5
  182. package/src/cosmos-client.ts +72 -0
  183. package/src/errorReporter.ts +68 -78
  184. package/src/fileUtil.ts +1 -1
  185. package/src/index.ts +2 -1
  186. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  187. package/src/internal/auth.ts +272 -0
  188. package/src/{api/internal → internal}/events.ts +18 -9
  189. package/src/{api/layerUtils.ts → layerUtils.ts} +7 -3
  190. package/src/logger/jsonLogger.ts +5 -3
  191. package/src/logger/logFmtLogger.ts +3 -3
  192. package/src/logger/shared.ts +6 -5
  193. package/src/middlewares.ts +10 -0
  194. package/src/{adapters/mongo-client.ts → mongo-client.ts} +3 -1
  195. package/src/otel.ts +177 -0
  196. package/src/rateLimit.ts +35 -24
  197. package/src/{adapters/redis-client.ts → redis-client.ts} +6 -2
  198. package/src/{api/reportError.ts → reportError.ts} +3 -2
  199. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +2 -1
  200. package/src/{api/routing → routing}/middleware/middleware.ts +75 -50
  201. package/src/routing/middleware.ts +4 -0
  202. package/src/{api/routing → routing}/schema/jwt.ts +2 -2
  203. package/src/{api/routing → routing}/utils.ts +2 -1
  204. package/src/routing.ts +823 -0
  205. package/src/test.ts +6 -6
  206. package/src/vitest.ts +1 -1
  207. package/test/arbs-magnitude.test.ts +33 -0
  208. package/test/arbs.test.ts +41 -0
  209. package/test/auth.test.ts +101 -0
  210. package/test/cluster-cosmos.test.ts +634 -0
  211. package/test/cluster-servicebus.test.ts +180 -0
  212. package/test/cluster-sqlite.test.ts +207 -0
  213. package/test/contextProvider.test.ts +11 -8
  214. package/test/controller.test.ts +23 -28
  215. package/test/cosmos-container-throughput.test.ts +80 -0
  216. package/test/cosmos-query.test.ts +368 -0
  217. package/test/dist/arbs-magnitude.test.d.ts.map +1 -0
  218. package/test/dist/arbs.test.d.ts.map +1 -0
  219. package/test/dist/auth.test.d.ts.map +1 -0
  220. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  221. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  222. package/test/dist/cluster-sqlite.test.d.ts.map +1 -0
  223. package/test/dist/contextProvider.test.d.ts.map +1 -1
  224. package/test/dist/controller.test.d.ts.map +1 -1
  225. package/test/dist/cosmos-container-throughput.test.d.ts.map +1 -0
  226. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  227. package/test/dist/fixtures.d.ts +17 -9
  228. package/test/dist/fixtures.d.ts.map +1 -1
  229. package/test/dist/fixtures.js +8 -3
  230. package/test/dist/json-lower.test.d.ts.map +1 -0
  231. package/test/dist/query.test.d.ts.map +1 -1
  232. package/test/dist/rawQuery.test.d.ts.map +1 -1
  233. package/test/dist/repository-ext.test.d.ts.map +1 -0
  234. package/test/dist/repository-legacy-document.test.d.ts.map +1 -0
  235. package/test/dist/requires.test.d.ts.map +1 -1
  236. package/test/dist/router-generator.test.d.ts.map +1 -0
  237. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  238. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  239. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  240. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  241. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  242. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  243. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  244. package/test/fixtures.ts +7 -2
  245. package/test/json-lower.test.ts +129 -0
  246. package/test/layerUtils.test.ts +2 -2
  247. package/test/query.test.ts +1232 -42
  248. package/test/rawQuery.test.ts +432 -7
  249. package/test/repository-ext.test.ts +456 -0
  250. package/test/repository-legacy-document.test.ts +394 -0
  251. package/test/requires.test.ts +7 -3
  252. package/test/router-generator.test.ts +187 -0
  253. package/test/routing-interruptibility.test.ts +66 -0
  254. package/test/rpc-context-map-streaming.test.ts +265 -0
  255. package/test/rpc-e2e-invalidation.test.ts +421 -0
  256. package/test/rpc-multi-middleware.test.ts +17 -11
  257. package/test/rpc-stream-fullstack.test.ts +307 -0
  258. package/test/sql-store.test.ts +1202 -47
  259. package/test/validateSample.test.ts +70 -42
  260. package/test/workflow-engine-cosmos.test.ts +345 -0
  261. package/test/workflow-engine-sqlite.test.ts +297 -0
  262. package/tsconfig.examples.json +1 -1
  263. package/tsconfig.json +9 -1
  264. package/tsconfig.src.json +35 -35
  265. package/tsconfig.test.json +2 -2
  266. package/dist/Emailer/service.d.ts +0 -55
  267. package/dist/Emailer/service.d.ts.map +0 -1
  268. package/dist/Emailer/service.js +0 -6
  269. package/dist/Emailer.d.ts +0 -2
  270. package/dist/Emailer.d.ts.map +0 -1
  271. package/dist/Emailer.js +0 -2
  272. package/dist/Model/Repository/ext.d.ts +0 -41
  273. package/dist/Model/Repository/ext.d.ts.map +0 -1
  274. package/dist/Model/Repository/ext.js +0 -65
  275. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  276. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  277. package/dist/Model/Repository/internal/internal.js +0 -320
  278. package/dist/Model/Repository/legacy.d.ts +0 -19
  279. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  280. package/dist/Model/Repository/legacy.js +0 -2
  281. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  282. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  283. package/dist/Model/Repository/makeRepo.js +0 -24
  284. package/dist/Model/Repository/service.d.ts +0 -89
  285. package/dist/Model/Repository/service.d.ts.map +0 -1
  286. package/dist/Model/Repository/service.js +0 -2
  287. package/dist/Model/Repository/validation.d.ts +0 -43
  288. package/dist/Model/Repository/validation.d.ts.map +0 -1
  289. package/dist/Model/Repository/validation.js +0 -32
  290. package/dist/Model/Repository.d.ts +0 -6
  291. package/dist/Model/Repository.d.ts.map +0 -1
  292. package/dist/Model/Repository.js +0 -6
  293. package/dist/Model/dsl.d.ts +0 -32
  294. package/dist/Model/dsl.d.ts.map +0 -1
  295. package/dist/Model/dsl.js +0 -44
  296. package/dist/Model/filter/filterApi.d.ts +0 -30
  297. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  298. package/dist/Model/filter/filterApi.js +0 -2
  299. package/dist/Model/filter/types/errors.d.ts +0 -29
  300. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  301. package/dist/Model/filter/types/errors.js +0 -2
  302. package/dist/Model/filter/types/fields.d.ts +0 -15
  303. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  304. package/dist/Model/filter/types/fields.js +0 -2
  305. package/dist/Model/filter/types/path/common.d.ts +0 -316
  306. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  307. package/dist/Model/filter/types/path/common.js +0 -2
  308. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  309. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  310. package/dist/Model/filter/types/path/eager.js +0 -31
  311. package/dist/Model/filter/types/path/index.d.ts +0 -4
  312. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  313. package/dist/Model/filter/types/path/index.js +0 -3
  314. package/dist/Model/filter/types/utils.d.ts +0 -79
  315. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  316. package/dist/Model/filter/types/utils.js +0 -2
  317. package/dist/Model/filter/types/validator.d.ts +0 -30
  318. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  319. package/dist/Model/filter/types/validator.js +0 -2
  320. package/dist/Model/filter/types.d.ts +0 -5
  321. package/dist/Model/filter/types.d.ts.map +0 -1
  322. package/dist/Model/filter/types.js +0 -7
  323. package/dist/Model/query/dsl.d.ts +0 -248
  324. package/dist/Model/query/dsl.d.ts.map +0 -1
  325. package/dist/Model/query/dsl.js +0 -104
  326. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  327. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  328. package/dist/Model/query/new-kid-interpreter.js +0 -165
  329. package/dist/Model/query.d.ts +0 -15
  330. package/dist/Model/query.d.ts.map +0 -1
  331. package/dist/Model/query.js +0 -3
  332. package/dist/Model.d.ts +0 -4
  333. package/dist/Model.d.ts.map +0 -1
  334. package/dist/Model.js +0 -4
  335. package/dist/Operations.d.ts +0 -55
  336. package/dist/Operations.d.ts.map +0 -1
  337. package/dist/Operations.js +0 -102
  338. package/dist/OperationsRepo.d.ts +0 -41
  339. package/dist/OperationsRepo.d.ts.map +0 -1
  340. package/dist/OperationsRepo.js +0 -14
  341. package/dist/QueueMaker/SQLQueue.d.ts +0 -14
  342. package/dist/QueueMaker/SQLQueue.d.ts.map +0 -1
  343. package/dist/QueueMaker/SQLQueue.js +0 -132
  344. package/dist/QueueMaker/memQueue.d.ts +0 -11
  345. package/dist/QueueMaker/memQueue.d.ts.map +0 -1
  346. package/dist/QueueMaker/memQueue.js +0 -76
  347. package/dist/QueueMaker/sbqueue.d.ts +0 -12
  348. package/dist/QueueMaker/sbqueue.d.ts.map +0 -1
  349. package/dist/QueueMaker/sbqueue.js +0 -91
  350. package/dist/QueueMaker/service.d.ts +0 -11
  351. package/dist/QueueMaker/service.d.ts.map +0 -1
  352. package/dist/QueueMaker/service.js +0 -4
  353. package/dist/RequestContext.d.ts +0 -68
  354. package/dist/RequestContext.d.ts.map +0 -1
  355. package/dist/RequestContext.js +0 -49
  356. package/dist/RequestFiberSet.d.ts +0 -36
  357. package/dist/RequestFiberSet.d.ts.map +0 -1
  358. package/dist/RequestFiberSet.js +0 -78
  359. package/dist/Store/ContextMapContainer.d.ts +0 -25
  360. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  361. package/dist/Store/ContextMapContainer.js +0 -77
  362. package/dist/Store/service.d.ts +0 -111
  363. package/dist/Store/service.d.ts.map +0 -1
  364. package/dist/Store/service.js +0 -79
  365. package/dist/Store.d.ts +0 -2
  366. package/dist/Store.d.ts.map +0 -1
  367. package/dist/Store.js +0 -2
  368. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  369. package/dist/adapters/SQL/Model.js +0 -478
  370. package/dist/adapters/SQL.d.ts.map +0 -1
  371. package/dist/adapters/ServiceBus.d.ts +0 -58
  372. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  373. package/dist/adapters/ServiceBus.js +0 -99
  374. package/dist/adapters/cosmos-client.d.ts +0 -14
  375. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  376. package/dist/adapters/cosmos-client.js +0 -9
  377. package/dist/adapters/index.d.ts +0 -2
  378. package/dist/adapters/index.d.ts.map +0 -1
  379. package/dist/adapters/index.js +0 -2
  380. package/dist/adapters/logger.d.ts +0 -9
  381. package/dist/adapters/logger.d.ts.map +0 -1
  382. package/dist/adapters/logger.js +0 -3
  383. package/dist/adapters/memQueue.d.ts +0 -13
  384. package/dist/adapters/memQueue.d.ts.map +0 -1
  385. package/dist/adapters/memQueue.js +0 -20
  386. package/dist/adapters/mongo-client.d.ts.map +0 -1
  387. package/dist/adapters/mongo-client.js +0 -13
  388. package/dist/adapters/redis-client.d.ts.map +0 -1
  389. package/dist/adapters/redis-client.js +0 -94
  390. package/dist/api/ContextProvider.d.ts.map +0 -1
  391. package/dist/api/ContextProvider.js +0 -38
  392. package/dist/api/codec.d.ts.map +0 -1
  393. package/dist/api/codec.js +0 -5
  394. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  395. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  396. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  397. package/dist/api/internal/auth.d.ts +0 -15
  398. package/dist/api/internal/auth.d.ts.map +0 -1
  399. package/dist/api/internal/auth.js +0 -47
  400. package/dist/api/internal/events.d.ts +0 -9
  401. package/dist/api/internal/events.d.ts.map +0 -1
  402. package/dist/api/internal/events.js +0 -42
  403. package/dist/api/internal/health.d.ts.map +0 -1
  404. package/dist/api/internal/health.js +0 -5
  405. package/dist/api/layerUtils.d.ts.map +0 -1
  406. package/dist/api/layerUtils.js +0 -16
  407. package/dist/api/middlewares.d.ts.map +0 -1
  408. package/dist/api/reportError.d.ts.map +0 -1
  409. package/dist/api/reportError.js +0 -27
  410. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  411. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  412. package/dist/api/routing/middleware/middleware.js +0 -130
  413. package/dist/api/routing/middleware.d.ts.map +0 -1
  414. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  415. package/dist/api/routing/schema/jwt.js +0 -12
  416. package/dist/api/routing/tsort.d.ts.map +0 -1
  417. package/dist/api/routing/tsort.js +0 -51
  418. package/dist/api/routing/utils.d.ts.map +0 -1
  419. package/dist/api/routing/utils.js +0 -44
  420. package/dist/api/routing.d.ts +0 -134
  421. package/dist/api/routing.d.ts.map +0 -1
  422. package/dist/api/routing.js +0 -167
  423. package/dist/api/setupRequest.d.ts +0 -15
  424. package/dist/api/setupRequest.d.ts.map +0 -1
  425. package/dist/api/setupRequest.js +0 -49
  426. package/dist/api/util.d.ts.map +0 -1
  427. package/dist/api/util.js +0 -14
  428. package/eslint.config.mjs +0 -24
  429. package/src/Emailer/service.ts +0 -52
  430. package/src/Emailer.ts +0 -1
  431. package/src/Model/Repository/ext.ts +0 -283
  432. package/src/Model/Repository/internal/internal.ts +0 -580
  433. package/src/Model/Repository/legacy.ts +0 -27
  434. package/src/Model/Repository/makeRepo.ts +0 -139
  435. package/src/Model/Repository/service.ts +0 -627
  436. package/src/Model/Repository/validation.ts +0 -31
  437. package/src/Model/Repository.ts +0 -5
  438. package/src/Model/dsl.ts +0 -128
  439. package/src/Model/filter/filterApi.ts +0 -60
  440. package/src/Model/filter/types/errors.ts +0 -47
  441. package/src/Model/filter/types/fields.ts +0 -50
  442. package/src/Model/filter/types/path/common.ts +0 -404
  443. package/src/Model/filter/types/path/eager.ts +0 -298
  444. package/src/Model/filter/types/path/index.ts +0 -4
  445. package/src/Model/filter/types/utils.ts +0 -128
  446. package/src/Model/filter/types/validator.ts +0 -46
  447. package/src/Model/filter/types.ts +0 -6
  448. package/src/Model/query/dsl.ts +0 -2110
  449. package/src/Model/query/new-kid-interpreter.ts +0 -210
  450. package/src/Model/query.ts +0 -13
  451. package/src/Model.ts +0 -3
  452. package/src/Operations.ts +0 -235
  453. package/src/OperationsRepo.ts +0 -16
  454. package/src/QueueMaker/SQLQueue.ts +0 -190
  455. package/src/QueueMaker/memQueue.ts +0 -130
  456. package/src/QueueMaker/sbqueue.ts +0 -137
  457. package/src/QueueMaker/service.ts +0 -17
  458. package/src/RequestContext.ts +0 -63
  459. package/src/RequestFiberSet.ts +0 -105
  460. package/src/Store/ContextMapContainer.ts +0 -116
  461. package/src/Store/index.test.ts.bak +0 -112
  462. package/src/Store/service.ts +0 -193
  463. package/src/Store.ts +0 -1
  464. package/src/adapters/SQL.ts +0 -1
  465. package/src/adapters/ServiceBus.ts +0 -209
  466. package/src/adapters/cosmos-client.ts +0 -16
  467. package/src/adapters/index.ts +0 -0
  468. package/src/adapters/logger.ts +0 -3
  469. package/src/adapters/memQueue.ts +0 -21
  470. package/src/api/internal/auth.ts +0 -68
  471. package/src/api/middlewares.ts +0 -10
  472. package/src/api/routing/middleware.ts +0 -6
  473. package/src/api/routing.ts +0 -598
  474. package/src/api/setupRequest.ts +0 -104
  475. package/test/dist/date-query.test.d.ts.map +0 -1
  476. package/tsconfig.json.bak +0 -12
  477. /package/dist/{adapters/SQL.d.ts → SQL.d.ts} +0 -0
  478. /package/dist/{api/codec.d.ts → codec.d.ts} +0 -0
  479. /package/dist/{api/middlewares.d.ts → middlewares.d.ts} +0 -0
  480. /package/dist/{api/routing → routing}/schema/jwt.d.ts +0 -0
  481. /package/dist/{api/routing → routing}/tsort.d.ts +0 -0
  482. /package/dist/{api/util.d.ts → util.d.ts} +0 -0
  483. /package/src/{api/codec.ts → codec.ts} +0 -0
  484. /package/src/{api/internal → internal}/health.ts +0 -0
  485. /package/src/{api/routing → routing}/tsort.ts +0 -0
  486. /package/src/{api/util.ts → util.ts} +0 -0
@@ -0,0 +1,67 @@
1
+ import { type ServiceBusClientOptions, type ServiceBusMessage, type ServiceBusReceiverOptions, type ServiceBusSenderOptions, type SubscribeOptions } 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 type * as MessageStorage from "effect/cluster/MessageStorage";
6
+ import type * as RunnerHealth from "effect/cluster/RunnerHealth";
7
+ import * as Runners from "effect/cluster/Runners";
8
+ import type * as RunnerStorage from "effect/cluster/RunnerStorage";
9
+ import * as Sharding from "effect/cluster/Sharding";
10
+ import type * as ShardingConfig from "effect/cluster/ShardingConfig";
11
+ import * as Snowflake from "effect/cluster/Snowflake";
12
+ import * as Scope from "effect/Scope";
13
+ export interface ClusterServiceBusSender {
14
+ readonly sendMessages: (messages: ServiceBusMessage) => Promise<void>;
15
+ readonly close: () => Promise<void>;
16
+ }
17
+ export interface ClusterServiceBusSubscription {
18
+ readonly close: () => Promise<void>;
19
+ }
20
+ export interface ClusterServiceBusReceiver {
21
+ readonly subscribe: (handlers: {
22
+ readonly processMessage: () => Promise<void>;
23
+ readonly processError: (args: {
24
+ readonly error: Error;
25
+ readonly entityPath?: string | undefined;
26
+ readonly errorSource: string;
27
+ readonly fullyQualifiedNamespace: string;
28
+ }) => Promise<void>;
29
+ }, options?: SubscribeOptions | undefined) => ClusterServiceBusSubscription;
30
+ readonly close: () => Promise<void>;
31
+ }
32
+ export interface ClusterServiceBusClient {
33
+ readonly createSender: (topicName: string, options?: ServiceBusSenderOptions | undefined) => ClusterServiceBusSender;
34
+ readonly createReceiver: (topicName: string, subscriptionName: string, options?: ServiceBusReceiverOptions | undefined) => ClusterServiceBusReceiver;
35
+ readonly close: () => Promise<void>;
36
+ }
37
+ declare const ClusterServiceBus_base: Context.ServiceClass<ClusterServiceBus, "@effect-app/infra/ClusterServiceBus", {
38
+ readonly client: ClusterServiceBusClient;
39
+ }>;
40
+ export declare class ClusterServiceBus extends ClusterServiceBus_base {
41
+ }
42
+ export interface TopicOptions {
43
+ readonly topicName: string;
44
+ readonly senderOptions?: ServiceBusSenderOptions | undefined;
45
+ }
46
+ export interface SubscriptionOptions extends TopicOptions {
47
+ readonly subscriptionName: string;
48
+ readonly receiverOptions?: ServiceBusReceiverOptions | undefined;
49
+ readonly subscribeOptions?: SubscribeOptions | undefined;
50
+ }
51
+ export interface StorageNotification {
52
+ readonly _tag: "EffectClusterStorageNotification";
53
+ readonly envelopeId: string;
54
+ readonly requestId: string;
55
+ readonly shardId: string;
56
+ readonly entityType: string;
57
+ readonly entityId: string;
58
+ }
59
+ export declare const layerClient: (connectionString: string, options?: ServiceBusClientOptions | undefined) => Layer.Layer<ClusterServiceBus>;
60
+ export declare const layerClientFrom: (client: ClusterServiceBusClient) => Layer.Layer<ClusterServiceBus>;
61
+ export declare const makeRunners: (options: TopicOptions) => Effect.Effect<Runners.Runners["Service"], never, ClusterServiceBus | MessageStorage.MessageStorage | ShardingConfig.ShardingConfig | Snowflake.Generator | Scope.Scope>;
62
+ export declare const layerRunners: (options: TopicOptions) => Layer.Layer<Runners.Runners, never, ClusterServiceBus | MessageStorage.MessageStorage | ShardingConfig.ShardingConfig>;
63
+ export declare const makeStoragePoller: (options: SubscriptionOptions) => Effect.Effect<void, never, ClusterServiceBus | Sharding.Sharding | Scope.Scope>;
64
+ export declare const layerStoragePoller: (options: SubscriptionOptions) => Layer.Layer<never, never, ClusterServiceBus | Sharding.Sharding>;
65
+ export declare const layer: (options: SubscriptionOptions) => Layer.Layer<Sharding.Sharding | Runners.Runners, never, ClusterServiceBus | MessageStorage.MessageStorage | RunnerHealth.RunnerHealth | RunnerStorage.RunnerStorage | ShardingConfig.ShardingConfig>;
66
+ export {};
67
+ //# sourceMappingURL=ClusterServiceBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusterServiceBus.d.ts","sourceRoot":"","sources":["../src/ClusterServiceBus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
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 ClusterError from "effect/cluster/ClusterError";
6
+ import { Persisted } from "effect/cluster/ClusterSchema";
7
+ import * as Runners from "effect/cluster/Runners";
8
+ import * as Sharding from "effect/cluster/Sharding";
9
+ import * as Snowflake from "effect/cluster/Snowflake";
10
+ import * as Data from "effect/Data";
11
+ import * as Schema from "effect/Schema";
12
+ import * as Scope from "effect/Scope";
13
+ export class ClusterServiceBus extends Context.Service()("@effect-app/infra/ClusterServiceBus") {
14
+ }
15
+ 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)));
16
+ export const layerClientFrom = (client) => Layer.succeed(ClusterServiceBus)(ClusterServiceBus.of({ client }));
17
+ export const makeRunners = Effect.fnUntraced(function* (options) {
18
+ const serviceBus = yield* ClusterServiceBus;
19
+ const scope = yield* Effect.scope;
20
+ const sender = serviceBus.client.createSender(options.topicName, options.senderOptions);
21
+ yield* Scope.addFinalizer(scope, Effect.promise(() => sender.close()).pipe(Effect.ignore));
22
+ const publish = (message) => Effect
23
+ .tryPromise({
24
+ try: () => sender.sendMessages(storageNotification(message)),
25
+ catch: (cause) => new ServiceBusPublishError({ cause })
26
+ })
27
+ .pipe(Effect.catch((cause) => Effect.logDebug("Could not publish cluster storage notification", cause)));
28
+ return yield* Runners.make({
29
+ codecFor: Schema.toCodecJson,
30
+ ping: (address) => Effect.fail(new ClusterError.RunnerUnavailable({ address })),
31
+ send: ({ address, message }) => {
32
+ const persisted = Context.get(message.rpc.annotations, Persisted);
33
+ return (persisted ? publish(message) : Effect.void).pipe(Effect.andThen(Effect.fail(new ClusterError.RunnerUnavailable({ address }))));
34
+ },
35
+ notify: ({ message }) => publish(message),
36
+ onRunnerUnavailable: () => Effect.void
37
+ });
38
+ });
39
+ export const layerRunners = (options) => Layer.effect(Runners.Runners, makeRunners(options)).pipe(Layer.provide(Snowflake.layerGenerator));
40
+ export const makeStoragePoller = Effect.fnUntraced(function* (options) {
41
+ const serviceBus = yield* ClusterServiceBus;
42
+ const sharding = yield* Sharding.Sharding;
43
+ const scope = yield* Effect.scope;
44
+ const receiver = serviceBus.client.createReceiver(options.topicName, options.subscriptionName, {
45
+ receiveMode: "receiveAndDelete",
46
+ ...options.receiverOptions
47
+ });
48
+ const subscription = receiver.subscribe({
49
+ processMessage: () => Effect.runPromise(sharding.pollStorage.pipe(Effect.catchCause((cause) => Effect.logDebug("Could not wake cluster storage poller", cause)))),
50
+ processError: (args) => Effect.runPromise(Effect.logDebug("Error receiving cluster storage notification", args.error).pipe(Effect.annotateLogs({
51
+ entityPath: args.entityPath,
52
+ errorSource: args.errorSource,
53
+ fullyQualifiedNamespace: args.fullyQualifiedNamespace
54
+ })))
55
+ }, options.subscribeOptions);
56
+ yield* Scope.addFinalizer(scope, Effect.promise(() => subscription.close()).pipe(Effect.andThen(Effect.promise(() => receiver.close())), Effect.ignore));
57
+ });
58
+ export const layerStoragePoller = (options) => Layer.effectDiscard(makeStoragePoller(options));
59
+ export const layer = (options) => {
60
+ const sharding = Sharding.layer.pipe(Layer.provideMerge(layerRunners(options)));
61
+ return Layer.merge(sharding, layerStoragePoller(options).pipe(Layer.provide(sharding)));
62
+ };
63
+ const storageNotification = (message) => {
64
+ const envelope = message.envelope;
65
+ const envelopeId = envelope._tag === "Request" ? envelope.requestId : envelope.id;
66
+ const body = {
67
+ _tag: "EffectClusterStorageNotification",
68
+ envelopeId: String(envelopeId),
69
+ requestId: String(envelope.requestId),
70
+ shardId: envelope.address.shardId.toString(),
71
+ entityType: envelope.address.entityType,
72
+ entityId: envelope.address.entityId
73
+ };
74
+ return {
75
+ body,
76
+ contentType: "application/json",
77
+ correlationId: body.requestId,
78
+ messageId: body.envelopeId,
79
+ subject: body._tag
80
+ };
81
+ };
82
+ class ServiceBusPublishError extends Data.TaggedError("ServiceBusPublishError") {
83
+ }
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlclNlcnZpY2VCdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2x1c3RlclNlcnZpY2VCdXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUE2SSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hNLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxZQUFZLE1BQU0sNkJBQTZCLENBQUE7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBSXhELE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUE7QUFFakQsT0FBTyxLQUFLLFFBQVEsTUFBTSx5QkFBeUIsQ0FBQTtBQUVuRCxPQUFPLEtBQUssU0FBUyxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sS0FBSyxJQUFJLE1BQU0sYUFBYSxDQUFBO0FBRW5DLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBd0NyQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsT0FBTyxDQUFDLE9BQU8sRUFFbEQsQ0FBQyxxQ0FBcUMsQ0FBQztDQUFHO0FBc0I5QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FDekIsZ0JBQXdCLEVBQ3hCLE9BQTZDLEVBQ2IsRUFBRSxDQUNsQyxLQUFLLENBQUMsTUFBTSxDQUNWLGlCQUFpQixFQUNqQixNQUFNLENBQUMsY0FBYyxDQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFF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
@@ -1,7 +1,10 @@
1
- import { Context, Effect, Layer, type NonEmptyReadonlyArray, type Scope } from "effect-app";
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";
2
6
  import { type HttpRouter } from "effect-app/http";
3
7
  import { type EffectGenUtils } from "effect-app/utils/gen";
4
- import { type Yieldable } from "effect/Effect";
5
8
  import { type ContextTagWithDefault, type GetContext, type LayerUtils } from "./layerUtils.js";
6
9
  export interface ContextProviderId {
7
10
  _tag: "ContextProvider";
@@ -11,14 +14,14 @@ export interface ContextProviderId {
11
14
  * each service is an effect which builds some context for each request
12
15
  */
13
16
  type TDepsArr<TDeps extends ReadonlyArray<any>> = {
14
- [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 [Yieldable<any, infer _2, 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`;
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`;
15
18
  };
16
19
  export declare const mergeContextProviders: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => {
17
20
  dependencies: { [K in keyof TDeps]: TDeps[K]["Default"]; };
18
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"]; }>>;
19
22
  };
20
23
  export declare const ContextProvider: <ContextProviderA, MakeContextProviderE, MakeContextProviderR, ContextProviderR extends Scope.Scope, Dependencies extends NonEmptyReadonlyArray<Layer.Any>>(input: {
21
- effect: Effect.Effect<Effect.Effect<ContextProviderA, never, ContextProviderR> | (() => Generator<Yieldable<any, any, never, ContextProviderR>, ContextProviderA, any>), MakeContextProviderE, MakeContextProviderR | Scope.Scope>;
24
+ effect: Effect.Effect<Effect.Effect<ContextProviderA, never, ContextProviderR> | (() => Generator<Effect.Effect<any, never, ContextProviderR>, ContextProviderA>), MakeContextProviderE, MakeContextProviderR | Scope.Scope>;
22
25
  dependencies?: Dependencies;
23
26
  }) => Context.Service<ContextProviderId, Effect.Effect<ContextProviderA, never, ContextProviderR>> & {
24
27
  Default: Layer.Layer<ContextProviderId, MakeContextProviderE | LayerUtils.GetLayersError<Dependencies>, Exclude<MakeContextProviderR, LayerUtils.GetLayersSuccess<Dependencies>> | LayerUtils.GetLayersContext<Dependencies>>;
@@ -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,168 +1,132 @@
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
@@ -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"}